[x3d-public] HAnim skinned deformation

Andreas Plesch andreasplesch at gmail.com
Fri Jul 13 13:36:59 PDT 2018


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.

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

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



More information about the x3d-public mailing list