• Create Account

### #Actualpondwater

Posted 25 June 2012 - 08:07 AM

Okay so i've got what seems to be two decently reliable sources for COLLADA skinning and the equations are as follows:

A)
for 0<=n<influences
Position = VertexPosition x (Bind Shape x Σ(MatrixPallette[n] x Weight[n]))

where:
MatrixPallette[n] = inverseBindPose[n] x worldTransforms[n]
worldTransforms[n] = BindPose[n] x worldTransforms[parent]


B)
for 0<=n<influences
VertexPosition+= {[(VertexPosition* Bind Shape) * MatrixPallette[n]] * Weight[n]}

where:
MatrixPallette[n] = inverseBindPose[n] x worldTransforms[n]
worldTransforms[n] = BindPose[n] x worldTransforms[parent]


EDIT:

Alright I got everything working. Incase anyone stumbles across this post in the future, both methods give identical results. So the equations are equivolent. Equation A) seems to be more efficient when crunching it out on the CPU (at least with my class structures) but this is all temporary as I plan on using skinning it on the GPU later. My problem wasn't my skinning equation, it was my model files, im not sure what I did in Maya the first time but I clearly messed something up with the skinning. Re-skinned and exported the .dae. All is well now.

These were the two resources I used to complete my COLLADA loader, run-time format converter, and animating proceedure.

http://www.wazim.com..._Tutorial_1.htm (Incredible tutorial although I used my own .dae files produced from Maya 2012 which were much easier to parse I found)

http://thecansin.com/Files/COLLADA.pdf (Used to cross reference anything I didn't understand completely)

### #4pondwater

Posted 25 June 2012 - 08:07 AM

Okay so i've got what seems to be two decently reliable sources for COLLADA skinning and the equations are as follows:

A)

for 0<=n<influences
Position = VertexPosition x (Bind Shape x Σ(MatrixPallette[n] x Weight[n]))

where:
MatrixPallette[n] = inverseBindPose[n] x worldTransforms[n]
worldTransforms[n] = BindPose[n] x worldTransforms[parent]


B)

for 0<=n<influences
VertexPosition+= {[(VertexPosition* Bind Shape) * MatrixPallette[n]] * Weight[n]}

where:
MatrixPallette[n] = inverseBindPose[n] x worldTransforms[n]
worldTransforms[n] = BindPose[n] x worldTransforms[parent]


EDIT:

Alright I got everything working. Incase anyone stumbles across this post in the future, both methods give identical results. So the equations are equivolent. Equation A) seems to be more efficient when crunching it out on the CPU (at least with my class structures) but this is all temporary as I plan on using skinning it on the GPU later. My problem wasn't my skinning equation, it was my model files, im not sure what I did in Maya the first time but I clearly messed something up with the skinning. Re-skinned and exported the .dae. All is well now.

These were the two resources I used to complete my COLLADA loader, run-time format converter, and animating proceedure.

http://www.wazim.com..._Tutorial_1.htm (Incredible tutorial although I used my own .dae files produced from Maya 2012 which were much easier to parse I found)

http://thecansin.com/Files/COLLADA.pdf (Used to cross reference anything I didn't understand completely)

### #3pondwater

Posted 25 June 2012 - 08:06 AM

Okay so i've got what seems to be two decently reliable sources for COLLADA skinning and the equations are as follows:

A)

for 0<=n<influences
Position = VertexPosition x (Bind Shape x Σ(MatrixPallette[n] x Weight[n]))
MatrixPallette[n] = inverseBindPose[n] x worldTransforms[n]
worldTransforms[n] = BindPose[n] x worldTransforms[parent]


B)

for 0<=n<influences
VertexPosition+= {[(VertexPosition* Bind Shape) * MatrixPallette[n]] * Weight[n]}

MatrixPallette[n] = inverseBindPose[n] x worldTransforms[n]
worldTransforms[n] = BindPose[n] x worldTransforms[parent]


EDIT:

Alright I got everything working. Incase anyone stumbles across this post in the future, both methods give identical results. So the equations are equivolent. Equation A) seems to be more efficient when crunching it out on the CPU (at least with my class structures) but this is all temporary as I plan on using skinning it on the GPU later. My problem wasn't my skinning equation, it was my model files, im not sure what I did in Maya the first time but I clearly messed something up with the skinning. Re-skinned and exported the .dae. All is well now.

These were the two resources I used to complete my COLLADA loader, run-time format converter, and animating proceedure.

http://www.wazim.com..._Tutorial_1.htm (Incredible tutorial although I used my own .dae files produced from Maya 2012 which were much easier to parse I found)

http://thecansin.com/Files/COLLADA.pdf (Used to cross reference anything I didn't understand completely)

### #2pondwater

Posted 25 June 2012 - 08:05 AM

Okay so i've got what seems to be two decently reliable sources for COLLADA skinning and the equations are as follows:

A)

for 0<=n<influences

Position = VertexPosition x (Bind Shape x Σ(MatrixPallette[n] x Weight[n]))

MatrixPallette[n] = inverseBindPose[n] x worldTransforms[n]
worldTransforms[n] = BindPose[n] x worldTransforms[parent]

B)

for 0<=n<influences

VertexPosition+= {[(VertexPosition* Bind Shape) * MatrixPallette[n]] * Weight[n]}

MatrixPallette[n] = inverseBindPose[n] x worldTransforms[n]
worldTransforms[n] = BindPose[n] x worldTransforms[parent]

EDIT:

Alright I got everything working. Incase anyone stumbles across this post in the future, both methods give identical results. So the equations are equivolent. Equation A) seems to be more efficient when crunching it out on the CPU (at least with my class structures) but this is all temporary as I plan on using skinning it on the GPU later. My problem wasn't my skinning equation, it was my model files, im not sure what I did in Maya the first time but I clearly messed something up with the skinning. Re-skinned and exported the .dae. All is well now.

These were the two resources I used to complete my COLLADA loader, run-time format converter, and animating proceedure.

http://www.wazim.com/Collada_Tutorial_1.htm (Incredible tutorial although I used my own .dae files produced from Maya 2012 which were much easier to parse I found)

http://thecansin.com/Files/COLLADA.pdf (Used to cross reference anything I didn't understand completely)

### #1pondwater

Posted 22 June 2012 - 06:39 PM

Okay so i've got what seems to be two decently reliable sources for COLLADA skinning and the equations are as follows:

A)

for 0<=n<influences

Position = VertexPosition x (Bind Shape x Σ(MatrixPallette[n] x Weight[n]))

MatrixPallette[n] = inverseBindPose[n] x worldTransforms[n]
worldTransforms[n] = BindPose[n] x worldTransforms[parent]

B)

for 0<=n<influences

VertexPosition+= {[(VertexPosition* Bind Shape) * MatrixPallette[n]] * Weight[n]}

MatrixPallette[n] = inverseBindPose[n] x worldTransforms[n]
worldTransforms[n] = BindPose[n] x worldTransforms[parent]

So the differences seem to be that:

A) sums the matrices by weights and then applies the vertex to that
B) applies each influence individually to the vertex and sums those.

My algebra a little rusty, are those equivolent at all? If not, which is correct?

Also both use a vertex*matrix ordering, which would be invalid... shouldn't it be matrix*vertex? I figure thats what these equations use?

Thanks for any clarification!

PARTNERS