Troubleshooting Nanite Assemblies

Fixes for Nanite Skeletal Assembly exports: Save to Disk errors, missing materials, floating parts, no wind, and slow or crashing imports.

This page is for when the export runs but the result is wrong. For the normal workflow, see Nanite Skeletal Assemblies.

Before you export

Most problems come from the input rather than the export. The input has to come from a Simulate, because that is where the rig and skin weights are made; anything else shows a Missing BoneCapture warning. The tree also needs assemblies, since a grow with nothing decorated has nothing to export. If Output Preview shows no trees, look upstream.

Save to Disk stops

Save to Disk checks the export before writing, and the message names the joint or part at fault. Duplicate or digit-led joint names, broken part bindings, joints bound at the origin, a skeleton that drifted from the rig, and bones that don't run along their branch all stop the save, so fix them upstream and save again. A default name, an unused material, a missing texture or no wind layers only ask before saving, and saving anyway is fine if you meant it.

Export errors

  • 'NoneType' object has no attribute 'geometry' while writing the wind means the export's input is empty or disconnected.
  • "Unable to cook test input" on an assembly resource or decoration means that node has no valid input upstream. An empty assembly resource can't be used as a decorator.
  • If an export node from an older scene misbehaves after the upgrade, put down a new one from the current build.

Materials

  • If materials are missing or unassigned in Unreal, import the root .usd into an empty folder, or untick Reuse Existing Materials in the import options. Interchange reuses materials that share a name.
  • If leaves look wrong from one side, the material is based on the default USD material, which has no two-sided foliage or subsurface. Set up a foliage material in Unreal and link it with Use Existing.
  • If the material list on the export is empty, nothing was assigned upstream.
  • If Unreal shows fewer material slots than Houdini, some parts share a material path and have become one slot.

Parts in the wrong place

If parts float off or the animation looks misbound after an import, restart Unreal. It usually finds the missing joint bindings on the second load.

Everything sitting at the world origin shouldn't happen with the export and import on their defaults, so check any import settings you changed. If it does, open the skeletal mesh, search for Preserve in Asset Details, set Shape Preservation to Voxelize and apply the change. This needs Nanite Foliage turned on in Project Settings.

Wind

  • No wind usually means the tree isn't on an Instanced Skinned Mesh. Check the component has its Transform Provider set and at least one instance, and that the wind data was imported.
  • Wind values set on the skeletal mesh are replaced each time the wind data is imported. Set them with Override on the export instead, then use Save Wind Only.
  • If branches curl in strong wind, lower the Wind Environment's Strength. Strong wind is still being tuned.
  • If the wind file is missing bones after Simplify Tree Rig and Skin, simplify before setting up the wind layers.
  • Each tree has its own wind file in assemblies/, so if one tree looks wrong, check the right file went onto it.

Importing

  • If the importer rejects the geometry, a decoration mesh is usually non-manifold. Make decorations watertight before exporting.
  • Large imports can be slow or freeze. Start around 10,000 instances and 600 joints per tree, and split forests above roughly 56,000 instances per export.
  • If Unreal crashes after several imports in a row, restart it between batches.
  • Props from another package don't go through the export. Bring them in as part of the assembly upstream, or add them in Unreal.

For anything else, see the general Troubleshooting page.