AngularVelocity / Rotationsgeschwindigkeit
-
- Beiträge: 12
- Registriert: 01.04.2011 18:54
AngularVelocity / Rotationsgeschwindigkeit
Hallo,
Ich experimentiere gerade mit OGRE und der zugehörigen Physik-Engine.
Über GetEntityAttribute() verbunden mit den Flags #PB_Entity_LinearVelocity bzw. #PB_Entity_AngularVelocity kann man ja jederzeit die lineare Geschwindigkeit und die Rotationsgeschwindigkeit eines Entity an allen drei Achsen ermitteln.
Die lineare Geschwindigkeit lässt sich ganz einfach mit EntityVelocity() verändern bzw. stoppen.
Die entsprechende Funktion für die Rotationsgeschwindigkeit scheint es aber nicht zu geben... habe ich vielleicht etwas übersehen oder gibt es eine andere Möglichkeit, eine von der Physik-Engine verursachte Rotation zu verändern bzw. zu stoppen? Die Forensuche hat mich leider auch nicht weitergebracht...
Ich verwende PB 5.21 (x86).
Für mögliche Antworten bedanke ich mich schon mal im voraus!
Ich experimentiere gerade mit OGRE und der zugehörigen Physik-Engine.
Über GetEntityAttribute() verbunden mit den Flags #PB_Entity_LinearVelocity bzw. #PB_Entity_AngularVelocity kann man ja jederzeit die lineare Geschwindigkeit und die Rotationsgeschwindigkeit eines Entity an allen drei Achsen ermitteln.
Die lineare Geschwindigkeit lässt sich ganz einfach mit EntityVelocity() verändern bzw. stoppen.
Die entsprechende Funktion für die Rotationsgeschwindigkeit scheint es aber nicht zu geben... habe ich vielleicht etwas übersehen oder gibt es eine andere Möglichkeit, eine von der Physik-Engine verursachte Rotation zu verändern bzw. zu stoppen? Die Forensuche hat mich leider auch nicht weitergebracht...
Ich verwende PB 5.21 (x86).
Für mögliche Antworten bedanke ich mich schon mal im voraus!
- Chimorin
- Beiträge: 451
- Registriert: 30.01.2013 16:11
- Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit
Re: AngularVelocity / Rotationsgeschwindigkeit
Hi,
leider gibt es sowas (noch) nicht.
Du könntest aber mithilfe von
Und einer Verschiebung der Position eine Rotation erzwingen.
leider gibt es sowas (noch) nicht.
Du könntest aber mithilfe von
Code: Alles auswählen
ApplyEntityImpulse(#Entity, x, y, z [, PositionX, PositionY, PositionZ])
-
- Beiträge: 12
- Registriert: 01.04.2011 18:54
Re: AngularVelocity / Rotationsgeschwindigkeit
Danke für die schnelle Antwort.
Ja den Gedanken hatte ich auch schon, hatte aber gehofft, daß es eine einfachere Methode gibt. Ich stelle es mir schwierig vor, die Rotation auf diese Weise vollständig zu stoppen.
Na dann werd ich mal weiter experimentieren...
Ja den Gedanken hatte ich auch schon, hatte aber gehofft, daß es eine einfachere Methode gibt. Ich stelle es mir schwierig vor, die Rotation auf diese Weise vollständig zu stoppen.
Na dann werd ich mal weiter experimentieren...
- Chimorin
- Beiträge: 451
- Registriert: 30.01.2013 16:11
- Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit
Re: AngularVelocity / Rotationsgeschwindigkeit
Du kannst ja, wie schon von dir erwähnt, die Winkelgeschwindigkeit abrufen.
Mit
Mit
hättest du dann die Rotationsgeschwindigkeit und nun müsstest du diese nur *(-1) nehmen und wieder in meinen oben geposteten Befehl stopfen. Meiner schnellen Meinung nach müsste das funktionieren, "r" kannst du somit beliebig annehmen.v = w * r
-
- Beiträge: 12
- Registriert: 01.04.2011 18:54
Re: AngularVelocity / Rotationsgeschwindigkeit
Habe es leider bis jetzt nicht geschafft, mit Hilfe von ApplyEntityImpulse() eine saubere Rotation hinzukriegen
Vielmehr musste ich feststellen, daß sich die von der Physik-Engine verursachte Rotation teilweise sehr merkwürdig verhält und sogar manchmal einfach unvermittelt stoppt... wurde in einem anderem Thread auch schon mal angemerkt (finde ihn gerade nicht wieder).
Eine lineare Beschleunigung lässt sich gut umsetzen, die physik-basierte Rotation ist aber (meiner Meinung nach) in dieser Form kaum zu gebrauchen. Ich denke ich werde sie mittels
deaktivieren und über RotateEntity() selbst implementieren.
Trotzdem vielen Dank für die Hilfe!
Vielmehr musste ich feststellen, daß sich die von der Physik-Engine verursachte Rotation teilweise sehr merkwürdig verhält und sogar manchmal einfach unvermittelt stoppt... wurde in einem anderem Thread auch schon mal angemerkt (finde ihn gerade nicht wieder).
Eine lineare Beschleunigung lässt sich gut umsetzen, die physik-basierte Rotation ist aber (meiner Meinung nach) in dieser Form kaum zu gebrauchen. Ich denke ich werde sie mittels
Code: Alles auswählen
EntityAngularFactor(#Entity, 0 , 0, 0)
Trotzdem vielen Dank für die Hilfe!
- Chimorin
- Beiträge: 451
- Registriert: 30.01.2013 16:11
- Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit
Re: AngularVelocity / Rotationsgeschwindigkeit
Über RotateEntity() hat die Physikengine keine Informationen über deine Scheinrotationen... es könnten somit einige Irritationen auftreten. Aber da koennte ich auch falsch liegen.
Re: AngularVelocity / Rotationsgeschwindigkeit
Das ist beabsichtigt, damit Objekte auf anderen Objekte nicht "zittern" werden sie ab bestimnten Grenzwerten in Ruhezustand versetzt.RatProject hat geschrieben:Vielmehr musste ich feststellen, daß sich die von der Physik-Engine verursachte Rotation teilweise sehr merkwürdig verhält und sogar manchmal einfach unvermittelt stoppt... wurde in einem anderem Thread auch schon mal angemerkt (finde ihn gerade nicht wieder).
Diese Grenze kannst du verringern:
SetEntityAttribute(#Entity, #PB_Entity_LinearSleeping, Wert)
SetEntityAttribute(#Entity, #PB_Entity_AngularSleeping, Wert)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
-
- Beiträge: 12
- Registriert: 01.04.2011 18:54
Re: AngularVelocity / Rotationsgeschwindigkeit
Das hatte ich übersehen...SetEntityAttribute(#Entity, #PB_Entity_LinearSleeping, Wert)
SetEntityAttribute(#Entity, #PB_Entity_AngularSleeping, Wert)
Super, das hilft mir auf jeden Fall weiter
Vielen Dank!