Hi,

I am trying to implement a dae animation loader for openGL in C++ (for 3d games). My model is rigged in maya and each joint has a nurb binded to it (so I animate the nurbs which in turn affect the joints and the vertices associated with each joint).

The problem is, when i used the skinning equation provided, I get (wildly) incorrect values for my vertices. So i think i might have mis-intepreted the equation in the collada documentation.

SUM OF [vertex * BSM * IBMi * JMi *JW] for no. of joints connected to vertex

-Should i take vertex as ( x, y, z, 1) meaning the outV i get will be in terms of (x,y,z,1) or as a 4x4 {{x,0,0,0}{0,y,0,0}{0,0,z,0}{0,0,0,1}}?

-BSM is from the <bind_shape_matrix> tag and is the same for all vertices right?

-IBMi is from a 16 by no. of joints array provided in the dae file right? eg. this line in my IBM array

```
0.000000 0.999916 -0.012986 -1.767436 -0.000000 0.012986 0.999916 0.020117 1.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.000000
```

-for JMi, I multiplied the transformation matrices from the root to the current node for that frame. eg. if my heirachy is J1->split to J2 + J3->J4. the JMi for J4 should be J1*J3*J4? and for each J in the heirachy, I multiply the 4x4 matrices in order of translate* rotate_x * rotate_y *rotate_z, is this right or did i get the order wrong? Are there any other matices that I need to multiply by like pivot or something?

my rotate and translate values come from eg.

```
<float_array id="nurbsCircle9-translate-animation-outputY-array" count="8">
0.000000 -0.080822 0.034746 -0.092027 -0.092027 -0.063086 -0.034146 0.001305</float_array>
```

where (in this case) each value represents the translation in the Y axis for each key frame.

-JW is single float value for each vertex taken from the weights (using and tags, im pretty sure i got this part right)

oh and, i intepreted the 16 value float arrays as:

```
matrix[4][4] = {{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}};
```

Also, do i use the same formula to calculate the normals? And what do “split per-vertex Normals” and “bake transformations” do (they are options when i export in maya)?

Sorry, I’m quite new to collada and animation, so forgive me if the questions seem like common sense to you. :oops: Attached is my dae file for reference.

Thank you in advance for your time.