DCC addons
Describes the Dousen addons for Blender, Maya, 3ds Max, Houdini, Substance Painter, and Substance Designer, and the controls each one adds to its application.
Each addon collects the publishable parts of your scene as instances, validates them, and sends the exported files to Unreal through the bridge. For the validation rules, see Asset validation. For the Unreal plugin, see Unreal Engine.
Open the panel and publish your first instance
- In DousenDesktop, select your project and task. Open Settings → DCC Apps and check the path to the application’s executable.
- Launch the application from the apps bar and save your scene under the project’s source root.
- Open the Dousen panel. Maya and 3ds Max open it at startup, and the Substance applications show it as a dock. In Blender, press N over the 3D Viewport and select the Dousen tab. Houdini has no panel, so use the Dousen shelf.
- In the Publish tab, check the instances you want to publish. If you change the scene, click Reset. In Blender, click Refresh Instances.
- In Maya, 3ds Max, Substance Painter, and Substance Designer, if an instance’s type is wrong, right-click it and choose a type under Set Type. Point to the instance name to see its Unreal destination.
- If your project uses a material catalog, assign materials as described in Materials and textures.
- Click Validate (in Blender, Run Validation) and fix any errors. Then click Publish (in Blender, Publish Checked Instances).
- Open the Publish history tab in DousenDesktop and wait for Imported and saved in Unreal.
How the addons load
DousenDesktop ships the addons, so you don’t install anything in each application. When you launch an application from the apps bar, Desktop loads its addon and passes the project, task, and sign-in details it needs. See Launching DCCs.
- An application you start from a desktop shortcut has no Dousen panel.
- After you update DousenDesktop, restart any running applications so they load the new addon code.
- If your studio runs its own startup scripts, see Loading studio tools for when they run.
What each addon can do
Maya, 3ds Max, Substance Painter, and Substance Designer share one Qt panel, with the same Publish and Perforce tabs in each. The Qt panel shows tab names in capital letters. Blender uses native panels, and Houdini uses shelf tools.
| Capability | Blender | Maya | 3ds Max | Painter | Designer | Houdini |
|---|---|---|---|---|---|---|
| Where it appears | Sidebar tab | Shelf and dock | Menu or toolbar, and dock | Dock | Dock | Shelf |
| How you publish | Publish Checked Instances | Publish tab | Publish tab | Publish tab | Publish tab | Export HDA, VAT, or Alembic shelf tools |
| Validation blocks publishing | ✓ | ✓ | ✓ | ✓ | ✓ | — (export tools don’t validate) |
| Fix button (only for rules that offer a fix) | Fix | Repair | Repair | Repair | Repair | — (console output only) |
| Select Invalid | — | ✓ | ✓ | — | — | — |
| Set Import Profile | — | ✓ | ✓ | — | — | — |
| + Instance from Selection | — | ✓ | — | — | — | — |
| Auto-publish on save | ✓ | ✓ | ✓ | ✓ | — | — (no toggle) |
| New asset setup | ✓ | ✓ | ✓ | — | — | — |
| Material picker | ✓ | ✓ | ✓ | ✓ | ✓ | One material |
| Perforce actions | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Send to Painter | ✓ | ✓ | ✓ | — | — | ✓ |
| Send to Unreal button | — | — | — | ✓ | ✓ | ✓ |
| Task context | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
The built-in rules that offer a fix are the frozen-transform checks in Blender and Maya. 3ds Max, Painter, and Designer have no built-in fixes.
In Blender, Maya, and 3ds Max, use Publish to send meshes to Unreal. These addons also have a
send_to_unreal() Python function for studio scripts.
Task context
When you select a task in DousenDesktop, Desktop sends its Jira key and changelist to every running DCC. The addons tag what you publish with the task and associate the files with its changelist. A DCC that you launch while a task is selected also receives it at startup, in the environment variables listed in Loading studio tools.
The header of each Qt panel shows the current task and the Perforce stream, or Classic depot for a project without streams. After you switch tasks, check the header before you publish.
Auto-tagging on export
When Blender, Maya, 3ds Max, or Houdini exports a mesh or animation, the addon measures the geometry and sends the numbers with the export. DousenDesktop turns them into these tags before it delivers the event, so Unreal receives them with the first import. Textures get no tags.
| Tag | Values |
|---|---|
cv_poly_tier |
low for fewer than 5,000 triangles, mid for fewer than 50,000, high for
50,000 or more |
cv_has_uvs |
true if the mesh has UVs |
cv_is_skinned |
true if the mesh is skinned: it has a skin cluster in Maya, a Skin modifier in 3ds Max, an Armature
modifier in Blender, or a boneCapture attribute in Houdini |
Desktop also saves the tags on the asset’s source record in DousenCore, and Unreal stores them as
dousen_cv_* metadata that you can search in the Content Browser. There is no review step and no
setting to change.
What becomes an instance?
| Application | What Dousen collects | How to create your own instance |
|---|---|---|
| Blender | Each top-level Collection that contains a mesh. Objects that sit directly in the Scene Collection aren’t collected. | Add a custom property named dousen_instance to a Collection at any depth. If its value is text,
that text becomes the instance name. |
| Maya | Each top-level group or mesh transform that contains a mesh, and each DousenClips clip if DousenClips is installed. | Select objects and click + Instance from Selection, or add a dousenInstance
attribute to an object set. |
| 3ds Max | Each top-level node whose hierarchy contains a mesh. | Create a named selection set. Every named selection set becomes an instance. |
| Substance Painter | Each texture set in the open project. | Not needed. |
| Substance Designer | Each compositing graph in the loaded packages. | Not needed. |
| Houdini | Each geo node directly under /obj, unless a node inside it has the
dousen_instance user data. |
Add dousen_instance user data to a node. If its value is text, that text becomes the instance
name. |
Instances you create yourself take priority, and their objects aren’t published a second time by the automatic rule. In 3ds Max, a selection set that holds only part of a node tree takes just those nodes out of the automatic instance, which keeps the rest. In Maya, an export set that holds only part of a group takes the whole group out of automatic publishing, and the Publish tab shows a note such as |grp skipped: … Put the remaining children in their own export set. Do that, or the remaining children aren’t published. If nothing is collected, nothing is published, so organize your geometry into one of the structures above or create your own instance.
The Publish tab
The Qt panels share this tab. When you open it, Dousen collects the instances in your scene. Only checked instances are validated and published, and the checked state is saved in the scene. For the whole workflow, see Publishing assets. Screenshots on this page use a sample project.
| Control | What it does |
|---|---|
| Reset | Collects the instances again. Use it after you change the scene. |
| Validate | Validates the checked instances without exporting anything and lists the results. |
| Publish | Validates the checked instances, then exports and publishes them. Errors stop the publish. If only warnings remain, Dousen asks N warning(s) found. Publish anyway?, and No is the default. |
| Group by Type | Arranges the list by instance type. It doesn’t change which instances are checked. |
| Right-click → Set Import Profile | Sets the instance’s import_profile from the profiles the project defines, or (none)
to clear it. The choice overrides the scene’s tag. Maya and 3ds Max only; texture instances never take a profile. See
Interchange. |
| Right-click → Set Type | Changes an instance’s asset type. Dousen resolves the name and destination again and clears the instance’s validation results. |
| + Instance from Selection | Maya only. Groups the selected objects into one explicit instance. |
| Repair | Appears on a failed rule when the validator provides a fix. Dousen applies the fix and runs that rule again. |
| Select Invalid | Selects the failing objects in Maya and 3ds Max. Painter and Designer have no scene selection to drive, so the button doesn’t appear there. |
| Checkbox next to a rule | Clear it to skip the rule. A skipped rule doesn’t block Publish. |
In the results, failing and warning rules come first, and passing rules collapse into one row. The log below the results records each step. If two checked instances would export to the same file, Publish is unavailable until you rename or retag one of them.
In the New Asset controls of Blender, Maya, and 3ds Max, each optional convention dimension starts at (none), so the tag stays unset until you choose a value. Dimensions your conventions mark as required still need one.
Blender
Press N in the 3D Viewport to open the sidebar, and select the Dousen tab. The Validation, New Asset, Materials, and File Status (P4) sub-panels start collapsed.
| Panel | Control | What it does |
|---|---|---|
| Dousen | Auto-publish on Save | Publishes the checked instances each time you save. See Auto-publish on save. |
| Dousen | Refresh Instances | Lists the Collections that Dousen collects, each with a checkbox. The checkbox is saved on the Collection. |
| Dousen | Publish Checked Instances | Opens a dialog that says Checked instances are revalidated before export. Dousen validates the checked instances and publishes them. Errors stop the publish. Warnings also stop it unless you select Publish despite validation warnings. |
| Dousen | Send to Substance Painter | Appears when Substance Painter is connected. Exports the selected objects as an FBX file next to the
.blend file and sends it to Painter. |
| Validation | Run Validation | Validates the checked instances and lists the results by category. A failed rule shows Fix when the validator provides one. A second Publish Checked Instances button here is enabled after a validation with no errors. |
| New Asset | Set Up Asset | Saves the .blend file to the source path that your conventions resolve, then adds it to the task’s
changelist in Perforce. Choose a name, a type, and the taxonomy first. For an animation asset, you can pick a rig
to link into the scene. |
| Materials | Refresh Material Catalog, Auto-Fill Textures | Assign a catalog material to each material slot of the active object. Select the edit icon beside a slot (Edit Material Slot) to bind its textures and parameters. Auto-Fill Textures guesses texture bindings from file names. |
| File Status (P4) | Check Out Source, Sync & Reload (not at latest), Revert Checkout, Refresh | Shows the lock state of the current .blend file. Only the button that applies to the file’s state
appears. |
Each instance is exported with the objects in its Collection, including an armature, so a skeletal mesh brings its rig but no other instances. Before the export, Dousen writes the convention tags to those objects as custom properties. An animation instance exports its own objects and rig to FBX, like a mesh instance.
Maya
Maya starts with a Dousen shelf and a docked panel. The panel has the tabs Publish, Perforce, New Asset, Materials, and Tools.
| Where | Control | What it does |
|---|---|---|
| Shelf | Dousen | Opens the panel. |
| Shelf | Dousen Validate | Opens the panel on the Publish tab. |
| Shelf | Dousen Asset | Opens a window that does the same as the New Asset tab. |
| Shelf | Send to Painter | Appears only if Substance Painter was connected when Maya started. Exports the selection as an FBX file and sends it to Painter. |
| Panel | Publish tab | Collects, validates, and publishes instances. See The Publish tab. |
| Panel | New Asset tab | Load Conventions, then choose a name, type, and taxonomy and click
Set Up Asset. Dousen saves the .ma file to the resolved source path and adds it to
the task’s changelist. |
| Panel | Materials tab | The catalog material picker. See Materials and textures. |
| Panel | Tools tab | Send to Painter is enabled while Painter is connected. The Auto-Publish group has the Publish mesh.export on save checkbox. |
To group loose meshes, or a rig’s meshes and skeleton, into one instance, select them, click
+ Instance from Selection in the Publish tab, and enter a name. Maya creates an
object set with a dousenInstance attribute. If the set holds only part of a top-level group, put the
group’s other children in their own set.
Each instance exports as its own FBX file with the project’s export_presets.maya settings, and a skinned
mesh includes its skeleton. An animation instance exports its own objects and skeleton roots to FBX, except a DousenClips clip, which
exports through DousenClips. Before the export, Dousen writes convention tags as string attributes on the mesh
transforms.
3ds Max
The 3ds Max addon requires 3ds Max 2025 or later (PySide6). 3ds Max opens the same docked panel as Maya at startup, with the same tabs, and a Dousen menu appears before the Help menu.
| Menu item | What it does |
|---|---|
| Dousen Panel | Shows or hides the docked panel. |
| Publish | Opens the panel on the Publish tab. |
| New Asset | Opens a dialog that does the same as the New Asset tab. |
| Send to Substance Painter | Appears only if Substance Painter was connected when 3ds Max started. Exports the selected objects as an FBX file and sends it to Painter. |
As in Maya, the panel’s Tools tab has Send to Painter and the Publish mesh.export on save checkbox.
To export an instance, 3ds Max selects its nodes, plus the skeleton root bones for a skinned mesh, and exports the
selection as FBX. An animation instance exports its own nodes and skeleton roots to FBX. Dousen writes convention tags into each
exported node’s user-defined properties as lines in the form dousen_<key>=<value>.
Substance Painter
Painter shows a docked panel with the tabs Publish, Perforce, Export, and Tools.
Textures need a target Unreal mesh. If Dousen exported the mesh, it reads the target from the mesh’s metadata
sidecar. Otherwise, on the Export tab, enter the mesh path in Target Unreal mesh,
for example /Game/Props/S_Crate.S_Crate, and click Use target mesh. Without a target,
validation reports an error named Target Unreal mesh.
| Tab | Control | What it does |
|---|---|---|
| Publish | Publish | Exports each checked texture set to the Textures folder under the source root and publishes one
texture.export event per set. The default format is TGA, or the format set in
export_presets.substance_painter. Dousen refuses a format that isn’t in
texture.allowed_formats and shows the reason in the Publish results. |
| Export | Export Textures | Exports every texture set to the same folder without publishing them. |
| Export | Send to Unreal | Runs the same validation and publish as the Publish tab. |
| Export | Load Materials, Texture Set Materials, Material Details | The catalog material picker, with one material per texture set. See Materials and textures. |
| Tools | Publish textures on save | See Auto-publish on save. |
If you export with Painter’s own export dialog, Dousen publishes each exported file as a
texture.export event. It prints a warning if a file’s format isn’t in the project’s
texture.allowed_formats setting.
When another application sends a mesh to Painter, for example with Send to Painter, Painter replaces the mesh of the open project. If no project is open, it creates a project from the mesh.
Substance Designer
Designer shows a docked panel with the tabs Publish, Perforce, Export, Materials, and Tools.
| Tab | Control | What it does |
|---|---|---|
| Publish | Publish | Bakes the graphs in each package once, then publishes one texture.export event for each checked
graph, with the assignment from the Materials tab. Dousen can’t bake a single graph on its
own, so every graph in the package is baked. |
| Export | Export Baked Textures | Renders the graphs and exports the textures from their output nodes to the Textures folder under
the source root. The default format is TGA, or the format set in export_presets.substance_designer. A format that isn’t in
texture.allowed_formats is refused, and the Export tab shows why. |
| Export | Export .sbsar | Exports the package as a .sbsar file to the Materials folder under the source root. |
| Export | Send to Unreal | Runs the validated Publish flow for the checked graphs and switches to the
Publish tab, where the progress appears. The default format is TGA unless
export_presets.substance_designer sets another. |
| Export | Send .sbsar to Unreal | Exports and publishes the .sbsar file. It doesn’t run if validation reports errors. |
| Materials | Catalog material picker | One material per graph. See Materials and textures. |
When another application sends a mesh to Designer, Designer stores the file path for you to use in your baking graph. It doesn’t connect the mesh to a node.
Houdini
The Dousen shelf holds these tools. Dousen: Send to Painter appears only if Substance Painter was connected when Houdini loaded the addon.
| Shelf tool | What it does |
|---|---|
| Dousen: Export HDA | Saves the selected node’s HDA to the HDAs folder under the source root and publishes it as a
mesh.export event. |
| Dousen: Export VAT | Renders the selected ROP network, which must be set up for vertex animation texture output, and publishes the textures and mesh together. |
| Dousen: Export Alembic | Exports the selected node to the Alembic folder using the export_presets.houdini
settings, and publishes it as a mesh.export event. |
| Dousen: Validate | Runs the validators and prints the results to the console. There are no Fix buttons. |
| Dousen: Material Setup | Opens a dialog where you pick one catalog material for the whole asset. |
| Dousen: Send to Painter | Exports the selected geometry as an FBX file and sends it to Painter. |
| Dousen: Send to Unreal | Does the same as Dousen: Export VAT. |
| Dousen: File Status (P4), Dousen: Check Out, Dousen: Sync & Reload, Dousen: Revert Checkout | The Perforce actions. See Perforce actions in the DCC. |
The three export tools don’t run validation, so run Dousen: Validate before you export. They do run the Perforce pre-flight described in Perforce actions in the DCC. If you haven’t tagged the scene, validation infers the asset type from the saved file path.
When another application sends a mesh to Houdini, Dousen creates a geo node with a file SOP
inside it.
Auto-publish on save
When auto-publish is on, each save publishes the checked instances that Dousen collects in the scene, the same ones the Publish tab lists. A save-triggered publish doesn’t run the validators. Dousen still checks instance names if your naming rule is set to error, and it stops if another user has a file locked.
| Application | Where to turn it on | What a save publishes |
|---|---|---|
| Blender | Auto-publish on Save in the Dousen panel | One mesh.export event for each instance, or animation.export for an animation
instance. |
| Maya | Publish mesh.export on save in the Tools tab | One mesh.export event for each instance, or animation.export for an animation
instance. |
| 3ds Max | Publish mesh.export on save in the Tools tab | One mesh.export event for each instance, or animation.export for an animation
instance. |
| Substance Painter | Publish textures on save in the Tools tab | One texture.export event for each texture set, which needs a target Unreal mesh. |
| Substance Designer | Not available | Nothing. |
| Houdini | No toggle. A studio script can set the dousen_auto_publish user data on /obj to
1. |
One FBX export and mesh.export event for each instance, or animation.export for an
animation instance. |
The setting is saved in the scene, so check it when you open a different scene. Turn it on only after a manual publish gives the result you expect. After a save-triggered publish, check Publish history to see whether Unreal imported and saved the asset.
Materials and Nanite
Choose materials from the project catalog in the application’s material picker. The assignment carries texture bindings and parameter overrides to Unreal. In Designer, the Publish tab and Send to Unreal on the Export tab send it. The assignment also decides whether the Nanite or NonNanite validator category runs, as described in The Nanite / NonNanite gate. A geometry profile can still turn Nanite off. See Materials and textures and profile settings.
Where the addons save their data
Each addon saves convention tags, the material assignment, and the auto-publish setting in your source file, so they travel with it in Perforce. Designer saves them in sidecar files next to the package instead, so check those in with the package.
| Application | Convention tags | Material assignment | Auto-publish setting |
|---|---|---|---|
| Blender | Scene property dousen_convention_tags |
Scene property dousen_material_assignment |
Scene property dousen_auto_publish |
| Maya | fileInfo entries that start with dousen_tag_ |
fileInfo entry dousen_material_assignment_b64 |
fileInfo entry dousen_auto_publish |
| 3ds Max | File property dousen_convention_tags |
File property dousen_material_assignment |
Root node appData key 1001 |
| Painter | Project metadata, Dousen namespace |
Project metadata, Dousen namespace |
Project metadata, Dousen namespace |
| Designer | <package>.dousen-tags.json |
<package>.dousen-material.json |
Not available |
| Houdini | /obj user data dousen_convention_tags |
/obj user data dousen_material_assignment |
/obj user data dousen_auto_publish |
Open a file in a running DCC
A dcc.open event with a file_path opens that file in a running Houdini, Substance Painter,
or Substance Designer session. Blender, Maya, and 3ds Max don’t handle the event. For the event format, see
dcc.open.
Perforce actions in the DCC
Each addon shows the Perforce status of the current scene and lets you check it out, sync it, and revert it. Use the Perforce tab in the Qt panels, the File Status (P4) sub-panel in Blender, or the Perforce shelf tools in Houdini. Each button is available only when it applies to the file’s current state. In a project with a separate source repository, the scene and the Unreal files can use different Perforce servers.
| Action | Use it when | What to check afterward |
|---|---|---|
| Check Out | You want to edit an existing source file. | The file is open in the task’s changelist for its Perforce server. |
| Sync & Reload | The file isn’t at the latest revision. Dousen asks you to confirm because the reload discards unsaved changes. | The loaded scene is the revision you expect. |
| Revert | You want to discard your changes to an open file. Dousen asks you to confirm. | The scene matches the restored file. |
| Refresh | You want to read the lock state again. | The status line shows the current state. |
Blender and Houdini use slightly different button names. See Blender and Houdini.
Before a publish exports, Dousen runs a Perforce pre-flight. This applies to publishes from Blender, Maya, 3ds Max, Substance Painter, and Substance Designer, to Painter’s save-triggered publish, and to the Houdini Dousen: Export HDA, Export VAT, and Export Alembic tools and Houdini auto-publish. If another user has one of the files locked, the publish stops and names the lock. Otherwise Dousen opens the scene and the files from your last export for edit in the task’s changelist, and adds newly created files after the export. Lock failures appear in Publish history. If you restart the DCC, the first publish afterward doesn’t know the previous outputs, so check those out yourself if your workspace is read-only. Painter and Designer publishes also run the naming check first. A publish doesn’t submit anything. Submit the task’s changelist afterward, as described in Perforce.
Which rules run
Dousen runs the rules from your project’s compiled conventions for each instance’s asset type and taxonomy. An instance with no type runs only the universal naming checks. The material assignment decides which Nanite category runs. For the rule reference, see Asset validation.
If the panel or publish is missing
- Launch the application through DousenDesktop and check the executable path in Settings → DCC Apps.
- If the panel header says Cannot connect to Dousen Desktop, open Desktop. The panel reconnects automatically.
- In Desktop, check the connected-app chips and the failed stage on the Publish history tab, and read the Logs tab. Publish history doesn’t list exports from the Houdini shelf tools, Painter’s own export dialog, or the export-only buttons on Designer’s Export tab. For those, use Show connection events.
- If the instance list is empty, make sure your scene has one of the structures in What becomes an instance?, then click Reset.
- Check the project’s source root, workspace, and target Unreal project.
For more help, see Troubleshooting. To extend the addons, see Loading studio tools and the Bridge API.