[x3d-public] gltf inspired binary storage

Michalis Kamburelis michalis.kambi at gmail.com
Fri Jan 21 15:24:03 PST 2022


@Joe I'm sorry, but I don't understand what are you arguing with, nor
what question are you trying to ask me.

Nobody said glTF morph target is the *same* as H-Anim Displacer. What
I said is that "glTF morph target with sparse accessors" is *similar*
to "X3D H-Anim Displacer". Which was just my answer to your earlier
question "Can we also compare this with Hanim Displacer operation".

Read the glTF specification if you want to know details about it --
about glTF morph targets, with or without the sparse accessors. It
contains all the details. If my overview "how is it similar" in the
above thread was not enough, then just look at glTF spec and you can
make as precise comparison with X3D HAnimDisplacer as you wish.

And I never said anything in this thread about how we should express
glTF morph targets in X3D. I simply mentioned to Andreas that
- glTF has morph targets
- glTF allows to animate morph targets
- one way or another, CGE/view3dscene will support them too one day.

Regards,
Michalis

sob., 22 sty 2022 o 00:09 Joseph D Williams <joedwil at earthlink.net> napisał(a):
>
>
>
> @Joe I agree that H-Anim Displacer seems similar to glTF morph target
>
> with sparse accessors.
>
>
>
> Hi Michalis,
>
> Please tell me what is the same and different. How does it seem similar but is actually different?
>
> I am not saying the gltf binary storage should be able to be transformed into Displacer, unless it is the same. If it is not the same then we need a new node in x3d.
>
> If it is the same, then we should be able to obtain a Displacer node from glTF morph target code in whatever form.
>
> My main argument is that a binary or text version is of no real use unless it can be set as an x3d node and can be edited and validated in canonical form. And it must work in all encodings. And not all browsers, since there are no doubt several prerequisites.
>
> Maybe cure my pain by showing how an author would specify to include this binary in the user code.
>
> Thanks,
>
> Joe
>
>
>
>
>
>
>
> From: Michalis Kamburelis
> Sent: Friday, January 21, 2022 11:24 AM
> To: Joseph D Williams
> Cc: Andreas Plesch; X3D Graphics public mailing list
> Subject: Re: [x3d-public] gltf inspired binary storage
>
>
>
> @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