This class implements a 3D multi-mesh object. More...
#include <CMultiMesh.h>
Public Member Functions | |
cMultiMesh () | |
Constructor of cMultiMesh. More... | |
virtual | ~cMultiMesh () |
Destructor of cMultiMesh. More... | |
virtual void | setEnabled (bool a_enabled, const bool a_affectChildren=false) |
This method enables or disables this object. When an object is disabled, both haptic and graphic rendering no longer occur. More... | |
virtual cMultiMesh * | copy (const bool a_duplicateMaterialData=false, const bool a_duplicateTextureData=false, const bool a_duplicateMeshData=false, const bool a_buildCollisionDetector=true) |
This method creates a copy of itself. More... | |
virtual void | setHapticEnabled (const bool a_hapticEnabled, const bool a_affectChildren=false) |
This method enables or disables haptic perception of this object, optionally propagating the change to children. More... | |
virtual void | setStiffness (const double a_stiffness, const bool a_affectChildren=false) |
This method sets the haptic stiffness of the object, optionally recursively affecting children. More... | |
virtual void | setFriction (double a_staticFriction, double a_dynamicFriction, const bool a_affectChildren=false) |
This method sets the static and dynamic friction properties (polygonal models only), optionally recursively affecting children. More... | |
virtual void | setShowEnabled (const bool a_show, const bool a_affectChildren=false) |
This method enables or disables the graphic display of this object, optionally propagating the change to children. More... | |
virtual void | setWireMode (const bool a_showWireMode, const bool a_affectChildren=true) |
This method returns whether wireframe rendering is enabled. More... | |
virtual void | setUseCulling (const bool a_useCulling, const bool a_affectChildren=true) |
Enable or disabling face-culling, optionally propagating the operation to my children. More... | |
virtual void | setUseTransparency (const bool a_useTransparency, const bool a_affectChildren=false) |
This method enables or disables transparency. More... | |
virtual void | setTransparencyLevel (const float a_level, const bool a_applyToVertices=false, const bool a_applyToTextures=false, const bool a_affectChildren=false) |
This method sets the transparency level of the object. More... | |
virtual void | setUseDisplayList (const bool a_useDisplayList, const bool a_affectChildren=false) |
This method enabled or disables the use of a display list for rendering, optionally propagating the operation to its children. More... | |
virtual void | markForUpdate (const bool a_affectChildren=false) |
This method invalidates any existing display lists, optionally propagating the operation to its children. More... | |
virtual void | setUseMaterial (const bool a_useMaterial, const bool a_affectChildren=true) |
This method enables or disables the use of material properties, optionally propagating the operation to its children. More... | |
virtual void | setMaterial (cMaterialPtr a_material, const bool a_affectChildren=false) |
This method sets the material properties of this object, optionally propagating the operation to its children. More... | |
virtual void | setMaterial (cMaterial &a_material, const bool a_affectChildren=false) |
This method setd the material properties of this object, optionally propagating the operation to its children. More... | |
virtual void | backupMaterialColors (const bool a_affectChildren=false) |
This method creates a backup of the material colors of this object, optionally propagating the operation to its children. More... | |
virtual void | restoreMaterialColors (const bool a_affectChildren=false) |
This method restores the material color properties of this object from a previous backup, optionally propagating the operation to its children. More... | |
virtual void | setUseTexture (const bool a_useTexture, const bool a_affectChildren=true) |
This method enables or disables the use of texture-mapping, optionally propagating the operation to its children. More... | |
virtual void | setTexture (cTexture1dPtr, const bool a_affectChildren=false) |
This method sets a texture to this object, optionally propagating the operation to its children. More... | |
virtual void | setShaderProgram (cShaderProgramPtr a_shaderProgram, const bool a_affectChildren=false) |
Set shader program. More... | |
virtual void | setShowBoundaryBox (const bool a_showBoundaryBox, const bool a_affectChildren=false) |
This method enables or disabled the graphic display of the boundary box for this object, optionally propagating the change to its children. More... | |
virtual void | deleteCollisionDetector (const bool a_affectChildren=false) |
This method deletes any existing collision detector. More... | |
virtual bool | computeCollisionDetection (const cVector3d &a_segmentPointA, const cVector3d &a_segmentPointB, cCollisionRecorder &a_recorder, cCollisionSettings &a_settings) |
This method computes any collision between a segment and this object. More... | |
virtual void | setShowCollisionDetector (const bool a_showCollisionDetector, const bool a_affectChildren=false) |
This method enables or disables the display of the collision detector, optionally propagating the change to its children. More... | |
virtual void | setCollisionDetectorProperties (unsigned int a_displayDepth, cColorf &a_color, const bool a_affectChildren=false) |
This method sets the collision detector graphic display properties. More... | |
virtual void | createBruteForceCollisionDetector () |
Set up a brute force collision detector for this mesh and (optionally) for its children. More... | |
virtual void | createAABBCollisionDetector (const double a_radius) |
Set up an AABB collision detector for this mesh. More... | |
virtual cVector3d | computeInteractions (const cVector3d &a_toolPos, const cVector3d &a_toolVel, const unsigned int a_IDN, cInteractionRecorder &a_interactions) |
Computer haptic interaction. More... | |
cMesh * | newMesh () |
This method creates a new mesh primitive. More... | |
bool | addMesh (cMesh *a_mesh) |
This method adds an existing mesh primitives to list of meshes. More... | |
bool | removeMesh (cMesh *a_mesh) |
This method removes a mesh primitive from the list of meshes. More... | |
bool | removeAllMesh () |
This method removes all mesh primitives. More... | |
bool | deleteMesh (cMesh *a_mesh) |
This method deletes a mesh primitive from the list of meshes. More... | |
bool | deleteAllMeshes () |
This method deletes all meshes. More... | |
int | getNumMeshes () |
This method retrieves the number of meshes that compose this multi-mesh object. More... | |
cMesh * | getMesh (unsigned int a_index) |
This method returns a pointer to a mesh primitive by passing its index number. More... | |
void | convertToSingleMesh (cMesh *a_mesh) |
This method converts this multimesh into a single mesh object. More... | |
bool | getVertex (const unsigned int a_index, cMesh *&a_mesh, unsigned int &a_vertexIndex) |
This method returns the index number and mesh of a specific vertex that is part of this multi-mesh. More... | |
cVector3d | getVertexPos (unsigned int a_index) |
This method returns the position data of specific vertex. More... | |
unsigned int | getNumVertices () const |
This method returns the the number of stored vertices. More... | |
virtual void | setUseVertexColors (const bool a_useColors, const bool a_affectChildren=true) |
This method enables or disables the use of per-vertex colors, optionally propagating the operation to its children. More... | |
void | setVertexColor (const cColorf &a_color) |
This method sets the color of each vertex. More... | |
bool | getTriangle (const unsigned int a_index, cMesh *&a_mesh, unsigned int &a_triangleIndex) |
This method returns the index number and mesh of a specific triangle that is part of this multi-mesh. More... | |
unsigned int | getNumTriangles () const |
This method returns the the number of stored triangles. More... | |
void | clear () |
This method clears all triangles and vertices of multi-mesh. More... | |
void | setShowTriangles (const bool a_showTriangles) |
This method enables or disables the rendering of triangles. More... | |
void | computeAllEdges (double a_angleThresholdDeg=40.0) |
This method creates a list of edges by providing a threshold angle in degrees. More... | |
void | clearAllEdges () |
This method clears all edges. More... | |
void | setShowEdges (const bool a_showEdges) |
This method enables or disables the rendering of edges. More... | |
void | setEdgeProperties (const double a_width, const cColorf &a_color) |
This method sets the graphic properties for edge-rendering. More... | |
void | setEdgeLineWidth (const double a_width) |
This method sets the line width of all edges. More... | |
void | setShowNormals (const bool &a_showNormals) |
This method enables or disables the rendering of vertex normals. More... | |
void | setNormalsProperties (const double a_length, const cColorf &a_color) |
This method sets the graphic properties for normal-rendering. More... | |
void | setNormalsLength (const double a_length) |
This method set the length of normals for display purposes. More... | |
void | computeAllNormals () |
This method computes all triangle normals. More... | |
void | reverseAllNormals () |
This method reverses all normals on this model. More... | |
void | computeBTN () |
This method computes the normal matrix vectors for all triangles. More... | |
void | setShowTangents (const bool a_showTangents) |
This method enables or disables the rendering of tangents and bi-tangents. More... | |
virtual bool | loadFromFile (std::string a_filename) |
This method loads a 3D object from a file. More... | |
virtual bool | saveToFile (std::string a_filename) |
This method saves 3D object to a file. More... | |
virtual void | scale (const double &a_scaleFactor, const bool a_affectChildren=true) |
This method scales this object by a_scaleFactor (uniform scale). More... | |
void | scaleXYZ (const double a_scaleX, const double a_scaleY, const double a_scaleZ) |
This method scales this object by using different factors along X,Y and Z axes. More... | |
Public Member Functions inherited from chai3d::cGenericObject | |
cGenericObject () | |
Constructor of cGenericObject. More... | |
virtual | ~cGenericObject () |
Destructor of cGenericObject. More... | |
bool | getEnabled () const |
This method returns true if the object is enabled, false otherwise. More... | |
virtual void | setLocalPos (const cVector3d &a_localPos) |
This method sets the local position of this object. More... | |
void | setLocalPos (const double a_x=0.0, const double a_y=0.0, const double a_z=0.0) |
This method sets the local position of this object. More... | |
cVector3d | getLocalPos () const |
This method returns the local position of this object. More... | |
cVector3d | getGlobalPos () const |
This method returns the global position of this object. More... | |
virtual void | setLocalRot (const cMatrix3d &a_localRot) |
This method sets the local rotation matrix for this object. More... | |
cMatrix3d | getLocalRot () const |
This method returns the local rotation matrix of this object. More... | |
cMatrix3d | getGlobalRot () const |
This method returns the global rotation matrix of this object. More... | |
void | setLocalTransform (const cTransform &a_transform) |
This method returns the local position and rotation matrix by passing a transformation matrix. More... | |
cTransform | getLocalTransform () |
This method returns the local position and rotation matrix in a transformation matrix. More... | |
cTransform | getGlobalTransform () |
This method returns the global position and rotation matrix in a transformation matrix. More... | |
void | translate (const cVector3d &a_translation) |
This method translates this object by a specified offset. More... | |
void | translate (const double a_x, const double a_y, const double a_z=0.0) |
This method translates this object by a specified offset. More... | |
void | rotateAboutLocalAxisRad (const cVector3d &a_axis, const double a_angleRad) |
This method rotates this object around a local axis. Angle magnitude is defined in radians. More... | |
void | rotateAboutLocalAxisDeg (const cVector3d &a_axis, const double a_angleDeg) |
This method rotates this object around a local axis. Angle magnitude is defined in degrees. More... | |
void | rotateAboutLocalAxisRad (const double a_axisX, const double a_axisY, const double a_axisZ, const double a_angleRad) |
This method rotates this object around a local axis. Angle magnitude is defined in radians. More... | |
void | rotateAboutLocalAxisDeg (const double a_axisX, const double a_axisY, const double a_axisZ, const double a_angleDeg) |
This method rotates this object around a local axis. Angle magnitude is defined in degrees. More... | |
void | rotateAboutGlobalAxisRad (const cVector3d &a_axis, const double a_angleRad) |
This method rotates this object around a global axis. Angle magnitude is defined in radians. More... | |
void | rotateAboutGlobalAxisDeg (const cVector3d &a_axis, const double a_angleDeg) |
This method rotates this object around a global axis. Angle magnitude is defined in degrees. More... | |
void | rotateAboutGlobalAxisRad (const double a_axisX, const double a_axisY, const double a_axisZ, const double a_angleRad) |
This method rotate this object around a local axis. Angle magnitude is defined in radians. More... | |
void | rotateAboutGlobalAxisDeg (const double a_axisX, const double a_axisY, const double a_axisZ, const double a_angleDeg) |
This method rotates this object around a local axis. Angle magnitude is defined in degrees. More... | |
void | rotateExtrinsicEulerAnglesRad (const double &a_angleRad1, const double &a_angleRad2, const double &a_angleRad3, const cEulerOrder a_eulerOrder) |
This method rotates this object using fixed Euler representation. Angles are defined in radians. More... | |
void | rotateExtrinsicEulerAnglesDeg (const double &a_angleDeg1, const double &a_angleDeg2, const double &a_angleDeg3, const cEulerOrder a_eulerOrder) |
This method rotates this object using fixed Euler representation. Angles are defined in radians. More... | |
void | rotateIntrinsicEulerAnglesRad (const double &a_angleRad1, const double &a_angleRad2, const double &a_angleRad3, const cEulerOrder a_eulerOrder) |
This method rotates this object using co-moving Euler representation. Angles are defined in radians. More... | |
void | rotateIntrinsicEulerAnglesDeg (const double &a_angleDeg1, const double &a_angleDeg2, const double &a_angleDeg3, const cEulerOrder a_eulerOrder) |
This method rotates this object using co-moving Euler representation. Angles are defined in radians. More... | |
virtual void | computeGlobalPositions (const bool a_frameOnly=true, const cVector3d &a_globalPos=cVector3d(0.0, 0.0, 0.0), const cMatrix3d &a_globalRot=cIdentity3d()) |
This method computes the global position and rotation of this object and its children. More... | |
void | computeGlobalPositionsFromRoot (const bool a_frameOnly=true) |
This method computes the global position and rotation of current object only. More... | |
bool | addEffect (cGenericEffect *a_effect) |
This method adds a haptic effect to this object. More... | |
bool | removeEffect (cGenericEffect *a_effect) |
This method removes a haptic effect from this object. More... | |
void | deleteAllEffects () |
This method removes all haptic effects. More... | |
bool | createEffectMagnetic () |
This method creates a magnetic haptic effect. More... | |
bool | deleteEffectMagnetic () |
This method deletes any current magnetic haptic effect. More... | |
bool | createEffectStickSlip () |
This method creates a stick-and-slip haptic effect. More... | |
bool | deleteEffectStickSlip () |
This method delete any current stick-and-slip haptic effect. More... | |
bool | createEffectSurface () |
This method creates a surface haptic effect. More... | |
bool | deleteEffectSurface () |
This method deletes any current surface haptic effect. More... | |
bool | createEffectVibration () |
This method creates a vibration haptic effect. More... | |
bool | deleteEffectVibration () |
This method deletes any current vibration haptic effect. More... | |
bool | createEffectViscosity () |
This method creates a viscous haptic effect. More... | |
bool | deleteEffectViscosity () |
This method deletes any current viscous haptic effect. More... | |
bool | getHapticEnabled () const |
This method returns the haptic status of object (true means it can be felt when visible). More... | |
bool | getShowEnabled () const |
This method returns the display status of object (true means it's visible). More... | |
bool | getWireMode () const |
This method returns whether wireframe rendering is enabled. More... | |
bool | getUseCulling () const |
This method returns true if face-culling is enabled, false otherwise. More... | |
bool | getUseTransparency () const |
This method returns true if transparency is enabled, false otherwise. More... | |
bool | getUseDisplayList () const |
This method returns true if a display list is activated, false otherwise. More... | |
bool | getUseVertexColors () const |
This method returns true is per-vertex color properties are enabled, false otherwise. More... | |
bool | getUseMaterial () const |
This method returns true is material properties are enabled, false otherwise. More... | |
bool | getUseTexture () const |
This method returns true if texture-mapping is enabled, false otherwise. More... | |
virtual cShaderProgramPtr | getShaderProgram () |
This method returns a pointer to the current shader program. More... | |
bool | getShowBoundaryBox () const |
This method returns true if the boundary box is being displayed, false otherwise. More... | |
cVector3d | getBoundaryMin () const |
This method returns the minimum point of this object's boundary box. More... | |
cVector3d | getBoundaryMax () const |
This method returns the maximum point of this object's boundary box. More... | |
cVector3d | getBoundaryCenter () const |
This method computes and returns the center of this object's boundary box. More... | |
bool | getBoundaryBoxEmpty () |
This method returns true, if the boundary box is empty, otherwise false. More... | |
virtual void | computeBoundaryBox (const bool a_includeChildren=true) |
This method computes this object's boundary box, optionally forcing it to bound child objects. More... | |
virtual void | setShowFrame (const bool a_showFrame, const bool a_affectChildren=false) |
This method enables or disables the graphic display of the reference frame arrows for this object, optionally propagating the change to its children. More... | |
bool | getShowFrame (void) const |
This method returns true if the display of the reference frame is enabled, false otherwise. More... | |
virtual void | setFrameSize (const double a_size=1.0, const bool a_affectChildren=false) |
This method sets the size of the rendered reference frame, optionally propagating the change to its children. More... | |
double | getFrameSize () const |
This method returns the size of the graphical reference frame. More... | |
void | setCollisionDetector (cGenericCollision *a_collisionDetector) |
This method sets a collision detector to this current object. More... | |
cGenericCollision * | getCollisionDetector () const |
This method returns a pointer to this object's current collision detector. More... | |
bool | getShowCollisionDetector () |
This method returns true if the collision detector is being displayed graphically, false otherwise. More... | |
void | setParent (cGenericObject *a_parent) |
This method sets the parent of this object. More... | |
cGenericObject * | getParent () const |
This method returns the parent of this object. More... | |
void | setOwner (cGenericObject *a_owner) |
This method sets a link to an object that owns this object. This could be a super parent for instance. More... | |
cGenericObject * | getOwner () |
This method returns the owner of this object. More... | |
cGenericObject * | getChild (const unsigned int a_index) const |
This method returns a selected child from the list of children. More... | |
bool | addChild (cGenericObject *a_object) |
This method add an object to the list of children. More... | |
bool | removeChild (cGenericObject *a_object) |
This method removes an object from the list of children, without deleting it. More... | |
bool | removeFromGraph () |
This method removes this object from its parent's list of children. More... | |
bool | deleteChild (cGenericObject *a_object) |
This method removes an object from its list of children and deletes it. More... | |
void | clearAllChildren () |
This method clears all objects from its list of children, without deleting them. More... | |
void | deleteAllChildren () |
This method clears and delete all objects from its list of children. More... | |
unsigned int | getNumChildren () |
This method returns the number of children from its list of children. More... | |
unsigned int | getNumDescendants (bool a_includeCurrentObject=false) |
This method returns the total number of descendants, optionally including this object. More... | |
void | setGhostEnabled (bool a_ghostEnabled) |
This method enables or disables this object to be a ghost node. More... | |
bool | getGhostEnabled () |
This method returns truee if this object is a ghost node. More... | |
virtual void | renderSceneGraph (cRenderOptions &a_options) |
This method renders the entire scene graph, starting from this object. More... | |
virtual void | adjustCollisionSegment (cVector3d &a_segmentPointA, cVector3d &a_segmentPointAadjusted) |
This method adjusts the collision segment to handle objects in motion. More... | |
Public Member Functions inherited from chai3d::cGenericType | |
cGenericType () | |
Constructor of cGenericType. More... | |
virtual | ~cGenericType () |
Destructor of cGenericType. More... | |
Public Attributes | |
std::vector< cMesh * > * | m_meshes |
Array of meshes. More... | |
Public Attributes inherited from chai3d::cGenericObject | |
std::string | m_name |
Name of current object (filename). More... | |
cMaterialPtr | m_material |
Material property. More... | |
cTexture1dPtr | m_texture |
Texture property. More... | |
cNormalMapPtr | m_normalMap |
Normal map property. More... | |
int | m_userTag |
An arbitrary tag, not used by CHAI3D. More... | |
void * | m_userData |
An arbitrary data pointer, not used by CHAI3D. More... | |
std::string | m_userName |
Name of current object, not used by CHAI3D. More... | |
cGenericObject * | m_userExternalObject |
A link to an external cGenericObject object, not used by CHAI3D. More... | |
cVector3d | m_interactionPoint |
Projection of the most recent haptic point (tool) onto the surface of the virtual object. More... | |
cVector3d | m_interactionNormal |
Surface normal at the current interaction point. More... | |
bool | m_interactionInside |
Was the last tool (haptic point) located inside the object? More... | |
Protected Member Functions | |
virtual void | render (cRenderOptions &a_options) |
This method renders this object graphically using OpenGL. More... | |
virtual void | updateGlobalPositions (const bool a_frameOnly) |
This method update the global position information about this object. More... | |
virtual void | updateBoundaryBox () |
This method updates the boundary box of this object. More... | |
void | copyMultiMeshProperties (cMultiMesh *a_obj, const bool a_duplicateMaterialData, const bool a_duplicateTextureData, const bool a_duplicateMeshData, const bool a_buildCollisionDetector) |
This method copies all properties of this multi-mesh object to another. More... | |
Protected Member Functions inherited from chai3d::cGenericObject | |
virtual void | scaleObject (const double &a_scaleFactor) |
This method scales the size of this object with given scale factor. More... | |
virtual void | computeLocalInteraction (const cVector3d &a_toolPos, const cVector3d &a_toolVel, const unsigned int a_IDN) |
This method updates the geometric relationship between the tool and the current object. More... | |
virtual cVector3d | computeOtherInteractions (const cVector3d &a_toolPos, const cVector3d &a_toolVel, const unsigned int a_IDN, cInteractionRecorder &a_interactions) |
This method computes any additional interactions between the object and the tools. More... | |
virtual bool | computeOtherCollisionDetection (cVector3d &a_segmentPointA, cVector3d &a_segmentPointB, cCollisionRecorder &a_recorder, cCollisionSettings &a_settings) |
This method computes any additional collisions other than the ones computed by the default collision detector. More... | |
void | copyGenericObjectProperties (cGenericObject *a_objDest, const bool a_duplicateMaterialData, const bool a_duplicateTextureData, const bool a_duplicateMeshData, const bool a_buildCollisionDetector) |
This method copies all properties of the current generic object to another. More... | |
Additional Inherited Members | |
Static Public Attributes inherited from chai3d::cGenericObject | |
static cColorf | s_boundaryBoxColor |
Color of the boundary box. More... | |
Protected Attributes inherited from chai3d::cGenericObject | |
cGenericObject * | m_parent |
Parent object. More... | |
cGenericObject * | m_owner |
std::vector< cGenericObject * > | m_children |
List of children. More... | |
cVector3d | m_localPos |
The position of this object in my parent's reference frame. More... | |
cVector3d | m_globalPos |
The position of this object in the world's reference frame. More... | |
cMatrix3d | m_localRot |
The rotation matrix that rotates my reference frame into my parent's reference frame. More... | |
cMatrix3d | m_globalRot |
The rotation matrix that rotates my reference frame into the world's reference frame. More... | |
cVector3d | m_prevGlobalPos |
Previous position since last haptic computation. More... | |
cMatrix3d | m_prevGlobalRot |
Previous rotation since last haptic computation. More... | |
cVector3d | m_boundaryBoxMin |
Minimum position of boundary box. More... | |
cVector3d | m_boundaryBoxMax |
Maximum position of boundary box. More... | |
bool | m_boundaryBoxEmpty |
If true, then the boundary box does not include any object. More... | |
double | m_frameSize |
Size of graphical representation of frame (X-Y-Z). More... | |
double | m_frameThicknessScale |
Pen thickness of graphical representation of frame (X-Y-Z). More... | |
bool | m_enabled |
If true, the object may be rendered graphically and haptically. More... | |
bool | m_showEnabled |
If true, this object is rendered. More... | |
bool | m_hapticEnabled |
If true, this object can be felt. More... | |
bool | m_ghostEnabled |
If true, object is enabled as ghost. More... | |
bool | m_showFrame |
If true, this object's reference frame is rendered as a set of arrows. More... | |
bool | m_showBoundaryBox |
If true, this object's boundary box is displayed as a set of lines. More... | |
bool | m_showCollisionDetector |
If true, the collision detector is displayed (if available) at this node. More... | |
bool | m_useTextureMapping |
Should texture mapping be used? More... | |
bool | m_useMaterialProperty |
Should material properties be used? More... | |
bool | m_useVertexColors |
Should per-vertex colors be used? More... | |
bool | m_useDisplayList |
Should we use a display list to render this mesh? More... | |
cDisplayList | m_displayList |
Basic display list for current object. More... | |
int | m_triangleMode |
The polygon rendering mode (GL_FILL or GL_LINE). More... | |
bool | m_useTransparency |
bool | m_cullingEnabled |
cShaderProgramPtr | m_shaderProgram |
Shader program. More... | |
cTransform | m_frameGL |
OpenGL matrix describing my position and orientation transformation. More... | |
cGenericCollision * | m_collisionDetector |
The collision detector used to test for contact with this object. More... | |
std::vector< cGenericEffect * > | m_effects |
List of haptic effects programmed for this object. More... | |
Static Protected Attributes inherited from chai3d::cGenericObject | |
static cMaterialPtr | s_defaultMaterial = nullptr |
Default material property. More... | |
This class implements a collection of cMesh objects. Each cMesh object includes one material and texture properties with a set of vertices and triangles. cMultiMesh allows the user to build more complicated polygonal objects composed of sets of triangles that share digfferent materials.
chai3d::cMultiMesh::cMultiMesh | ( | ) |
Constructor of cMultiMesh.
|
virtual |
Destructor of cMultiMesh.
|
virtual |
This method enables or disables this object.
When an object is disabled, haptic and graphic rendering are no longer performed through the scenegraph and the object is simply ignored. Other operations however will still be active.
Enabling or disabling an object will not affect child objects, unless explicitly specified.
a_enabled | If true then object is enabled, false otherwise. |
a_affectChildren | If true, then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method creates a copy of itself.
a_duplicateMaterialData | If true, material (if available) is duplicated, otherwise it is shared. |
a_duplicateTextureData | If true, texture data (if available) is duplicated, otherwise it is shared. |
a_duplicateMeshData | If true, mesh data (if available) is duplicated, otherwise it is shared. |
a_buildCollisionDetector | If true, collision detector (if available) is duplicated, otherwise it is shared. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method enables or disables the object to be felt haptically.
If argument a_affectChildren
is set to true then all children are updated with the new value.
a_hapticEnabled | If true then the object can be touched when visible. |
a_affectChildren | If true then all children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method sets the haptic stiffness for this object, optionally recursively affecting children.
a_stiffness | The stiffness to apply to this object. |
a_affectChildren | If true, then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method sets the static and dynamic friction properties for this object, optionally recursively affecting children.
a_staticFriction | The static friction to apply to this object. |
a_dynamicFriction | The dynamic friction to apply to this object. |
a_affectChildren | If true then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method graphically shows or hides this object, optionally recursively affecting children.
a_show | If true then object is visible. |
a_affectChildren | If true then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method enables or disables wireframe rendering, optionally propagating the operation to children.
a_showWireMode | If true then wireframe mode is used. |
a_affectChildren | If true then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method enables or disables back face culling.
Rendering in OpenGL is much faster with culling enabled.
a_useCulling | If true then back faces are culled. |
a_affectChildren | If true then then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method specifies whether transparency is enabled. If transparency is enabled then make sure that multi-pass rendering is enabled too. For more information, see class cCamera.
a_useTransparency | If true then transparency is enabled. |
a_affectChildren | If true then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method sets the alpha value to all components of the object, optionally propagating the operation to children.
Using the 'apply to textures' option causes the actual texture alpha values to be over-written in my texture, if it exists.
a_level | Level of transparency ranging from 0.0 to 1.0. |
a_applyToVertices | If true, then apply changes to vertex colors. |
a_applyToTextures | If true, then apply changes to texture. |
a_affectChildren | If true, then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method enables the use of display lists for mesh rendering. Display lists significantly speed up rendering for large meshes, but it means that any changes that are made on the object (e.g changing vertex positions) will not take effect until you invalidate the existing display list by calling markForUpdate().
a_useDisplayList | If true then a display list is created (cMesh). |
a_affectChildren | If true then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method invalidates any existing display lists. You should call this on if you're using display lists and you modify mesh options, vertex positions, etc.
a_affectChildren | If true then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method enables or disables the use of material properties.
a_useMaterial | If true then material properties are used for rendering. |
a_affectChildren | If true then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method copies all material properties defined in a_material
to the material structure of this object.
Note that this does not affect whether material rendering is enabled; it sets the material that will be rendered if material rendering is enabled. Call method setUseMaterial() to enable or disable material rendering.
a_material | The material to apply to this object. |
a_affectChildren | If true then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method copies all material properties defined in a_material
to the material structure of this object.
Note that this does not affect whether material rendering is enabled; it sets the material that will be rendered if material rendering is enabled. Call method setUseMaterial() to enable or disable material rendering.
a_material | The material to apply to this object |
a_affectChildren | If true then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method creates a backup of the material color properties of this object, optionally recursively affecting children.
a_affectChildren | If true then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method restores material color properties for this object, optionally recursively affecting children.
a_affectChildren | If true then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method enables or disables texture-mapping, optionally recursively affecting children.
a_useTexture | If true then texture mapping is used. |
a_affectChildren | If true then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method sets the current texture for this mesh, optionally recursively affecting children.
Note that this does not affect whether texturing is enabled; it sets the texture that will be rendered if texturing is enabled. Call method setUseTexture() to enable or disable texturing.
a_texture | The texture to apply to this object. |
a_affectChildren | If true then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method assigns a shader program to this object.
If a_affectChildren
is set to true then all children are assigned with the shader program.
a_shaderProgram | Shader program to be assigned to object. |
a_affectChildren | If true then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method enables or disables the graphic representation of the boundary box of this object.
If a_affectChildren
is set to true then all children are updated with the new value.
a_showBoundaryBox | If true boundary box is displayed. |
a_affectChildren | If true then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method deletes any existing collision detector and sets the current collision detector to null.
It's fine for an object to have a null collision detector (that's the default for a new object, in fact), it just means that no collisions will be found.
a_affectChildren | If true then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method determines whether a given segment intersects this object or any of its descendants.
The segment is described by a start point a_segmentPointA
and end point a_segmentPointB
.
All detected collisions are reported in the collision recorder passed by argument a_recorder
.
Specifications about the type of collisions reported are specified by argument a_settings
.
a_segmentPointA | Start point of segment. |
a_segmentPointB | End point of segment. |
a_recorder | Recorder which stores all collision events. |
a_settings | Collision settings information. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method enables or disables graphic representation of the collision detector at this node.
If argument a_affectChildren
is set to true then all children are updated with the new value.
a_showCollisionDetector | If true then display collision detector graphically. |
a_affectChildren | If true then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method sets the rendering properties of the the graphic representation of the collision detector.
If argument a_affectChildren
is set to true then all children are updated with the new values.
a_color | Color used to render collision detector. |
a_displayDepth | Indicated which depth of collision tree needs to be displayed (see cGenericCollision). |
a_affectChildren | If true then children are updated too. |
Reimplemented from chai3d::cGenericObject.
|
virtual |
This method builds a brute Force collision detector for this mesh.
|
virtual |
This method builds an AABB collision detector for this mesh.
a_radius | Bounding radius. |
|
virtual |
This method descends through child objects to compute interactions for all cGenericEffect classes defined for each object.
a_toolPos | Current position of tool. |
a_toolVel | Current position of tool. |
a_IDN | Identification number of the force algorithm. |
a_interactions | List of recorded interactions. |
Reimplemented from chai3d::cGenericObject.
cMesh * chai3d::cMultiMesh::newMesh | ( | ) |
This method creates a new mesh and adds it to the list of meshes.
bool chai3d::cMultiMesh::addMesh | ( | cMesh * | a_mesh | ) |
This method adds an existing mesh primitives to list of meshes
bool chai3d::cMultiMesh::removeMesh | ( | cMesh * | a_mesh | ) |
This method removes a mesh primitive from the list of meshes.
a_mesh | Mesh to remove. |
bool chai3d::cMultiMesh::removeAllMesh | ( | ) |
This method removes all mesh primitives.
bool chai3d::cMultiMesh::deleteMesh | ( | cMesh * | a_mesh | ) |
This method deletes a mesh primitive from the list of meshes.
a_mesh | Mesh to delete. |
bool chai3d::cMultiMesh::deleteAllMeshes | ( | ) |
This method deletes all meshes.
int chai3d::cMultiMesh::getNumMeshes | ( | ) |
This method retrieves the number of meshes that compose this multi-mesh object.
cMesh * chai3d::cMultiMesh::getMesh | ( | unsigned int | a_index | ) |
This method returns a pointer to a mesh primitive by passing its index number.
a_index | Index number of mesh. |
void chai3d::cMultiMesh::convertToSingleMesh | ( | cMesh * | a_mesh | ) |
This method converts this multimesh into a single mesh object. Material and texture properties are not copied.
bool chai3d::cMultiMesh::getVertex | ( | const unsigned int | a_index, |
cMesh *& | a_mesh, | ||
unsigned int & | a_vertexIndex | ||
) |
This method returns the index number and mesh of a specific vertex that is part of this multi-mesh.
a_index | Index number of the requested vertex. |
a_mesh | Pointer to the mesh containing the selected vertex. |
a_vertexIndex | Index number of the specified vertex inside the mesh vertex array. |
cVector3d chai3d::cMultiMesh::getVertexPos | ( | unsigned int | a_index | ) |
This method returns the position data of specific vertex.
a_index | Index of the requested vertex. |
unsigned int chai3d::cMultiMesh::getNumVertices | ( | ) | const |
This method returns the the number of stored vertices.
|
virtual |
This method enables or disables the use of per-vertex color information of when rendering the mesh.
a_useColors | If true then then vertex color information is applied. |
a_affectChildren | If true then children are updated too. |
Reimplemented from chai3d::cGenericObject.
void chai3d::cMultiMesh::setVertexColor | ( | const cColorf & | a_color | ) |
This method sets the color of each vertex.
a_color | New color to be applied to each vertex. |
bool chai3d::cMultiMesh::getTriangle | ( | const unsigned int | a_index, |
cMesh *& | a_mesh, | ||
unsigned int & | a_triangleIndex | ||
) |
This method returns the index number and mesh of a specific triangle that is part of this multi-mesh.
a_index | Index number of the requested triangle. |
a_mesh | Pointer to the mesh containing the selected triangle. |
a_triangleIndex | Index number of the specified triangle inside the mesh triangle array. |
unsigned int chai3d::cMultiMesh::getNumTriangles | ( | ) | const |
This method returns the the number of stored triangles.
void chai3d::cMultiMesh::clear | ( | ) |
This method clears all triangles and vertices of multi-mesh.
void chai3d::cMultiMesh::setShowTriangles | ( | const bool | a_showTriangles | ) |
This method enables or disables the rendering of triangles.
a_showTriangles | If true then triangles are rendered, false otherwise. |
void chai3d::cMultiMesh::computeAllEdges | ( | double | a_angleThresholdDeg = 40.0 | ) |
This method creates a list of edges by providing a threshold angle in degrees. All triangles for which the angle between their respective surface normals are greater than the select angle threshold are added to the list of edges.
a_angleThresholdDeg | Threshold angle in degrees. |
void chai3d::cMultiMesh::clearAllEdges | ( | ) |
This method clears all edges.
void chai3d::cMultiMesh::setShowEdges | ( | const bool | a_showEdges | ) |
This method enables or disables the rendering of edges.
a_showEdges | If true then edges are rendered, false otherwise. |
void chai3d::cMultiMesh::setEdgeProperties | ( | const double | a_width, |
const cColorf & | a_color | ||
) |
This method sets the graphic properties for edge-rendering. Options passed by argument include the width of the edges and their color.
a_width | Width of edge lines. |
a_color | Color of edge lines. |
void chai3d::cMultiMesh::setEdgeLineWidth | ( | const double | a_width | ) |
This method sets the line width of all edges.
a_width | Width of edge lines. |
void chai3d::cMultiMesh::setShowNormals | ( | const bool & | a_showNormals | ) |
This method enables or disables the rendering of vertex normals.
a_showNormals | If true then normal vectors are rendered graphically, false otherwise. |
void chai3d::cMultiMesh::setNormalsProperties | ( | const double | a_length, |
const cColorf & | a_color | ||
) |
This method defines the way normals are graphically rendered.
a_length | Length of normals. |
a_color | Color of normals. |
void chai3d::cMultiMesh::setNormalsLength | ( | const double | a_length | ) |
This method set the length of normals for display purposes.
a_length | Length of normals. |
void chai3d::cMultiMesh::computeAllNormals | ( | ) |
This method computes all triangle normals.
void chai3d::cMultiMesh::reverseAllNormals | ( | ) |
This method reverses the normal for every vertex on this model. Useful for models that started with inverted faces and thus gave inward-pointing normals.
void chai3d::cMultiMesh::computeBTN | ( | ) |
This method computes the normal matrix vectors for all triangles.
void chai3d::cMultiMesh::setShowTangents | ( | const bool | a_showTangents | ) |
This method enables or disables the rendering of tangents and bi-tangents.
a_showTangents | Display mode. |
|
virtual |
This method loads a 3D mesh file.
CHAI3D currently supports .obj, .3ds, and .stl files.
a_filename | Filename of 3D model. |
|
virtual |
This method saves a mesh object to file.
CHAI3D currently supports .obj, .3ds, and .stl files.
a_filename | Filename of 3D model. |
|
virtual |
This method performs a uniform scale on the object, optionally including children.
a_scaleFactor | Scale factor. |
a_affectChildren | If true then children are updated too. |
Reimplemented from chai3d::cGenericObject.
void chai3d::cMultiMesh::scaleXYZ | ( | const double | a_scaleX, |
const double | a_scaleY, | ||
const double | a_scaleZ | ||
) |
This method scales this mesh by using different scale factors along X, Y, and Z axes.
a_scaleX | Scale factor along X axis. |
a_scaleY | Scale factor along Y axis. |
a_scaleZ | Scale factor along Z axis. |
|
protectedvirtual |
This message renders this multi-mesh using OpenGL.
a_options | Rendering options. |
Reimplemented from chai3d::cGenericObject.
|
protectedvirtual |
This method computes the global position of all vertices.
a_frameOnly | If false, then the global position of all vertices is computed. |
Reimplemented from chai3d::cGenericObject.
|
protectedvirtual |
This method compute the axis-aligned boundary box that encloses all triangles in this mesh.
Reimplemented from chai3d::cGenericObject.
|
protected |
This method copies all properties of this multi-mesh to another.
a_obj | Destination object where properties are copied to. |
a_duplicateMaterialData | If true, material (if available) is duplicated, otherwise it is shared. |
a_duplicateTextureData | If true, texture data (if available) is duplicated, otherwise it is shared. |
a_duplicateMeshData | If true, mesh data (if available) is duplicated, otherwise it is shared. |
a_buildCollisionDetector | If true, collision detector (if available) is duplicated, otherwise it is shared. |
std::vector<cMesh*>* chai3d::cMultiMesh::m_meshes |