[x3d-public] gltf inspired binary storage

Michalis Kamburelis michalis.kambi at gmail.com
Fri Jan 21 11:23:38 PST 2022


@Joe I agree that H-Anim Displacer seems similar to glTF morph target
with sparse accessors.

I understand you argue that we should just say "glTF morph target
should get translated into H-Anim HAnimDisplacer by all X3D browsers".
Maybe. I really need to make a research to make a decision what is
best for my software (CGE/view3dscene). I know that perfect alignment
with glTF is important for me, and simplicity of the solution (both
design and implementation) are important to me.

Regards,
Michalis


pt., 21 sty 2022 o 17:48 Joseph D Williams <joedwil at earthlink.net> napisał(a):
>
>
>
> @Joe -- Morph targets in glTF specify displacement. See
>
> https://www.khronos.org/registry/glTF/specs/2.0/glTF-2.0.html#morph-targets
>
>
>
>
>
> OK, then if the Hanim Displacer operates the same as morph target, why doesn’t standard x3d just implement Displacer at some lower level than also needing Hanim? Wait, I think I know, because it is not that simple to do skin animation using hierarchy of Joint objects and then adding a Displacer is requiring more than simple scripting. In fact, to do an efficient mesh animation using those techniques requires a relatively powerful algorithm and close to the metal runtime.
>
>
>
> Please, again, what is the difference between Hanim Displacer and the thing that is commonly called a morph target? Mostly, Hanim uses standard or easily scripted stuff, except the Displacer is sort of special in that it can and probably does happen in addition to whatever other animation happens in the same frame.
>
> So, the Displacer gives a scaled value, not an absolute value, and in Hanim the 3D vector it is added after skeletal animation is applied, and there may be multiple joints and displacers operating on the same vertex.
>
>
>
> Some animation can easily be done using coordinate interpolator sets with absolute xyz values at start and stop. Logical step to simply to grab one pose, move the thing and then grab another and interpolate some method between the absolute data points, rinse and repeat and under the covers create the system of coordinate interpolators which can easily be encoded in x3d. But this does not appear to be any part of morph target.
>
> With hanim, the problem is that the author wants a change from a change. Following skeletal animation the displacer needs to know the current position after animation then displace it by the given direction in which each vertex should move using scaled interpolation some more or less according to where it is now.
>
> Example is vertices of jaw area skin mainly controlled by Joint, and some also by Displacer(s).
>
>
>
> I figured out what sparse means, and that lines up just fine but my question is still, if the x3d tool does Hanim Displacer, then why is there any question about how to implement something in x3d at some lower in some lower level than Hanim with displacer? Browser prerequisites for morph target?
>
>
>
> Thanks, Again,
>
> Joe
>
>
>
>
>
> From: Michalis Kamburelis
> Sent: Thursday, January 20, 2022 11:58 AM
> To: Andreas Plesch
> Cc: Joseph D Williams; X3D Graphics public mailing list
> Subject: Re: [x3d-public] gltf inspired binary storage
>
>
>
> @Andreas -- Not yet. CGE/view3dscene doesn't yet read morph targets.
>
> But we will -- either into CoordinateInterpolator, or into specialized
>
> nodes to express them, so that we don't lose any information from glTF
>
> (otherwise "compiling" them into CoordinateInterpolator would have
>
> them premultiplied by weights; the most important disadvantage of it
>
> is that we would not be able to later operate on morph targets
>
> programmatically, and the latter is a useful feature).
>
>
>
> @Joe -- Morph targets in glTF specify displacement. See
>
> https://www.khronos.org/registry/glTF/specs/2.0/glTF-2.0.html#morph-targets
>
>
>
> @Joe -- Morph targets in glTF specify displacement. See
>
> https://www.khronos.org/registry/glTF/specs/2.0/glTF-2.0.html#morph-targets
>
> ,
>
>
>
> """
>
> Morph targets are specified via the targets property defined in the
>
> Mesh primitives. Each target in the targets array is a plain JSON
>
> object mapping a primitive attribute to an accessor containing morph
>
> target displacement data (deltas).
>
> """
>
>
>
> (see further prose around there for more info.)
>
>
>
> Regards,
>
> Michalis
>
>
>
> czw., 20 sty 2022 o 16:36 Andreas Plesch <andreasplesch at gmail.com> napisał(a):
>
> >
>
> > Let me just note that x3dom currently does not support morph targets or sparse accessors in glTF. Does castle engine translate morph targets to CoordinateInterpolators ?
>
> >
>
> > Regards, Andreas
>
> >
>
> > On Thu, Jan 20, 2022 at 6:47 AM Michalis Kamburelis <michalis.kambi at gmail.com> wrote:
>
> >>
>
> >> Hi Joe,
>
> >>
>
> >> > Can we also compare this with Hanim Displacer operation (target displacements of mesh and weights driven by 0 to 1 scale input) ?
>
> >>
>
> >> From what I understand,
>
> >>
>
> >> - H-Anim Displacer means that you animate a (subset) of coordinates of the mesh.
>
> >> - Which is equivalent in Blender to using a "hook" attached to a
>
> >> vertex group. Useful e.g. to animate a jaw, or eye area, to make
>
> >> facial expressions -- when you want to morph a mesh, but usually only
>
> >> a small subset of the mesh changes by a particular animation.
>
> >> - From what I understand this is equivalent to glTF morph target
>
> >> animation with "Sparse Accessors",
>
> >> https://www.khronos.org/registry/glTF/specs/2.0/glTF-2.0.html#sparse-accessors
>
> >> .
>
> >>
>
> >> >
>
> >> > Can the glTF change number of points in a shape during the course of an animation?
>
> >>
>
> >> No. Morph targets just change the coordinates' positions. Number of
>
> >> points, as well as their topology (how they connect to polygons)
>
> >> always stays the same.
>
> >>
>
> >> Regards,
>
> >> Michalis
>
> >
>
> >
>
> >
>
> > --
>
> > Andreas Plesch
>
> > Waltham, MA 02453
>
>



More information about the x3d-public mailing list