[x3d-public] HAnim skinned deformation

Andreas Plesch andreasplesch at gmail.com
Sun Jul 15 17:41:36 PDT 2018

Further observations
On Fri, Jul 13, 2018 at 4:36 PM Andreas Plesch <andreasplesch at gmail.com> wrote:
> Some partial answers:
> On Thu, Jul 12, 2018 at 8:18 AM Andreas Plesch <andreasplesch at gmail.com> wrote:
> >
> > Before diving into an HAnim skinned deformation for x3dom, there are a few questions:
> >
> > proto
> >
> > Is there a proto implementation for skinned deformation, eg. the skin related fields ?
> Boxman has a script which does some skinned deformation:
> http://www.web3d.org/x3d/content/examples/Basic/HumanoidAnimation/BoxManIndex.html
> http://www.web3d.org/x3d/content/examples/Basic/HumanoidAnimation/BoxMan.js
> The scene uses native HAnim tags. It may or may not work in x_ite with
> HAnim protos.

Joe has a native tag BoxMan with test skin deformations.

> The script just applies the weights as factors to a transform matrix
> which may be quite different from the blending of coordinates. Of
> course, the weights can be generated in the first place in such a way
> that this application could work.
> > examples
> >
> > Are there examples in addition to Joes kicking player ?
> There are the Lucy avatars available from seamless3d:
> http://www.seamless3d.com/hanim/
> I had view3dscene convert them to xml:
> https://github.com/andreasplesch/x3dom/blob/HAnim_work/test/functional/HAnim/Lucy_test4.x3d

All players I tested which have skinned deformation implemented show
the Lucy animation with inverted rotations. The players are:
view3dscene 3.18
freewrl 4.0
Probably there is a problem with the Lucy example and perhaps how
seamless3d exports hanim.

> A maria_noscript model was also available at some point but seems lost.
> > skinCoordWeight
> >
> > This field modulates the transformation applied to the indexed coords by a factor ranging from 0 to 1. It is not quite clear how the factor should be applied. The spec. focuses on the amount of rotation but scaling and translation presumably should also be affected.
> >
> > Should scaling and translation be weighted ?
> >
> > The most straightforward way would be to just scale all the components of the transformation matrix. However, that does not work for the rotational components. Is there a recommended way to apply the weights to the complete transformation matrix ? Multiply all the individually weighted field matrixes ? That would be a lot of matrix multiplications, for each coord for each frame of an animation.
> >
> > skinNormals
> >
> > The spec. only refers to the skinCoords as being affected by the weighted transform. Presumably the skinNormals also need to be transformed ?
> > If so, it seems to make sense to only apply the rotational component, and ignore scaling and translation ?
> Apparently there was some opiniated discussion around normal
> generation: http://seamless3d.com/hanim/hanim_with_hardware_shaders_issues.html
> > Mix of skeletal and skinned bodies
> >
> > It is possible to have geometry both in the skin and the skeleton (within segments) fields.
> > In this case it seems the full transform would be always applied to the segment geometries. That may lead to out of sync movement during animation but such mixed representation may not be intended to be fully supported. How should an implementation deal with such humanoids ?
> May not be a priority to resolve.
> --
> Andreas Plesch
> Waltham, MA 02453

Andreas Plesch
Waltham, MA 02453

More information about the x3d-public mailing list