RobWorkProject  20.10.1-
Classes | Public Types | Public Member Functions | Public Attributes | Protected Member Functions | List of all members
Model3D::Object3DGeneric Class Referenceabstract

An abstract 3d object consisting of geometry information, material and texture. More...

#include <Model3D.hpp>

Inherited by Model3D::Object3D< T >.

Classes

struct  MaterialMapData
 Mapping from triangles to materials. More...
 

Public Types

typedef rw::core::Ptr< Object3DGenericPtr
 Smart pointer type for Object3DGeneric.
 

Public Member Functions

bool hasTexture () const
 test if the object is textured
 
void setMaterial (std::size_t material)
 set the material used by addTriangles More...
 
virtual void scale (float scale)=0
 Scales the object by scale. More...
 
virtual std::size_t countFaces () const =0
 Get the number of faces. More...
 
virtual std::vector< rw::math::Vector3D< float > > getFaceVertices (size_t idx) const =0
 Returns vertices corresponding to the idx face. More...
 

Public Attributes

std::string _name
 name/id of object
 
int _parentObj
 index of parent object
 
bool _hasTexture
 true if any of the materials used has texture
 
std::vector< rw::math::Vector3D< float > > _vertices
 Vertice array.
 
std::vector< rw::math::Vector3D< float > > _normals
 Normal array, there must be exactly one normal per vertex.
 
std::vector< rw::math::Vector2D< float > > _texCoords
 Texture coordinate array, the texture coordinates can be mapped to either vertices or faces. The reason for this is that often vertices share two or more texcoordinates and if mapping directly to vertices then additional vertices is necessary.
 
bool _mappedToFaces
 if true then the tex coodinates are mapped to faces and not vertices. if false then the texCoords are mapped to each vertice
 
rw::math::Transform3D< float > _transform
 Transform of the object.
 
std::vector< Object3DGeneric::Ptr_kids
 Child objects.
 
rw::math::Vector2D< float > _texOffset
 Offset of texture.
 
rw::math::Vector2D< float > _texRepeat
 Repeat texture.
 
std::vector< MaterialMapData_materialMap
 maps material into a range of triangles.
 
std::vector< MaterialPolys::Ptr_matPolys
 Polygons ordered according to material.
 

Protected Member Functions

 Object3DGeneric (const std::string &name)
 constructor More...
 

Detailed Description

An abstract 3d object consisting of geometry information, material and texture.

To reduce memory, the geometry is implemented slightly differently for different mesh sizes. One of the concrete Object3D implementations should be used in practice.

Constructor & Destructor Documentation

◆ Object3DGeneric()

Object3DGeneric ( const std::string &  name)
inlineprotected

constructor

Parameters
name[in] name of object

Member Function Documentation

◆ countFaces()

virtual std::size_t countFaces ( ) const
pure virtual

Get the number of faces.

Returns
the number of faces.

Implemented in Model3D::Object3D< T >.

◆ getFaceVertices()

virtual std::vector< rw::math::Vector3D< float > > getFaceVertices ( size_t  idx) const
pure virtual

Returns vertices corresponding to the idx face.

Parameters
idx[in] Index of the face
Returns
List with vertices

Implemented in Model3D::Object3D< T >.

◆ scale()

virtual void scale ( float  scale)
pure virtual

Scales the object by scale.

Parameters
scale[in] The scaling factor.

Implemented in Model3D::Object3D< T >.

◆ setMaterial()

void setMaterial ( std::size_t  material)
inline

set the material used by addTriangles

Parameters
material

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