• Advertisement

Archived

This topic is now archived and is closed to further replies.

Skinning with 5 bones per vertex

This topic is 5828 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello I know how to handle bones for skinned meshes. Basicly, I creates a object in 3dsmax, then export it to a .x file. For rendering, I know how to use the Vertex Blend technique for handling the bones. Each bone represented by a matrix. Now, I have created an object in 3dsmax, that have vertex that are influenced by 5 bones. How can I render them? I ask, because I know that the maximum number of blended matrix is 4. I loaded the file in mview.exe, and I run correctly. How does it work? What should I do? Do I have to use vertex shader, or is there a simpler way? thanks

Share this post


Link to post
Share on other sites
Advertisement
Calculate the world position of the vertex yourself instead of using the hardware.

Share this post


Link to post
Share on other sites
Forget about the world matrix1,2,3,4

Calculate the world position of the vertex yourself (ie. using a software method).

Check out skinning and envelope animation articles at www.flipcode.com, www.gdconf.com, and siggraph papers

Share this post


Link to post
Share on other sites
This is from the DX8.1 SDK:

Two Matrix Blend: vBlend=V1W1+V2(1.0-W1)
Three Matrix Blend: vBlend=V1W1+V2W2+V3(1.0-(W1+W2))
...
Five Matrix Blend: (This I derived)vBlend=V1W1+V2W2+V3W3+V4W4+V5(1.0-(W1+W2+W3+W4))

Where vBlend is the output vertex and Vx is a vertex transformed by the corresponding world matrix WorldMatrixx. The Wx values are the corresponding weights. Blending weights range from 0.0 to 1.0, where a value of 0.0 means the vertex is not blended with that matrix and 1.0 means that the vertex is affected in full by the matrix. I''m not sure of this, at the moment i can''t think but you should be able to concatenate two of world matrix''s, apply the result to the vertex and add the corresponding weights. By doing this you get rid of a term and will be able to use hardware acceleration. You''ll have to work out the details of course.

-potential energy is easily made kinetic-

Share this post


Link to post
Share on other sites
quote:

I''m not sure of this, at the moment i can''t think but you should be able to concatenate two of world matrix''s, apply the result to the vertex and add the corresponding weights. By doing this you get rid of a term and will be able to use hardware acceleration. You''ll have to work out the details of course.



nah! that wont work.
just design your model so that you dont use more than 4 matrices per vertex.

if you HAVE to do it, you can still do it in hardware, you would just have to write your own vertex-shader.
jup.


--- foobar
We push more polygons before breakfast than most people do in a day

Share this post


Link to post
Share on other sites

  • Advertisement