DART
6.7.3
|
#include <MeshShape.hpp>
Public Types | |
enum | ColorMode { MATERIAL_COLOR = 0 , COLOR_INDEX , SHAPE_COLOR } |
enum | ShapeType { SPHERE , BOX , ELLIPSOID , CYLINDER , CAPSULE , CONE , PLANE , MULTISPHERE , MESH , SOFT_MESH , LINE_SEGMENT , HEIGHTMAP , UNSUPPORTED } |
enum | DataVariance { STATIC =0 , DYNAMIC_TRANSFORM = 1 << 1 , DYNAMIC_PRIMITIVE = 1 << 2 , DYNAMIC_COLOR = 1 << 3 , DYNAMIC_VERTICES = 1 << 4 , DYNAMIC_ELEMENTS = 1 << 5 , DYNAMIC = 0xFF } |
DataVariance can be used by renderers to determine whether it should expect data for this shape to change during each update. More... | |
using | VersionChangedSignal = common::Signal< void(Shape *shape, std::size_t version)> |
Public Member Functions | |
MeshShape (const Eigen::Vector3d &scale, const aiScene *mesh, const common::Uri &uri="", common::ResourceRetrieverPtr resourceRetriever=nullptr) | |
Constructor. More... | |
virtual | ~MeshShape () |
Destructor. More... | |
const std::string & | getType () const override |
Returns a string representing the shape type. More... | |
const aiScene * | getMesh () const |
virtual void | update () |
Updates positions of the vertices or the elements. More... | |
void | notifyAlphaUpdated (double alpha) override |
Notify that the alpha of this shape has updated. More... | |
void | setMesh (const aiScene *mesh, const std::string &path="", common::ResourceRetrieverPtr resourceRetriever=nullptr) |
void | setMesh (const aiScene *mesh, const common::Uri &path, common::ResourceRetrieverPtr resourceRetriever=nullptr) |
std::string | getMeshUri () const |
Returns URI to the mesh as std::string; an empty string if unavailable. More... | |
const common::Uri & | getMeshUri2 () const |
Returns URI to the mesh; an empty string if unavailable. More... | |
const std::string & | getMeshPath () const |
Returns path to the mesh on disk; an empty string if unavailable. More... | |
common::ResourceRetrieverPtr | getResourceRetriever () |
void | setScale (const Eigen::Vector3d &scale) |
const Eigen::Vector3d & | getScale () const |
void | setColorMode (ColorMode mode) |
Set how the color of this mesh should be determined. More... | |
ColorMode | getColorMode () const |
Get the coloring mode that this mesh is using. More... | |
void | setColorIndex (int index) |
Set which entry in aiMesh::mColor should be used when the color mode is COLOR_INDEX. More... | |
int | getColorIndex () const |
Get the index that will be used when the ColorMode is set to COLOR_INDEX. More... | |
int | getDisplayList () const |
void | setDisplayList (int index) |
Eigen::Matrix3d | computeInertia (double mass) const override |
Computes the inertia. More... | |
template<typename ShapeT > | |
bool | is () const |
Get true if the types of this Shape and the template parameter (a shape class) are identical. More... | |
const math::BoundingBox & | getBoundingBox () const |
Get the bounding box of the shape in its local coordinate frame. More... | |
Eigen::Matrix3d | computeInertiaFromDensity (double density) const |
Eigen::Matrix3d | computeInertiaFromMass (double mass) const |
double | getVolume () const |
Returns volume of this shape. More... | |
std::size_t | getID () const |
ShapeType | getShapeType () const |
void | setDataVariance (unsigned int _variance) |
Set the data variance of this shape. More... | |
void | addDataVariance (unsigned int _variance) |
Add a type of variance to this shape. More... | |
void | removeDataVariance (unsigned int _variance) |
Remove a type of variance from this shape. More... | |
unsigned int | getDataVariance () const |
Get the data variance of this shape. More... | |
bool | checkDataVariance (DataVariance type) const |
True iff this Shape has the specified type of DataVariance. More... | |
virtual void | refreshData () |
Instruct this shape to update its data. More... | |
virtual void | notifyAlphaUpdate (double alpha) |
Notify that the alpha of this shape has updated. More... | |
virtual void | notifyColorUpdate (const Eigen::Vector4d &color) |
Notify that the color (rgba) of this shape has updated. More... | |
virtual void | notifyColorUpdated (const Eigen::Vector4d &color) |
Notify that the color (rgba) of this shape has updated. More... | |
std::size_t | incrementVersion () override final |
Increment the version of this Shape and notify its subscribers. More... | |
virtual std::size_t | getVersion () const |
Get the version number of this object. More... | |
Static Public Member Functions | |
static const std::string & | getStaticType () |
Returns shape type for this class. More... | |
static const aiScene * | loadMesh (const std::string &filePath) |
static const aiScene * | loadMesh (const std::string &_uri, const common::ResourceRetrieverPtr &retriever) |
static const aiScene * | loadMesh (const common::Uri &uri, const common::ResourceRetrieverPtr &retriever) |
Public Attributes | |
common::SlotRegister< VersionChangedSignal > | onVersionChanged |
Use this to subscribe to version change signals. More... | |
Protected Member Functions | |
void | updateBoundingBox () const override |
Updates bounding box. More... | |
void | updateVolume () const override |
Updates volume. More... | |
void | sendDestructionNotification () const |
Send a destruction notification to all Observers. More... | |
void | addObserver (Observer *_observer) const |
Add an Observer to the list of Observers. More... | |
void | removeObserver (Observer *_observer) const |
Remove an Observer from the list of Observers. More... | |
void | setVersionDependentObject (VersionCounter *dependent) |
Protected Attributes | |
const aiScene * | mMesh |
common::Uri | mMeshUri |
URI the mesh, if available). More... | |
std::string | mMeshPath |
Path the mesh on disk, if available. More... | |
common::ResourceRetrieverPtr | mResourceRetriever |
Optional method of loading resources by URI. More... | |
int | mDisplayList |
OpenGL DisplayList id for rendering. More... | |
Eigen::Vector3d | mScale |
Scale. More... | |
ColorMode | mColorMode |
Specifies how the color of this mesh should be determined. More... | |
int | mColorIndex |
Specifies which color index should be used when mColorMode is COLOR_INDEX. More... | |
math::BoundingBox | mBoundingBox |
The bounding box (in the local coordinate frame) of the shape. More... | |
bool | mIsBoundingBoxDirty |
Whether bounding box needs update. More... | |
double | mVolume |
Volume enclosed by the geometry. More... | |
bool | mIsVolumeDirty |
Whether volume needs update. More... | |
const std::size_t | mID |
Unique id. More... | |
unsigned int | mVariance |
The DataVariance of this Shape. More... | |
ShapeType | mType |
std::set< Observer * > | mObservers |
List of current Observers. More... | |
std::size_t | mVersion |
Static Protected Attributes | |
static std::atomic_int | mCounter { 1000 } |
Private Attributes | |
VersionChangedSignal | mVersionChangedSignal |
Triggered by incrementVersion() More... | |
VersionCounter * | mDependent |
|
inherited |
Enumerator | |
---|---|
MATERIAL_COLOR | Use the colors specified by the Mesh's material. |
COLOR_INDEX | Use the colors specified by aiMesh::mColor. |
SHAPE_COLOR | Use the color specified by the Shape base class. |
|
inherited |
DataVariance can be used by renderers to determine whether it should expect data for this shape to change during each update.
Enumerator | |
---|---|
STATIC | |
DYNAMIC_TRANSFORM | No data will ever change. |
DYNAMIC_PRIMITIVE | The relative transform of the Shape might change. |
DYNAMIC_COLOR | The primitive properties (such as x/y/z scaling) of the shape might change. |
DYNAMIC_VERTICES | The coloring or textures of the shape might change. |
DYNAMIC_ELEMENTS | Vertex positions of a mesh might change (this does not include adding or removing vertices) (this enum is not relevant for primitive shapes) |
DYNAMIC | The number of elements and/or arrangement of elements might change (this includes adding and removing vertices) (this enum is not relevant for primitive shapes) |
|
inherited |
Enumerator | |
---|---|
SPHERE | |
BOX | |
ELLIPSOID | |
CYLINDER | |
CAPSULE | |
CONE | |
PLANE | |
MULTISPHERE | |
MESH | |
SOFT_MESH | |
LINE_SEGMENT | |
HEIGHTMAP | |
UNSUPPORTED |
dart::dynamics::MeshShape::MeshShape | ( | const Eigen::Vector3d & | scale, |
const aiScene * | mesh, | ||
const common::Uri & | uri = "" , |
||
common::ResourceRetrieverPtr | resourceRetriever = nullptr |
||
) |
Constructor.
|
virtual |
Destructor.
|
inherited |
Add a type of variance to this shape.
All other variance types will remain the same.
|
protectedinherited |
Add an Observer to the list of Observers.
|
inherited |
True iff this Shape has the specified type of DataVariance.
|
overridevirtual |
Computes the inertia.
Implements dart::dynamics::Shape.
|
inherited |
|
inherited |
|
inherited |
Get the bounding box of the shape in its local coordinate frame.
The dimension will be automatically determined by the sub-classes such as BoxShape, EllipsoidShape, CylinderShape, and MeshShape.
int dart::dynamics::MeshShape::getColorIndex | ( | ) | const |
Get the index that will be used when the ColorMode is set to COLOR_INDEX.
MeshShape::ColorMode dart::dynamics::MeshShape::getColorMode | ( | ) | const |
Get the coloring mode that this mesh is using.
|
inherited |
Get the data variance of this shape.
int dart::dynamics::MeshShape::getDisplayList | ( | ) | const |
|
inherited |
const aiScene * dart::dynamics::MeshShape::getMesh | ( | ) | const |
const std::string & dart::dynamics::MeshShape::getMeshPath | ( | ) | const |
Returns path to the mesh on disk; an empty string if unavailable.
std::string dart::dynamics::MeshShape::getMeshUri | ( | ) | const |
Returns URI to the mesh as std::string; an empty string if unavailable.
const common::Uri & dart::dynamics::MeshShape::getMeshUri2 | ( | ) | const |
Returns URI to the mesh; an empty string if unavailable.
common::ResourceRetrieverPtr dart::dynamics::MeshShape::getResourceRetriever | ( | ) |
const Eigen::Vector3d & dart::dynamics::MeshShape::getScale | ( | ) | const |
|
inherited |
|
static |
Returns shape type for this class.
|
overridevirtual |
|
virtualinherited |
Get the version number of this object.
|
inherited |
Returns volume of this shape.
The volume will be automatically calculated by the sub-classes such as BoxShape, EllipsoidShape, CylinderShape, and MeshShape.
|
finaloverridevirtualinherited |
Increment the version of this Shape and notify its subscribers.
Reimplemented from dart::common::VersionCounter.
|
inherited |
Get true if the types of this Shape and the template parameter (a shape class) are identical.
This function is a syntactic sugar, which is identical to: (getType() == ShapeType::getStaticType()).
Example code:
|
static |
|
static |
|
static |
|
virtualinherited |
Notify that the alpha of this shape has updated.
|
overridevirtual |
Notify that the alpha of this shape has updated.
Reimplemented from dart::dynamics::Shape.
|
virtualinherited |
Notify that the color (rgba) of this shape has updated.
|
virtualinherited |
Notify that the color (rgba) of this shape has updated.
Reimplemented in dart::dynamics::ArrowShape.
|
virtualinherited |
Instruct this shape to update its data.
|
inherited |
Remove a type of variance from this shape.
All other variance types will remain the same.
|
protectedinherited |
Remove an Observer from the list of Observers.
|
protectedinherited |
Send a destruction notification to all Observers.
This will cause all Observers to behave as if this Subject has been permanently deleted, so it should only be called when that behavior is desired.
void dart::dynamics::MeshShape::setColorIndex | ( | int | index | ) |
Set which entry in aiMesh::mColor should be used when the color mode is COLOR_INDEX.
This value must be smaller than AI_MAX_NUMBER_OF_COLOR_SETS. If the color index is higher than what the mesh has available, then we will use the highest index possible.
void dart::dynamics::MeshShape::setColorMode | ( | ColorMode | mode | ) |
Set how the color of this mesh should be determined.
|
inherited |
Set the data variance of this shape.
Use the DataVariance to indicate what kind of shape information might change during run time so that renderers can optimize reliably.
void dart::dynamics::MeshShape::setDisplayList | ( | int | index | ) |
void dart::dynamics::MeshShape::setMesh | ( | const aiScene * | mesh, |
const common::Uri & | path, | ||
common::ResourceRetrieverPtr | resourceRetriever = nullptr |
||
) |
void dart::dynamics::MeshShape::setMesh | ( | const aiScene * | mesh, |
const std::string & | path = "" , |
||
common::ResourceRetrieverPtr | resourceRetriever = nullptr |
||
) |
void dart::dynamics::MeshShape::setScale | ( | const Eigen::Vector3d & | scale | ) |
|
protectedinherited |
|
virtual |
Updates positions of the vertices or the elements.
By default, this does nothing; you must extend the MeshShape class and implement your own version of this function if you want the mesh data to get updated before rendering
|
overrideprotectedvirtual |
Updates bounding box.
Implements dart::dynamics::Shape.
|
overrideprotectedvirtual |
Updates volume.
Implements dart::dynamics::Shape.
|
mutableprotectedinherited |
The bounding box (in the local coordinate frame) of the shape.
|
protected |
Specifies which color index should be used when mColorMode is COLOR_INDEX.
|
protected |
Specifies how the color of this mesh should be determined.
|
staticprotectedinherited |
|
privateinherited |
|
protected |
OpenGL DisplayList id for rendering.
|
protectedinherited |
Unique id.
|
mutableprotectedinherited |
Whether bounding box needs update.
|
mutableprotectedinherited |
Whether volume needs update.
|
protected |
|
protected |
Path the mesh on disk, if available.
|
protected |
URI the mesh, if available).
|
mutableprotectedinherited |
List of current Observers.
|
protected |
Optional method of loading resources by URI.
|
protected |
Scale.
|
protectedinherited |
Please use getType() instead. Type of primitive shpae.
|
protectedinherited |
The DataVariance of this Shape.
|
protectedinherited |
|
privateinherited |
Triggered by incrementVersion()
|
mutableprotectedinherited |
Volume enclosed by the geometry.
|
inherited |
Use this to subscribe to version change signals.