Physikentities rotieren und bewegen

Posted By: gameplan

Physikentities rotieren und bewegen - 03/08/12 22:51

Hi,

in vielen Spielen, die in der Egoperspektive gespielt werden, kann man Objekte aufheben und dann damit wild herumfuchteln, d.h. diese drehen und bewegen (z.B. Half Life oder Amnesia als Beispiel). Soetwas wollte ich auch in mein Spiel einbauen. Ich verwende PhysX und scheinbar gibt es dort nur die Befehle pXent_move und pXent_rotate, um Physikobjekte mit aktiver Physik und Kollisinserkennung direkt zu manipulieren. Das Problem ist, dass Winkel und Wege die ich in diesen Funkionen angebe mein Objet kaum beeinflussen, weil scheinbardie aufgebrachten Kräfte und Momente zu gering sind. Allerdings kann man scheinbar in diesem Zusammenhang keine Kräfte und Momente einstellen, die nötig wären, um ein Objekt zügig zu bewegen.
Weiß jemand eine Lösung? Das Einstellen einer Kraft oder eines Momentes über pXent_addforce oder pXent_addtorque ist nicht sinnvoll, da ich meine Entity ja in eine bestimmte Zielposition und in einen konkreten Zielwinkel manövrieren möchte.

Danke
Posted By: Ch40zzC0d3r

Re: Physikentities rotieren und bewegen - 03/09/12 19:12

Stell mass vom Objekt runter, und ich gebe dir einen guten Rat:
Sheiß auf PhysX, nehm newton! Newton ist 200X besser als physx, vom Aussehehn her, Leistung ist PhysX leider besser :|
Posted By: ventilator

Re: Physikentities rotieren und bewegen - 03/09/12 23:07

noch ein tipp: PID controller verwenden. laugh das ist _die_ lösung für viele probleme mit physikengines.
Posted By: gameplan

Re: Physikentities rotieren und bewegen - 03/10/12 15:37

Newton würde ich gern verwenden, allerdings gibt es dazu keine Hilfe. Listen für Befehle, wie die Auflistung für PhysX in dem Gamestudiomanual finde ich einfach nicht. Mit PID-Reglern kenne ich mich zufällig aus, und eine Umsetzung wäre wahrscheinlich ziemlich umständlich. Das müsste doch auch einfacher gehen?
Posted By: HeelX

Re: Physikentities rotieren und bewegen - 03/10/12 15:49

@gameplan: Gamestudio unterstützt ausschließlich PhysX durch die ackphysx plugin-dll. Deshalb findest du zu Newton auch nix in der manual, nur zu PhysX. Entweder du nimmst ein vorhandenes Newton plugin und wälzt dessen manual oder du integrierst Newton selber, wie ich es bereits einmal zu einem deiner Posts geschrieben habe. Da das PhysX plugin nicht vollständig ist, gibt es eine zweite Version (community edition) auf SourceForge (siehe meine sig) und hier im Forum, in das neue Features eingebaut wurden, bzw. vorhandene verbessert wurden.
Posted By: ventilator

Re: Physikentities rotieren und bewegen - 03/10/12 16:35

amnesia verwendet übrigens newton.

ein pid controller ist nicht so kompliziert. ich habe mal einen link mit gut verständlichem beispielcode gepostet. find ich nicht mehr, aber es war ein thread von heelx glaube ich.

ich wüsste nicht, wie man physikobjekte einfacher gezielt zu bestimmten positionen bewegen kann.
Posted By: LPF

Re: Physikentities rotieren und bewegen - 03/11/12 07:37

probier halt mal ein gelenk aus... PH_BALL zum beispiel: du setzt den Gelenkpunkt ins massezentrum der aufgehobenen entity (oder etwas darüber) und kannst dann damit rumfuchteln... anders könntest du die entity auch mit pXent_rotate oder pXent_setposition drehen/bewegen das wäre auch das was ventilator oben gemeint hat, da gibt es aber keine kollisionserkennung während dem verschieben oder drehen... alternativ kannst du auch deine Entity mit der bodyflag NX_BF_KIEMATIC registrieren und sie wie mit c_move mit pXent_move bewegen (die hat nur als NX_BF_KINEMATIC kollisionserkennung...)

