Just qurios

I’m wondering how NVIDIA got their dawn demo working, in rude approximations there should be 60+ I guess more than 80 bones (mouth, fingers etc. counts)!!! As far as I know number of registries on vcard are limited in count & every bone should load a quat, and multiply it with all previos quats. Quat shoud be 3x3 in size, that takes 9 registry entries x 60 bones = 540 entries!!!

  1. Aren’t quaternions defined by 4 floats ? If so how can it possibly be 3x3 ?

  2. If you’re speaking of matrices instead, i have to remind you that a vertex shader constant is not a float but a 4d vector. In consequence, you’d need 60 * 3 = 180 constants to store 60 bones.

  3. As a result, you only need 60 constants to store the quaternions for 60 bones.

Y.

what a silly conversation. As far as I know, a persons finger doesn’t get affected when one crosses ones legs, so why would you load a leg matrix into a fingers vertex program?

Why would you have a seperate vertex program to render the fingers knackered? Surely it would be better to render the entire model in 1 go?

In which case you need to load all the matrices for the entire anim at the start into the constants.

Why would you have a seperate vertex program to render the fingers knackered? Surely it would be better to render the entire model in 1 go?

Define “better”. If you load matrices, it might take you 3-4 renderings of the mesh data to finish it. But, if you load quaternions, you have to transform vertices by quaternions, which takes longer than transforming by matrices. So, while the other method may well have more rendering calls, it may take less time, depending on how much longer transforming vectors by quaternions is than matrices.

BTW, which demo is this?

And I heard thet FX hardware has practically no limit on constant space… Maybe I got sometrhing wrong.

We handle this in the usual way - the mesh is split up into sections such that each sub-mesh is only effected by 4 or less bones.

There are some details on this in our presentation from GDC: http://developer.nvidia.com/docs/IO/4449/SUPP/GDC2003_Demos.pdf

Cheers,

S.

Originally posted by M/\dm/
:
I’m wondering how NVIDIA got their dawn demo working, in rude approximations there should be 60+ I guess more than 80 bones (mouth, fingers etc. counts)!!! As far as I know number of registries on vcard are limited in count & every bone should load a quat, and multiply it with all previos quats. Quat shoud be 3x3 in size, that takes 9 registry entries x 60 bones = 540 entries!!!

I’m surprised! Why would you only use subsections of 4 bones? If you’re rendering using the same shader, wouldn’t it make sense to render as big a chunk as possible?

Anyway: doing hair in geometry seems a little over the top :slight_smile: Also, it wasn’t initially clear to me that the demo comes in two versions: “normal” which doesn’t have as fancy wings and only a slightly high poly count, and “ultra” which has really nice wings, and another factor N in poly count :wink:

Sorry, I meant 4 bones per vertex. We are using indexed or “matrix palette” skinning, so each vertex indexes into an array of bone matricies, which describes which bones effect that vertex most. You can look at the shader code for more detail.

As for the hair, it’s our job to be over the top! Rendering hair as geometry is not considered excessive in movie production, and soon won’t be for real time characters either.

Originally posted by jwatte:
[b]I’m surprised! Why would you only use subsections of 4 bones? If you’re rendering using the same shader, wouldn’t it make sense to render as big a chunk as possible?

Anyway: doing hair in geometry seems a little over the top :slight_smile: [/b]

OT:

Hello Si, still working for Nvidia I see!
Remember XAP?
Behold Alien Flux!
I thought it might bring back some amusing memories.

(I’d send this post by mail but it seems to be hidden)

Cas