A .gltf file can be only one part of the asset. The JSON may point to external .bin buffers and image files through relative paths. If those dependencies are missing, renamed or moved to a different folder, a viewer can load only part of the asset—or fail before it has enough geometry to display anything.
The glTF 2.0 specification allows buffers and images to be referenced by relative URIs, embedded as data URIs, or stored inside a GLB binary container. Relative paths are resolved from the glTF asset. Khronos glTF 2.0 specification is the authoritative reference for those resource rules.
There is an important CADProps-specific limit: the current glTF viewer is for static geometry inspection. It can process a .gltf with its local resources when they are packaged correctly, but CADProps currently shows base colors rather than texture images. It does not claim texture rendering, animation or skinning support. Use this guide to distinguish a broken asset package from a feature that the current viewer intentionally does not display.
First determine what is actually missing
“Textures are missing” can describe several different problems:
| Symptom | Likely question |
|---|---|
| Model is completely absent | Is an external .bin buffer missing or unreadable? |
| Geometry appears, texture image does not | Is the image dependency missing, or does the viewer intentionally not render textures? |
| Some primitives appear, others do not | Are all buffers/resources present and paths valid? |
GLB works but .gltf does not |
Did the loose-file version lose its external dependencies? |
| Asset works locally but not after upload | Did the upload preserve the relative folder layout? |
Start by separating geometry resources from appearance resources. A missing buffer can remove the mesh itself. A missing image usually affects appearance rather than vertex positions.
Check the glTF JSON for relative resource paths
A text .gltf file is JSON, so you can inspect it with a text editor. Look for entries such as:
"buffers": [{ "uri": "model.bin" }]
or:
"images": [{ "uri": "textures/albedo.png" }]
Those paths are meaningful. If the file says textures/albedo.png, putting albedo.png beside the .gltf is not equivalent; the expected relative path includes the textures/ directory.
Do not “fix” the package by flattening every file into one folder unless you also update the JSON correctly. Duplicate filenames can make that approach even more fragile.
Package external glTF resources in a ZIP
When a .gltf depends on local .bin or image files, package the asset so the relative structure is preserved. A simple example is:
assembly.gltf
assembly.bin
textures/
basecolor.png
normal.png
Zip those paths as a group rather than uploading assembly.gltf by itself. CADProps accepts bounded packaged glTF input for local dependencies; parent-directory references and network URLs are blocked in the current workflow.
After packaging, verify that the root .gltf still points to the same relative names. Renaming assembly.bin to data.bin inside the ZIP without changing the JSON will break the reference.
Why GLB often avoids this class of problem
A GLB can package the glTF JSON and binary resource data into one binary file, which removes many loose-file path failures. That is convenient for delivery, but it is not automatically superior for every editing workflow.
A .gltf plus external assets can be easier to inspect in source control or update independently. A .glb is easier to move as one file. The GLB versus glTF guide compares those tradeoffs.
If a GLB works while the equivalent .gltf package does not, compare the loose asset's buffer/image URIs and directory structure before assuming the geometry itself changed.
CADProps does not currently render texture images
This point prevents a false diagnosis. Even when the image files are present and valid, CADProps currently does not present texture image rendering as a supported capability. The public glTF path is for static geometry and base-color inspection.
So use CADProps to answer questions such as:
- Did the static mesh geometry load?
- Are the expected dimensions plausible?
- Is the packaged
.bindependency resolvable? - Is the model present as the expected static shape?
Do not use the current CADProps result to conclude that texture images, skinning, animation or every required glTF extension are correct. Validate those features in a viewer that explicitly supports them.
Common fixes that do not require re-exporting the geometry
If the glTF itself is valid and the problem is packaging, the fix may be straightforward:
- restore the missing
.binor image file from the original export; - restore the original relative folder structure;
- correct a filename case mismatch such as
Texture.PNGversustexture.pngwhen the receiving environment is case-sensitive; - re-create the ZIP without flattening directories;
- if the workflow allows it, export a self-contained GLB from the source application.
Keep an untouched copy before modifying JSON paths manually. A quick path edit can make one viewer work while making the asset inconsistent with the original export package.
Do not confuse unsupported extensions with missing files
A complete glTF package can still depend on extensions that a particular viewer does not implement. In that case, every referenced local file may be present and the asset can still render differently.
Record the exporter, glTF version and any required extensions if the asset is important to a production workflow. A generic “opens glTF” claim is not enough to establish support for animation, compressed textures, material extensions or vendor-specific data.
CADProps currently focuses on static geometry and intentionally keeps that support boundary narrow rather than silently claiming a full web-asset renderer.
A reliable handoff checklist
Before sending a .gltf asset to somebody else:
- include the root
.gltf; - include every local buffer it references;
- include image files needed by the receiving viewer;
- preserve relative paths;
- note required extensions if they matter;
- consider GLB when a single-file delivery is more robust;
- test the package after moving it to a clean folder so hidden local paths are not masking missing dependencies.
For engineering or supplier sharing, also identify the source revision and intended purpose. The supplier CAD handoff guide covers that context.
Open packaged glTF geometry when you need to check the static mesh and resource packaging in the current CADProps workflow.
Original article: CADProps · https://www.cadprops.com/guides/gltf-missing-textures/