Work VFX
Dismemberment FX
Real soft-body tearing from Houdini, played back in Unreal Engine 4 on the GPU.
- Project
- Dismemberment FX
- Studio
- FutureGames (personal R&D)
- Years
- 2020
- Engine
- Houdini, Unreal Engine 4
- Role
- Technical art and VFX
- Team
- Solo
- Status
- Study
Problem
A limb tearing off is a soft-body problem, and no game can run a soft-body solver every time an enemy loses an arm. I wanted the real thing anyway: flesh that stretches and tears in a Vellum simulation, playing back in Unreal Engine 4 at game cost.
Constraints
- The simulation is solved once, offline, in Houdini. The engine only plays it back.
- Playback must not need a solver, bones or CPU skinning at runtime.
- Two candidates for getting it into the engine: an Alembic geometry cache, and vertex animation textures.
What I built
The tear is a Vellum simulation in Houdini, where the flesh stretches, gives way and separates.
I tested both routes into Unreal Engine 4, and vertex animation textures (VAT) won. The whole simulation becomes one static mesh plus textures that store every vertex's position and normal for every frame. A material reads them in the vertex shader, and the GPU moves the mesh into the shape of the current frame.
That changes what the engine has to do. There is no geometry streaming from disk, no skeleton and no solver: to Unreal it is a static mesh with a material, so it can play as often as the game needs. The Houdini flipbook and the real-time result below are the same simulation.
Result
Real-time gore from a real simulation, for little more than the cost of a static mesh. Six years later the same idea became an EQLabs product: see Vertex Animation Textures.