Working with 3D Files

Preview and catalog your 3D models with automatic texture loading

Supported Formats

FormatTexture Handling
GLTF / GLBTextures embedded or auto-resolved from relative paths
FBXExtracts and renders embedded textures; also resolves external texture references from nearby directories
OBJ + MTLLoads textures defined in the MTL file
OBJ (no MTL)Auto-detects textures by name matching
DAE (Collada)Resolves textures from relative paths
STLNo texture support (geometry only)
ABC (Alembic)Limited support: basic mesh preview only, no animation
BlenderSupport for blender utilising the blender-cli tool, extracts and previews

Texture Structures

AssetHoard automatically searches for textures when loading 3D models. The search behaviour depends on the file format.

OBJ Files with MTL (Recommended)

Place the MTL file in the same directory as the OBJ with the same base name. The MTL file tells the viewer exactly which texture goes with which material.

my-model/
├── chair.obj
├── chair.mtl ← Same name as OBJ
└── wood_diffuse.png

OBJ Files without MTL (Auto-Detection)

If no MTL file is present, AssetHoard searches for textures in these locations (in order):

  • Same directory as the OBJ file
  • ./textures/ subdirectory
  • ../textures/ sibling folder (common in asset packs)
asset-pack/
├── source/
│ └── model.obj
└── textures/ ← Found via ../textures/
├── diffuse.png
└── normal.png

Name Matching

When auto-detecting textures, they're matched to materials by name. For best results, name your textures to match material names in the model. Common suffixes are automatically stripped: _colour, _color, _diffuse, _albedo, _basecolor, _d, _normal, _specular.

Example: A material named wood will match wood_colour.jpg or wood_diffuse.png.

If only one texture is found and no name matches, it will be applied to all materials as a fallback.

FBX Files

FBX files receive special handling for both embedded and external textures.

Embedded textures: AssetHoard automatically extracts textures embedded inside FBX binary files. These are cached locally and used for both thumbnail generation and 3D preview. No action is needed on your part — import the FBX and the textures are extracted automatically.

External textures: For FBX files that reference external texture files, the same directory search applies as OBJ files: same directory, ./textures/, then ../textures/.

Supported naming conventions:

  • T_BaseColor / T_Normal (Unreal Engine style)
  • _D / _N / _S (short suffixes)
  • _Diffuse / _Normal / _Specular (long suffixes)
  • Standard PBR material property names (base_color, albedo, diffuse)

Troubleshooting

Model appears gray or untextured:

  • Check that textures are in the same folder or a ./textures/ subfolder
  • Verify texture filenames roughly match material names
  • For OBJ files, ensure the MTL file exists and references correct texture paths

Textures on wrong parts:

  • The auto-detection couldn't match names correctly
  • Create an MTL file that explicitly maps materials to textures

FBX textures not showing:

  • Try reimporting the asset (right-click → Reimport) to extract embedded textures to cache
  • If the FBX uses external textures, ensure they're in the same directory or a ./textures/ subfolder
  • Check that texture names follow common conventions (e.g., T_BaseColor, _Diffuse, _D)