Class MeshShape
Defined in File mesh_shape.hpp
Inheritance Relationships
Base Type
public rviz_rendering::Shape
(Class Shape)
Class Documentation
-
class MeshShape : public rviz_rendering::Shape
This class allows constructing Ogre shapes manually, from triangle lists.
For example: Assuming we have a set of mesh triangles represented like this:
struct Triangle { unsigned v1, v2, v3; // index for the 3 vertices that make up a triangle }; std::vector<Triangle> triangles; std::vector<Ogre::Vector3> vertices; std::vector<Ogre::Vector3> normals; // normal at every vertex
we can use this class to render the mesh as follows:
rviz::MeshShape *shape = new MeshShape(scene_manager); mesh->estimateVertexCount(vertices.size()); mesh->beginTriangles(); for (std::size_t i = 0 ; i < vertices.size() ; ++i) mesh->addVertex(vertices[i], normals[i]); for (std::size_t i = 0 ; i < triangles.size() ; ++i) mesh->addTriangle(triangles[i].v1, triangles[i].v2, triangles[i].v3); mesh->endTriangles();
Public Functions
-
explicit RVIZ_RENDERING_PUBLIC MeshShape(Ogre::SceneManager *scene_manager, Ogre::SceneNode *parent_node = nullptr)
Constructor.
- Parameters:
scene_manager – The scene manager this object is associated with
parent_node – A scene node to use as the parent of this object. If NULL, uses the root scene node.
-
RVIZ_RENDERING_PUBLIC ~MeshShape() override
- RVIZ_RENDERING_PUBLIC void estimateVertexCount (size_t vcount)
Estimate the number of vertices ahead of time.
- RVIZ_RENDERING_PUBLIC void beginTriangles ()
Start adding triangles to the mesh.
- RVIZ_RENDERING_PUBLIC void addVertex (const Ogre::Vector3 &position)
Add a vertex to the mesh (no normal defined). If using this function only (not using addTriangle()) it is assumed that triangles are added by specifying the 3 vertices in order (3 consecutive calls to this function). This means there must be 3*n calls to this function to add n triangles. If addTriangle() is used, indexing in the defined vertices is done. */.
- RVIZ_RENDERING_PUBLIC void addVertex (const Ogre::Vector3 &position, const Ogre::Vector3 &normal)
Add a vertex to the mesh with a normal defined. If using this function only (not using addTriangle()) it is assumed that triangles are added by specifying the 3 vertices in order (3 consecutive calls to this function). This means there must be 3*n calls to this function to add n triangles.If addTriangle() is used, indexing in the defined vertices is done. */.
- RVIZ_RENDERING_PUBLIC void addVertex (const Ogre::Vector3 &position, const Ogre::Vector3 &normal, const Ogre::ColourValue &color)
Add a vertex to the mesh with normal and color defined. If using this function only (not using addTriangle()) it is assumed that triangles are added by specifying the 3 vertices in order (3 consecutive calls to this function). This means there must be 3*n calls to this function to add n triangles.If addTriangle() is used, indexing in the defined vertices is done. */.
- RVIZ_RENDERING_PUBLIC void addNormal (const Ogre::Vector3 &normal)
Add normal for a vertex.
- RVIZ_RENDERING_PUBLIC void addColor (const Ogre::ColourValue &color)
Add color for a vertex.
- RVIZ_RENDERING_PUBLIC void addTriangle (unsigned int p1, unsigned int p2, unsigned int p3)
Add a triangle by indexing in the defined vertices.
- RVIZ_RENDERING_PUBLIC void endTriangles ()
Notify that the set of triangles to add is complete. No more triangles can be added, beginTriangles() can no longer be called unless clear() was called.
- RVIZ_RENDERING_PUBLIC void clear ()
Clear the mesh.
- RVIZ_RENDERING_PUBLIC Ogre::ManualObject * getManualObject ()
Get the manual object created for the mesh.
-
explicit RVIZ_RENDERING_PUBLIC MeshShape(Ogre::SceneManager *scene_manager, Ogre::SceneNode *parent_node = nullptr)