Gamestudio Links
Zorro Links
Newest Posts
folder management functions
by VoroneTZ. 04/16/24 11:18
lookback setting performance issue
by 7th_zorro. 04/16/24 03:08
zorro 64bit command line support
by 7th_zorro. 04/15/24 09:36
Zorro FIX plugin - Experimental
by flink. 04/14/24 07:48
Zorro FIX plugin - Experimental
by flink. 04/14/24 07:46
LPDIRECT3DCUBETEXTUR
E9

by Ayumi. 04/12/24 11:00
Sam Foster Sound | Experienced Game Composer for Hire
by titanicpiano14. 04/11/24 14:56
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
6 registered members (VoroneTZ, ricky_k, Nymphodora, rki, 7th_zorro, Volkovstudio), 420 guests, and 3 spiders.
Key: Admin, Global Mod, Mod
Newest Members
11honza11, ccorrea, sakolin, rajesh7827, juergen_wue
19045 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 2 1 2
Kranarm / Steifes Gelenk #383629
09/22/11 20:27
09/22/11 20:27
Joined: Jul 2001
Posts: 6,904
H
HeelX Offline OP
Senior Expert
HeelX  Offline OP
Senior Expert
H

Joined: Jul 2001
Posts: 6,904
Hallo, ich arbeite an einer Vehikelsimulation. Es geht hierbei um einen Kramarm, der auf einem Fahrzeug montiert ist. Auf der Plattform, auf der Kran montiert ist, ist eine vertikale Basis montiert, die sich um die Z-Achse um 360° drehen kann. An dieser Basis ist ein erstes Kranarm-Element verbaut, dass nur um dessen relative Y-Achse gedreht werden kann in einem Winkel von etwa -22.5° ... +80°.

Ich hab die Basis mit dem Fahrzeug mit einem hinge, und den Arm mit der Basis mit einem Hinge gekoppelt. Ich möchte gerne, dass ich auf Tastendruck jeweils eine Kraft ausübe, um die Basis zu drehen oder den Kram hoch oder runter zu bewegen - natürlich samt Kollision mit dem Fahrzeug und anderen Physikentities. Wenn ich keine Kraft ausübe, sollen beide entities "festgehalten" werden, die Basis darf sich nicht durch das Gewicht der angekoppelten Sachen weiterdrehen. Der Arm darf sich nicht durch sein eigenes und auch nicht durch ein fremdes Gewichte, herunterneigen.

Ohne den Arm hat das ganz gut geklappt, einfach die Damping-Werte der Basis auf 100, 100 zu stellen. Mit Armelement geht das nicht, das Gewicht lässt die Basis drehen, auch je nachdem wie das Fahrzeug steht (z.B. am Hang).

Ich hatte die Idee, die hinge parameter ganz klein zu wählen, also sowas wie -5°, 5° und dann, wenn man Kraft ausüben will, die zu lösen (also auf -360°,360° und -22.5°,45° zu stellen), den Benutzer machen lassen, und sobald die Taste gelöst wird, die Grenzen erneut zu setzen, allerdings verschoben um das offset, was mir pXcon_getposition gibt - also wenn man um ~+10° = +0.175 rad verschoben hat, dann wäre das Gelenk der Basis dann auf 0.088 rad, 0.262 rad eingeschränkt (das kann ich allerdings nicht ausprobieren, weil es damit Probleme gibt).

Generell wollte ich fragen, ob dieses Vorgehen sinnvoll ist.

Und wenn nicht, was Sie empfehlen würden. Ich hab den Verdacht, dass ich da besser einen 6D-Joint nehmen sollte. Allerdings kann ich mir die Verwendung aus dem Manual heraus nicht erschließen... ich hab mir auch Mühe gegeben wink (Anregung: die vorhandenen Joints als 6D-Joint umsetzen und in der Manual abdrucken, das hilft dem Verständniss sehr, würde ich sagen.)

Last edited by HeelX; 09/22/11 20:32.
Re: Kranarm / Steifes Gelenk [Re: HeelX] #383650
09/23/11 08:02
09/23/11 08:02
Joined: Jul 2000
Posts: 27,978
Frankfurt
jcl Offline

Chief Engineer
jcl  Offline

Chief Engineer

Joined: Jul 2000
Posts: 27,978
Frankfurt
Ich möchte diese Frage an die User weitergeben, denn meine Erfahrungen mit PhysX beschränken sich auf das Raycast-Car und ein paar Testscripts.

