DCC addons

Updated October 2026

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

  1. In DousenDesktop, select your project and task. Open Settings → DCC Apps and check the path to the application’s executable.
  2. Launch the application from the apps bar and save your scene under the project’s source root.
  3. 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.
  4. In the Publish tab, check the instances you want to publish. If you change the scene, click Reset. In Blender, click Refresh Instances.
  5. 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.
  6. If your project uses a material catalog, assign materials as described in Materials and textures.
  7. Click Validate (in Blender, Run Validation) and fix any errors. Then click Publish (in Blender, Publish Checked Instances).
  8. 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.

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.

TagValues
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.

The Publish tab with three instances. The crate and barrel are checked, the pallet is not, and all
       validation checks pass.
The crate and barrel are checked, so only they are published.
ControlWhat 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.

PanelControlWhat 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.

WhereControlWhat 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 itemWhat it does
Dousen PanelShows or hides the docked panel.
Publish Opens the panel on the Publish tab.
New AssetOpens 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.

TabControlWhat 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.

TabControlWhat 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 toolWhat 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.

The material picker with two slots, CrateBody and MetalBands, both set to Painted Metal. The details list
       BaseColor, Normal, and ORM texture paths and a Roughness Multiplier of 0.6.
The material picker in the Maya, 3ds Max, and Designer panels.

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.

ActionUse it whenWhat 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

For more help, see Troubleshooting. To extend the addons, see Loading studio tools and the Bridge API.