Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members | Tutorials |
An interface for easy manipulation of meshes. More...
#include <IMeshManipulator.h>
Public Member Functions | |
template<typename Functor > | |
bool | apply (const Functor &func, IMeshBuffer *buffer, bool boundingBoxUpdate=false) const |
Apply a manipulator on the Meshbuffer. | |
template<typename Functor > | |
bool | apply (const Functor &func, IMesh *mesh, bool boundingBoxUpdate=false) const |
Apply a manipulator on the Mesh. | |
virtual IAnimatedMesh * | createAnimatedMesh (IMesh *mesh, scene::E_ANIMATED_MESH_TYPE type=scene::EAMT_UNKNOWN) const =0 |
Create a new AnimatedMesh and adds the mesh to it. | |
virtual SMesh * | createMeshCopy (IMesh *mesh) const =0 |
Clones a static IMesh into a modifiable SMesh. | |
virtual IMesh * | createMeshUniquePrimitives (IMesh *mesh) const =0 |
Creates a copy of a mesh with all vertices unwelded. | |
virtual IMesh * | createMeshWelded (IMesh *mesh, f32 tolerance=core::ROUNDING_ERROR_f32) const =0 |
Creates a copy of a mesh with vertices welded. | |
virtual IMesh * | createMeshWith1TCoords (IMesh *mesh) const =0 |
Creates a copy of the mesh, which will only consist of S3DVertex vertices. | |
virtual IMesh * | createMeshWith2TCoords (IMesh *mesh) const =0 |
Creates a copy of the mesh, which will only consist of S3DVertex2TCoord vertices. | |
virtual IMesh * | createMeshWithTangents (IMesh *mesh, bool recalculateNormals=false, bool smooth=false, bool angleWeighted=false, bool recalculateTangents=true) const =0 |
Creates a copy of the mesh, which will only consist of S3DVertexTangents vertices. | |
virtual void | flipSurfaces (IMesh *mesh) const =0 |
Flips the direction of surfaces. | |
virtual s32 | getPolyCount (IMesh *mesh) const =0 |
Get amount of polygons in mesh. | |
virtual s32 | getPolyCount (IAnimatedMesh *mesh) const =0 |
Get amount of polygons in mesh. | |
virtual void | makePlanarTextureMapping (IMesh *mesh, f32 resolution=0.001f) const =0 |
Creates a planar texture mapping on the mesh. | |
virtual void | makePlanarTextureMapping (scene::IMeshBuffer *meshbuffer, f32 resolution=0.001f) const =0 |
Creates a planar texture mapping on the meshbuffer. | |
virtual void | makePlanarTextureMapping (scene::IMeshBuffer *buffer, f32 resolutionS, f32 resolutionT, u8 axis, const core::vector3df &offset) const =0 |
Creates a planar texture mapping on the meshbuffer. | |
virtual void | recalculateNormals (IMesh *mesh, bool smooth=false, bool angleWeighted=false) const =0 |
Recalculates all normals of the mesh. | |
virtual void | recalculateNormals (IMeshBuffer *buffer, bool smooth=false, bool angleWeighted=false) const =0 |
Recalculates all normals of the mesh buffer. | |
virtual void | recalculateTangents (IMesh *mesh, bool recalculateNormals=false, bool smooth=false, bool angleWeighted=false) const =0 |
Recalculates tangents, requires a tangent mesh. | |
void | scale (IMesh *mesh, const core::vector3df &factor) const |
Scales the actual mesh, not a scene node. | |
void | scale (IMeshBuffer *buffer, const core::vector3df &factor) const |
Scales the actual meshbuffer, not a scene node. | |
void | scaleMesh (IMesh *mesh, const core::vector3df &factor) const |
Scales the actual mesh, not a scene node. | |
void | scaleTCoords (scene::IMesh *mesh, const core::vector2df &factor, u32 level=1) const |
Scale the texture coords of a mesh. | |
void | scaleTCoords (scene::IMeshBuffer *buffer, const core::vector2df &factor, u32 level=1) const |
Scale the texture coords of a meshbuffer. | |
void | setVertexColorAlpha (IMesh *mesh, s32 alpha) const |
Sets the alpha vertex color value of the whole mesh to a new value. | |
void | setVertexColors (IMesh *mesh, video::SColor color) const |
Sets the colors of all vertices to one color. | |
void | transform (IMesh *mesh, const core::matrix4 &m) const |
Applies a transformation to a mesh. | |
void | transform (IMeshBuffer *buffer, const core::matrix4 &m) const |
Applies a transformation to a meshbuffer. | |
virtual void | transformMesh (IMesh *mesh, const core::matrix4 &m) const |
Applies a transformation to a mesh. | |
![]() | |
bool | drop () const |
Drops the object. Decrements the reference counter by one. | |
const c8 * | getDebugName () const |
Returns the debug name of the object. | |
s32 | getReferenceCount () const |
Get the reference count. | |
void | grab () const |
Grabs the object. Increments the reference counter by one. | |
IReferenceCounted () | |
Constructor. | |
virtual | ~IReferenceCounted () |
Destructor. |
Protected Member Functions | |
template<typename Functor > | |
bool | apply_ (const Functor &func, IMeshBuffer *buffer, bool boundingBoxUpdate, const IVertexManipulator &typeTest) const |
Apply a manipulator based on the type of the functor. | |
![]() | |
void | setDebugName (const c8 *newName) |
Sets the debug name of the object. |
An interface for easy manipulation of meshes.
Scale, set alpha value, flip surfaces, and so on. This exists for
fixing problems with wrong imported or exported meshes quickly after loading. It is not intended for doing mesh modifications and/or animations during runtime.
Definition at line 29 of file IMeshManipulator.h.
|
inline |
Apply a manipulator on the Meshbuffer.
\param func A functor defining the mesh manipulation.
buffer | The Meshbuffer to apply the manipulator to. |
boundingBoxUpdate | Specifies if the bounding box should be updated during manipulation. |
Definition at line 249 of file IMeshManipulator.h.
References apply_().
Referenced by apply(), scale(), scaleTCoords(), setVertexColorAlpha(), setVertexColors(), and transform().
|
inline |
Apply a manipulator on the Mesh.
\param func A functor defining the mesh manipulation.
mesh | The Mesh to apply the manipulator to. |
boundingBoxUpdate | Specifies if the bounding box should be updated during manipulation. |
Definition at line 261 of file IMeshManipulator.h.
References irr::core::aabbox3d< T >::addInternalBox(), apply(), irr::scene::IMeshBuffer::getBoundingBox(), irr::scene::IMesh::getMeshBuffer(), irr::scene::IMesh::getMeshBufferCount(), irr::core::aabbox3d< T >::reset(), and irr::scene::IMesh::setBoundingBox().
|
inlineprotected |
Apply a manipulator based on the type of the functor.
\param func A functor defining the mesh manipulation.
buffer | The Meshbuffer to apply the manipulator to. |
boundingBoxUpdate | Specifies if the bounding box should be updated during manipulation. |
typeTest | Unused parameter, which handles the proper call selection based on the type of the Functor which is passed in two times. |
Definition at line 291 of file IMeshManipulator.h.
References irr::core::aabbox3d< T >::addInternalPoint(), irr::video::EVT_2TCOORDS, irr::video::EVT_STANDARD, irr::video::EVT_TANGENTS, irr::scene::IMeshBuffer::getPosition(), irr::scene::IMeshBuffer::getVertexCount(), irr::scene::IMeshBuffer::getVertexType(), irr::scene::IMeshBuffer::getVertices(), irr::core::aabbox3d< T >::reset(), and irr::scene::IMeshBuffer::setBoundingBox().
Referenced by apply().
|
pure virtual |
Create a new AnimatedMesh and adds the mesh to it.
\param mesh Input mesh
type | The type of the animated mesh to create. |
Clones a static IMesh into a modifiable SMesh.
All meshbuffers in the returned SMesh
are of type SMeshBuffer or SMeshBufferLightMap.
mesh | Mesh to copy. |
|
pure virtual |
Creates a copy of a mesh with all vertices unwelded.
\param mesh Input mesh
|
pure virtual |
Creates a copy of a mesh with vertices welded.
\param mesh Input mesh
tolerance | The threshold for vertex comparisons. |
|
pure virtual |
Creates a copy of the mesh, which will only consist of S3DVertex vertices.
\param mesh Input mesh
|
pure virtual |
Creates a copy of the mesh, which will only consist of S3DVertex2TCoord vertices.
\param mesh Input mesh
|
pure virtual |
Creates a copy of the mesh, which will only consist of S3DVertexTangents vertices.
This is useful if you want to draw tangent space normal
mapped geometry because it calculates the tangent and binormal data which is needed there.
mesh | Input mesh |
recalculateNormals | The normals are recalculated if set, otherwise the original ones are kept. Note that keeping the normals may introduce inaccurate tangents if the normals are very different to those calculated from the faces. |
smooth | The normals/tangents are smoothed across the meshbuffer's faces if this flag is set. |
angleWeighted | Improved smoothing calculation used |
recalculateTangents | Whether are actually calculated, or just the mesh with proper type is created. |
|
pure virtual |
Flips the direction of surfaces.
Changes backfacing triangles to frontfacing
triangles and vice versa.
mesh | Mesh on which the operation is performed. |
Get amount of polygons in mesh.
\param mesh Input mesh
|
pure virtual |
Get amount of polygons in mesh.
\param mesh Input mesh
|
pure virtual |
Creates a planar texture mapping on the mesh.
\param mesh: Mesh on which the operation is performed.
resolution,: | resolution of the planar mapping. This is the value specifying which is the relation between world space and texture coordinate space. |
|
pure virtual |
Creates a planar texture mapping on the meshbuffer.
\param meshbuffer: Buffer on which the operation is performed.
resolution,: | resolution of the planar mapping. This is the value specifying which is the relation between world space and texture coordinate space. |
|
pure virtual |
Creates a planar texture mapping on the meshbuffer.
This method is currently implemented towards the LWO planar mapping. A more general biasing might be required.
buffer | Buffer on which the operation is performed. |
resolutionS | Resolution of the planar mapping in horizontal direction. This is the ratio between object space and texture space. |
resolutionT | Resolution of the planar mapping in vertical direction. This is the ratio between object space and texture space. |
axis | The axis along which the texture is projected. The allowed values are 0 (X), 1(Y), and 2(Z). |
offset | Vector added to the vertex positions (in object coordinates). |
|
pure virtual |
Recalculates all normals of the mesh.
\param mesh: Mesh on which the operation is performed.
smooth,: | If the normals shall be smoothed. |
angleWeighted,: | If the normals shall be smoothed in relation to their angles. More expensive, but also higher precision. |
|
pure virtual |
Recalculates all normals of the mesh buffer.
\param buffer: Mesh buffer on which the operation is performed.
smooth,: | If the normals shall be smoothed. |
angleWeighted,: | If the normals shall be smoothed in relation to their angles. More expensive, but also higher precision. |
|
pure virtual |
Recalculates tangents, requires a tangent mesh.
\param mesh Mesh on which the operation is performed.
recalculateNormals | If the normals shall be recalculated, otherwise original normals of the mesh are used unchanged. |
smooth | If the normals shall be smoothed. |
angleWeighted | If the normals shall be smoothed in relation to their angles. More expensive, but also higher precision. |
|
inline |
Scales the actual mesh, not a scene node.
\param mesh Mesh on which the operation is performed.
factor | Scale factor for each axis. |
Definition at line 80 of file IMeshManipulator.h.
References apply().
Referenced by scaleMesh().
|
inline |
Scales the actual meshbuffer, not a scene node.
\param buffer Meshbuffer on which the operation is performed.
factor | Scale factor for each axis. |
Definition at line 88 of file IMeshManipulator.h.
References apply().
|
inline |
Scales the actual mesh, not a scene node.
\xrefitem deprecated 12.\param mesh Mesh on which the operation is performed.
factor | Scale factor for each axis. |
Definition at line 97 of file IMeshManipulator.h.
References scale().
|
inline |
Scale the texture coords of a mesh.
\param mesh Mesh on which the operation is performed.
factor | Vector which defines the scale for each axis. |
level | Number of texture coord, starting from 1. Support for level 2 exists for LightMap buffers. |
Definition at line 103 of file IMeshManipulator.h.
References apply().
|
inline |
Scale the texture coords of a meshbuffer.
\param buffer Meshbuffer on which the operation is performed.
factor | Vector which defines the scale for each axis. |
level | Number of texture coord, starting from 1. Support for level 2 exists for LightMap buffers. |
Definition at line 112 of file IMeshManipulator.h.
References apply().
Sets the alpha vertex color value of the whole mesh to a new value.
\param mesh Mesh on which the operation is performed.
alpha | New alpha value. Must be a value between 0 and 255. |
Definition at line 42 of file IMeshManipulator.h.
References apply().
|
inline |
Sets the colors of all vertices to one color.
\param mesh Mesh on which the operation is performed.
color | New color. |
Definition at line 50 of file IMeshManipulator.h.
References apply().
|
inline |
Applies a transformation to a mesh.
\param mesh Mesh on which the operation is performed.
m | transformation matrix. |
Definition at line 120 of file IMeshManipulator.h.
References apply().
Referenced by transformMesh().
|
inline |
Applies a transformation to a meshbuffer.
\param buffer Meshbuffer on which the operation is performed.
m | transformation matrix. |
Definition at line 128 of file IMeshManipulator.h.
References apply().
|
inlinevirtual |
Applies a transformation to a mesh.
\xrefitem deprecated 13.\param mesh Mesh on which the operation is performed.
m | transformation matrix. |
Definition at line 137 of file IMeshManipulator.h.
References transform().
The Irrlicht
Engine Documentation © 2003-2010 by Nikolaus Gebhardt. Generated
on Fri Mar 21 2014 04:40:33 by Doxygen
(1.8.1.2) |