GPU Matrix Palette Skinning Tutorial for OgreXML files

Today I completed a skinned skeletal animation tutorial, which is very helpful if you are just about to start with game development.

Different from the other tutorials I found in the web, this one is very light weight ( < 800 lines for the main mesh & animation code ) and works well with most modeling environments.


It has the following properties / features:
[li]GPU Skinning / Matrix Palette Skinning [/li][li]Bump Mapping (automatic normal map generation) [/li][li]Spheric environment mapping [/li][li]Ogre XML Based [/li][li]Shaders in GLSL [/li][li]Visual Studio 2010 [/li][li]Select LOD level with F1…F5 [/li][/ul]

The workflow is as follows:
[li]Design the Model in Maya/MAX/Blender/etc. [/li][li]Export the model using the OgreExporter [/li][li]Convert the model from Ogre binary to Ogre XML (batch file is included) [/li][li]Load the model in the tutorial code [/li][/ul]

Main Skinning in GLSL:

The main skinning is done in the vertex shader and only requires a few lines.
For the shader, the skinning weights are stored in the color information as 3 floats.
The bone IDs are unpacked from the w coordinate of the position information.
The bone matrixes are stored as simple matrix array.

uniform mat4 bones[100];
uniform int  use_skinning;
void main(void)
    mat4 mfinal = gl_ModelViewMatrix ;
    // skinning
        vec3 weights=;
        vec3 boneid = gl_Vertex.w * vec3( 1.0/128.0 , 1.0 , 128.0 );
        boneid = (boneid - floor(boneid))*128.0;
        mat4 mskin  =    bones[int(boneid.x)]*weights.x+
        mfinal = mfinal * mskin;
    gl_Position    = gl_ProjectionMatrix * mfinal * vec4(,1.0);

Animating Notes for Maya
For Maya, put all animations in one time-line and export them as separate animations.
Ogre Export
Tangents need to be exported as 4D, to include the handedness. The tutorial version does not generate the tangents in the shader as it is faster to read them from the memory.
Bump Mapping
For the Ogre Material file, the bump map needs to be added manually by hand using the texture_bump parameter as follows:
texture Texture\masterchief_base.tif
texture_bump Texture\masterchief_bump_DISPLACEMENT.bmp
Environment Mapping
Environment mapping can be switched on in the material file using the following parameter:
env_map spherical

Get it here :
(I am new here so cant post a clickable URL yet)