goth-gltf
goth-gltf copied to clipboard
glTF Experience Format (glXF) support?
Hi, I'm curious if would you like to have support for glXF here or better to have it in another crate?
glXF spec is still new (draft) but it's something similar to USD for glTF.
Here is an example of the "experience" file:
{
"asset": {
"version": 2.0,
"experience": true
},
"assets": [
{
"name": "Soccer Player",
"uri": "soccer_player.gltf",
"scene": "player"
},
{
"name": "Ball",
"uri": "ball.gltf",
"nodes": [ "ball" ],
"transform": "none"
}
],
"nodes": [
{
"name": "Root Node",
"children": [ 1, 2 ]
},
{
"name": "Soccer Player Node",
"asset": 0,
"translation": [ 0, 0, 0 ]
},
{
"name": "Soccer Ball Node",
"asset": 1,
"translation": [ -10, 0, 35 ]
},
{
"name": "Ball Destination Node",
"translation": [ 51, 0, 80 ]
},
{
"name": "Ball Origin Node",
"translation": [ -10, 0, 35 ]
}
]
}
am also interested in glXF
I think I'd be okay with glXF being part of this crate if the format got stabilized and had some adoption. At the moment though I'd prefer to keep this crate for glTF. From what I've seen of the draft glXF spec it shouldn't be at all hard to implement on top of components in this crate. I'll keep this issue open for discussion.
After some digging, I found out that stabilization may take ages. glXF was used (and maintained?) by the ThirdRoom project, but it was closed. I think their WebSG (Web Scenegraph) is now unmaintained as well. The group responsible for testing was part of Khoronos but they do not exist anymore for a few months now.
I was curious about the format for future use in shipwright for stage reconstruction while streaming like I do with USD at the moment (breakdown lives in #wg-usd-games at ASWF)
@heavyrain266 Ah cool, yeah I'm looking forward to playing around with shipwright at some point! I presume you want an end-user scene format for shipping that's lighter than USD? glXF is at a super early/undeveloped stage and I'm sure is missing out on a whole bunch of features that you'd probably want, so I'd suggest either:
A) Heavily modify glXF with a glTF-like extension set to add in what you want or B) Write your own json-based format with your desired features.
I'd probably go with A) unless the glXF is so fundementally broken that it's better to start from scratch.
I'm more open to having glXF support in this crate now tbh, especially if it makes it easier for people to extend the format.
https://github.com/expenses/goth-gltf/compare/main...glxf okay, I made the initial changes to support glXF on this branch. I'm happy to merge things in but wouldn't mind a bit of feedback. The spec says
A glXF file MUST NOT contain buffers, bufferViews, accessors, meshes, skins, textures, images, samplers, materials, nor animations.
which means that a glXF can contain the cameras
, scenes
, scene
and of course nodes
fields. However the sample glXFs don't list any scenes, just nodes so I'm not sure how you'd want to handle that.
I think having scenes and scene in glXF would be good.