Developer Documentation
ACG::SceneGraph::BSplineCurveNodeT< BSplineCurve > Class Template Reference
Inheritance diagram for ACG::SceneGraph::BSplineCurveNodeT< BSplineCurve >:
ACG::SceneGraph::ACG::SceneGraph::BaseNode

Public Types

enum  BSplineDrawMode { NORMAL = 0, FANCY = 1 }
 
enum  BSplineSelectionDrawMode { NONE = 0, CONTROLPOINT = 1, KNOTVECTOR = 2 }
 
typedef BSplineCurve::Point Point
 
- Public Types inherited from ACG::SceneGraph::ACG::SceneGraph::BaseNode
enum  StatusMode { Active = 0x1, HideNode = 0x2, HideChildren = 0x4, HideSubtree = 0x8 }
 Status modi. More...
 
enum  TraverseMode { NodeFirst = 0x1, ChildrenFirst = 0x2, SecondPass = 0x4 }
 Node traverse types. More...
 
typedef std::vector< BaseNode * >::const_iterator ConstChildIter
 allows to iterate over children
 
typedef std::vector< BaseNode * >::iterator ChildIter
 allows to iterate over children
 
typedef std::vector< BaseNode * >::const_reverse_iterator ConstChildRIter
 allows to reverse iterate over children
 
typedef std::vector< BaseNode * >::reverse_iterator ChildRIter
 allows to reverse iterate over children
 
enum  PASSES {
  NOPASS = 0, ALLPASSES = 1 << 0, PASS_1 = 1 << 1, PASS_2 = 1 << 2,
  PASS_3 = 1 << 3, PASS_4 = 1 << 4, PASS_5 = 1 << 5, PASS_6 = 1 << 6,
  PASS_7 = 1 << 7, PASS_8 = 1 << 8
}
 This enum should be used to enable rendering of a node in different.
 
typedef unsigned int MultipassBitMask
 Multipass pass bit mask type.
 

Public Member Functions

 BSplineCurveNodeT (BSplineCurve &_bsc, BaseNode *_parent=0, std::string _name="<BSplineCurveNode>")
 Constructor.
 
 ~BSplineCurveNodeT ()
 Destructor.
 
BSplineCurvebsplineCurve ()
 
void set_pick_radius (double _pr)
 
 ACG_CLASSNAME (BSplineCurveNodeT)
 static name of this class
 
DrawModes::DrawMode availableDrawModes () const
 return available draw modes
 
void boundingBox (Vec3d &_bbMin, Vec3d &_bbMax)
 update bounding box
 
void draw (GLState &_state, const DrawModes::DrawMode &_drawMode)
 draw lines and normals
 
void pick (GLState &_state, PickTarget _target)
 picking
 
void set_rendering_resolution (int _res)
 
void render_control_polygon (bool _render)
 
bool render_control_polygon ()
 
void render_bspline_curve (bool _render)
 
bool render_bspline_curve ()
 
void set_selection_draw_mode (BSplineSelectionDrawMode _mode)
 
BSplineSelectionDrawMode get_selection_draw_mode () const
 
void set_bspline_draw_mode (BSplineDrawMode _mode)
 
void updateGeometry ()
 
int & pick_texture_res ()
 Should be a power of 2.
 
void cpSelectionTextureValid (bool _valid)
 
void knotSelectionTextureValid (bool _valid)
 
- Public Member Functions inherited from ACG::SceneGraph::ACG::SceneGraph::BaseNode
 BaseNode (BaseNode *_parent=0, std::string _name="<unknown>")
 Default constructor.
 
 BaseNode (BaseNode *_parent, BaseNode *_child, std::string _name="<unknown>")
 Put this node between _parent and _child.
 
virtual ~BaseNode ()
 Destructor.
 
void delete_subtree ()
 Delete the whole subtree of this node. More...
 
virtual const std::string & className () const =0
 Return class name (implemented by the ACG_CLASSNAME macro)
 
virtual void enter (GLState &, const DrawModes::DrawMode &)
 
virtual void enter (IRenderer *, GLState &_state, const DrawModes::DrawMode &_drawMode)
 
virtual void draw (GLState &, const DrawModes::DrawMode &)
 Draw this node using the draw modes _drawMode. More...
 
virtual void getRenderObjects (IRenderer *_renderer, GLState &_state, const DrawModes::DrawMode &_drawMode, const Material *_mat)
 Deferred draw call with shader based renderer. More...
 
virtual void leave (GLState &, const DrawModes::DrawMode &)
 
virtual void leave (IRenderer *, GLState &_state, const DrawModes::DrawMode &_drawMode)
 
virtual void enterPick (GLState &_state, PickTarget _target, const DrawModes::DrawMode &_drawMode)
 
virtual void pick (GLState &, PickTarget)
 
