cgv
cgv::render::gl::gl_implicit_surface_drawable_base Class Reference

#include <gl_implicit_surface_drawable_base.h>

Inheritance diagram for cgv::render::gl::gl_implicit_surface_drawable_base:
cgv::render::drawable cgv::media::mesh::streaming_mesh_callback_handler cgv::base::traverse_policy

Public Types

typedef cgv::math::v3_func< double, double > F
 type of the function describing the implicit surface
 
typedef cgv::media::axis_aligned_box< double, 3 > dbox3
 type of axis aligned box used to define the tesselation domain
 
typedef cgv::media::color< float, cgv::media::RGB > rgb
 declare rgb color type
 
typedef cgv::media::color< float, cgv::media::RGB, cgv::media::OPACITY > rgba
 declare rgba color type
 
typedef cgv::media::color< cgv::type::uint8_type, cgv::media::RGB > rgb8
 declare rgb color type
 
typedef cgv::media::color< cgv::type::uint8_type, cgv::media::RGB, cgv::media::OPACITY > rgba8
 declare rgba color type
 
typedef cgv::math::fvec< float, 2 > vec2
 declare type of 2d vectors
 
typedef cgv::math::fvec< float, 3 > vec3
 declare type of 3d vectors
 
typedef cgv::math::fvec< float, 4 > vec4
 declare type of homogeneous vectors
 
typedef cgv::math::vec< float > vecn
 declare type of vector with varying dimension
 
typedef cgv::math::fmat< float, 2, 2 > mat2
 declare type of 2x2 matrices
 
typedef cgv::math::fmat< float, 3, 3 > mat3
 declare type of 3x3 matrices
 
typedef cgv::math::fmat< float, 4, 4 > mat4
 declare type of 4x4 matrices
 
typedef cgv::math::fmat< float, 3, 4 > mat34
 declare type of 3x4 matrices which are often used to store a pose
 
typedef cgv::math::mat< float > matn
 declare type of matrices of varying dimensions
 
typedef cgv::math::fvec< double, 2 > dvec2
 declare type of 2d vectors
 
typedef cgv::math::fvec< double, 3 > dvec3
 declare type of 3d vectors
 
typedef cgv::math::fvec< double, 4 > dvec4
 declare type of homogeneous vectors
 
typedef cgv::math::vec< double > dvecn
 declare type of vector with varying dimension
 
typedef cgv::math::fmat< double, 2, 2 > dmat2
 declare type of 2x2 matrices
 
typedef cgv::math::fmat< double, 3, 3 > dmat3
 declare type of 3x3 matrices
 
typedef cgv::math::fmat< double, 4, 4 > dmat4
 declare type of 4x4 matrices
 
typedef cgv::math::fmat< double, 3, 4 > dmat34
 declare type of 3x4 matrices which are often used to store a pose
 
typedef cgv::math::mat< double > dmatn
 declare type of matrices of varying dimensions
 
typedef cgv::media::axis_aligned_box< float, 2 > box2
 declare type of 2d boxes
 
typedef cgv::media::axis_aligned_box< float, 3 > box3
 declare type of 3d boxes
 
typedef cgv::media::axis_aligned_box< float, 4 > box4
 declare type of 4d boxes
 
typedef cgv::media::axis_aligned_box< double, 2 > dbox2
 declare type of 2d boxes
 
typedef cgv::media::axis_aligned_box< double, 4 > dbox4
 declare type of 4d boxes
 
typedef cgv::math::quaternion< float > quat
 declare type of quaternion
 
typedef cgv::math::quaternion< double > dquat
 declare type of double quaternion
 
typedef cgv::math::fvec< int32_t, 2 > ivec2
 declare type of 2d integer vectors
 
typedef cgv::math::fvec< int32_t, 3 > ivec3
 declare type of 3d integer vectors
 
typedef cgv::math::fvec< int32_t, 4 > ivec4
 declare type of 4d integer vectors
 
typedef cgv::math::fvec< uint32_t, 2 > uvec2
 declare type of 2d unsigned integer vectors
 
typedef cgv::math::fvec< uint32_t, 3 > uvec3
 declare type of 3d unsigned integer vectors
 
typedef cgv::math::fvec< uint32_t, 4 > uvec4
 declare type of 4d unsigned integer vectors
 

Public Member Functions

 gl_implicit_surface_drawable_base ()
 standard constructor does not initialize the function pointer such that nothing is drawn
 
