Quick answer: Chaos Cloth crashes at runtime are almost always caused by zero-weight skin vertices inside the cloth mask, missing collision bodies referenced by the clothing asset, or LOD sections that strip the bones the cloth solver depends on. Verify skin weights, add collision capsules, and map cloth correctly across every LOD.
Your character looks great with a flowing cape in the editor. You PIE, take one step, and the engine crashes with a stack trace somewhere deep inside FClothingSimulation::Simulate. This is a particularly nasty bug to diagnose because the crash can happen long before the cape visibly moves — the solver may fail during its first pre-simulation step, producing a crash report that looks like an engine bug rather than a content bug.
Read the Callstack First
Before editing anything, open the Saved/Logs folder and read the most recent crash log. Chaos Cloth crashes tend to cluster around three specific failure sites:
FClothingAssetCommon::GetInfluences— usually a bone reference that no longer exists on the skeleton.Chaos::FPBDClothSolver::AddParticles— caused by invalid mass or zero-weight vertices.FClothCollisionData::AppendFromAsset— a collision body referencing a missing bone.
Knowing which family of failure you are in narrows the investigation dramatically. If you cannot access the callstack, run the editor with -nullrhi -fullcrashdump and repro the scenario; the crash will be attached to your project’s log file.
Clothing Asset Setup
Open the skeletal mesh in the Skeletal Mesh Editor and switch to the Clothing panel. Every clothing asset on the mesh lists the bones it is skinned to and the vertices it paints. Three things must be true:
- Every bone referenced by the clothing asset still exists on the current skeleton. If someone renamed a bone after importing the cloth, the clothing asset still holds the old name and the solver will fail when it tries to resolve the reference.
- Every cloth-painted vertex has at least one non-zero skin weight. Vertices with all-zero weights cannot be anchored, which makes the solver either crash or explode to infinity.
- The cloth mask does not cover vertices that are also assigned to non-cloth physics assets. Overlap between the cloth simulation and a regular body produces duplicate particles and can crash the solver on its first tick.
To inspect weights, switch to the Skin Weights visualization inside the Clothing Editor. Vertices that are pure black have zero weight. Reskin them manually or re-export from your DCC tool with a fallback bone (often root or spine_03) to cover weights that would otherwise be zero.
Collision Assets
A cloth simulation without collision will still run, but it will clip through the character’s body. The crash risk comes from misconfigured collision, not from the absence of it. Open the clothing asset and expand the Collision section. You can add Spheres and Capsules attached to specific bones, or tick Use Physics Asset to import capsules from the character’s existing Physics Asset.
// ClothingCharacter.cpp - runtime collision binding
#include "ClothingCharacter.h"
#include "ChaosCloth/ChaosClothingSimulationInteractor.h"
void AClothingCharacter::BeginPlay()
{
Super::BeginPlay();
USkeletalMeshComponent* Mesh = GetMesh();
if (!Mesh) return;
// Rebind cloth collision against the current physics asset.
// Prevents stale references from a previous skeleton.
Mesh->RebuildClothingSectionsFixedVerts();
Mesh->ForceClothNextUpdateTeleportAndReset();
if (UClothingSimulationInteractor* Interactor =
Mesh->GetClothingSimulationInteractor())
{
Interactor->PhysicsAssetUpdated();
}
}
If a Physics Asset capsule references a bone that was removed or renamed, the cloth solver crashes on first tick. Reopen the Physics Asset, delete orphaned bodies, and resave it before launching again.
Skin Weights and Vertex Influences
Chaos Cloth uses per-vertex mass derived from skin weight. A vertex with an impossibly small or zero mass causes a divide-by-zero deep in the solver. When importing a mesh from Blender or Maya, ensure every cloth vertex has at least three positive influences summing to 1.0. If your DCC exports normalized weights with epsilon-sized tail values, trim them: weights below 0.001 should be clamped to zero and re-normalized before export.
Also check Max Bone Influences in the mesh import settings. If the incoming mesh has 6 influences per vertex but the target setting is 4, the import silently drops two influences per vertex — which may be the only influences holding a cloth vertex in place.
LOD Cloth Fallback
Cloth runs per-LOD. On LOD 0 everything works, but when the engine streams you to LOD 1 or LOD 2 and the cloth section is not configured for that LOD, the solver attempts to run against a mesh that no longer contains the cloth triangles. That is a fast way to crash in shipping builds even though everything worked in PIE at full detail.
Open the skeletal mesh, expand LOD Info for each LOD, and look at the Cloth field on every section. For non-zero LODs, either:
- Assign a Raytrace-remapped clothing asset generated at that LOD, or
- Explicitly set the cloth reference to None so the section renders as static skinning at distance.
Never leave it ambiguous. A null reference where the engine expects a cloth mapping is a crash; an explicit None is a no-op.
“If Chaos Cloth crashes, it is almost never a bug in the solver. It is a bone that moved, a weight that went to zero, or an LOD that forgot it had cloth.”
Related Issues
If your cloth runs without crashing but visibly glitches when the character teleports, see Motion Warping Not Aligning — the fix there also discusses cloth teleport thresholds. If you are seeing LOD pops when cloth swaps out, check Skeletal Mesh LOD Popping Artifacts for the LOD streaming policies that keep cloth consistent across distances.
Zero-weight cloth vertex = zero-lifespan simulation. Paint them or lose them before the solver wakes up.