[x3d-public] Feature comparison of glTF and X3D as Interchange Formats

Michalis Kamburelis michalis.kambi at gmail.com
Thu Sep 21 19:05:44 PDT 2017


2017-09-21 23:40 GMT+02:00 Leonard Daly <Leonard.Daly at realism.com>:
> Since higher level X3D
> Profiles include a lot of run time and glTF does not include any, it would
> not be a fair comparison -- it wouldn't even be relevant. Someone might need
> to work in a specific environment which would preclude X3D's runtime.

But an X3D browser can implement the parts of X3D responsible for the
missing features (vs glTF, in your table) without "a lot of run time".
I know that it's more-or-less what I'm doing myself (details below).

If you consider some X3D browsers as "heavier" on resources than some
glTF browsers, then you should point and
compare these specific browsers, and mention that browser X (which
happens to use X3D) is heavier on resources than browser Y (which
happens to use glTF). As far as standards go, saying that X3D requires
"heavier runtime" for the same features is not true, in my experience.

I actually do implement in my X3D browser various features that you
list as missing in your table (since they are indeed missing from the
Interchange profile). I'm quite sure that implementing these features
does not make the runtime "heavy", at least not more than implementing
them using glTF would be.

Some details:

- Implementing [Indexed]QuadSet nodes (which is part of CAD component,
and provides "Quad surface model" feature in your table) is very easy,
and it does not require anything special from the runtime. It's just
another geometry node. (Some APIs, like OpenGLES, may not support
quads, but you don't pass polygons from IndexedFaceSet straight as
polygons to OpenGLES either.)

- Using shaders is something that all renderers do already, regardless
if it reads X3D or glTF. Exposing shaders to the X3D author is
relatively easy, and it does not require any "heavy runtime", you just
copy some data from X3D shader nodes to your renderer shaders.

- Implementing animations (using morph and joints) is indeed not
trivial (to do it efficient). But it's the same level of difficulty as
doing it with glTF.

- Implementing bump mapping etc. using X3D CommonSurfaceShader is the
same level of difficulty as implementing these features using glTF.
The input format doesn't really matter here much.

Regards,
Michalis



More information about the x3d-public mailing list