Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unique Object ID #1713

Open
elpie89 opened this issue Nov 28, 2019 · 5 comments
Open

Unique Object ID #1713

elpie89 opened this issue Nov 28, 2019 · 5 comments
Labels
needs discussion Issue or PR requires working group discussion to resolve.

Comments

@elpie89
Copy link

elpie89 commented Nov 28, 2019

Hi all, as discussed on Babylon Exporter GitHub we have a situation where many objects across differents GLTF files are sharing animations.
Also, we are working with files that contain more than 5000 nodes and artists are struggling with a pipeline where the moment a single keyframe is changed the entire scene must be re-exported.

We implemented this solution, proposed by @Selmar on #1448. Adding a unique identifier to every node and animation channels target.
This way we can eventually split the animation from the model and, on the engine side, we can blend data coming from different GLTF files.

As we would like to share this extension to BabylonExporter we are discussing on the way the specification should be implemented
We wonder if the uniqueness of the object should be an isolated extension, were eventually, some other extensions can be built on top of that.

What do you think about this?
should we have a UniqueIdentifierExtension that will end up with something like this?

    {
      "skin": 0,
      "mesh": 0,
      "translation": [
        0.0,
        -0.0287759788,
        -0.0076726065
      ],
      "name": "L_Shoulder_JNT",
      "extensions": {
        "ASOBO_unique_id": {
          "id": "shoulder"
        }
      }
    },```

 
@Drigax
Copy link

Drigax commented Dec 12, 2019

Very clean and simple, this does look like a good way to implement a skeletal "interface" or any other cross scene problem involving nodes of a given application specific type.

@SFSimDev
Copy link

SFSimDev commented Jun 17, 2021

Sorry to bring up an old post but..

@elpie89 I know this sounds wrong, but is the ASOBO_unique_id actually a common name that the engine uses to merge the models? e.g.

in arm.gltf

"name": "arm",
"extensions": {
"ASOBO_unique_id": {
"id": "body"
}

in leg.gltf

"name": "leg",
"extensions": {
"ASOBO_unique_id": {
"id": "body"
}

? I'm having trouble getting the objects merging. My XML is referencing them correctly.

I have tried to use an ASOBO_unique_id such as 'leg' and 'arm' and let the model.xml do the joining but that doesn't seem to work either so I'm getting desperate :|

Thanks for any help you can provide.

@Selmar
Copy link

Selmar commented Jun 17, 2021

@SFSimDev answered here

@UX3D-nopper UX3D-nopper added needs discussion Issue or PR requires working group discussion to resolve. and removed extension labels Oct 10, 2021
@javagl
Copy link
Contributor

javagl commented Oct 25, 2023

This is currently being discussed again in #2337 , just in case that people want to chime in with information about the ASOBO_unique_id extension, or their experiences while implementing it.

@aaronfranke
Copy link
Contributor

The example JSON in the OP is confusing to me. The object appears to be the left shoulder joint based on the name, but it has a unique ID of "shoulder". This makes me wonder what the right shoulder's unique ID would be. If it's also "shoulder", then the ID is not unique. If it's "Right shoulder" or similar, then why isn't the left one called "Left shoulder"?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs discussion Issue or PR requires working group discussion to resolve.
Projects
None yet
Development

No branches or pull requests

8 participants