virtual void leavePick (GLState &_state, PickTarget _target, const DrawModes::DrawMode &_drawMode)
 
void enablePicking (bool _enable)
 
bool pickingEnabled ()
 
virtual void mouseEvent (GLState &, QMouseEvent *)
 Handle mouse event (some interaction, e.g. modeling)
 
void setDirty (bool _dirty=true)
 mark node for redrawn
 
bool isDirty () const
 Check if node should be redrawn.
 
ChildIter childrenBegin ()
 Returns: begin-iterator of children.
 
ConstChildIter childrenBegin () const
 Same but cont.
 
ChildIter childrenEnd ()
 Returns: end-iterator of children.
 
ConstChildIter childrenEnd () const
 Same but const.
 
ChildRIter childrenRBegin ()
 Returns: reverse begin-iterator of children.
 
ConstChildRIter childrenRBegin () const
 Same but const.
 
ChildRIter childrenREnd ()
 Returns: reverse end-iterator of children.
 
ConstChildRIter childrenREnd () const
 Same but const.
 
void push_back (BaseNode *_node)
 Insert _node at the end of the list of children.
 
void remove (ChildIter _pos)
 
size_t nChildren () const
 number of children
 
ChildIter find (BaseNode *_node)
 
BaseNodefind (const std::string &_name)
 
BaseNodeparent ()
 Get the nodes parent node.
 
const BaseNodeparent () const
 Get the nodes parent node.
 
void set_parent (BaseNode *_parent)
 Set the parent of this node. More...
 
StatusMode status () const
 Get node's status.
 
void set_status (StatusMode _s)
 Set the status of this node.
 
void hide ()
 Hide Node: set status to HideNode.
 
void show ()
 Show node: set status to Active.
 
bool visible ()
 Is node visible (status == Active)?
 
bool hidden ()
 Is node not visible (status != Active)?
 
std::string name () const
 Returns: name of node (needs not be unique)
 
void name (const std::string &_name)
 rename a node
 
unsigned int id () const
 
DrawModes::DrawMode drawMode () const
 Return the own draw modes of this node.
 
void drawMode (DrawModes::DrawMode _drawMode)
 
unsigned int traverseMode () const
 Return how the node should be traversed.
 
void setTraverseMode (unsigned int _mode)
 Set traverse mode for node.
 
MultipassBitMask multipassStatus () const
 Get the current multipass settings for the nodes status functions. More...
 
void setMultipassStatus (const MultipassBitMask _passStatus)
 Set multipass settings for the nodes status functions. More...
 
void multipassStatusSetActive (const unsigned int _i, bool _active)
 Set multipass status to traverse in a specific pass. More...
 
bool multipassStatusActive (const unsigned int _i) const
 Get multipass status to traverse in a specific pass. More...
 
MultipassBitMask multipassNode () const
 Get the current multipass settings for the node. More...
 
void setMultipassNode (const MultipassBitMask _passNode)
 Set multipass settings for the node. More...
 
void multipassNodeSetActive (const unsigned int _i, bool _active)
 Set Node status to traverse in a specific pass. More...
 
bool multipassNodeActive (const unsigned int _i) const
 Get Node status to traverse in a specific pass. More...
 
void setRenderObjectShaders (const std::string &_vertexShaderFile, const std::string &_geometryShaderFile, const std::string &_fragmentShaderFile, bool _relativePaths=true, DrawModes::DrawModePrimitive _primitiveType=DrawModes::PRIMITIVE_POLYGON)
 Set custom shaders. More...
 
void setRenderObjectShaders (const std::string &_vertexShaderFile, const std::string &_tessControlShaderFile, const std::string &_tessEvalShaderFile, const std::string &_geometryShaderFile, const std::string &_fragmentShaderFile, bool _relativePaths=true, DrawModes::DrawModePrimitive _primitiveType=DrawModes::PRIMITIVE_POLYGON)
 Set custom shaders. More...
 
void setRenderObjectUniformPool (const GLSL::UniformPool *_pool)
 Set uniforms for shader based rendering. More...
 
const GLSL::UniformPoolgetRenderObjectUniformPool ()
 Get uniforms for shader based rendering. More...
 
void setRenderObjectTexture (int _samplerSlot, GLuint _texId, GLenum _texType=GL_TEXTURE_2D)
 Set textures for shader based rendering. More...
 
void setRenderObjectModifier (RenderObjectModifier *_modifier)
 Set modifier for render objects. More...
 
RenderObjectModifiergetRenderObjectModifier ()
 Get render-object modifier. More...
 
void applyRenderObjectSettings (DrawModes::DrawModePrimitive _primitive, RenderObject *_obj) const
 Set shaders, textures and uniforms as provided by user to a render-object. More...
 

Private Member Functions

void pick_vertices (GLState &_state)
 
