Elastisches System – MRTK2
MRTK verfügt über ein elastisches Simulationssystem, das eine Vielzahl von erweiterbaren und flexiblen Unterklassen umfasst und Bindungen für 4-dimensionale Quaternionsfedern, 3-dimensionale Volumenfedern und einfache lineare Federsysteme bietet.
Derzeit können die folgenden MRTK-Komponenten, die den Elastics-Manager unterstützen, elastische Funktionen nutzen:
Manager für Elastische Datenbanken
Der Elastics-Manager verarbeitet übergebene Transformationen und speist sie in das Elastics-System ein.
Die Aktivierung von Elastischen für benutzerdefinierte Komponenten kann in zwei Schritten erreicht werden:
- Aufrufen der Initialize-Methode beim Start der Manipulation, Aktualisieren des Systems mit der aktuellen Hosttransformation.
- Abfragen von ApplyHostTransform, wenn eine elastische Berechnung für die aktualisierte Zieltransformation ausgeführt werden soll.
Beachten Sie, dass elastische Datenbanken nach Beendigung der Bearbeitung (über die Elastics Manager-Updateschleife) weiterhin simuliert werden. Um das Verhalten zu blockieren, kann enableElasticsUpdate für elastische Datenbanken automatisch auf false festgelegt werden.
Standardmäßig ist für die Elastics-Manager-Komponente, wenn sie einem Spielobjekt hinzugefügt wird, für keinen Transformationstyp elastische Datenbanken aktiviert.
Das Feld Manipulation types using elastic feedback
muss für bestimmte Transformationstypen aktiviert werden, um die Konfiguration und Blöcke für elastische Datenbanken für den ausgewählten Typ zu erstellen.
Konfigurationen für elastische Datenbanken
Ähnlich wie bei Begrenzungssteuerungskonfigurationen enthält elastic manager eine Reihe von Konfigurationsobjekten, die als skriptfähige Objekte gespeichert und von verschiedenen Instanzen oder Prefabs gemeinsam genutzt werden können. Konfigurationen können freigegeben und entweder als einzelne skriptfähige Medienobjektdateien oder geschachtelte skriptfähige Ressourcen innerhalb von Prefabs verknüpft werden. Weitere Konfigurationen können auch direkt auf der instance definiert werden, ohne eine Verknüpfung mit einem externen oder geschachtelten skriptfähigen Medienobjekt herzustellen.
Der Elastics-Manager-Inspektor gibt an, ob eine Konfiguration freigegeben oder als Teil der aktuellen instance inline ausgeführt wird, indem eine Meldung im Eigenschafteninspektor angezeigt wird. Darüber hinaus können freigegebene Instanzen nicht direkt im Eigenschaftenfenster des Elastics-Managers selbst bearbeitet werden, sondern das Objekt, mit dem eine Verknüpfung hergestellt wird, muss direkt geändert werden, um versehentliche Änderungen an freigegebenen Konfigurationen zu vermeiden.
Elastics Manager bietet Optionen für Konfigurationsobjekte für die folgenden Transformationstypen, die jeweils durch ein elastisches Konfigurationsobjekt dargestellt werden:
- Elastische Übersetzung
- Drehung elastisch
- Skalieren von elastischen Datenbanken
Elastisches Konfigurationsobjekt
Eine Elastische Konfiguration definiert Eigenschaften für ein gedämpftes differenzielles Oszillatorsystem. Die folgenden Eigenschaften können angepasst werden, verfügen aber bereits über eine Reihe von Standardwerten im MRTK:
- Masse: Masse des simulierten Oszillatorelements.
- HandK: Handfederkonstante.
- EndK: Endkappenfederkonstante.
- SnapK: Federkonstante des Andockpunkts.
- Ziehen: Zieh-/Dämpferfaktor, proportional zur Geschwindigkeit.
Elastische Blöcke
Die Einstellungen für elastische Blöcke variieren je nach Art der Bearbeitung. Übersetzung und Skalierung werden durch elastische Volumenausdehnungen dargestellt, und die Drehung wird durch eine elastische Quaternionsausdehnung dargestellt.
Elastische Volumeausdehnung
Volumenausdehnungen definieren einen dreidimensionalen Raum, in dem sich der gedämpfte oberschwingische Oszillator frei bewegen kann.
- StretchBounds: Stellt die untere Grenze des Bereichs für elastische Datenbanken dar.
- UseBounds: Gibt an, ob die Stretch-Grenzen vom System beachtet werden sollen. Wenn true ist, wird die Endkraft angewendet, wenn die aktuelle Iteration der Zielposition außerhalb der Stretchgrenzen liegt.
- SnapPoints: Punkte innerhalb des Bereichs, an den das System andockt.
- RepeatSnapPoints: Wiederholt die Andockpunkte bis zur Unendlichkeit. Vorhandene Andockpunkte dienen als Modulo, bei dem die tatsächlichen Andockpunkte den nächsten ganzzahligen Vielfachen jedes Andockpunkts zugeordnet werden.
- SnapRadius: Abstand, ab dem die Feder an den Andockpunkten erzwungen wird.
Elastische Quaternionsausdehnung
Quaternionenausdehnungen definieren einen vierdimensionalen Drehraum, in dem der gedämpfte oberschwingische Oszillator frei gedreht werden kann.
- SnapPoints: Eulerwinkel, an denen das System andockt.
- RepeatSnapPoints: Wiederholt die Andockpunkte. Vorhandene Andockpunkte dienen als Modulo, bei dem die tatsächlichen Andockpunkte den nächsten ganzzahligen Vielfachen jedes Andockpunkts zugeordnet werden.
- SnapRadius: Bogenwinkel, an dem andockte Punkte beginnen, die Feder in Eulergraden zu erzwingen.
Beispielszene für elastische Datenbanken
Beispiele für elastische Konfigurationen finden Sie in der ElasticSystemExample
Szene.