Coming soonHunyuan 3D 3.1 + PicoBerry API

Export Naming Rules

Control downloaded filenames with tokens and presets so your assets stay consistently named across the project.

Filenames inside a downloaded ZIP follow an asset name + role suffix pattern. Even when a project grows to dozens or hundreds of assets, you can keep them on a consistent naming scheme.

Quick flow

  1. Workspace → pick an asset → click the download icon
  2. Asset name: whatever you type in the "Asset name" input at the top of the popover gets substituted into the $asset token
  3. Naming preset: pick a template from the dropdown (default = "Asset name")
  4. Download → every file inside the ZIP gets renamed consistently

Default behavior

With the default preset (Asset name) selected:

MyHero.fbx
└─ MyHero.fbm/
   ├─ MyHero.png                    ← BaseColor
   ├─ MyHero_n.png                  ← Normal
   ├─ MyHero_MetallicSmoothness.png ← with Unity preset
   └─ MyHero_Occlusion.png          ← with Unity preset

MyHero is replaced by whatever you typed in the Asset name input at download time. You can rename per-download freely.

Tokens

In Dashboard → Export Naming, you can save templates built from tokens. Click the chips next to each input to insert tokens precisely at the cursor (typing them by hand risks typos).

  • $asset — the value typed in the download popover's Asset name input
  • $date — today's date (YYYYMMDD)

Example — project-prefix grouping

Template: tycoon_$asset / Download input: character01

tycoon_character01.fbx
└─ tycoon_character01.fbm/
   ├─ tycoon_character01.png
   ├─ tycoon_character01_n.png
   └─ tycoon_character01_MetallicSmoothness.png

Example — date-based versioning

Template: $date_$asset / Input: character01

20260530_character01.fbx

Example — category-based presets

Separate presets for characters / environment / props:

Preset nameMesh templateResult (input orc)
Characterchar_$assetchar_orc.fbx
Environmentenv_$assetenv_orc.fbx
Propprop_$assetprop_orc.fbx

Role suffixes are automatic

Texture filenames get role suffixes automatically — you don't need to add them in your template.

  • _n — Normal map
  • _MetallicSmoothness — Unity Lit / URP Lit packed Metallic + Smoothness
  • _Occlusion — Occlusion map
  • _AO / _Roughness / _Metallic — when channel-split is on

Create a preset

In the dashboard's Export Naming page:

  1. Preset name (e.g. "Tycoon project")
  2. Mesh template$asset or your pattern
  3. Texture template$asset or your pattern
  4. Click Create

Click the $asset / $date chips next to each input to insert tokens at the caret. Typing them by hand risks typos ($aset, $asest) that produce literal strings in filenames instead of the intended substitution.

Engine recommendations

EnginePatternTexture presetWhy
Unity$asset (default)UnityAuto material wiring — Unity URP/Lit recognizes _MetallicSmoothness / _Occlusion suffixes automatically
Unreal$assetStandardUnreal also splits BaseColor/Normal/ORM. Role suffixes serve as auxiliary identifiers
Blender / Godot / three.js$assetStandardglTF/PBR standard workflow
Multi-project<project>_$assetEngine-specificAuto-prefix when assets from multiple projects share a directory

Apply at download

When downloading an asset, pick your saved preset from the Naming preset dropdown at the top of the popover. Built-in:

  • Asset name — single $asset token (the most common case, default)

Your saved presets (e.g. Tycoon project) show up alongside built-ins in the same dropdown. Each row shows the raw template (e.g. tycoon_$asset) underneath the name so you can verify which pattern this preset stamps.

Per-format behavior

FormatOuter filenameInside (ZIP)
GLBMyHero.glb(textures embedded in the GLB binary)
STLMyHero.stl(no textures)
FBXMyHero.fbx.zipMyHero.fbx + every texture inside MyHero.fbm/
OBJMyHero.zipMyHero.obj, MyHero.mtl, every texture
Textures onlyMyHero.ziptextures only (no model file)

GLB and STL are single-file formats, so the template applies only to the outer filename. FBX / OBJ / textures-only also apply the template to every file inside the ZIP.

FAQ

Can mesh and texture templates be the same? Yes. The default preset uses $asset for both, which is the most common workflow. Split them only when you need to (e.g. mesh = $asset, texture = tex_$asset).

Are non-ASCII asset names supported? At download time, an OS-safe sanitization runs. Letters in other scripts are preserved; spaces, parentheses, question marks, and similar symbols become _ (my charactermy_character).

Can I have multiple presets? Yes. Create per-project or per-engine presets and pick one at download time.

Can I batch-rename files I already downloaded? This feature applies only at download time. For files already on disk, use your OS's batch-rename tools.

Where did the material template go? Material names are almost always the same as the mesh name in practice, so the UI doesn't separate them. The mesh template is applied to material names automatically.

I picked only some channels for FBX/OBJ, but the ZIP still includes other textures. Textures wired directly into a model file's (FBX/OBJ) materials are always included regardless of the channel selection — otherwise the mesh would arrive with broken material references. Only textures that are not wired into a material (e.g. a leftover ORM source after channel split) are affected by the channel filter. If you truly want a subset of maps only, use the Textures-only format instead — it has no material dependencies and respects channel selection directly.

Troubleshooting

Filenames look mangled (special chars became _) OS-unsafe characters (spaces, parentheses, quotes, etc.) become _. Non-ASCII letters are preserved as-is. Replace spaces yourself for cleaner output.

Preset won't save

  • Preset name: letters (any script), digits, space, _, - only.
  • Template body: ASCII letters, digits, $, _, -, . only (matches the sanitization applied to substituted tokens).

Duplicate filenames inside the ZIP Don't type role suffixes like _n or _MetallicSmoothness into the texture template. The worker appends them automatically, so doing it yourself produces double suffixes such as MyHero_MetallicSmoothness_MetallicSmoothness.png. The only tokens you can use are $asset and $date.