Most efficient way to update mesh vertices, for soft-body character physics?

I want to simulate soft body physics in VR, for good looking slow-mo hits. It’s important that normals also update for good shading, but shadows and collision detection can be static.

I’ve found a handful of open source FEM and ‘Lattice Shape Matching’ methods of soft body that run in as little as 1ms, using CUDA or Compute Shaders, on complex characters. Perfect for virtual reality. But actually moving the skeletal mesh vertices to match that simulation is looking difficult.

There’s no way to do it without kludges. Here are some that I’m looking at:

  1. Easiest way, use C++ to write the simulation output to a Render Target canvas as colors, pass it into a material blueprint, and hook it to World Space Offset. However, world space offset tears at the UV seams when it expands, and I’m worried about performance.

  2. Some obscure API call to modify the vertex positions directly via C++? Please…?

  3. Writing custom C++ and HLSL additions to the Engine code, to change the mesh vertex positions, perhaps in here before they get transformed by the bones https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Shaders/GpuSkinVertexFactory.usf

I’m really not looking forward to #3, dealing with modifications and compilation of this massive engine. Please someone tell me that #2 is feasible or #1 can be done quickly.

would be interesting to hear if you got any progress on this!

Hi. I think you should look at the CableComponent plugin. It shipped with the engine and uses your second scenario to update a cable mesh.