Mit Damping kann man kein Gelenk blockieren, aber das Festsetzen der Hinge-Limits müsste funktionieren. Unter bestimmten Umständen kann sich ein Gelenk aber auch über die Limits hinausdrehen.

Eine andere Möglichkeit zum Blockieren wäre, den Kranarm einfach temporär mittels eines unsichtbaren Gelenks mit der Welt zu verbinden. Dann kann sich nichts mehr bewegen.

Das Simulieren der anderen Gelenke durch 6D ist eine gute Idee - wenn ich Zeit habe, mache ich das.

Re: Kranarm / Steifes Gelenk [Re: jcl] #383675
09/23/11 15:50
09/23/11 15:50
Joined: Jul 2001
Posts: 6,904
H
HeelX Offline OP
Senior Expert
HeelX  Offline OP
Senior Expert
H

Joined: Jul 2001
Posts: 6,904
Originally Posted By: jcl
Eine andere Möglichkeit zum Blockieren wäre, den Kranarm einfach temporär mittels eines unsichtbaren Gelenks mit der Welt zu verbinden. Dann kann sich nichts mehr bewegen


Das wird leider nicht möglich sein, da der Benutzer das Fahrzeug weiterhin steuern kann und dann muss der Kran in der aktuellen Pose "mitgefahren" werden.

Naja, vielleicht hat ja jemand noch eine Idee, ansonsten warte ich auf die Behebung des Fehlers, den ich ja oben bereits verlinkt habe.

Re: Kranarm / Steifes Gelenk [Re: HeelX] #383999
09/28/11 00:09
09/28/11 00:09
Joined: Oct 2004
Posts: 900
Lgh
rojart Offline
User
rojart  Offline
User

Joined: Oct 2004
Posts: 900
Lgh
schon mal kinetisch versucht?


Regards, Robert

Quote
Everything should be made as simple as possible, but not one bit simpler.
by Albert Einstein

PhysX Preview of Cloth, Fluid and Soft Body

A8.47.1P
Re: Kranarm / Steifes Gelenk [Re: rojart] #384015
09/28/11 08:54
09/28/11 08:54
Joined: Jul 2000
Posts: 27,978
Frankfurt
jcl Offline

Chief Engineer
jcl  Offline

Chief Engineer

Joined: Jul 2000
Posts: 27,978
Frankfurt
Man könnte zum Blockieren auch das Ende des Kranarms mit dem Kran selbst verbinden. Dann dürfte sich nichts mehr bewegen.

Re: Kranarm / Steifes Gelenk [Re: jcl] #384044
09/28/11 16:41
09/28/11 16:41
Joined: Jul 2001
Posts: 6,904
H
HeelX Offline OP
Senior Expert
HeelX  Offline OP
Senior Expert
H

Joined: Jul 2001
Posts: 6,904
Wenn ich NX_BF_KINEMATIC der Basis zuweise, dann kann ich das Gefährt nicht mehr fahren (die Basis ist an einen Anhänger montiert, der wiederum über einen Hinge an der Zugmaschine festgemacht ist).

Dann hab ich geschaut, ob ich - nachdem JCL wohl den bug für die A8.30.3 gefixedt hat - mit pXcon_setparams2 die Limits neu setzen kann. Fehlanzeige: egal was ich mache (relative Winkel, also -5 und +5 oder absolut - aktueller Winkel -5/+5 und nochmal ang() drumherum), es zeigt keinen Effekt.

Quote:
Man könnte zum Blockieren auch das Ende des Kranarms mit dem Kran selbst verbinden. Dann dürfte sich nichts mehr bewegen.


Ich weiß nicht ganz wie ich das machen soll, da ich im Moment folgendes Setup habe:

Maschine - Anhänger - Basis - Erster Arm

Und Folgendes haben will:

Maschine - Anhänger - Basis - Erster Arm - Zweiter Arm - Teleskop Arm - Schwungelement - Greiferbasis - Klammer 1 & 2

Wobei ich mit jeder Entity ja den Joint zur vorherigen anspreche. Das Problem ist, das die Kette ja noch weiter geht und ich ab der Basis jedes Gelenk gezielt motorisieren will über die Tastatur. Die Basis drehen, den ersten Kranarm neigen, den zweiten Kranarm neigen, den dritten teleskopisch ausfahren. Daran hängt ein freischwingender Hinge, an dem ein Greifer hängt, dem man drehen soll und daran sind zwei Klammern, die bewegt werden sollen - also alles auf Tastendruck. Das heißt, die beiden Gelenke, die "echt" frei sein sollen sind die zwischen Maschine und Hänger und zwischen Spitze/Teleskoparm und Greifer.

