[x3d-public] Blender X3D exporter: what to do, how to do it

Michalis Kamburelis michalis.kambi at gmail.com
Wed Jun 23 13:25:39 PDT 2021


John, Joseph: thank you for comments, answers below :)

> if one exports something, provide a way to import it, perhaps in another form.

Indeed, I fully agree that it should work like that in the end.

Blender glTF importer+exporter are nicely aligned in this regard: most
things that can be exported, can also be imported, and result in the
same thing. It is not 100% possible (as Blender features are just not
equal to glTF features, nor to X3D features) but it's doing as good
job as possible.

But, practically, for some use-cases one way is more important than
the other. I will go as far as say openly: "good exporter" is IMHO
more critically needed than "good importer", because in a "normal
workflow" the exporter is needed more. By "normal workflow" I mean
this:

- you hire a graphic artist to make 3D model for your visualization,

- they work in Blender,

- and at the end export from Blender to a format supported by 3D
renderers (including, but not limited to, game engines), like to glTF
or to X3D.

In this approach (very typical in my experience) you need a good
exporter, and you don't really need importer. I know there are
different use-cases (I happened to work with them too), when importer
becomes useful too, but they are just more rare --in my experience.

That is why I wrote in my doc:

"""
Note: There's also an X3D importer. Ideally the X3D exporter and X3D
importer features should match (like the glTF importer + exporter).
But for now, it is much more important IMHO to "just have a better
exporter". Of course it depends on the use-case, but basically I would
suggest to focus on the exporter first, and worry about importer
later.
"""

Joseph:

> What is the underlying method for animation? Does Blender use interpolation or is every frame a keylframe

Blender uses interpolation. It has keyframes. It's the same as in all
other 3D authoring software (Blender, 3ds Max, Maya...).

You can transform (by keyframes) various things, in particular
transformations. Transformations can be used to directly transform
children, and/or the transformation can act as a bone, and
transforming it appropriately affects the "skin" mesh.

> For hanim we need joint to skin vertx bindings and weights. How does Blender accomplish ‘skin’ animation driven be joint rotation?

Blender has "armature with bones" (which is another way of saying
"skin with joints"). There are multiple ways to assign weights to
vertexes, more automatic and more manual. Joint rotation, as well as
other joint transformation, transforms the associated vertexes with
the given weights.

In my view, Blender does support what is "industry standard for
animation by skinning". And it is consistent with features available
in other 3D authoring software (at least 3ds Max, Maya that I know at
basic level).

I suggested in my document to export Blender "skinned animation" to
X3D using H-Anim, as H-Anim is the only way to make "skinned
animation" in X3D now. And from what I understand, it has a matching
feature set, matching also glTF skinned animation. So yes, it should
be possible. We would have a big problem in X3D if we cannot express a
standard approach to skinned animation :), but I believe we can.

This is also somewhat connected to my other work -- I work on having a
perfect support for both glTF and X3D in my Castle Game Engine. Right
now we support both glTF skinned animation, and X3D H-Anim, but *not*
through the same system underneath. But it will be improved. It will
have to be unified at some point, going through the same system, and
making skinned animation on GPU -- hopefully proving that both X3D and
glTF can express the "standard skinned animation" as designed in
Blender and similar authoring software. glTF already has proven that
(by their Blender->glTF), I want X3D to prove it too :)


> Trying to animate skin using coordinate interpolator(s) is entirely different than hanim and basically useless for hanim because this has nothing to do with skeleton Joint driven animations.

Yes, it is something entirely different. This """fallback method that
just exports key poses using CoordinateInterpolator""" is *not* about
H-Anim. I clarified this in the document.

Regards,
Michalis

śr., 23 cze 2021 o 19:37 Joseph D Williams <joedwil at earthlink.net> napisał(a):
>
>
>
>
>
> Support animation by interpolating object transformation (translation, rotation, scale).
>
>
> What is the underlying method for animation? Does Blender use interpolation or is every frame a keylframe
>
>
>
>
>
> Support animation by skinning. Using H-Anim for this is the best we have now in X3D (despite the fact that you will call a "humanoid" things that are really just "any mesh under skinning").
>
>
>
> For hanim we need joint to skin vertx bindings and weights. How does Blender accomplish ‘skin’ animation driven be joint rotation?
>
>
>
> A fallback method that just exports key poses using CoordinateInterpolator may also be sensible, depending on how easy it is.
>
>
>
> Trying to animate skin using coordinate interpolator(s) is entirely different than hanim and basically useless for hanim because this has nothing to do with skeleton Joint driven animations. The only use of this is when the author just drags a shape around to get keyframes for an interpolator, which is fine for some stuff, but not emulating hanim level 1 joint-driven animations or level 2 skin animation.
>
>
>
> Does Blender use anything like the hanimdisplacer?
>
>
>
> Unless we can retrieve a reasonable skeleton that is activated by joint rotations (level 1) and the skin bindings (level 2) it is not hanim and so no reason to even try to call it hanim export. .
>
>
>
> Thanks,
>
> Joe
>
>
>
>
>
>
>
>
>
> From: Michalis Kamburelis
> Sent: Tuesday, June 22, 2021 5:49 AM
> To: X3D Graphics public mailing list
> Subject: [x3d-public] Blender X3D exporter: what to do, how to do it
>
>
>
> I wrote a document outlining my Blender->X3D exporter wishlist, and
>
> how to submit patches to Blender:
>
>
>
> https://docs.google.com/document/d/1ad5XsU43gQGxqC7ehSBr21mdX2dQjKZCSXUQtvRwTHw/edit?usp=sharing
>
>
>
> Please feel free to distribute it to whoever is interested. Comments welcome :)
>
>
>
> Regards,
>
> Michalis
>
>
>
> _______________________________________________
>
> x3d-public mailing list
>
> x3d-public at web3d.org
>
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
>



More information about the x3d-public mailing list