RobWorkProject  22.2.21-
Public Types | Public Member Functions | Public Attributes | List of all members
Object3D< T > Class Template Reference

A concrete 3d object consisting of geometry information, material and texture. More...

#include <Object3D.hpp>

Inherits Object3DGeneric.

Public Types

typedef rw::core::Ptr< Object3DPtr
 Smart pointer type for Object3D.
 
- Public Types inherited from Object3DGeneric
typedef rw::core::Ptr< Object3DGenericPtr
 Smart pointer type for Object3DGeneric.
 
- Public Types inherited from TriMesh
typedef rw::core::Ptr< TriMeshPtr
 smart pointer type to this class
 
typedef rw::core::Ptr< TriMeshPtr
 smart pointer type to this class
 
- Public Types inherited from GeometryData
enum  GeometryType {
  PointCloud, LineMesh, PlainTriMesh, IdxTriMesh,
  SpherePrim, BoxPrim, OBBPrim, AABBPrim,
  LinePrim, PointPrim, PyramidPrim, ConePrim,
  TrianglePrim, CylinderPrim, TubePrim, PlanePrim,
  RayPrim, Implicit, Quadratic, UserType
}
 geometry data types
 
typedef rw::core::Ptr< GeometryDataPtr
 smart pointer type to this class
 

Public Member Functions

 Object3D (const std::string &name)
 constructor More...
 
virtual ~Object3D ()
 destructor
 
virtual std::size_t countFaces () const
 Get the number of faces. More...
 
virtual std::vector< rw::math::Vector3D< float > > getFaceVertices (size_t idx) const
 Returns vertices corresponding to the idx face. More...
 
virtual rw::geometry::Triangle< double > getTriangle (size_t idx) const
 gets the triangle at index idx. More...
 
void addTriangle (const rw::geometry::IndexedTriangle< T > &tri)
 add triangle using currently selected material
 
void addTriangles (const std::vector< rw::geometry::IndexedTriangle< T > > &tris)
 add triangles using currently selected material
 
void addTriangles (T material, const std::vector< rw::geometry::IndexedTriangle< T > > &tris)
 add triangles to this object using a specific material in the Model3D More...
 
void scale (double scale)
 Scales the model by scale. More...
 
virtual size_t getSize () const
 gets the number of triangles in the triangle array.
 
virtual size_t size () const
 gets the number of triangles in the triangle array.
 
virtual rw::core::Ptr< TriMeshclone () const
 make a clone of this triangle mesh More...
 
- Public Member Functions inherited from Object3DGeneric
virtual ~Object3DGeneric ()
 destructor
 
bool hasTexture () const
 test if the object is textured
 
void setMaterial (std::size_t material)
 set the material used by addTriangles More...
 
virtual void getTriangle (size_t idx, rw::geometry::Triangle< double > &dst) const
 gets the triangle at index idx. More...
 
virtual void getTriangle (size_t idx, rw::geometry::Triangle< float > &dst) const
 gets the triangle at index idx. Using Floating point presicion More...
 
virtual GeometryType getType () const
 the type of this primitive
 
- Public Member Functions inherited from TriMesh
virtual ~TriMesh ()
 destructor
 
rw::core::Ptr< TriMeshgetTriMesh (bool forceCopy=true)
 gets a trimesh representation of this geometry data. More...
 
rw::core::Ptr< const TriMeshgetTriMesh (bool forceCopy=true) const
 gets a trimesh representation of this geometry data. More...
 
virtual ~TriMesh ()
 destructor
 
rw::core::Ptr< TriMeshgetTriMesh (bool forceCopy=true)
 gets a trimesh representation of this geometry data. More...
 
rw::core::Ptr< const TriMeshgetTriMesh (bool forceCopy=true) const
 gets a trimesh representation of this geometry data. More...
 
virtual bool isConvex ()
 test if this geometry data is convex More...
 
void setConvexEnabled (bool isConvex)
 
double getVolume () const
 calculate a volume of this triangle mesh
 
- Public Member Functions inherited from GeometryData
virtual ~GeometryData ()
 Destructor.
 

Public Attributes

std::vector< rw::geometry::IndexedTriangle< T > > _faces
 list containing indexed polygons. The polygons index into the _vertices array and the _normals array The normal is implicitly indexed and defined as same index as the vertex.
 
std::vector< rw::geometry::IndexedPolygonN< T > > _polys
 list containing indexed polygons. The polygons index into the _vertices array and the _normals array The normal is implicitly indexed and defined as same index as the vertex.
 
- Public Attributes inherited from Object3DGeneric
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.
 

Additional Inherited Members

- Static Public Member Functions inherited from GeometryData
static std::string toString (GeometryType type)
 format GeometryType to string More...
 
- Protected Member Functions inherited from Object3DGeneric
 Object3DGeneric (const std::string &name)
 constructor More...
 

Detailed Description

template<class T = uint16_t>
class rw::geometry::Object3D< T >

A concrete 3d object consisting of geometry information, material and texture.

The template parameter should be chosen based on the number of vertices in the mesh, in order to reduce memory consumption.

For a mesh that has 255 vertices or less, use Object3D<uint8_t>.

For a mesh that has 65535 vertices or less, use Object3D<uint16_t>.

For a mesh that has more than 65535 vertices, use Object3D<uint32_t>.

Constructor & Destructor Documentation

◆ Object3D()

Object3D ( const std::string &  name)
inline

constructor

Parameters
name[in] name of object

Member Function Documentation

◆ addTriangles()

void addTriangles ( material,
const std::vector< rw::geometry::IndexedTriangle< T > > &  tris 
)
inline

add triangles to this object using a specific material in the Model3D

Parameters
material[in] index of the material to be used
tris[in] triangles to add

◆ clone()

virtual rw::core::Ptr< TriMesh > clone ( ) const
inlinevirtual

make a clone of this triangle mesh

Returns
clone of this trimesh

Implements TriMesh.

◆ countFaces()

virtual std::size_t countFaces ( ) const
inlinevirtual

Get the number of faces.

Returns
the number of faces.

Implements Object3DGeneric.

◆ getFaceVertices()

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

Returns vertices corresponding to the idx face.

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

Implements Object3DGeneric.

◆ getTriangle()

virtual rw::geometry::Triangle< double > getTriangle ( size_t  idx) const
inlinevirtual

gets the triangle at index idx.

Parameters
idx[in] the index of the triangle.
Returns
the triangle at index idx

Implements Object3DGeneric.

◆ scale()

void scale ( double  scale)
inlinevirtual

Scales the model by scale.

The transformation of the model is not scaled.

Parameters
scale[in] scaling factor

Implements TriMesh.


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