Skip to main content
GameDev.net gamedev.net
🔒 Locked

[DX9]Skinned Meshes: Optimization and Tangent-Space Calculation

Started by programci_84 Sep 6, 2010 at 1:26 AM 0 replies 1.1k views
Original Post
programci_84
programci_84
Hi all,

Finally I got HW Skeletal Animation (with HLSL) working for my renderer.

But I'm curious about 2 topics about skinned meshes:
1-) This is about tangent-space calculation. If I clone final index-blended skinned mesh with a declaration contains D3DDECLUSAGE_TANGENT and D3DDECLUSAGE_BINORMAL elements by using ID3DXMesh::CloneMesh() function, skinned mesh becomes dead. I use the same algorithm for static meshes and works fine. Why not with that? What/where may I doing wrong?

NOTE: But if I manually add that 2 D3DVERTEXELEMENT9 objects (tangent and binormal) to the vertex declaration of mesh (I obtain it with ID3DXMesh::GetDeclaration() function) and clone, then call D3DXComputeTangentFrameEx(), it works fine. After performing this method, I can do normal mapping with skeletal animaton.

2-) With static meshes, for fully optimizing and increasing rendering performance, I call OptimizeInplace(), D3DXCleanMesh() and D3DXWeldVertices() respectively. But with skeletal meshes, D3DXWeldVertices() makes skinned mesh animating weird (Other 2 functions does not affect, I think). I mean, some part of model goes random directions. For example, I've a soldier model and has an animation called "walk". While walking, his right hand goes the opposite direction of right arm :D

Are there any optimizing techniques for skinned meshes? Or, what should I do?

Thanks in advance.
-R
There's no "hard", and "the impossible" takes just a little time.
belfegor
belfegor
I am not sure if you have tried "dxops.exe" tool from dx sdk?
(i have sdk from june 2006, not sure if newer ver. got it)

copy your anim. model and dxops to c:\\
and make "cnv.bat" with this txt:

C:\\dxops.exe -m "C:\\" -s "load inputmesh.x; AddVData type:FLOAT3 usage:TANGENT usageInx:0; AddVData type:FLOAT3 usage:BINORMAL usageInx:0; GenTangentFrames; GenAdjacency; save outputmesh.x;"


then run it.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.