Developer Documentation
|
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::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. | |
BSplineCurve & | bsplineCurve () |
void | set_pick_radius (double _pr) |
ACG_CLASSNAME (BSplineCurveNodeT) | |
static name of this class | |
DrawModes::DrawMode | availableDrawModes () const override |
return available draw modes | |
void | boundingBox (Vec3d &_bbMin, Vec3d &_bbMax) override |
update bounding box | |
void | draw (GLState &_state, const DrawModes::DrawMode &_drawMode) override |
draw lines and normals | |
void | pick (GLState &_state, PickTarget _target) override |
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::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 | 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 | 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) |
BaseNode * | find (const std::string &_name) |
BaseNode * | parent () |
Get the nodes parent node. | |
const BaseNode * | parent () 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::UniformPool * | getRenderObjectUniformPool () |
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... | |
RenderObjectModifier * | getRenderObjectModifier () |
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) | |
BSplineCurveNodeT & | operator= (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) override |
Deferred draw call with shader based renderer. More... | |
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 | |
BSplineCurve & | bsplineCurve_ |
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_ |
GLCylinder * | cylinder_ |
GLSphere * | sphere_ |
GLSphere * | fancySphere_ |
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_ |
Definition at line 88 of file BSplineCurveNodeT.hh.
|
overrideprivatevirtual |
Deferred draw call with shader based renderer.
The renderer calls this function to collect the geometry that should be rendered from the nodes.
Add any renderable geometry to the renderer via _renderer->addRenderObject()
The material is fetched from the last active material node and may be used to setup Renderobjects, but may as well be ignored.
_renderer | The renderer which will be used. Add your geometry into this class |
_state | The current GL State when this object is called |
_drawMode | The active draw mode |
_mat | Current material |
Reimplemented from ACG::SceneGraph::BaseNode.
Definition at line 167 of file BSplineCurveNodeT_impl.hh.
|
private |
generate index and setup texture parameters
spline curve picking
Definition at line 976 of file BSplineCurveNodeT_impl.hh.