Archived

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

BGCJR

3d Animation

Recommended Posts

Here is a very simple demo of my work the 3D Editor (i currently working). I wanted to see if my format workings. But turn on v sync or you''ll miss the stupid things routine. I''m just glad to get something going. But, I need to know how to keep the model''s body in shape during twists like the hips, that you can see. well, here it is. Demo Bobby

Share this post


Link to post
Share on other sites
Blue lines are stationary bone frame.
i use the bones for attaching vertices, controlpoints, and which bones are controlled by a bone.

i seen no point in rotating the bone when it's the vertices i want.


QUAT slerped= quat_interpolate(Bob,James, t);

Core = quat_to_matrix(slerped);

for ( Bobby = 0; Bobby<1; Bobby++)//m.numBones; Bobby++)

{
vect controlpoint = m.bonearray[Bobby].temp1;

for ( long Bobby2 = 0; Bobby2<m.bonearray[Bobby].AVert; Bobby2++)
{
vbuffer[m.bonearray[Bobby].AVertList[Bobby2]] -= controlpoint;
vbuffer[m.bonearray[Bobby].AVertList[Bobby2]] =
apply_matrix_f(Core,vbuffer[m.bonearray[Bobby].AVertListBobby2]].x,
vbuffer[m.bonearray[Bobby].AVertList[Bobby2]].y,
vbuffer[m.bonearray[Bobby].AVertList[Bobby2]].z);
vbuffer[m.bonearray[Bobby].AVertList[Bobby2]] += controlpoint;
}

for ( long Bobby3 = 0; Bobby3 < m.bonearray[Bobby].CBone; Bobby3++)
{
long James2 = m.bonearray[Bobby].CBonelist[Bobby3];

for (long Bobby4 = 0; Bobby4< m.bonearray[James2].AVert; Bobby4++)
{
long James3 = m.bonearray[James2].AVertList[Bobby4];
vect temp = vbuffer[James3];
temp -= controlpoint;
temp = apply_matrix_f(Core,temp.x,temp.y,temp.z);
temp += controlpoint;
vbuffer[James3] = temp;
}
}
}



[edited by - BGCJR on July 29, 2003 12:26:47 PM]

Share this post


Link to post
Share on other sites
I don''t really understand your question but from what i can see on the demo, some of the points are not rotating with the bones.
The way i do it is to assign each vertex to a bone and a force value(a percentage of how much the bone should affect the vertex contrary to the parentbone).
It seams like you have got the bone asignments wrong, or that you algorithm keeps forgeting to move a single vertic the correct way.

BTW. comment your code better next time, it looks like one of the old denthor demos from PCGPE, when i came to the variable Bobby3 my brain shut down.

Share this post


Link to post
Share on other sites
thanks lc_overlord, i''m looking into vertices weighting.
that means more to add, but it should handle the problem.
Seems weighting has been out for awhile

Share this post


Link to post
Share on other sites
It was just off the top of my head.

first, i rotate the a bone in loop.
then, i loop through the list of bones the first bone has control over and rotate them(vertices in this case).

the format is just a simple storage of #verts #tris #bones
their lists and a subclass of bone for endpoints, list of bones under this bone''s control, # of undercontrol bones etc...

The program was a test to load and animate a model from my Model Editor (which only needs Animation editing! and maybe bug fixes?!)


Share this post


Link to post
Share on other sites