How to open a glTF file with its resources
The .gltf file is JSON. On its own it has no geometry: vertices live in a buffer, usually a .bin beside it, and materials point at image files. Select everything together:
scene.gltf scene.bin textures/basecolor.png textures/normal.png
Select the group
Drop the .gltf with its .bin and images, or press Open 3D file(s) and choose all of them. The JSON alone cannot be read into a scene.
Watch the dependency list
The viewer reads the URIs before parsing. Files that are missing are named in Issues before a single triangle is built.
Inspect and save
Overview, Materials and Animations describe the scene; Export PNG saves the current view.
What the .gltf file points at
Two arrays carry the dependencies. buffers[].uri names the .bin or uses a data: URI; images[].uri names a PNG or JPEG, uses a data: URI, or points at a buffer view inside a binary container.
Relative paths are resolved against the selected files, not against a folder on a server. A model keeps working after it moves, as long as its file names are still unique among the files that were selected with it.
When a reference does not resolve
Missing buffer
Fatal: without vertex data there is no model. The load stops, and the .bin the file expects is named in the message.
Missing image
The model opens and the material shows without that map. Issues lists each missing image by the path the file wrote.
Two files with the same name
Both are listed and neither is chosen. Opening the model again with one file of that name resolves it; the ambiguity is never settled by guessing.
A path to another site
Refused before any request is made. There is no remote fetch for model resources.
A path with ..
Refused as well: it would point outside the selected files, and there is no filesystem here to escape to.
glTF 2.0: required and optional extensions
extensionsRequired lists the extensions a reader must implement to open the file at all. extensionsUsed lists the ones the file benefits from. The viewer checks the required list first: an extension it does not implement stops the load, and the id is printed with the reason.
Draco geometry and meshopt buffers are implemented and decoded in the browser. KTX2 textures are not supported. Optional extensions that are not implemented are skipped, and the scene loads without that effect rather than failing.
Inspecting scenes, materials and animations
The panels are the ones the GLB viewer uses. The difference is provenance: a texture slot can name an external file, show as embedded for a data: URI, or come from a buffer view in a binary file. The Materials panel says which of the three it is.
Animations lists clips with their names and durations, and plays the selected one. A glTF scene carries animation the same way a GLB does: as JSON plus sampler accessors.
glTF or GLB?
glTF keeps the scene and its resources apart, which suits pipelines that share a .bin or regenerate textures without touching the scene. GLB packs everything into one file, which suits delivery.
The GLB viewer for packed single-file scenes covers the other side of the same choice.
Limits and questions
Why is one .gltf file not enough?
Geometry and images are separate files that the JSON points at. Without them there is nothing to draw.
Are data URIs supported?
Yes. A scene with embedded buffers and images needs no companions, and those resources are listed as embedded rather than missing.
Why did the model break after the folder moved?
Relative URIs are resolved against the files selected with the model. Move the whole folder, or keep the file names unique.
Can a .gltf that points at a CDN be opened?
No. References to other sites are refused, so the model opens only from files on the device.
Are files uploaded?
No. Everything is read in the browser.