void pick_spline (GLState &_state, unsigned int _offset)
 
void draw_cylinder (const Point &_p0, const Point &_axis, double _r, GLState &_state)
 
void draw_sphere (const Point &_p0, double _r, GLState &_state, GLSphere *_sphere)
 
 BSplineCurveNodeT (const BSplineCurveNodeT &_rhs)
 Copy constructor (not used)
 
BSplineCurveNodeToperator= (const BSplineCurveNodeT &_rhs)
 Assignment operator (not used)
 
void render (GLState &_state, bool _fill, DrawModes::DrawMode _drawMode)
 
void getRenderObjects (IRenderer *_renderer, GLState &_state, const DrawModes::DrawMode &_drawMode, const Material *_mat)
 
void drawControlPolygon (DrawModes::DrawMode _drawMode, GLState &_state)
 Renders the control polygon.
 
void drawFancyControlPolygon (DrawModes::DrawMode _drawMode, GLState &_state)
 Renders the control polygon using cylinders and spheres to include shading effects.
 
void drawCurve (GLState &_state)
 Renders the spline curve using gluNurbsRenderer.
 
void drawFancyCurve (GLState &_state)
 Renders the spline curve by sampling the curve and rendering cylinders in between the samples.
 
void drawTexturedCurve (GLState &_state, GLuint _texture_idx)
 renders a textured cuve using the gluNurbsRenderer to vilualize either the control point ot the knot vector selection
 
void pick_init_texturing ()
 generate index and setup texture parameters More...
 
void pick_create_texture (GLState &_state)
 create texture image
 
void updateControlPointSelectionTexture (GLState &_state)
 
void updateKnotVectorSelectionTexture (GLState &_state)
 
void selection_init_texturing (GLuint &_texture_idx)
 generate index and setup texture parameters for selection visualization
 
void create_cp_selection_texture (GLState &_state)
 creates texture to put onto nurbs curve for visualization of control point selection
 
void create_knot_selection_texture (GLState &_state)
 creates texture to put onto nurbs curve for visualization of knotvector selection
 
void draw_textured_nurbs (GLState &_state)
 draw textured nurbs patch
 
ACG::Vec4f generateHighlightColor (ACG::Vec4f _color)
 generates a color to highlight the curve from the given color
 
void updateCurveBuffer (int _numVertices=50)
 update curve line buffer for drawing
 
void updateControlPointBuffer ()
 update control point buffer for visualization
 
void updateControlPointSelBuffer ()
 update control point selection buffer for visualization
 
void updateControlEdgeSelBuffer ()
 update control edge selection buffer for visualization
 

Private Attributes

BSplineCurvebsplineCurve_
 
double pick_radius_
 
int resolution_
 
Vec4f polygon_color_
 
Vec4f polygon_highlight_color_
 
Vec4f curve_color_
 
Vec4f curve_highlight_color_
 
bool render_control_polygon_
 
bool render_bspline_curve_
 
BSplineDrawMode bspline_draw_mode_
 
BSplineSelectionDrawMode bspline_selection_draw_mode_
 
std::vector< std::pair< Vec3d, Vec4f > > curve_samples_
 
QImage pick_texture_image_
 
GLuint pick_texture_idx_
 
int pick_texture_res_
 
unsigned int pick_texture_baseidx_
 
QImage cp_selection_texture_image_
 
GLuint cp_selection_texture_idx_
 
int cp_selection_texture_res_
 
QImage knot_selection_texture_image_
 
GLuint knot_selection_texture_idx_
 
int knot_selection_texture_res_
 
bool controlPointSelectionTexture_valid_
 
bool knotVectorSelectionTexture_valid_
 
GLCylindercylinder_
 
GLSpheresphere_
 
GLSpherefancySphere_
 
GeometryBuffer curveLineVBO_
 
VertexDeclaration curveLineDecl_
 
int curveLineVertices_
 
bool invalidateCurveLine_
 
GeometryBuffer controlPointVBO_
 
VertexDeclaration controlPointDecl_
 
IndexBuffer controlPointSelIBO_
 
int controlPointSelCount_
 
IndexBuffer controlEdgeSelIBO_
 
int controlEdgeSelCount_
 
bool invalidateControlPointVBO_
 
bool invalidateControlPointSelIBO_
 
bool invalidateControlEdgeSelIBO_
 

Detailed Description

template<class BSplineCurve>
class ACG::SceneGraph::BSplineCurveNodeT< BSplineCurve >

Definition at line 91 of file BSplineCurveNodeT.hh.

Member Function Documentation

template<class BSplineCurve >
void ACG::SceneGraph::BSplineCurveNodeT< BSplineCurve >::pick_init_texturing ( )
private

generate index and setup texture parameters

spline curve picking

Definition at line 982 of file BSplineCurveNodeT.cc.


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