Liming CHEN wrote:
> Hi, Shawn,
>
>> We are using "Skin and Bones" using Java3D GeometryUpdate interface and
>> By-Ref geometry. That means only the transforms are animated and the
>> geometry is transformed in the GeometryUpdater based on it's bones transforms.
>
All GeometryArray classes in Java3D have two modes, Copy and
By-Reference. See the API docs for GeometryArray.
The GeometryUpdate interface is a callback mechanism in GeometryArray
for handling geometry changes. Geometry changes need to be handled
atomically, that is, the render thread must be sure not to be rendering
Geometry that is in the middle of an update, so Java3D guarantees that
with the GeometryUpdate interface.
> What's Java3D GeometryUpdate interface and By-Ref geometry? Are they classes of
>Java3D
> API? I have studied these APIs, and did not remember there existed such classes.
>
> In my understanding, your "Skin and Bones" method is similar to layered animation
> approach in 3DS Max.. That is, bonding geometry to skeleton and animating skeleton
>will
> animate the geometry.
>
> With this method, there are two question for animation. One is how to build the
> geometrical model, another is how to animate the skeleton.
>
> In your case, you design the model with Creator and Maya. You produce the animation
>data
> also using Maya. Combining them together produces different character animations.
>
> In my case I build the character's geometrical model directly from Java3D (using
> GeometryArray). What I need is the animation data. It's true that the Java model
> doesn't need to know anything about where the animation data came from. The point is
> that the animation data can be used.
>
> I have imported a Java character model into 3DS Max and animate the skeleton to which
> the geometry are attached. However, when I exported the animation data, I can only
> export it to VRML format and load this vrml file in Java environment. The problem is
> that current VRML loaders do not support loading animation very well. What I hope to
>get
> is to get some animation data that can be applied to the model directly.
You can export ONLY the animation data in a text format file in
SoftImage, Maya, and I'm sure Max (we will be using Max in 2001, so I'll
know for sure then). You will have to write a loader for that text
based data, but it is not the horribly difficult.
> It seems that you have output such animation data (the position and rotational
> keyframes). In your understanding, can these data be applied to a Java model
>directly?
> If you think it will work, could you please give me a sample, for example, a walking
> animation, so I can try by myself. If it really works, I probably use such approach
>to
> generate some animation data then apply to my model.
>
Unfortunately, I can not send you our code at this time. However, I can
tell you that you are doing it "right".
For the record, here is the minimal components for a skinning animation
system. Articulated animations (no skin just parts) are MUCH easier.
You can just use the standard Java3D scene graph and behaviors system.
Components needed for Skinned Character Animation:
1) Model or skin geometry data
2) Skin geometry loader for the Java3D scene graph.
3) Animation data
4) Animation data loader into a Java3D ANIMATION system, which is
usually transform only style animation.
5) Java3D animation playback system
For test system this is two parts:
1) The transform animations - Mostly procedural at this time. Updates
the transforms or "bones" in the scene.
2) The skin updater - This is in the GeometryUpdater because it uses the
TransformGroup Java3D scene graph (a "bones" structure) and applies the
various transform accumulations to the assigned vertices in the
GeometryArray.
Of course, this write much simpler than it really is. For example, if
you want to use any GeometryArray type other than Indexed (which you
do!) then the vertex mapping can get interesting because what in the
original skin model is one vertex, will most likely become many vertices
across several different GeometryArrays and possible even Shape3D's if
the poly attributes are different (i.e. different textures).
Getting all that stuff hooked up correctly is really an art, but once it
is done every SHOULD work pretty well! :-)
Hope that helps.
--
___________________________________________________________
Shawn Kendall Full Sail Real World Education
Course Director 3300 University BLVD
Real Time 3D for Gaming Winter Park FL 32792
[EMAIL PROTECTED] http://www.fullsail.com
___________________________________________________________
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".