[x3d-public] HAnim and glTF skins

Joseph D Williams joedwil at earthlink.net
Wed Nov 28 18:34:25 PST 2018


➢ x3dom now supports skinned animation in the dev build. Here are a few
examples: http://andreasplesch.github.io/Library/Models/HAnim/x3d/InlineViewer.html
(BoxMan and Kicker are skinned).

Real nice work Andreas,
Thanks, 
Joe


From: Andreas Plesch
Sent: Wednesday, November 28, 2018 12:50 PM
To: Joe D Williams
Cc: Michalis Kamburelis; X3D Graphics public mailing list; Humanoid Animation (H-Anim) Working Group
Subject: Re: [x3d-public] HAnim and glTF skins

A short update after Joe and me had a good discussion on the phone.

We could trace back the origins of the new JointBinding fields and
confirm that they are meant to align an initially incompatible
geometry with a given animation of a skeleton. I am more confident now
that these fields essentially correspond to the InverseBindMatrix of
glTF skins.

With regards to the relationship of the SkinBindingCoords field to the
SkinCoord field, we felt it is possible that only one or the other
should be used. This may still need some additional digging.

We also discussed how similar glTF skinning is to HAnim skinning. For
example, glTF skinning also requires a binding of one or multiple
weighted joint (trafos) for each single vertex in a skin. in glTF,
this binding occurs in the JOINT_0 vertex attribute of a mesh, whereas
in HAnim the binding occurs in the skinCoordIndex field of a joint.

x3dom now supports skinned animation in the dev build. Here are a few
examples: http://andreasplesch.github.io/Library/Models/HAnim/x3d/InlineViewer.html
(BoxMan and Kicker are skinned).

Other links:
http://www.web3d.org/documents/specifications/19774-1/V2.0/HAnim/ObjectInterfaces.html#Humanoid
(sequence<float[4]> skinBindingNormals should be float[3] )

https://github.com/andreasplesch/x3dom/wiki/HAnim-and-glTF-skins

has now a complete, and working conversion of a simple glTF skinned
animation to HAnim. Since the conversion is using HAnim 1.0, instead
of the jointBinding fields, it is using an inner Joint to apply a
binding transform. I think it works well.

I may do another manual conversion of another simple glTF example.

The main issue with going further on x3dom is now that the skinned
deformation per vertex is currently done in js arrays on the CPU while
the glTF support is using directly the binary vertex data on the GPU.
So it may become necessary to move the skinning in x3dom also to the
GPU which requires uploading additional buffers and deeper
adjustments, and therefore investment. The alternative is to not use
BufferGeometry and translate to IndexedTriangleSet (et al.) which is
not very attractive.

-Andreas









On Tue, Nov 27, 2018 at 2:51 AM Joseph D Williams <joedwil at earthlink.net> wrote:
>
> I think we should get together on the phone and discuss. Let’s try and use the web3d conf line sometime. Wed at 5 pacific or Mondays at 3 has worked.
>
> Each vertex of a skin has to be bound to the appropriate skeleton parts.
>
> Thanks and Best,
>
> Joe
>
>
>
>
>
> Sent from Mail for Windows 10
>
>
>
> From: Andreas Plesch
> Sent: Monday, November 26, 2018 10:37 AM
> To: Michalis Kamburelis
> Cc: X3D Graphics public mailing list
> Subject: Re: [x3d-public] HAnim and glTF skins
>
>
>
> I figured out by now that these fields were added for HAnim 2.0
>
> whereas X3D V3.3 uses HAnim 1.0 .
>
>
>
> I think the idea is that you have a skeleton of joints with animation
>
> data designed for it but the actual initial geometry is designed for
>
> another initial state (pose). Then you can either redo the skeleton
>
> and animation, redo the geometry, or apply a first ('binding')
>
> transform to get the geometry into the state expected by the animated
>
> joint transforms. This first transform would be defined by the
>
> jointBinding fields, or as an inner joint in the skeleton's joint
>
> hierarchy.
>
>
>
> I think these fields are similar to glTF's inverseBindingMatrix which
>
> is also defined for each joint, and is applied to initial vertex
>
> positions. So in order to play glTF skinned animations, it would make
>
> more sense to implement these fields rather than finding a singular
>
> solution.
>
>
>
> It is unclear to me how skinCoord and skinBindingCoord interrelate,
>
> and why non-humanoids are supposed to use those. Probably because it
>
> is common to have this initial binding step rather than compatible
>
> skeletons and geometry in the first place.
>
>
>
> Hopefully somebody can correct all the mistakes and misunderstandings
>
> just offered above :)
>
>
>
> -Andreas
>
>
>
> _______________________________________________
>
> x3d-public mailing list
>
> x3d-public at web3d.org
>
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
>



--
Andreas Plesch
Waltham, MA 02453

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20181128/84d6351e/attachment.html>


More information about the x3d-public mailing list