Ich weiß auch ehrlich gesagt nicht wie ich dann auf mehrere Constraints zugreife, die zwischen zwei Entities installiert werden, wenn jede der beiden Entities wiederum mit anderen Entities verbunden sind...

@JCL: Können Sie vielleicht nochmal gucken, ob Sie auch tatsächlich die neuen Winkellimits setzen?

In der Zwischenzeit versuche ich mal kurzfristig via pXent_enable die Entity auszuschalten, und dann neu einzuschalten und das constraint neu aufzubauen, da dann aber die Winkellimits einzustellen.

Re: Kranarm / Steifes Gelenk [Re: HeelX] #384046
09/28/11 17:00
09/28/11 17:00
Joined: Jul 2001
Posts: 6,904
H
HeelX Offline OP
Senior Expert
HeelX  Offline OP
Senior Expert
H

Joined: Jul 2001
Posts: 6,904
Also wenn ich eine Physikentity aktiv habe mit Limits von -5...5 Grad, und dann setparams2 aufrufe mit -360, 360, dann werden die Grenzen definitiv nicht aufgehoben. Soviel schon mal dazu smile

Re: Kranarm / Steifes Gelenk [Re: HeelX] #384048
09/28/11 17:29
09/28/11 17:29
Joined: Jul 2001
Posts: 6,904
H
HeelX Offline OP
Senior Expert
HeelX  Offline OP
Senior Expert
H

Joined: Jul 2001
Posts: 6,904
Also ich habe mäßigen Erfolg, wenn ich im selben frame das constraint, das ich ansteuern will via pXcon_remove lösche, setparams2 mit -360,360 aufrufe, dann solange die force anwende, während ich die Taste drücke, und wenn ich fertig bin mit Drücken, dann erneut das constraint lösche und ein ganz enges anlege.

Mäßig bedeutet hier, auch wenn ich pXent_setbodyflag(my, NX_BF_FROZEN_ROT, 1); anwende, dass mir die Basis unter dem Gewicht des Arms bei wiederholter Anwendung leicht nach vorne neigt jedes Mal, wenn ich das constraint löse und wieder anlege.

Ein wenig besser ist es, wenn ich pX_enable mit 0 auf dem gesamten Kran ausführe und dann die constraints neu anlege und das eine, was ich ansteuern will, halt öffne und dann später auf dieselbe Weise dann alle wieder anlege - dann neight sich mir die Basis weniger weg.

Viel besser wäre, es wenn setparams2 für hinges zur Laufzeit die Limits neu setzen könnte, irgendwie hab ich das Gefühl, dass das wesentlich sauberer ist wäre als das, was ich mir da jetzt zusammengehackt habe.

Last edited by HeelX; 09/28/11 17:30.
Re: Kranarm / Steifes Gelenk [Re: HeelX] #384080
09/28/11 23:11
09/28/11 23:11
Joined: May 2002
Posts: 7,441
ventilator Offline
Senior Expert
ventilator  Offline
Senior Expert

Joined: May 2002
Posts: 7,441
ich hab nicht den kompletten thread gelesen, aber vielleicht hilft dir das weiter:
http://en.wikipedia.org/wiki/PID_controller
hat mir immer sehr geholfen bei der arbeit mit physikengines...

Re: Kranarm / Steifes Gelenk [Re: ventilator] #384132
09/29/11 17:20
09/29/11 17:20
Joined: Jul 2000
Posts: 27,978
Frankfurt
jcl Offline

Chief Engineer
jcl  Offline

Chief Engineer

Joined: Jul 2000
Posts: 27,978
Frankfurt
Was die setparams2 betrifft, kann ich das Problem bestätigen. Wenn einmal ein Limit gesetzt ist, lässt es sich nicht mehr verändern - anscheinend eine Eigenschaft von Hinge-Joints in PhysX. Wir werden einen Workaround implementieren, z.B. beim Limit setzen das Gelenk entfernen und neu erzeugen, allerdings nicht mehr für Version 8.30.

Page 1 of 2 1 2

Moderated by  old_bill, Tobias 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1