Honu glTF Asset Framework
Profile
Introduction
Scope
Document conventions
Audience
Normative terminology
Informative language
Open issues
Terminology
Delivery
File
File naming
File format
glTF structure
The manifest
Asset header
Coordinate systems and units
Units
Axes
Forward axis
Origin - datum coordinate system location
Scenes and nodes
Datum specification
The datum point
A base part
A component part
Geometry
UV sets
Budgets
Primitives
Materials
Textures
Transparency
Prohibited content
Authoring toolchain
Conformance testing
Open questions (Informative)
Open: the to-do list for this draft
Open: Future, not blocking this draft
References (Informative)
Closely related work (Informative)
Workflow
Roles
Outline
Step 1: Commission [Integrator]
Commission YAML file
Step 2: Author 3D asset [Modeler]
Build to the
Honu Asset Profile
and export
Step 3: Fill the
.glb
manifest from the commission YAML [Integrator]
Step 4: Verify [Integrator]
Valid? Test with Khronos CLI
gltf_validator
Intended? Visual check with Khronos sample viewer in browser
Compliant? Custom
gltf-check
to enforce [profile]
What the integrator checks
When the checks run
Who answers what
After acceptance
Not settled here
Walkthroughs
Coordinate system orientation demonstration
The overarching structure
Minimum monkey mesh
Create in Blender
Export Blender -> glTF
View in gltF Sample Viewer
glTF to Gazebo
glTF to RVIZ
Summary
Exporting from Blender
The export dialog
Author in Blender’s own convention, and let the exporter convert
Clear location and rotation, apply scale, before exporting
Where the origin goes is not yours to choose
Name the object, not the mesh
Metalness is the defect that keeps recurring
Texture format is decided by the source image
Transparency is per material, not per pixel
Turn on Apply Modifiers
Keep the authoring source, outside the simulation repository
Versions
Importing the Gazebo Material in Blender
Using the Gazebo Material
Assign the material to the mesh
Assign textures to the material
Creating a simple ORM map
Checking a delivery
Running the checker
Reading the output
What a clean run does not mean
BlueBoat gltf Walkthrough
Step 1: Commission
Step 2: Author 3D asset
Step 3: Fill the manifest from the commission
Step 4: Verify
Valid? Test with Khronos CLI
gltf_validator
Why two (not one) errors for the prop files?
Intended? Visual check with Khronos sample viewer in browser
Compliant? Custom
gltf-check
to enforce [profile]
Assessments
Community exemplars: who else ships glTF to Gazebo and RViz
Method
The cohort
gazebosim/jetty_demo — the closest thing to an upstream reference
open-rmf/rmf_site — glTF generated rather than authored
husarion/rosbot_ros — a commercial product doing it per-link
RobotLocomotion — the informed dissent on packaging
usnistgov/ARIAC — a migration caught in the middle
vanttec/vanttec_usv — the nearest maritime peer, inverted
The people, and the two organizations that turned out not to be doing this
What this changes for us
Where the argument is being had
Reference
Glossary
Terms
assembly
asset
asset coordinate system
base part
commission
component part
consumer
coordinate system
datasheet
datum
datum coordinate system
datum point
delivery
integrator
manifest
modeler
origin
part
part coordinate system
submesh
visual model
Coordinate Systems: glTF, Gazebo and ROS
Objective
Central Issue
How claims in this document are marked
Coordinate Conventions and Typical Practices
Vocabulary / Nomenclature / Glossary
Our formal default
Terms by stage of the flow
Coordinate system, origin, and reference point
The
O
-
X
-
Y
-
Z
notation
Specifying a coordinate system: datums and what “referenced to” means
Assumptions
Standards Summary
ISO 9787:2013
Robotics
Categorizing links by their place in the tree
Manipulation-centric (robots with static base)
Mobile-centric
Other conventions worth knowing
3D Graphics
What survives into glTF, and what does not
Standards for 3D assets
Reconciling the standards
Where they agree, and it is most of it
The disagreement is one cyclic relabeling
Our coordinate system names
The full reconciliation
Adopt, narrow, or invent
One body, one mesh: who rotates what
The chain, and where a rotation can be inserted
Gazebo, from source
RViz, from source
Blender’s exporter, from source
The probe, measured
The decision, and what it costs
Next increment
References
Gazebo and RViz loader behavior
The consumers
The Gazebo path, step by step
What the loader reads from a glTF material
Rendered observations, 2026-10-05
The RViz path
PBR, and why glTF is inseparable from it
The shift in one sentence
What we had before: Collada plus an image
What PBR replaces it with
The four terms in that table (reference)
The differences that actually bite
Why glTF and PBR cannot be separated
Where to go next
glTF Background
References
Khronos.org
glTF 2.0 Specification
https://github.com/KhronosGroup/glTF-Tutorials
glTF Quickstart
Video: Discussing Vulkan, Neural Rendering, SLANG, AI & More - Neil Trevett & Khronos Group Interview
glTF 2.0 Quickstart and tools
OpenUSD Conventions for Simulation Asset Interoperability in Open Source Robotics
Closely Related Work and Examples
Community standards, documents, discussion, etc.
Gazebo community and developers
Examples
Fuel
Repos
Honu glTF Asset Framework
Index
Edit on GitHub
Index
Other Versions
v: main
Distributions
Main