Developer Documentation
Loading...
Searching...
No Matches
ACG::SceneGraph::OBJNode Class Reference
Inheritance diagram for ACG::SceneGraph::OBJNode:
ACG::SceneGraph::BaseNode

Classes

struct  Face
 

Public Member Functions

 OBJNode (BaseNode *_parent=0, const std::string &_name="<OBJNode>")
 Default constructor.
 
virtual ~OBJNode ()
 destructor
 
 ACG_CLASSNAME (OBJNode)
 
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
 drawing the primitive
 
void pick (GLState &_state, PickTarget _target) override
 picking
 
size_t n_vertices () const
 number of vertices
 
size_t n_faces () const
 number of faces
 
size_t n_normals () const
 number of normals
 
size_t n_texcoords () const
 number of texcoords
 
void clear ()
 clear the node
 
size_t add_vertex (const Vec3f &_v)
 add vertex
 
size_t add_face (const Face &_f)
 add triangle
 
size_t add_face (unsigned int _i0, unsigned int _i1, unsigned int _i2)
 add triangle
 
Vec3fvertex (unsigned int _i)
 get i'th vertex
 
const Vec3fvertex (unsigned int _i) const
 get i'th vertex
 
const Faceface (unsigned int _i) const
 get i'th face
 
Faceface (unsigned int _i)
 get i'th face
 
const Vec3fnormal (unsigned int _i) const
 get i'th normal
 
Vec3fnormal (unsigned int _i)
 get i'th normal
 
bool read (const std::string &_filename)
 Read from file. Implemented using OpenMesh loader and OBJNodeExporter.
 
void update_face_normals ()
 Update face normals. Call when geometry changes.
 
- 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.
 
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 getRenderObjects (IRenderer *_renderer, GLState &_state, const DrawModes::DrawMode &_drawMode, const Material *_mat)
 Deferred draw call with shader based renderer.
 
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)
 
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.
 
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.
 
void setMultipassStatus (const MultipassBitMask _passStatus)
 Set multipass settings for the nodes status functions.
 
void multipassStatusSetActive (const unsigned int _i, bool _active)
 Set multipass status to traverse in a specific pass.
 
bool multipassStatusActive (const unsigned int _i) const
 Get multipass status to traverse in a specific pass.
 
MultipassBitMask multipassNode () const
 Get the current multipass settings for the node.
 
void setMultipassNode (const MultipassBitMask _passNode)
 Set multipass settings for the node.
 
void multipassNodeSetActive (const unsigned int _i, bool _active)
 Set Node status to traverse in a specific pass.
 
bool multipassNodeActive (const unsigned int _i) const
 Get Node status to traverse in a specific pass.
 
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.
 
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.
 
void setRenderObjectUniformPool (const GLSL::UniformPool *_pool)
 Set uniforms for shader based rendering.
 
const GLSL::UniformPoolgetRenderObjectUniformPool ()
 Get uniforms for shader based rendering.
 
void setRenderObjectTexture (int _samplerSlot, GLuint _texId, GLenum _texType=GL_TEXTURE_2D)
 Set textures for shader based rendering.
 
void setRenderObjectModifier (RenderObjectModifier *_modifier)
 Set modifier for render objects.
 
RenderObjectModifiergetRenderObjectModifier ()
 Get render-object modifier.
 
void applyRenderObjectSettings (DrawModes::DrawModePrimitive _primitive, RenderObject *_obj) const
 Set shaders, textures and uniforms as provided by user to a render-object.
 

Private Member Functions

void draw_obj () const
 
void draw_obj_tex () const
 

Private Attributes

std::vector< Vec3fvertices_
 
std::vector< Vec3fnormals_
 
std::vector< Vec2ftexCoords_
 
std::vector< Facefaces_
 

Additional Inherited Members

- 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. More...
 
typedef unsigned int MultipassBitMask
 Multipass pass bit mask type.
 

Detailed Description

Definition at line 79 of file OBJNode.hh.

Constructor & Destructor Documentation

◆ OBJNode()

ACG::SceneGraph::OBJNode::OBJNode ( BaseNode _parent = 0,
const std::string &  _name = "<OBJNode>" 
)
inline

Default constructor.

Definition at line 85 of file OBJNode.hh.

◆ ~OBJNode()

virtual ACG::SceneGraph::OBJNode::~OBJNode ( )
inlinevirtual

destructor

Definition at line 92 of file OBJNode.hh.

Member Function Documentation

◆ add_face() [1/2]

size_t ACG::SceneGraph::OBJNode::add_face ( const Face _f)
inline

add triangle

Definition at line 150 of file OBJNode.hh.

◆ add_face() [2/2]

size_t ACG::SceneGraph::OBJNode::add_face ( unsigned int  _i0,
unsigned int  _i1,
unsigned int  _i2 
)
inline

