This repository is used by the Open Metaverse Interoperability Group to develop and document extensions for the glTF 3D model format.
Extensions in this repository are intended to extend the glTF format with features useful for 3D virtual worlds. These extensions could include things related audio, physics, avatars, animations, behaviors, and more.
Vendor extensions are developed and approved via the W3C Metaverse Interoperability Community Group process. Our intentions are to create OMI specific vendor extensions, but common extensions that make sense within the greater glTF community may be proposed to the Khronos 3D Formats Working Group at a later date. Our goal with this repository is to prototype and standardize extensions useful for the portability of 3D metaverse media.
OMI's glTF extensions subgroup weekly meetings take place each week on Thursday in the omi-weekly-meeting channel on the OMI Discord.
This is the time to chat about glTF extensions with OMI, including those developed by OMI and those developed by other groups. You can find the weekly notes and agenda here.
These meetings take place at 22:30 UTC in the winter (2:30 PM PST) and 21:30 UTC in the summer (2:30 PM PDT).
You can add these meetings to your calendar here.
Our sub-group has drafted a working agreement that highlights who we are, our purpose, how we communicate, and when we meet. Working agreements are living documents meant to be revisited and revised as needed. To view our working agreement, please visit this figjam by figma file
We aim to create an ecosystem of specifications and tooling for accessible creation and use of durable and portable 3D content.
OMI uses 5 stages to represent the maturity of an extension:
A draft proposal has been submitted to the working group and is receiving feedback. It must have at least one "champion" who are responsible for advancing the proposal to the further stages. At this stage a high-level outline of the extension should be published as a GitHub Pull Request to this repository. The champion(s) should be focused on describing why this extension should be developed further and they should be working on finding additional stakeholders. The W3C Community Contributor License Agreement must be signed by all contributors before the proposal can enter Stage 1.
- High level outline published as a GitHub PR in this repository
- Signed W3C CLA
The draft proposal should precisely describe the extension in it's initial form and there should be at least one metaverse implementation of the extension in development and valid sample assets for testing by other potential implementors. The proposal should contain valid a JSON schema describing the extension in its entirety as well as a markdown document explaining the purpose, features, and properties of the extension. This implementation will be used to test the viability of the extension and provide an example for other implementors. Edits to the extension should be voted on and decided by consensus in weekly OMI glTF Working Group meetings.
- Previous requirements from Stage 1
- One metaverse implementation of the extension in development.
- Valid and publicly acessible sample assets
- Valid JSON schema describing the extension in its entirety
- Markdown document explaining the purpose, features, and properties of the extension
The extension has multiple metaverse implementations, a glTF Validator implementation, valid sample assets, and at least one readily available tool for generating content using this extension. The implementations, sample assets, and content creation tool should all consume or produce assets that can be verified by the glTF Validator. The extension at this stage is ready for a vote for ratification. Final proposal modifications should be voted on and decided by consensus in weekly OMI glTF Working Group meetings.
- Previous requirements from Stage 2
- Two or more metaverse implementations
- glTF Validator implementation
- Publicly availible content creation tool for generating assets for this extension
- All implementations, sample assets, and content creation tools should consume or produce assets that pass validation.
The extension has been ratified. It has multiple metaverse implementations, a glTF Validator implementation, valid sample assets, and at least one readily available tool for generating content using this extension. Once ratified, non-substantive changes to a specification via a consensus vote. However, breaking changes to an extension are not allowed and should be addressed by creating a proposal for a new extension with a different extension identifier.
- Previous requirements from Stage 3
- The extension has passed a consensus vote for ratification.
The extension has been submitted and merged as an OMI vendor extension. Alternately, if the extension is intended to be used outside the scope of OMI, it can be submitted and ratified as a KHR or EXT extension. The extension must be published to the Khronos 3D Formats Working Group repository to enter stage 5.
- Previous requirements from Stage 4
- Listing on the Khronos glTF repository proving the extension has been approved or ratified.
- OMI_audio_ogg_vorbis
- OMI_audio_opus
- OMI_link
- OMI_personality
- OMI_physics_body
- OMI_physics_gravity
- OMI_physics_joint
- OMI_physics_shape
- OMI_spawn_point
- OMI_collider: Superseded by OMI_physics_shape
Extension | Stage | glTF Validator | Blender | Three.js | Godot | Unity | Third Room | 3OV | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Import | Export | Loader | Exporter | Import | Export | Runtime Import | Runtime Export | Editor Import | Editor Export | |||||
KHR_audio_emitter | KHR | ❌ | ❌ | ❌ | 🚧🏆 | ❌ | 🚧🏆 | 🚧🏆 | ❌ | ❌ | ❌ | ❌ | 🚧🏆 | 🚧🏆 |
OMI_audio_ogg_vorbis | Stage 1 | ❌ | ❌ | ❌ | ❌ | ❌ | 🚧🏆 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
OMI_audio_opus | Stage 1 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
OMI_link | Stage 1 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
OMI_personality | Stage 1 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
OMI_physics_body | Stage 1 | ❌ | ❌ | ❌ | ❌ | ❌ | ✅🏆 | ✅🏆 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
OMI_physics_gravity | Stage 1 | ❌ | ❌ | ❌ | ❌ | ❌ | 🚧🧩 | 🚧🧩 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
OMI_physics_joint | Stage 1 | ❌ | ❌ | ❌ | ❌ | ❌ | ✅🧩 | ✅🧩 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
OMI_physics_shape | Stage 1 | ❌ | ❌ | ❌ | ❌ | ❌ | ✅🏆 | ✅🏆 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
OMI_seat | Stage 2 | ❌ | ❌ | ❌ | ❌ | ❌ | ✅🧩 | 🚧🧩 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
OMI_spawn_point | Stage 1 | ❌ | ❌ | ❌ | ❌ | ❌ | ✅🧩 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅🏆 |
Emoji Key:
- ✅ = Done, available and ready to use.
- 🏆 = Available directly in the engine.
- 🧩 = Available as a plugin / add-on.
- 🚧 = Work in progress or not yet merged.
- ❌ = Not available or not started.