|  | RobWorkProject
    23.9.11-
    | 
a 3d model that has geometry but also material and color. he model can be composed of multiple objects that are connected in a hierarchical manner. The model is designed for efficient drawing and as such special structures are used to order the indexes such that efficient drawing is possible. More...
#include <Model3D.hpp>
| Classes | |
| struct | Material | 
| describes material properties. A material can be either simple or "advanced" and in both cases it can be textured. A simple material is described by a 4-tuple of RGBA values. The advanced material defines multiple properties: diffuse, ambient, emissive, specular, shininess and transparency  More... | |
| class | Texture | 
| Public Types | |
| enum | SmoothMethod { AVERAGED_NORMALS , WEIGHTED_NORMALS } | 
| Method to do smoothing.  More... | |
| typedef rw::core::Ptr< Model3D > | Ptr | 
| smart pointer type to this class | |
| using | TextureList = std::vector< rw::core::Ptr< Texture > > | 
| The data type for the texture list. | |
| using | MaterialPolys = rw::geometry::Object3DGeneric::MaterialPolys | 
| using | Object3DGeneric = rw::geometry::Object3DGeneric | 
| template<class T = uint16_t> | |
| using | Object3D = rw::geometry::Object3D< T > | 
| Public Member Functions | |
| Model3D (const std::string &name) | |
| Model3D (const Model3D &model) | |
| Copy constructor, make a copy of the 3D object.  More... | |
| virtual | ~Model3D () | 
| destructor | |
| void | optimize (double smooth_angle, SmoothMethod method=WEIGHTED_NORMALS) | 
| optimize vertices and vertice normals  More... | |
| int | addObject (Object3DGeneric::Ptr obj) | 
| add an Object to this Model3D  More... | |
| void | addGeometry (const Material &mat, rw::core::Ptr< class rw::geometry::Geometry > geom) | 
| add geometry to this model3d  More... | |
| void | addTriMesh (const Material &mat, const rw::geometry::TriMesh &mesh) | 
| add a triangle mesh to this model3d  More... | |
| void | addTriMesh (const Material &mat, rw::core::Ptr< const rw::geometry::TriMesh > geom) | 
| add a triangle mesh to this model3d  More... | |
| int | addMaterial (const Material &mat) | 
| all objects in a model use the materials defined on the model  More... | |
| Material * | getMaterial (const std::string &matid) | 
| get material with string id matid  More... | |
| bool | hasMaterial (const std::string &matid) | 
| check if model has material with id matid  More... | |
| void | removeObject (const std::string &name) | 
| remove object with string id name  More... | |
| void | scale (float scale) | 
| Scale all vertices in the mesh.  More... | |
| std::vector< Material > & | getMaterials () | 
| get all materials that are available in this model | |
| std::vector< Object3DGeneric::Ptr > & | getObjects () | 
| get all objects that make out this model | |
| const rw::math::Transform3D & | getTransform () | 
| get pose of this Model3D | |
| void | setTransform (const rw::math::Transform3D<> &t3d) | 
| set the pose of this Model3D | |
| const std::string & | getName () | 
| get string identifier of this model3d | |
| const std::string & | getFilePath () | 
| get filePath of this model3d | |
| void | setName (const std::string &name) | 
| set string identifier of this model3d | |
| void | setFilePath (const std::string &name) | 
| set filePath this model3d | |
| int | getMask () | 
| get mask of this model3d | |
| void | setMask (int mask) | 
| set mask of this model3d | |
| rw::geometry::GeometryData::Ptr | toGeometryData () | 
| convert this model3d to a geometry. Notice that geometry does not hold any color information.  More... | |
| bool | isDynamic () const | 
| true if data in the model are expected to change | |
| void | setDynamic (bool dynamic) | 
| set to true if data in the model are expected to change | |
| std::vector< rw::core::Ptr< Texture > > & | getTextures () | 
| Get/set the object Textures.  More... | |
| Public Attributes | |
| std::vector< Material > | _materials | 
| The array of materials. | |
| std::vector< Object3DGeneric::Ptr > | _objects | 
| The array of objects in the model. | |
| Protected Attributes | |
| rw::math::Transform3D | _transform | 
| The transform of the model. | |
| std::string | _name | 
| Name of the model. | |
| std::string | _filePath | 
| FilePath of the model, if model was constructed from file. | |
| int | _mask | 
| The DrawableNode::DrawableTypeMask. | |
| bool | _isDynamic | 
| If the data can be expected to change. | |
a 3d model that has geometry but also material and color. he model can be composed of multiple objects that are connected in a hierarchical manner. The model is designed for efficient drawing and as such special structures are used to order the indexes such that efficient drawing is possible.
| enum SmoothMethod | 
| Model3D | ( | const std::string & | name | ) | 
Constructor.
| name | [in] name of the model. | 
| void addGeometry | ( | const Material & | mat, | 
| rw::core::Ptr< class rw::geometry::Geometry > | geom | ||
| ) | 
add geometry to this model3d
| mat | [in] the material properties to use for the geometry. | 
| geom | [in] the geometry to add. | 
| int addMaterial | ( | const Material & | mat | ) | 
all objects in a model use the materials defined on the model
| mat | [in] material to add. | 
| int addObject | ( | Object3DGeneric::Ptr | obj | ) | 
add an Object to this Model3D
| obj | [in] the geometric object to add. | 
| void addTriMesh | ( | const Material & | mat, | 
| const rw::geometry::TriMesh & | mesh | ||
| ) | 
add a triangle mesh to this model3d
| mat | [in] the material properties to use for the mesh. | 
| mesh | [in] the mesh geometry. | 
| void addTriMesh | ( | const Material & | mat, | 
| rw::core::Ptr< const rw::geometry::TriMesh > | geom | ||
| ) | 
add a triangle mesh to this model3d
| mat | [in] the material properties to use for the mesh. | 
| geom | [in] the mesh geometry. | 
| Material* getMaterial | ( | const std::string & | matid | ) | 
get material with string id matid
| matid | [in] string id | 
| 
 | inline | 
Get/set the object Textures.
| bool hasMaterial | ( | const std::string & | matid | ) | 
check if model has material with id matid
| matid | [in] string id of material | 
| void optimize | ( | double | smooth_angle, | 
| SmoothMethod | method = WEIGHTED_NORMALS | ||
| ) | 
optimize vertices and vertice normals
removes redundant vertices and recalculates all vertice normals based on the face normals and the angle between face normals smooth_angle.
| smooth_angle | |
| method | 
| void removeObject | ( | const std::string & | name | ) | 
remove object with string id name
| name | [in] name of object to remove | 
| void scale | ( | float | scale | ) | 
Scale all vertices in the mesh.
| rw::geometry::GeometryData::Ptr toGeometryData | ( | ) | 
convert this model3d to a geometry. Notice that geometry does not hold any color information.