User friendly batch USD exporters for Blender and 3dsmax.
| Path | Contents |
|---|---|
3dsmax/ |
3ds Max entry scripts, cloneTools helpers, Max icons, and attribute definitions |
blender/Clone_PowerUSD/ |
Blender add-on package |
unreal/ |
Unreal Editor Python helpers |
unreal/additional/ |
Optional Unreal utility scripts |
examples/3dsmax/ |
Example Max scene |
docs/production_risks.md |
Production risk notes and cleanup targets |
docs/images/ |
README screenshots |
USD export with auto stage assembly, variant sets, proxies and prim kind definitions.
It exports everything to separate .USD file and assembles them. You can use auto-assembly or assembly tool. Please open the example scene to understand how script works better!
Dummy objects with USD properties modifier (can be found in Customize panel) can be used to define prim kinds and more. You can assign this modifier to objects in the scene aswell but there is not much point to it. Groups get converted to dummies due to how horrible 3dsmax group objects are.
This script tries to be modular as possible! So you don't need to export the whole scene to update over and over again. It comes with single export that doesn't generate hirearchy json.
| Property | Values | Description |
|---|---|---|
| Geom Type | (auto), Xform, Scope | Prim container type |
| Kind | (none), assembly, group, component, subcomponent, model | USD Kind metadata |
| Purpose | default, render, proxy, guide | Rendering purpose |
| Instanceable | true/false | GPU instancing flag |
| Hidden | true/false | Start invisible |
| Active | true/false | Prim active state |
| Asset Version | string | Version tracking in assetInfo |
| Draw Mode | default, bounds, origin, cards | Viewport draw mode |
| Payload | true/false | Use payload instead of reference |
Filename suffixes are used for defining variants and proxies.
Object names control assembly behavior through suffixes:
| Suffix | Effect |
|---|---|
_VARIANT1, _VARIANT2, ... |
Assembled into a VariantSet on the parent prim |
_RENDER |
Sets purpose = render |
_PROXY |
Sets purpose = proxy |
_GUIDE |
Sets purpose = guide |
_PAYLOAD |
Referenced as payload instead of reference |
- Reads USD Properties from Max Attribute Holders and writes them to USD prims
- Strips the
/rootwrapper that MaxUSD adds (can be turned on again) - Remaps material binding paths
- Handles variant set creation from
_VARIANT*children - Nests
/mtlscope under the content prim for clean referencing
The Clean Material Structure fixes MaxUSD's default material export to produce cleaner USD Preview Surface shaders.
| Clean Off | Clean On |
|---|---|
![]() |
![]() |
![]() |
![]() |
-
Run or drag each entry script once:
3dsmax/powerusd.ms 3dsmax/register_chasers.ms 3dsmax/bulkexporter.ms 3dsmax/addusdproperties.ms 3dsmax/reassemble.msEach script self-installs into the current 3ds Max user profile:
scripts/CloneTools/ usermacros/ scripts/startup/ -
Restart 3ds Max. The startup loaders re-register the CloneTools macros every launch and try the repo source first, then the installed
scripts/CloneTools/fallback. -
Use
CloneTools > Register USD Chasersif you need the MaxUSD chasers available before opening the PowerUSD exporter UI or before using Max's native USD exporter directly. -
Optional: copy
3dsmax/icons/powerusd_logo.pngto:%LOCALAPPDATA%\Autodesk\3dsMax\2026 - 64bit\ENU\usericons\PowerUSD\
Don't export whole scene with animation enabled. Use single export mode and send animated stuff. Use reassembler if needed.
Install blender/Clone_PowerUSD/ as a Blender add-on. In Blender, use Edit > Preferences > Add-ons > Install and select the add-on package.
Unreal Editor Python scripts live in unreal/. Optional one-off utilities live in unreal/additional/.
MIT





