#include <mesh.h>
Inherits Primitive.
Inheritance diagram for Mesh:
Public Member Functions | |
Mesh () | |
Creates a mesh primitive. | |
Mesh (const std::string &filename, Material *m=0) | |
Loads a mesh from the specified file. | |
virtual | ~Mesh () |
Destroys the mesh. | |
void | load (const std::string &filename) |
Loads a mesh from the specified file. | |
void | getGeometry (std::vector< Intersectable * > &geometry) |
Extract all intersectable geometry from the mesh, i.e. | |
void | setMaterial (Material *m) |
Sets the material of the primitive to the material pointed to by m, or if m is 0, the material is set to the default material (diffuse gray). | |
Material * | getMaterial () const |
Returns a pointer to the primitive's material. | |
void | setTransform (Matrix &M) |
Manually set the local transform matrix to M. | |
void | setTranslation (const Vector &T) |
Sets the translation of the node to T. | |
void | setTranslation (float tx, float ty, float tz) |
Sets the translation of the node to (tx,ty,tz). | |
void | setScale (float s) |
Sets the scale uniformly to s. | |
void | setScale (const Vector &S) |
Sets the scale non-uniformly to S. | |
void | setScale (float sx, float sy, float sz) |
Sets the scale non-uniformly to (sx,sy,sz). | |
void | setRotation (const Vector &R) |
Sets the rotation about the x,y,z axes to the components of R. | |
void | setRotation (float rx, float ry, float rz) |
Sets the rotation about the x,y,z axes to (rx,ry,rz) respectively. | |
Protected Types | |
typedef std::list< Node * >::iterator | t_itr |
typedef std::list< Node * >::const_iterator | t_constitr |
Protected Member Functions | |
void | prepare () |
Prepares the mesh for rendering by transforming all vertex positions/normals to world space. | |
void | clear () |
Clears all data associated with the mesh. | |
void | loadOBJ (const std::string &filename) |
Loads a mesh file in the OBJ format. | |
void | addChild (Node *child) |
Adds a node to the list of children. | |
bool | hasChild (const Node *child) const |
Returns true if a specific node is a child of this node. | |
void | setupTransform (const Matrix &world) |
Setup the local and world transform of the node. | |
Protected Attributes | |
std::vector< Point > | mVtxP |
Array of vertex positions. | |
std::vector< Vector > | mVtxN |
Array of vertex normals. | |
std::vector< UV > | mVtxUV |
Array of vertex UV coordinates. | |
std::vector< Triangle > | mFaces |
Array of triangles. | |
bool | mReady |
True if prepare() has been called. | |
Material * | mMaterial |
Ptr to the material used by the primitive. | |
Vector | mT |
Translation. | |
Vector | mS |
Scale. | |
Vector | mR |
Rotation. | |
bool | mTransformSet |
True if the local transform has been setup. | |
Matrix | mLocalTransform |
Local transform, created from the T,S,R parameters. | |
Matrix | mWorldTransform |
Object->World transform (local + inherited transform). | |
std::list< Node * > | mChildren |
List of children attached to the Node. |
The mesh can be loaded from an WaveFront (.obj) mesh file. Internally, the mesh's vertex positions, normals, and texture coordinates are stored in separate vectors. Each triangle has three sets of indices into these vectors. If the normals are not specified in the obj-file, these are computed by area-weighting the face normals.