Oberflächen verformen

10

Ich versuche, ein deformierendes physisches Verhalten für ebene Oberflächen zu erreichen, habe aber noch keine Ahnung, wie ich mit der Implementierung beginnen soll.

Unabhängig von der Form der Oberfläche (Ebenen, Würfel, Kugeln…) möchte ich kleine Vertiefungen an den Positionen von Spieleinheiten (Spieler, Feinde, Objekte…) haben.

Es ist etwas kompliziert zu erklären, also habe ich illustriert, wovon ich spreche. Hier ist ein Beispiel mit einer Kugel:

Illustration, die Oberflächenspiel verformt

Die Oberflächen sollten sich also ein wenig verformen können (um wie ein wirklich weiches Bett oder Sofa auszusehen). Meine Oberflächen benötigen wahrscheinlich eine hohe Anzahl von Eckpunkten, um eine gleichmäßige Verformung zu erzielen, aber mein großes Problem ist die Mathematik zur Berechnung dieser Verformung.

Ich programmiere in C / C ++ mit OpenGL, aber alle Ratschläge in die richtige Richtung sind in Ordnung.

Constantin
quelle

Antworten:

5

Für eine einfache Verformung können Sie einen Punkt auf der Oberfläche / dem Objekt auswählen, der bearbeitet werden soll, und dann eine Transformation (z. B. Übersetzung) darauf anwenden. Transformieren Sie dann alle Punkte in einem bestimmten Abstand von diesem Punkt auf die gleiche Weise, aber lassen Sie die Transformation an Stärke verlieren, je weiter Sie von dem ausgewählten Punkt entfernt sind.

Um Dinge unter einem Charakter einzurücken, wählen Sie den Punkt, auf dem er / sie steht, und verschieben Sie ihn nach unten.

Je nachdem, welchen Effekt Sie archivieren möchten, möchten Sie die Transformation möglicherweise global, lokal oder in Richtung / von der Objektmitte weg anwenden und / oder verschiedene Funktionen verwenden, um verschiedene Materialien zu simulieren.

Ein einfaches Beispiel für das Einrücken einer Ebene mithilfe von sin / cos-Falloff-Funktionen finden Sie unter www.lighthouse3d.com/opengl/terrain/

Exilyth
quelle
1
Ich erhalte einen 403 verbotenen Fehler auf dem Link.
George Duckett
1
Nun ... 'kleiner Hack ist dann in Ordnung (auch direkt zu dem fraglichen Abschnitt): web.archive.org/web/20100927141645/http://lighthouse3d.com/…
Exilyth