28. September 2023

Morphing-Animationssystem

Einführung

Mit diesem neuen Release unterstützt Evergine Morphing-Animationen in seinen Modell-Assets. Auf den unterstützten Rendering-Plattformen kommen dabei Compute Shaders zum Einsatz. Dank der hervorragenden parallelen Leistung erwies sich dies als viermal schneller als Morphing auf der CPU.

Morphing-Animationen verstehen

Morphing-Animationen basieren auf Morph Targets, auch bekannt als Blend Shapes oder Shape Keys. Diese Technik wird in der 3D-Computergrafik eingesetzt, um realistische Gesichtsausdrücke und Animationen zu erzeugen. Im Wesentlichen handelt es sich um eine Reihe vordefinierter 3D-Modelle, die verschiedene Gesichts- oder Körperausdrücke darstellen. Jedes Morph Target definiert seine Vertex-Verschiebungen relativ zur Basispose (in der Regel einer neutralen Pose). So lassen sich mehrere Ausdrücke mit jeweils unterschiedlicher Gewichtung kombinieren, sodass Gesicht oder Körper einer Figur fließend von einer Form in eine andere übergehen können. Dieser Interpolationsprozess ermöglicht komplexe und lebensechte Bewegungen und macht Morph Targets zu einem wertvollen Werkzeug für die Charakteranimation.

Compute Shader

Morphing über Compute Shaders statt auf der CPU nutzt die hohe Parallelverarbeitung und Skalierbarkeit der GPU und entlastet zudem die CPU. Evergine wechselt jedoch automatisch in den CPU-Modus, wenn die Rendering-API der Anwendung keine Compute Shaders unterstützt oder die Anwendung die Verwendung der CPU erzwingt (durch Deaktivieren der Eigenschaft UseComputeSkinning).

Morph Targets in Evergine Studio verwenden

Importieren Sie Ihr 3D-Modell.

Importieren Sie Ihr 3D-Modell. Um Morph Targets verwenden zu können, benötigen Sie ein 3D-Modell mit Morph Targets. Importieren Sie Ihr 3D-Modell wie gewohnt in Evergine, indem Sie es per Drag & Drop in den gewünschten Ordner ziehen. Derzeit werden Morph Targets in GLTF-, FBX- und Collada-Dateien unterstützt.

Öffnen Sie Ihr 3D-Modell.

Öffnen Sie Ihr importiertes 3D-Modell, um den Model Viewer aufzurufen. Enthält Ihr Asset Morph Targets, werden diese im Panel Morph Targets auf der rechten Seite aufgelistet. Dort wird auch die Standard-Gewichtung jeder Pose angezeigt.

Bearbeiten Sie die Posen in Ihrer Szene.

Wenn Sie das Modell in Ihrer Szene instanziieren (per Drag & Drop in den Szenen-Viewer), wird die übliche Modellhierarchie aus Entitäten erstellt. Wählen Sie eine Entität mit Morph Targets aus, sehen Sie in der Komponente SkinnedMeshRenderer ein neues Panel. Darüber können Sie alle Morph Targets direkt im Editor steuern.

Suchen Sie die Pose, die Sie ändern möchten, und passen Sie ihren Schieberegler an.

Dadurch werden die Gewichtungen aller Morph Targets des Modells gespeichert.

Morph Targets im Code verwenden

In Ihrem C#-Evergine-Projekt können Sie das Morphing eines Meshes steuern, indem Sie – wie im vorherigen Abschnitt – die Gewichtungen seiner Morph Targets festlegen. Sie können diese in der Komponente SkinnedMeshRenderer über folgende Eigenschaft ändern:

  • float[] MorphTargetWeights. Ist diese Eigenschaft null oder leer, besitzt das Mesh keine Morph Targets. Andernfalls enthält das Array einen float-Wert pro Morph Target. Die Reihenfolge entspricht derjenigen im Model Viewer und im Editor-Panel von SkinnedMeshRenderer.
Antonio avila
Autor
Antonio Ávila
Plain Concepts Research