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