ich hoffe da ist was nützliches dabei

Posted By: gameplan

Re: Physikentities rotieren und bewegen - 03/11/12 21:13

Das sind interessante Möglichkeiten. Ich habe da noch ein Problem:

Wenn ich Entities mit Gelenken verbinde, sind diese Verbindungen mehr oder weniger elastisch, möglicherweise liegt das ja aber auch nicht am Gelenk, sondern an der Entity. Dennoch, egal wie ich die Parameter ändere (Elastizität, Widerstand etc. an Entities und totale Einschränkung aller Freiheitsgrade bei den Gelenken), ich bekomme es einfach nicht hin, dass sich eine solche Gelenkverbindung absolut steif verhält. Geht das vielleicht gar nicht?

Danke
Posted By: ventilator

Re: Physikentities rotieren und bewegen - 03/11/12 21:39

nein, das geht nicht. besonders nicht mit dem solver von physx. rigid body physics engine ist eigentlich eine falsche bezeichnung, weil wirklich rigid ist da nichts. laugh

nein, ich meine nicht mit ausschalten der physik und kollisionserkennung.

der vorteil von einem pid controller ist, dass das physikobjekt korrekt mit kräften und kollisionserkennung zum ziel bewegt wird, oder auf dem ziel gehalten wird. es kann mit anderen physikobjekten interagieren. wieso willst du das nicht so probieren? vielleicht reicht auch ein p oder pi controller, wenn dich das überschwingen nicht stört. bei hl oder amnesia lösen die das sicher auch so ähnlich. ich habe mal in gametudio (mit der alten physikengine) eine gravity gun umgesetzt. hat super funktioniert.
Posted By: gameplan

Re: Physikentities rotieren und bewegen - 03/11/12 21:50

Ja, bei Half Life wird das glaube ich mit PID geregelt, hab es nochmal angespielt und tatsächlich ein leichtes Überschwingen und Trägheiten festgestellt, was auf derartige Regler schließen lässt.

Dass man mit PhysX keine steifen Verbindungen herstellen kann, finde ich gerade ziemlich enttäuschend. Geht das denn mit Newton (immerhin ist der Solver dort ja deterministisch)?
Posted By: ventilator

Re: Physikentities rotieren und bewegen - 03/11/12 22:04

mit newton geht es zumindest besser. aber 100% steif ist glaube ich auch nicht möglich.
Posted By: HeelX

Re: Physikentities rotieren und bewegen - 03/11/12 22:55

In PhysX gibt es das fixed-constraint, was im community plugin verfügbar ist.
Posted By: ventilator

Re: Physikentities rotieren und bewegen - 03/11/12 23:28

was macht das fixed constraint in physx? die damit verbundenen körper verhalten sich einfach wie ein körper? sowas gibt es in newton auch.

aber die anderen constraints (hinge,...) sind immer ein bisschen wackelig, auch wenn man die freiheitsgrade beschränkt. ich dachte gameplan meint solche constraints, weil er "gelenke" geschrieben hat.
Posted By: HeelX

Re: Physikentities rotieren und bewegen - 03/12/12 00:13

Achso, das habe ich dann wohl gekonnt überlesen wink Ja, genau, die sind dann "ein Körper", aber sind halt auseinanderreißbar bei einer zu hohen Krafteinwirkung. "Steifheit" für normale Gelenke habe ich auch versucht hinzukriegen und hab das dann so gelöst, dass ich die relativ steif modelliert habe, mit hohem Iterationscount und wenn ein gewisses Dreh/Schiebemoment unterschritten wird, schalte ich das fixed-constraint zu, um das Gelenk zu fixieren. Wenn ich wieder Kraft aufwende, schalte ich es ab und es geht wie gewohnt weiter.
© 2024 lite-C Forums