How to setup low budget Chaos Cloth sim?

Our goal is to possibly have cloth on many NPCs. Asset Types like Long Skirts, Short Skirts, Jackets.

What we tried so far:

  • Sim Vertices under 300.
  • Using only PBD Constrains.
  • Not using self-collisions.
  • Using Cloth Interactors to avoid edge-cases when skirt need to interact with fast moving leg’s colliders.(ex. Adjusting Long-Range Attachments to push skirt above character’s knees during run animation to prevent increasing sub-steps for more accurate collisions, Tweaking backstops distances by character’s speed)
  • Body Collisions are only capsules.
  • Using Sim proxy and render mesh remeshing for higher LODs.
  • SubSteps and Iterations set to 1.
  • Result:Around 0.35 ms per asset(LOD0).

Does anybody have recommendations for improving performance further?

[Attachment Removed]

This seems like a pretty comprehensive list to me already.

On top of my head, here are a bunch of things you are probably also doing already:

  1. Make sure you are not using CCD on collision.
  2. Make sure to set all stiffnesses to 0 on the constraints you are not using so that they are entirely disabled during runtime (including the Long Range Attachment if not in use).
  3. Try using the Backstop constraint instead of collision capsules if you can, it reduces collision complexity to an O(1) problem instead of an O(n).
  4. Don’t forget to set the MaxIterations to 1 also. Otherwise the number of iterations could still go up as the frame rate goes under 60fps.
  5. Try to limit the number of kinematic points (the ones with 0 MaxDistance) and remove the unused ones from your sim mesh (the render proxy deformer can often deal with mismatched sim/render meshes).
  6. Do not use features such as added ClothCollisionSource on the SkeletalMeshComponent, and do not enable collisions with the environment.
  7. Monitor the thread usage when multiple NPCs are on screen together, you might have to adjust the cloth simulation console variables to limit how wide the simulation goes on the CPU, especially on low end platforms, as the task overhead could start to eat into your CPU budget. Also make sure the SkeletalMesh component isn’t ticking animation when the character is off screen.
  8. If raytracing is enabled for shadows, setup your Skeletal Mesh with ClothLODBiasMode to MappingsToMinLOD and set RayTracingMinLOD to a higher LOD. (This is a rendering optimization only).
    [Attachment Removed]
1 Like

Note: Edited title “budge” into “budget” for easier retrieval and categorization.

[Attachment Removed]