home/ atoms/ sdf-uvs-via-rest-pose

Animated SDF characters recover rest-pose coordinates via an invertible animation so textures track the surface rather than swimming

Traditional mesh rendering stores UV coordinates per vertex, which deform with the mesh. SDF characters have no vertices or UVs, so when the character animates (via sine-wave deformation of the distance function), texture lookups on the deformed surface will ‘swim’ — the pattern slides across the surface as geometry moves. IQ’s solution for Fish Swimming (2014) was to make the animation function invertible: for each surface point, compute where it came from in the rest pose by running the animation transform backwards, then do noise and pattern lookups at that rest-pose position. This keeps textures fixed on the body as it deforms. It requires an analytically invertible animation, which is achievable for simple sine-wave swimming but hard for complex rigs.

Examples

Fish animation: compute a rest-pose position restPos by inverting the swim deformation, then use restPos (not the deformed p) for noise and pattern lookups, so the fish’s stripes stay fixed on its body even as it waves.

Assessment

Describe the ‘texture swimming’ problem in animated SDF characters and explain IQ’s invertible-animation approach to solving it.

“I was able to make the animation function of the fish invertible such that each point on the surface would be able to know where it came from in the rest pose of the fish”
corpus · inigo-quilez-raymarching-signed-distance-fields-article · chunk 2