add triangle

Definition at line 157 of file OBJNode.hh.

◆ add_vertex()

size_t ACG::SceneGraph::OBJNode::add_vertex ( const Vec3f _v)
inline

add vertex

Definition at line 142 of file OBJNode.hh.

◆ availableDrawModes()

DrawModes::DrawMode ACG::SceneGraph::OBJNode::availableDrawModes ( ) const
overridevirtual

return available draw modes

Reimplemented from ACG::SceneGraph::BaseNode.

Definition at line 95 of file OBJNode.cc.

◆ boundingBox()

void ACG::SceneGraph::OBJNode::boundingBox ( Vec3d _bbMin,
Vec3d _bbMax 
)
overridevirtual

update bounding box

Reimplemented from ACG::SceneGraph::BaseNode.

Definition at line 70 of file OBJNode.cc.

◆ clear()

void ACG::SceneGraph::OBJNode::clear ( )
inline

clear the node

Definition at line 132 of file OBJNode.hh.

◆ draw()

void ACG::SceneGraph::OBJNode::draw ( GLState _state,
const DrawModes::DrawMode _drawMode 
)
overridevirtual

drawing the primitive

Reimplemented from ACG::SceneGraph::BaseNode.

Definition at line 110 of file OBJNode.cc.

◆ draw_obj()

void ACG::SceneGraph::OBJNode::draw_obj ( ) const
private

Definition at line 177 of file OBJNode.cc.

◆ draw_obj_tex()

void ACG::SceneGraph::OBJNode::draw_obj_tex ( ) const
private

Definition at line 197 of file OBJNode.cc.

◆ face() [1/2]

Face & ACG::SceneGraph::OBJNode::face ( unsigned int  _i)
inline

get i'th face

Definition at line 187 of file OBJNode.hh.

◆ face() [2/2]

const Face & ACG::SceneGraph::OBJNode::face ( unsigned int  _i) const
inline

get i'th face

Definition at line 181 of file OBJNode.hh.

◆ n_faces()

size_t ACG::SceneGraph::OBJNode::n_faces ( ) const
inline

number of faces

Definition at line 124 of file OBJNode.hh.

◆ n_normals()

size_t ACG::SceneGraph::OBJNode::n_normals ( ) const
inline

number of normals

Definition at line 126 of file OBJNode.hh.

◆ n_texcoords()

size_t ACG::SceneGraph::OBJNode::n_texcoords ( ) const
inline

number of texcoords

Definition at line 128 of file OBJNode.hh.

◆ n_vertices()

size_t ACG::SceneGraph::OBJNode::n_vertices ( ) const
inline

number of vertices

Definition at line 122 of file OBJNode.hh.

◆ normal() [1/2]

Vec3f & ACG::SceneGraph::OBJNode::normal ( unsigned int  _i)
inline

get i'th normal

Definition at line 201 of file OBJNode.hh.

◆ normal() [2/2]

const Vec3f & ACG::SceneGraph::OBJNode::normal ( unsigned int  _i) const
inline

get i'th normal

Definition at line 195 of file OBJNode.hh.

◆ pick()

void ACG::SceneGraph::OBJNode::pick ( GLState _state,
PickTarget  _target 
)
overridevirtual

picking

Reimplemented from ACG::SceneGraph::BaseNode.

Definition at line 229 of file OBJNode.cc.

◆ read()

bool ACG::SceneGraph::OBJNode::read ( const std::string &  _filename)

Read from file. Implemented using OpenMesh loader and OBJNodeExporter.

Definition at line 260 of file OBJNode.cc.

◆ update_face_normals()

void ACG::SceneGraph::OBJNode::update_face_normals ( )

Update face normals. Call when geometry changes.

Definition at line 398 of file OBJNode.cc.

◆ vertex() [1/2]

Vec3f & ACG::SceneGraph::OBJNode::vertex ( unsigned int  _i)
inline

get i'th vertex

Definition at line 167 of file OBJNode.hh.

◆ vertex() [2/2]

const Vec3f & ACG::SceneGraph::OBJNode::vertex ( unsigned int  _i) const
inline

get i'th vertex

Definition at line 173 of file OBJNode.hh.

Member Data Documentation

◆ faces_

std::vector<Face> ACG::SceneGraph::OBJNode::faces_
private

Definition at line 224 of file OBJNode.hh.

◆ normals_

std::vector<Vec3f> ACG::SceneGraph::OBJNode::normals_
private

Definition at line 222 of file OBJNode.hh.

◆ texCoords_

std::vector<Vec2f> ACG::SceneGraph::OBJNode::texCoords_
private

Definition at line 223 of file OBJNode.hh.

◆ vertices_

std::vector<Vec3f> ACG::SceneGraph::OBJNode::vertices_
private

Definition at line 221 of file OBJNode.hh.


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