Physik-Objekte an Seilen

Allg. Physik-Objekte an Seilen

Allgemeine Physik-Objekte sind hier prop_physics, prop_physics_multiplayer oder func_physbox, etc. Eben alles, was sich so aufhängen lässt. Speziell auf Ragdolls wird im 2. Teil eingegangen.

Voraussetzungen und Aufbau

Die Grundkonstruktion der Umgebung sollte soweit schon bestehen. Umgebung um Effekte herum zu bauen ist immer eher sinnfrei. Benötigte Entities sind folgende:

Der grundsätzliche Aufbau sieht wie folgt aus:

move_rope

kommt dahin, wo das Seil befestigt sein soll, z.B. unter der Decke

Key Value
Name rope_a_start
Next KeyFrame rope_a_end
Slack 0


Width, Type, Subdivision, Material etc. nach Belieben

keyframe_rope

dort, wo das Seil endet und am Physikobjekt befestigt ist

Key Value
Name rope_a_end
Parent rope_a_dynamic

phys_lengthconstraint

genau auf dem keyframe_rope

Key Value
Attached Object 2 Point der Bezugspunkt (blaue Kugel) sollte auf dem move_rope liegen!
Entity 1 rope_a_dynamic

prop_physics

so ausrichten, dass der Aufhängepunkt genau auf dem keyframe_rope liegt

Key Value
Name rope_a_dynamic
World Model models/props_junk/meathook001a.mdl (in meinem Fall…)


Alles andere sollte bei den Standardeinstellungen belassen werden.

info_mass_center

10 bis 16 units unterhalb des keyframe_rope (ausprobieren!)

Key Value
Target object rope_a_dynamic

Übersicht (Bild)

Zur Verdeutlichung ein Editor-Screenshot der Testmap:

objekt_an_seil.jpg

Genauere Erläuterungen

Da die Anordnung soweit steht (und jeder der nur schnell nachgucken wollte wie's noch gleich ging alles hat, was er will), erläutere ich hier für alle Interessenten etwas genauer was warum wie gesetzt wird:

Das move_rope bildet nicht den Aufhängepunkt der Konstruktion, auch wenn es hier mit diesem zusammenliegt. Es ist lediglich für den Anfangspunkt des Seils da.

Das keyframe_rope befindet sich am Seilende, bzw. bildet dieses, und das prop_physics ist sinnigerweise so ausgerichtet, dass es das keyframe_rope dort hat, wo es angebunden sein soll.

Viel mehr hat das phys_lengthconstraint mit dem Aufhängepunkt zu tun. Und zwar muss das phys_lengthconstraint als solches auf dem Punkt liegen, an dem das prop_physics seinen Angelpunkt hat, also quasi dort, wo das Physikobjekt am Seil festgebunden ist. Der Bezugspunkt (die blaue Kugel - attached object 2 point) des phys_lengthconstraint bildet die Aufhängung der gesamten Konstruktion und sollte realistischerweise genau auf dem move_rope liegen.

Damit ist unsere Grundkonstruktion soweit beschrieben, da kommt aber noch das info_mass_center ins Spiel. Wenn kein info_mass_center vorhanden ist, liegt der Massenmittelpunkt des Objekts genau am gemessenen Mittelpunkt (der, der im Editor per x markiert ist, wenn man das Model ausgewählt hat).

Da allerdings die Massenverteilung meist anders ist, sollte man hier ein info_mass_center setzen - vor allem um die Schwingungen des Objekts etwas zu dämpfen. Bei der Positionierung kann man allerdings nicht vom allg. logischen Verständnis ausgehen. Wenn ich z.B. bei dem Meathook-Model (was ich in der Testmap verwendet habe), den Massenmittelpunkt weiter nach unten setze, so wie es logisch wäre, dann fängt das Model ingame viel mehr an herumzueiern, als vorher. Nach ein paar anderen Versuchen hat sich dann ergeben, dass es sinnvoller ist, die Distanz von phys_lengthconstraint zu info_mass_center relativ gering zu halten, auch wenn das Model länger ist. Das sorgt dafür, dass das Physikobjekt nicht so viel Beschleunigung durch Rotation erfährt und demnach etwas ruhiger auspendelt. Wie genau man das Massezentrum jetzt setzt, muss man wohl trotzdem noch probieren.

Testmap

Hier ist meine Testmap:
objekt_an_seil.zip

Ragdolls

Zu Deutsch: Stoffpuppen. Ragdolls sind tote Menschen oder Aliens, die an etwas befestigt werden. Hier wollen wir ein Zombie an einem Baum aufhängen.

Aufbau

  1. Zunächst einmal braucht ihr euer Grundgelände, sei das jetzt ein Raum oder ein Aussengelände.
  2. Nun setzen wir uns ein Objekt, an dem wir das spätere Ragdoll befestigen. Ich habe jetzt mal ein Baum benutzt. Wählt das Entity-Tool und setzt als prop_static ein Baum aus dem props_foliage Ordner.
    rag1.jpg
  3. Jetzt brauchen wir das Seilsystem. Wir setzen ein move_rope an einen Ast und geben bei Name rope1 und bei Next Keyframe rope2 an.
  4. Setze nun ein move_keyframed mit Name rope2. Du siehst nun eine Verbindung zwischen den 2 Entities.
    rag2.jpg
  5. Erstelle jetzt ein prop_ragdoll. Wähle als World Model z.B models/Zombie/Classic_legs.mdl oder ein anderes Model je nachdem, was du dort hängen haben willst. Gib bei Name ragdoll ein.
  6. Erstelle jetzt noch ein phys_ballsocket. Gib bei Entity 1 ragdoll an (Entity 2 bleibt leer!).
Die Verwendung aller Dokumente einschließlich der Abbildungen ausschließlich zu nichtkommerziellen Zwecken. Verbreitung des Dokuments auf Speichermedien, (insbesondere auf CD-ROMs als Beilage zu Zeitschriften und Magazinen oder sog. "Mission-Packs" etc.) ist untersagt.
 
half-life_2/tutorials/physik-objekte_an_seilen.txt · Zuletzt geändert: 2009/11/30 12:06 von Adrian_Broher