void post_rebuild ()
 use this as callback to ask for a re-tesselation of the implicit surface
 
bool init (context &ctx)
 this method is called after creation or recreation of the context, return whether all necessary functionality is supported
 
void clear (context &ctx)
 clear all objects living in the context like textures or display lists
 
void draw (context &ctx)
 overload to draw the content of this drawable
 
void finish_frame (context &ctx)
 this method is called in one pass over all drawables after drawing
 
void hide ()
 hide the drawable
 
void show ()
 show the drawable
 
bool is_visible () const
 check whether the drawable is visible
 
contextget_context () const
 access the current context. The context will be available latestly in the init method but not in the contructor.
 
void set_context (context *_ctx)
 set the current focus context, this should only be called by the context itself
 
cgv::render::viewfind_view_as_node (size_t view_idx=0) const
 convenience function to find the view control in the current hierarchy More...
 
bool get_world_location (int x, int y, const cgv::render::view &V, cgv::math::fvec< double, 3 > &world_location, double *window_z_ptr=0) const
 use given view together with depth buffer of context in order to compute the world location of the point at mouse pointer location (x,y) More...
 
void post_redraw ()
 posts a redraw event to the current context if one is available
 
void force_redraw ()
 forces a redraw right now. This cannot be called from init, init_frame, draw, finish_draw, finish_frame and clear
 
virtual void resize (unsigned int w, unsigned int h)
 callback to announce resizing of the output window More...
 
virtual void init_frame (context &)
 this method is called in one pass over all drawables before the draw method
 
virtual void finish_draw (context &)
 this method is called when the current drawable is left in a tree traversal that calls the draw method
 
virtual void after_finish (cgv::render::context &)
 this method is called in one pass over all drawables after finish frame
 
int get_policy () const
 return the policy without the stop on success flag
 
bool stop_on_success () const
 return whether to stop on success
 
bool stop_on_failure () const
 return whether to stop on failure
 
void set_policy (int _policy)
 set a new policy, always add stop on success flag if needed
 
int get_focused_child () const
 return the focused child or -1 if none is focused
 
void set_focused_child (int _focused_child)
 set the focused child
 
bool get_active () const
 return whether the current node is active
 
void set_active (bool _active)
 set the active flag of the current node
 

Protected Member Functions

void new_vertex (unsigned int vi)
 allows to augment a newly computed vertex by additional data
 
void new_polygon (const std::vector< unsigned int > &vertex_indices)
 announces a new quad
 
void before_drop_vertex (unsigned int vertex_index)
 drop the currently first vertex that has the given global vertex index
 
bool save (const std::string &file_name)
 function used to save to obj file More...
 
virtual void surface_extraction ()
 call the selected surface extraction method
 
dvec3 compute_face_normal (const std::vector< unsigned int > &vis, dvec3 *c=0) const
 compute the normal of a face
 
virtual void extract_mesh ()
 helper function to extract mesh from implicit surface
 
void draw_implicit_surface (context &ctx)
 helper function to tesselate the implicit surface
 

Protected Attributes

std::ostream * obj_out
 of this output stream is defined, use it to write currently extracted surface to it
 
unsigned normal_index
 normal index for face normals
 

Detailed Description

drawable that visualizes implicit surfaces by contouring them with marching cubes or dual contouring. >

Member Function Documentation

◆ find_view_as_node()

cgv::render::view * cgv::render::drawable::find_view_as_node ( size_t  view_idx = 0) const
inherited

convenience function to find the view control in the current hierarchy

this only works if your class inherits from the cgv::base::node class.

◆ get_world_location()

bool cgv::render::drawable::get_world_location ( int  x,
int  y,
const cgv::render::view V,
cgv::math::fvec< double, 3 > &  world_location,
double *  window_z_ptr = 0 
) const
inherited

use given view together with depth buffer of context in order to compute the world location of the point at mouse pointer location (x,y)

returns true if a world location could be computed which is the case when the context pointer of the drawable has been set and when the mouse location points inside a valid view panel.

◆ resize()

void cgv::render::drawable::resize ( unsigned int  w,
unsigned int  h 
)
virtualinherited

callback to announce resizing of the output window

callback to anounce resizing of the output window

◆ save()

bool cgv::render::gl::gl_implicit_surface_drawable_base::save ( const std::string &  file_name)
protected

function used to save to obj file

callback used to save to obj file


The documentation for this class was generated from the following files: