Unreal Interchange
Describes how Dousen imports published instances into Unreal Engine with Interchange, how reimport works, and how to set up import profiles and project import stacks.
Set up an import profile (project admin)
Import profiles need a current DousenCore. Cloud studios get it when the update is deployed. Self-hosted studios
must update DousenCore. With a current DousenCore, saving conventions in the portal rejects an invalid profile and
shows an error. If conventions saved earlier contain an invalid interchange block, the Conventions page
warns that the block was ignored, and the rest of the conventions keep working.
- Check that your conventions work and that one test mesh completes an ordinary Dousen publish.
- In the project’s Conventions editor, add an
interchangeblock with a profile, like the example under Named geometry profiles. Give the profile a unique name and include only the fields you need. - In the same document, declare an
import_profiledimension and list the profile names as itsvalues. Each value must match a profile name exactly, and the dimension can’t berequired, because textures can’t carry the tag. DousenCore checks both when you save. Fix any error the portal shows.YAML
dimensions: import_profile: values: [authored_prop] - In Blender, Maya, or 3ds Max, open New Asset (in Maya and 3ds Max, click Load Conventions first). Choose the profile in the Import Profile list and click Set Up Asset. The scene stores the tag, so every instance in that scene uses the profile. The list starts at (none). To give one instance a different profile, right-click it in the Publish tab and choose Set Import Profile (Maya and 3ds Max). The per-instance choice overrides the scene tag.
- Publish a new test instance and check the Unreal settings it produces, such as collision, scale, and Nanite. An asset you already imported keeps the settings stored with it, so it can’t test a new profile.
- Test an ordinary reimport and a topology change before you roll the profile out. Check the saved assets and the result in DousenDesktop.
- If artists also import from the Content Browser by hand, install a project import stack.
Profiles control geometry import settings. The material catalog lists the materials artists can assign and whether each one allows Nanite. Check both when you decide which assets use Nanite.
How a new instance is imported
When you publish a checked instance, Dousen checks it against your conventions before it creates any asset: the
naming dimensions, allowed values, taxonomy, package names, and destination collisions. If any check fails, Dousen
rejects the whole instance. A new import through the bridge needs the project’s conventions. Without them, the import
fails with Project conventions unavailable; fetch conventions before importing new assets.
If an instance has several meshes, one primary mesh gets the instance name, and a skeletal mesh takes priority. The other meshes get names from your conventions. Dousen adds convention and source metadata to each imported asset. The import is complete only after Unreal saves the required packages. An animation-only import needs the existing skeleton it targets.
Reimport behavior
When you publish the same instance again, Dousen reimports the meshes and animations that it recorded for the instance. Existing assets keep their asset paths and the naming and geometry settings stored with them. A reimport doesn’t rename an asset to match a newer convention, import new meshes, or delete removed ones. To add or remove meshes, use Review instance topology.
- Existing memberReimportedKeeps its asset path and the import settings stored on it.
- New memberNeeds reviewListed by Review instance topology in the Content Browser. Click Apply reviewed changes to import it.
- Removed memberKeptThe asset stays in the project. Dousen records it as retained instead of deleting it.
A reimport uses the conventions stored with the asset. To use the current conventions instead, set
bRefreshConventionsOnReimport=true under [/Script/DousenUE.DousenProjectSettings] in
Config/DefaultDousenUE.ini. It is false by default. Existing asset names never change. See
Configure the plugin.
Reimport (sync source) in the Content Browser reimports only the asset you selected, and it doesn’t add or remove instance members. Assets imported with Epic’s legacy FBX importer stay on that importer.
Review instance topology
If you add or remove meshes in the source scene, use Review instance topology in the Content Browser to preview the change and approve it.
- Publish the updated instance from the DCC so the export file is current.
- In the Unreal Content Browser, right-click a mesh that belongs to the instance. In the Dousen section of the menu, choose Review instance topology. The command appears only for meshes that Dousen imported.
- In the Dousen instance review window, read the list. Each Add: line is a new mesh. Each Retain removed source asset: line is a mesh that is no longer in the source.
- If the window reports a naming problem or an occupied destination, resolve it and review again.
- Click Apply reviewed changes. Dousen imports the additions and shows [Dousen] Instance reconciliation saved after Unreal saves the packages.
- Check the new assets. Removed meshes stay on disk, so delete them yourself if you no longer need them.
If the source file or the instance’s saved list of members changed after you opened the review, applying it fails
with Review is stale or invalid; preview the source again. Open a new review.
Reviewing instances that were imported before Dousen recorded their members
For an older Dousen Interchange import, the first review adopts the members it can verify from the saved import data, and the window starts with Adopt verified members from saved import data. Dousen adopts a mesh from the same folder only when its saved Interchange node ID and its source file both match. If two assets match the same node, Dousen asks you to keep duplicate imports in separate folders. It can’t adopt assets that Epic’s legacy FBX importer created. If a node that you removed returns and collides with retained content, resolve the conflict yourself and review again.
Named geometry profiles
A named profile overrides the import defaults for the fields it declares, and every other setting keeps Epic’s
default. There is no default profile. An instance uses a profile only if you select one with its
import_profile tag, or through the Policy tags of an installed stack.
JSON{
"interchange": {
"schema_version": 1,
"profiles": {
"authored_prop": {
"nanite": false,
"collision": "source",
"normals": "import",
"tangents": "mikk",
"import_lods": true,
"bake_meshes": true,
"bake_pivots": false,
"uniform_scale": 1,
"animation_sample_rate": 60
}
}
}
}
The example is a fragment. Add the interchange key at the top level of your full conventions document,
next to version: 3. On its own it fails with a missing-version error. authored_prop is an
example, so change its values to suit your assets.
Profile settings reference
| Setting | Accepted values | Behavior |
|---|---|---|
nanite |
true, false |
If set to false, the catalog’s Allow Nanite can’t turn Nanite back on. Skeletal
meshes don’t use the static-mesh Nanite path. |
normals |
import, recompute |
recompute makes Unreal recompute normals on import. |
tangents |
import, recompute, mikk |
import keeps the source tangents. recompute recomputes them. mikk
recomputes them with MikkTSpace. |
collision |
none, source, box, sphere, capsule,
convex18dop |
none turns off collision import and generation. source imports the collision meshes
named in the source and generates no fallback. The other values generate that primitive. |
import_lods |
true, false |
LOD import requires bake_meshes to be true. |
bake_meshes |
true, false. The default is true. |
Applies the source scene’s transform to each mesh. |
bake_pivots |
true, false. The default is false. |
Applies the node’s pivot to the mesh vertices. It requires bake_meshes to be
false. |
uniform_scale |
A number greater than 0 and at most 100000 | Unreal’s Offset Uniform Scale, applied to meshes and animations. |
animation_sample_rate |
An integer from 0 to 48000 | The sample rate in Hz for imported animation. 0 lets Unreal choose the best matching rate. |
Because bake_meshes defaults to true, a profile that sets only
"bake_pivots": true is rejected. Set "bake_meshes": false as well.
If the profile isn’t valid, Dousen rejects the whole instance before it runs any factory. A profile isn’t valid if it has any of these:
- An unknown profile name or
schema_version. - An unsupported field.
- A value of the wrong type or outside its range.
- Bake, pivot, and LOD settings that don’t work together.
Geometry profiles apply only to meshes and animations. If a texture’s tags include import_profile,
Dousen rejects the import.
Install a project import stack
Imports that you start from the Content Browser don’t use your Dousen conventions or profiles until you install a stack. A stack is a named pair of pipeline assets that you select in Unreal’s Interchange import dialog.
- Open the Unreal project with DousenDesktop running and signed in, so the plugin can fetch the project’s
conventions.
bUseDousenImportPipelinemust be on, which is the default. See Configure the plugin. - If
Config/DefaultEngine.iniis read-only, check it out first. The command doesn’t check it out for you. - Run the command in the Unreal console:
TEXT
For example:Dousen.InstallImportStack <StackName> </Game/Folder> <static_mesh|skeletal_mesh|texture> [dimension=value ...]TEXT
Dousen.InstallImportStack DousenProps /Game/Dousen/ImportPolicies/Props static_mesh category=Props - Select the stack in the Interchange import dialog when you import a file.
- Submit the new pipeline assets and
Config/DefaultEngine.initogether.
The command saves two pipeline assets, Assets and Policy, in the folder you give. It also adds
the stack to InstalledStacks under [/Script/DousenUE.DousenProjectImportSettings] in
Config/DefaultEngine.ini.
Dousen builds the stack’s Policy tags from your dimension=value arguments, plus an
asset_type tag that it sets from the kind. Supply every dimension that your conventions require. To attach
a geometry profile to a static_mesh or skeletal_mesh stack, add
import_profile=<profile name>. If the tags don’t match your conventions, the command doesn’t install
the stack. A new import through the stack reads its Policy asset, which you can edit.
The command also refuses a stack name or a destination asset that already exists. If saving the assets or the config fails, it removes the new assets so you can try again.
By default, Unreal skips the Interchange dialog for texture imports, so you can’t select a texture stack. To show it, open Project Settings and go to Interchange. Under Import Content, find Show Import Dialog Override and turn on the import dialog for Textures. Installing a stack doesn’t change this setting or any other Content Browser default.
Unregister a stack or disable Dousen
To unregister a stack, remove it from InstalledStacks under
[/Script/DousenUE.DousenProjectImportSettings] in Config/DefaultEngine.ini, then restart the
editor.
Saved import data and pipeline assets refer to Dousen classes, so keep the plugin enabled for as long as you reimport those assets. Before you disable it, convert the affected assets to Epic’s native pipelines and check that they reimport while Dousen is still installed. Then remove the Dousen pipeline assets and registrations.
Editor responsiveness and limits
Topology previews, approved additions, Reimport (sync source), and bridge instance updates run in the background. Members of an instance that use compatible settings share one source translation. Members with different transform or bake settings are translated separately. Dousen refuses overlapping reimports of the same asset.
Unreal still does some geometry and factory work, and saves packages, on its game thread, so a large FBX file can still stall the editor. Test with your own rigs and scenes.
Troubleshooting
| Symptom | What to do |
|---|---|
Project conventions unavailable |
Check the project, your sign-in, and the connection to DousenCore. Fetch valid conventions before a new bridge import. |
Convention error: 'interchange.profiles.<name>.<field>' must be … when you save in the
portal |
DousenCore rejected the profile. Fix the field it names, using the settings reference. |
Unknown import_profile, Unsupported or invalid import profile field, or
Import profile has incompatible mesh baking, pivot, or LOD settings |
Check the profile name, schema_version, field types and ranges, and the bake and LOD rules in the
settings reference. If the profile is valid, check that DousenCore is current.
An older DousenCore doesn’t pass profiles to Unreal. |
Review is stale or invalid |
Finish editing the source, then open a new topology review. |
Added source node destination is occupied |
Resolve the naming or ownership problem. Don’t overwrite retained content to force the review through. |
| The import isn’t confirmed | Check Unreal and the required package saves before you publish again. See Recover from a failed publish. |
Check out the project config before installing a stack |
Make Config/DefaultEngine.ini writable through your source control workflow, then run the command
again. |