5#ifndef __I_SKINNED_MESH_H_INCLUDED__
6#define __I_SKINNED_MESH_H_INCLUDED__
127 SJoint() : UseAnimationFrom(0), GlobalSkinningSpace(false),
128 positionHint(-1),scaleHint(-1),rotationHint(-1)
171 bool GlobalSkinningSpace;
4x4 matrix. Mostly used as transformation matrix for 3d calculations.
Axis aligned bounding box in 3d dimensional space.
Quaternion class for representing rotations.
Interface for an animated mesh.
Interface for using some special functions of Skinned meshes.
virtual const c8 * getJointName(u32 number) const =0
Gets the name of a joint.
virtual void updateNormalsWhenAnimating(bool on)=0
Update Normals when Animating.
virtual bool useAnimationFrom(const ISkinnedMesh *mesh)=0
Use animation from another mesh.
virtual bool isStatic()=0
Check if the mesh is non-animated.
virtual core::array< SJoint * > & getAllJoints()=0
exposed for loaders: joints list
virtual void skinMesh()=0
Preforms a software skin on this mesh based of joint positions.
virtual bool setHardwareSkinning(bool on)=0
Allows to enable hardware skinning.
virtual void animateMesh(f32 frame, f32 blend)=0
Animates this mesh's joints based on frame input.
virtual SRotationKey * addRotationKey(SJoint *joint)=0
Adds a new rotation key to the mesh, access it as last one.
virtual core::array< SSkinMeshBuffer * > & getMeshBuffers()=0
exposed for loaders: to add mesh buffers
virtual u32 getJointCount() const =0
Gets joint count.
virtual void finalize()=0
loaders should call this after populating the mesh
virtual SJoint * addJoint(SJoint *parent=0)=0
Adds a new joint to the mesh, access it as last one.
virtual const core::array< SJoint * > & getAllJoints() const =0
exposed for loaders: joints list
virtual SSkinMeshBuffer * addMeshBuffer()=0
Adds a new meshbuffer to the mesh, access it as last one.
virtual SPositionKey * addPositionKey(SJoint *joint)=0
Adds a new position key to the mesh, access it as last one.
virtual SWeight * addWeight(SJoint *joint)=0
Adds a new weight to the mesh, access it as last one.
virtual s32 getJointNumber(const c8 *name) const =0
Gets a joint number from its name.
virtual SScaleKey * addScaleKey(SJoint *joint)=0
Adds a new scale key to the mesh, access it as last one.
virtual void convertMeshToTangents()=0
converts the vertex type of all meshbuffers to tangents.
virtual void setInterpolationMode(E_INTERPOLATION_MODE mode)=0
Sets Interpolation Mode.
@ EIM_COUNT
count of all available interpolation modes
Everything in the Irrlicht Engine can be found in this namespace.
float f32
32 bit floating point variable.
unsigned int u32
32 bit unsigned variable.
char c8
8 bit character variable.
signed int s32
32 bit signed variable.
unsigned short u16
16 bit unsigned variable.
core::stringc Name
The name of this joint.
core::matrix4 LocalMatrix
Local matrix of this joint.
core::array< SRotationKey > RotationKeys
Animation keys causing rotation change.
core::matrix4 GlobalMatrix
Unnecessary for loaders, will be overwritten on finalize.
core::array< SPositionKey > PositionKeys
Animation keys causing translation change.
core::matrix4 LocalAnimatedMatrix
core::matrix4 GlobalAnimatedMatrix
core::array< SWeight > Weights
Skin weights.
friend class CSkinnedMesh
Internal members used by CSkinnedMesh.
core::array< SScaleKey > ScaleKeys
Animation keys causing scale change.
core::array< SJoint * > Children
List of child joints.
core::quaternion Animatedrotation
core::matrix4 GlobalInversedMatrix
core::vector3df Animatedscale
core::array< u32 > AttachedMeshes
List of attached meshes.
core::vector3df Animatedposition
Animation keyframe which describes a new position.
Animation keyframe which describes a new rotation.
core::quaternion rotation
Animation keyframe which describes a new scale.
f32 strength
Weight Strength/Percentage (0-1)
friend class CSkinnedMesh
Internal members used by CSkinnedMesh.
u16 buffer_id
Index of the mesh buffer.
u32 vertex_id
Index of the vertex.
A mesh buffer able to choose between S3DVertex2TCoords, S3DVertex and S3DVertexTangents at runtime.