Preview export preset & known issues
This is the browser-preview contract. It does not replace the Unity delivery contract or require changing a working Unity source asset.
REFERENCE FLOW
FBX retrieval flow
Each showcase project uses a committed asset inventory. Files are served from Cloudflare R2 under <PROJECT>/Content/.
- 01Inventory first. The client requests
/api/assets/index?project=<PROJECT>. The server validates the project allowlist and returns the checked-inindex/<PROJECT>.jsonmanifest when it exists. - 02Showcase only. Only projects in
SHOWCASE_PROJECTSappear in the UI. Inventory comes from committed manifests, not live upstream crawls. - 03FBX is proxied on selection. Selecting a card calls
/api/fbx/<allowlisted-path>.fbx. The Node route streams the binary from R2; the browser only receives the FBX bytes. - 04R2 is the source of truth. Upload FBX, textures, animations, and 2D images to the bucket using the project prefix (
<PROJECT>/Content/…).
PRESET
Browser Preview FBX preset v1
Use this when a DCC exposes FBX version and media options. The Three.js loader officially accepts ASCII FBX 7.0+ or Binary FBX 6400+; Binary 7.4 is our first compatibility target.
- Format
- FBX Binary 7.4 (2014/2015).
- Scope
- Export the selected preview mesh and its required armature only.
- Textures
- Embed Media / Embed Textures: Off. The library preview is intentionally texture-free.
- Animation
- Off for a static model preview. Export animation separately when it is needed.
- Transform
- Apply the intended scale and transforms before export. Do not rely on scene-only parent offsets.
- Validation
- Open the exported candidate in this Asset Library before replacing the R2 showcase asset.
If your DCC cannot choose an FBX version, keep the equivalent options above and use the validation step as the final acceptance gate.
Q&A
Technical issues
Unity loads it, but browser preview does not. Is the asset broken?
Not necessarily. Unity and Three.js FBXLoader are different importers. Keep the Unity source unchanged and create a browser-compatible preview derivative only when required.
What does unexpected EOF mean?
The browser received the FBX but Three.js could not finish reading one of its compressed data blocks. Re-export a candidate using the preset, then validate it in the library. Do not diagnose it from Unity import success alone.
Why are textures off by default?
Texture inspection is opt-in. When enabled, the viewer checks the selected asset’s sibling Texture folder, labels each FBX reference as source found, unavailable, unverified, or failed to load, and never requests a filename confirmed absent from that folder.
Why can a textured FBX still look incomplete?
Three.js FBXLoader does not support every 3ds Max material binding. Maps under 3dsMax|HwShaderParams, including color, normal, roughness, emissive, and AO variants, can be skipped. The browser preview can therefore show geometry and a diffuse texture while unsupported material slots remain unrendered.
What does Undefined filename, creating placeholder texture mean?
The FBX contains a texture node with no usable image filename or image connection. Three.js creates an empty placeholder texture and continues parsing; there is no source filename for the browser to proxy or verify in the selected Texture folder. This is FBX material/export metadata, so fix it by removing the unused slot or exporting a browser-preview derivative with every required map bound to a real filename.
What does the four skinning weights warning mean?
WebGL skinning uses at most four bone influences per vertex in this loader. If an FBX contains more, Three.js drops the extra weights. Static preview can still render, but animation deformation may differ from the DCC or Unity source. Re-export with no more than four influences per vertex when browser animation fidelity matters.
What is the long-term browser format?
GLB is preferred for a browser-specific derivative because glTF is the web-native format supported by Three.js. Preserve the FBX source for Unity and publish a GLB preview only when the pipeline is ready.
References: Three.js FBXLoader compatibility · Blender FBX export options