[x3d-public] Purpose of X3Dng -- Animation
Joe D Williams
joedwil at earthlink.net
Fri Oct 21 17:06:18 PDT 2016
> It would be fantastic if e.g. Blender armature animation was
> exported
> to X3D. It is already possible, as H-Anim supports the necessary
> features --- what is miss is the actual code on the side of Blender
> (Python) exporter to X3D.
Good idea, perhaps if the Blender animation data exists so it can be
made to work in interpolators.
Sometimes the export of animation intended for rendering to film or
video is just a list of completely rendered frames rather than an
actual realtime animation style.
If the data exists to export keyframe keys and keyvalues, then the
rotations and translations should be easy to get. In an 'old style'
armature they were not interested in joint rotation but depended upon
bone orientation. That is OK because the purpose was to pose the
artatmure for the next frame, not to worry about interpolation since
they knew the target frame intervals. That is OK, bone orientation and
joint rotation is the same.
Another detail is that the joint animation data may be in unit
quaternions, which is actually most likely since it is the preferred
form in collada and glTF. Or, the data may use euler-type angles
(x-y-z) that need to be converted to x3d axis-angle which can be
straightforward.
That is what Part 2 of new HAnim is about, how to import mocap and
other types of animation data. First you consider the capture
skeleton, then you model it to a model of an HAnim 'standard' playback
skeleton, convert the keyvalues as required, create the positon and
orientation interpolators, then run the thing. Everyone's comments on
this Part 2 is also appreciated.
I don't think we want to also cover the idea of no interps, just itty
through the mocap keyvalues for video or film fixed frame interval
rendering and capture. X3D's target is realtime or anytime and
everytime. Of course you also make video or film using X3D. Same for
'general' coverage of this anmation technology. Of course you can do
anything you want. You don't need study HAnim very long until you
learn that yes, you can define your own joint hierarchy, use any names
you wish, and attach any kind of geometry and sensors you wish. If you
want to do different shaped skin, then fine. Finally, if you
understand the skelton setup, you can just fly them joints around to
achieve most any animations possible with your model. You can easily
adjust animations with a keyboard, a text editor, and an X3D player.
Whatever you do, there are the same rules. Similar skeletons with
similar initial pose can exchange skeletal animations. That is the
most important point of this entire effort. Exchange skins when
skeleton joint hierarchy, skin vertex count, order of appearance in
the user code, and feature point relationships are the same. Sure we
could tell that story in a series of tutorials but this is a spec.
Maybe not this example, but the spec does not always need to spell out
the history or details that would be obvious to an expert in the
field, just the bare implementation requirements.
Again, capabilities in this spec can describe any skelton but I think
we want to target something concrete. Something that can have a set of
reference inputs and a set of reference outputs. Finally, we want a
'standard' set of example animations that work with each of the
'standard' LOA definitions.
For this spec effort, the most important thing is that Implementors
get it right. If the implementation can deliver a 'standard' humanoid
that uses 'standard' animations, then we have something. If the
implemetation gets it right, then the users can get most anything out
of it they want. So that is why the HAnim spec targets the 'standard'
animatable humanoid.
When we discuss general X3D animation facilities, of which there are
many, then that is the job of a set of tutorials. Please recall that
the spec is addressing Implementors, and technicallly-oriented users,
not the general user. Usually the spec will fail when it wanders into
general tutorials aimed at general users.
Still, the idea of bringing something like the HAnim DIsplacer up into
the same bag of tools as other styles and types of interpolators would
be a fine idea. I think that might be what Leonard was mentioning when
he said there are other more basic tools than joint-actuated mesh
deformation. It is easy to recognize the Displacer as a basic mesh
animation tool that would be encountered in early animation lessons.
Thanks and Best,
Joe
----- Original Message -----
From: "Michalis Kamburelis" <michalis.kambi at gmail.com>
To: "Leonard Daly" <Leonard.Daly at realism.com>
Cc: "Joe D Williams" <joedwil at earthlink.net>; "X3D Public"
<x3d-public at web3d.org>
Sent: Thursday, October 20, 2016 10:34 PM
Subject: Re: [x3d-public] Purpose of X3Dng -- Animation
> 2016-10-21 6:23 GMT+02:00 Leonard Daly <Leonard.Daly at realism.com>:
>> In all your writings you appear to be making the assumption that
>> joint-based
>> animation with deformable skin is H-Anim. That is not true.
>
> Hi,
>
> From my point of view, I see H-Anim as "the way to do animation
> using
> skeletons, bones and (optional) skins in X3D". I can easily do
> skeletal animation of anything (humans, pipes, animals) with H-Anim.
> I
> actually implemented it in view3dscene, and really there's nothing
> limiting this system to "humanoids". You just transform the bones,
> and
> optionally deform a mesh following the per-vertex weights.
>
> Maybe we could solve the issues raised here by simply changing the
> wording (and some node names), to de-emphasize the "humanoid" part
> in
> the H-Anim specifications. (The X3D component
> http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/hanim.html
> and the H-Anim spec on
> http://h-anim.org/Specifications/H-Anim200x/ISO_IEC_FCD_19774/ ).
>
> Such change would more accurately reflect H-Anim's capabilities (in
> my view).
>
> How about we would simply rename H-Anim component in X3D to
> "Skeletal
> Animation"? Some additional renames would be nice, like removing the
> "HAnim*" prefix from nodes, and the main "HAnimHumanoid" node could
> be
> something simpler like just a "Skeleton" (with the primary field
> being
> "skeleton").
>
> The fact that the H-Anim standard defines also a standard "Structure
> of a humanoid" is just "an extra" for me. I mean, it is valuable!,
> but
> it can also be simply ignored if you don't model a humanoid (or
> don't
> care about standardizing your names, to transfer the animations
> between other humanoids).
>
> Also, adding such "Skeletal Animation" component to the "Immersive"
> (or even earlier) profile would be a nice touch. It is a major
> animation method. Putting it inside a component other than "Full" is
> a
> way of encouraging implementations of it. Especially since it seems
> we
> do have a lot of implementations of it.
>
> It would be fantastic if e.g. Blender armature animation was
> exported
> to X3D. It is already possible, as H-Anim supports the necessary
> features --- what is miss is the actual code on the side of Blender
> (Python) exporter to X3D.
>
> I hope that this opinion helps:)
>
> Best regards,
> Michalis
More information about the x3d-public
mailing list