← Zurück

Carpet Rollup WPO Shader

Shader & Materials · UE 5.7

Was macht es

Ein animierter Rollup-Effekt für flache Meshes wie Teppiche oder Stoffe, komplett über einen Material-Shader mit World Position Offset gelöst. Ein einzelner Parameter RollAmount (0 bis 1) steuert, wie weit das Mesh aufgerollt ist. Die Mesh-Größe wird automatisch aus den Object Local Bounds ermittelt, sodass der Shader unabhängig von der konkreten Mesh-Dimension funktioniert.

Wie sieht es aus

Bilder einfügen

Warum habe ich das gebaut

Als Alternative zu klassischer Bone-Animation wollte ich eine Rollup-Bewegung rein im Vertex Shader realisieren. Vorteile: keine Skeletal Mesh Setup-Arbeit, vollständig GPU-basiert, instancing-fähig, parametrisch steuerbar per Timeline oder Sequencer. Zweiter Zweck war das Vertiefen meines HLSL-Verständnisses im Custom-Node-Kontext, nachdem ich bisher nur mit Material-Nodes gearbeitet hatte.

Wie funktioniert es (technisch)

Kernidee: Ein HLSL Custom Node berechnet pro Vertex, ob dieser bereits auf der Spirale liegt oder noch flach. Vertices hinter einer beweglichen Rolllinie werden auf eine Archimedische Spirale gemappt, deren Radius pro Umdrehung um die Teppichdicke wächst.

Mathematik: Bogenlänge der Spirale L(θ) = R·θ + 0.5·k·θ², wobei k = Thickness / 2π. Aus der bekannten Bogenlänge (Abstand des Vertex zur Rolllinie) wird per quadratischer Formel θ berechnet, daraus dann die finale Position als (r·sin θ, r·(1 − cos θ)).

Unreal-Features:

Mesh-Anforderungen:

Blender-Workflow:

Was habe ich dabei gelernt

Viele einzelne Dinge, die beim nächsten Shader-Projekt direkt abrufbar sind:

Was sind die Grenzen / offene Punkte

Nächste Schritte (Ideen):

Assets / Dateien