Public Member Functions | Private Attributes
rviz::MeshShape Class Reference

This class allows constructing Ogre shapes manually, from triangle lists. More...

#include <mesh_shape.h>

Inheritance diagram for rviz::MeshShape:
Inheritance graph
[legend]

List of all members.

Public Member Functions

void addColor (const Ogre::ColourValue &color)
 Add color for a vertex.
void addNormal (const Ogre::Vector3 &normal)
 Add normal for a vertex.
void addTriangle (unsigned int p1, unsigned int p2, unsigned int p3)
 Add a triangle by indexing in the defined vertices.
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.
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.
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.
void beginTriangles ()
 Start adding triangles to the mesh.
void clear ()
 Clear the mesh.
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.
void estimateVertexCount (size_t vcount)
Ogre::ManualObject * getManualObject ()
 Get the manual object created for the mesh.
 MeshShape (Ogre::SceneManager *scene_manager, Ogre::SceneNode *parent_node=NULL)
 Constructor.
virtual ~MeshShape ()

Private Attributes

Ogre::ManualObject * manual_object_
bool started_

Detailed Description

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();
    

Definition at line 69 of file mesh_shape.h.


Constructor & Destructor Documentation

rviz::MeshShape::MeshShape ( Ogre::SceneManager *  scene_manager,
Ogre::SceneNode *  parent_node = NULL 
)

Constructor.

Parameters:
scene_managerThe scene manager this object is associated with
parent_nodeA scene node to use as the parent of this object. If NULL, uses the root scene node.

Definition at line 45 of file mesh_shape.cpp.

Definition at line 54 of file mesh_shape.cpp.


Member Function Documentation

void rviz::MeshShape::addColor ( const Ogre::ColourValue &  color)

Add color for a vertex.

Definition at line 107 of file mesh_shape.cpp.

void rviz::MeshShape::addNormal ( const Ogre::Vector3 normal)

Add normal for a vertex.

Definition at line 102 of file mesh_shape.cpp.

void rviz::MeshShape::addTriangle ( unsigned int  p1,
unsigned int  p2,
unsigned int  p3 
)

Add a triangle by indexing in the defined vertices.

Definition at line 112 of file mesh_shape.cpp.

void rviz::MeshShape::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.

Definition at line 81 of file mesh_shape.cpp.

void rviz::MeshShape::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.

Definition at line 87 of file mesh_shape.cpp.

void rviz::MeshShape::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.

Definition at line 94 of file mesh_shape.cpp.

Start adding triangles to the mesh.

Definition at line 66 of file mesh_shape.cpp.

Clear the mesh.

Definition at line 139 of file mesh_shape.cpp.

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.

Definition at line 117 of file mesh_shape.cpp.

void rviz::MeshShape::estimateVertexCount ( size_t  vcount)

Definition at line 60 of file mesh_shape.cpp.

Ogre::ManualObject* rviz::MeshShape::getManualObject ( ) [inline]

Get the manual object created for the mesh.

Definition at line 128 of file mesh_shape.h.


Member Data Documentation

Ogre::ManualObject* rviz::MeshShape::manual_object_ [private]

Definition at line 137 of file mesh_shape.h.

bool rviz::MeshShape::started_ [private]

Definition at line 136 of file mesh_shape.h.


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


rviz
Author(s): Dave Hershberger, David Gossow, Josh Faust
autogenerated on Thu Jun 6 2019 18:02:17