google / model-viewer

Easily display interactive 3D models on the web and in AR!
https://modelviewer.dev
Apache License 2.0
6.68k stars 799 forks source link

Expose GLTFInstance.userData in the API #4821

Open literallylara opened 1 week ago

literallylara commented 1 week ago

Description

It would be useful to have access to custom data embedded in the GLTF file. ThreeJS appears to save this in a userData property, which is already being used in this project for the variant logic. My client uses \ to show models that change appearance based on some user input. The userData could be utlized to store information on how the user input needs to be processed for a particular model or material. Another use-case might be to store the annotation data right in the GLTF file.

I would be happy to implement this if this is something that is deemed in-scope for this project.

Version

elalish commented 2 days ago

I'm open to a PR for this. GLTF extensions can be included on any node, but we don't expose the scene hierarchy in our API, so we could probably only support top-level data.

I don't think I'd recommend this approach in general - separate metadata files are often better so that you can store e.g. annotations that can be easily updated without updating the large 3D file and its caching. But perhaps in some situations?