Zucken einer Ragdoll beim Sperren eines Winkels

Posted By: xxxxxxx

Zucken einer Ragdoll beim Sperren eines Winkels - 04/07/11 16:21

Hallo,
ich habe neulich mal bei meiner Ragdoll den pan-Winkel der Gelenken gesprerrt, als ich mein Script startete zuckte die Ragdoll, also es sah aus als würden die Gelenke von ohne irgendwelche bewegungen den Winkel wechseln! Ich habe schon versucht das durch pXent_setiterations(selbst bei einem Wert um die 500) zu fixen, auch das Festellen der physX-rate brachte nichts, leider. frown
Ich benutze Windows 7, A8.10.0 Commertial, Hardware: Nvidea Geforce 460 GTX und eine Core i7 930 CPU.
Wenn benötigt kann ich auch ein Beispiel uploaden!

Noch eine kleine Frage/Bitte(Ich weiß, gehört hier nicht rein! Ich will aber keine zwei Threds aufmachen): Ich bekam im Forum keine Lösung um das abprallen einer PhysX-Entity ganz abzuschalten! Geht das? Wenn das nicht geht und es nicht zuviel Arbeit machen würde währe es schön wenn man das Abprallen ausstellen könnte.
Danke im schonmal im Voraus! laugh
xxxxxxx
Posted By: jcl

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/11/11 13:33

Wenn irgend etwas beim Starten zuckt, sich sonst aber ok verhält, ist zumeist eine Initialisierung die Ursache. Checken Sie Ihr Skript im Hinblick auf Initialisierung von Variablen und Bounding Boxes.

Zum Verhindern des Abprallens setzen Sie die Elastizität auf 0, nicht nur bei dem Objekt selbst, sondern auch bei den anderen Objekten, mit denen es kollidiert.
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/11/11 14:17

Nur leider zuckt meine Ragdoll auch nach dem Starten, jedenfalls sollten die Initialisierungen nach ein paar miniuten abgeschlossen sein(es ist nur ein pures Ragdoll-Script mit keinerlei anderen functionen, ausser jeden frame pX_pick() und dem setzen der Position/Winkel einer nicht physX-Entity). frown
Ich habe das Problem aus Zufall mit ein paar kleinen Cubes nachgestellt, eigentlich sollten sich alle nur auf der x und z Achse bewegen, was sie auch weitesgehend tun, nur manche springen approbt in die Luft oder ruckeln auf der y Achse hin und her.
-------------------------
Ja, das habe ich schon gemacht, es prallt trotzdem ab(nicht sehr stark)! Ich habe allerdings eine hohe Fallhöhe meiner Ragdoll gewählt(5000), Jedoch sollte soeine Ragdoll bei einer solchen höhe nicht abprallen...
xxxxxxx
Posted By: jcl

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/12/11 14:36

Dann kann ich nur den Hinweis geben, an den Parametern herumzuschrauben. Ich habe bisher leider noch keine Erfahrungen mit zuckenden Ragdolls und kann daher keine direkte Hilfe leisten.
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/12/11 19:52

Ok, ich habe jetzt schon sehr viel versucht!
Leider brachte nichts einen gewünschten Effekt. frown
Was mir auch auffällt das Zucken sieht nicht einem Abprall, oder so etwas Ähnlichen ausieht, es ähnelt einer direkten Winkel veränderung.

Sie können sich hier auch selber ein Bild davon machen.
Click to reveal..
http://www.2shared.com/file/c5UtTBc7/pXproblems.html
1. Ein Gelenke die dafür sorgt, dass ihr jeweiliger Würfel sich nur in der x/z Achse bewegen und nur den Tilt-Winkel ändern kann.
Hier kann man ab und zu beobachten wie Steine ohne jegliche Berührung von anderen in die Luft fliegen.(gespeichert im Unterordner "allgemein")
2. Eine Ragdoll wo jeweils der Pan-Winkel der Gelenke gesperrt sind. Durch die Maus kann man die Ragdoll bewegen und somit, falls es noch nicht von alleine erscheint, das Zucken erzeugen.(gespeichert im Unterordner "Ragdoll")

xxxxxxx
Posted By: ventilator

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/12/11 21:54

ich weiß nicht wie es bei dir genau aussieht (mir wäre ein video lieber), aber ein gewisses zucken ist bei den meisten physikengines normal. nur newton zuckt fast gar nicht. laugh
Posted By: rojart

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/13/11 08:29

Ersetze Motion[3] = NX_D6JOINT_MOTION_LOCKED; durch Motion[3] = NX_D6JOINT_MOTION_FREE; und das Zucken ist komplett weg.

ps
Bitte optimiere dein code, sonst verlierst du später vielleicht den Überblick.
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/13/11 12:48

@ventilator,
Gut dann mach ich ein Video! laugh
Ich rede nicht davon das mal eben ein Arm ein kleines Bisschen die Ausrichtung ändert, es ist richtig Stark, es sind so drehungen um teilweise 45°-180°...
@rojart,
was soll das bringen? Ich will doch gerade den Pan-Winkel sperren, ohne das Sperren gehts doch! grin
Ja, ich weis der Code sieht momentan nicht sehr schön aus, aber ich habe auch noch kaum einen plan wie ich die ganzen Befehle kurz fassen soll...
xxxxxxx
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/13/11 14:24

http://www.youtube.com/user/DrNussknacker?feature=mhsn#p/a/u/0/hwWOCFENaJs
Sorry für die Quali ich hab irgend ein uraltes fraps genommen was nur 640*480 konnte.... und ausserdem nur 30 fps auf 512 ruckt es nicht gans so stark.
xxxxxxx
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/14/11 13:28

Hat denn keiner eine Idee woran das liegen könnte... frown
Posted By: Pappenheimer

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/14/11 13:41

Ich habe den Verdacht, dass die Kollisionshüllen der Einzelteile leicht ineinander'haken' und dadurch immer wieder Kollisionen stattfinden.
Demnach müsste man die Einzelteile weiter auseinander platzieren.

Zum anderen würde ich nur einfache Formen wie Boxen für die Einzelteile verwenden.

Wenn das dann zum gewünschten Verhalten führen sollte, dann kann man ein Model an die Boxen anbinden und die Boxen auf unsichtbar setzen.
Posted By: rojart

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/14/11 13:44

Warum willst du alle Gelenke sperren lassen, daher kommt doch das Zucken, oder?
Ich würde es auf deiner stelle individuell einschränken mit NX_D6JOINT_MOTION_LIMITED und dann für bestimmte Gelenke (nicht alle) mit pXcon_setparams2 der pan vector auf 0 setzen.
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/14/11 15:01

@Pappenheimer
Ja das dachte ich auch schon, allerdings bringt es nichts die Objekte weiter auseinander zu setzen... frown
Das mit den Boxen werde ich machen. Allerdings wird es schwierig sie dem physX-Kolisions-System anzupassen...
@rojart
Originally Posted By: rojart
Warum willst du alle Gelenke sperren lassen, daher kommt doch das Zucken, oder?
Damit die Einzelteile meiner Ragdoll sich nicht wie behindert im Kreis drehen! wink
Posted By: jcl

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/14/11 17:36

Nehmen Sie für eine Ragdoll keine Boxen, sondern Capsules. Diese sind etwas schneller und haben keine Kanten, können sich also nicht verhaken.
Posted By: rojart

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/14/11 21:08

Originally Posted By: xxxxxxx
Damit die Einzelteile meiner Ragdoll sich nicht wie behindert im Kreis drehen! wink

Das ist mir schon klar das sich nicht drehen sollte, aber früher oder später wirst du es verstellen müssen, weil einige Körper teile nicht gesperrt sein sollten, und um zu sehen wie sich es verhält, entsperre es Einzel nach:

Motion[3] = NX_D6JOINT_MOTION_FREE; Motion[4] = NX_D6JOINT_MOTION_LOCKED; Motion[5] = NX_D6JOINT_MOTION_LOCKED; (Roll Winkel theoretisch)
Motion[3] = NX_D6JOINT_MOTION_LOCKED; Motion[4] = NX_D6JOINT_MOTION_FREE; Motion[5] = NX_D6JOINT_MOTION_LOCKED; (Tilt Winkel theoretisch)
Motion[3] = NX_D6JOINT_MOTION_LOCKED; Motion[4] = NX_D6JOINT_MOTION_LOCKED; Motion[5] = NX_D6JOINT_MOTION_FREE; (Pan Winkel theoretisch)
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/16/11 11:28

So ich hab jetzt alles zu Capsules gemacht, außerden den Kopf da musste ich eine Sphere nehmen(mit Capsules hat der Kopf wild geruckelt). Die Ragdoll hat trotz den Veränderungen allerdings immer noch das Zucken wenn man einen Winkel sperrt.
Wie gesagt, es Betrifft nicht nur meine Ragdoll sondern auch Sidescroller.
@rojart
das habe ich schon längst gemacht rojart.

Ich hoffe irgendjemand weiß noch Rat...
xxxxxxx
Posted By: rojart

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/16/11 16:16

Entweder willst du es nicht verstehen oder hast du es falsch verstanden, ein Ragdoll funktioniert ohne Zucken nur dann wenn es eingeschränkt und nicht wenn ein bestimmtes Winkel deaktiviert wird.
Warum willst du es nicht einfach mit (NX_D6JOINT_MOTION_LIMITED) Einschränkung versuchen?
Stell dir eine simple frage, was passiert wenn ich an meinem eigenen Körper den Pan, Tilt oder Roll Winkel komplett deaktiviert hätte, kannst du dann noch richtig funktionieren?

In dem letzten Beispiel musstest du dann gesehen haben das z.B. Bein1L sich theoretisch als Pan Winkel gedreht hat, aber OberarmL wiederum hatte theoretisch Roll Winkel, so wenn du jetzt ein Winkel sperrst, dann sind es genau im schlimmsten Fall sogar zwei, daher für Ragdolls ist die höchste Priorität NX_D6JOINT_MOTION_FREE oder NX_D6JOINT_MOTION_LIMITED zu benutzen.
Momentan bin ich ziemlich beschäftigt, aber nächste Woche versuche ich dir eine Ragdoll Demo mit Einschränkung, wie es richtig funktionieren sollte zu zeigen, wenn du bis dahin nicht selber auf die reihe hinbekommst.
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/16/11 18:36

Achso, Sorry bin manchmal schwer von Begriff. grin
Natürlich werde ich NX_D6JOINT_MOTION_LIMITED benutzen das war erstmal nur, weil ich keine Lust hatte für jedes Gelenk die richtigen Winkel herauszufinden.
Ich werd mich spätestens Morgen dran setzen.
PS: Vielen Dank, dass du mir eine Demo schreiben(o. wenn ichs falsch verstanden hab "zeigen") willst.
xxxxxxx
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/16/11 21:46

Da hab ich jetzt doch die Frage was hieran falsch sein soll:
Code:
VECTOR* swingLimit = vector(30,70,0);
VECTOR* twistLimit = vector(-90,45,0);
VECTOR* linearLimit = vector(10,0,0);
pXcon_add(PH_6DJOINT,Body1,Body2,0);
vec_for_bone(to.x,Skelett,"Body");
pXcon_setparams1(Body1, to.x,NULL,NULL);
pXcon_setparams2(Body1,swindLimit,twistLimit,linearLimit);
pXcon_set6djoint(Body1,Motion,NULL);


hier mein Motion
Code:
Motion[0] = NX_D6JOINT_MOTION_LOCKED;
Motion[1] = NX_D6JOINT_MOTION_LOCKED;
Motion[2] = NX_D6JOINT_MOTION_LOCKED;
Motion[3] = NX_D6JOINT_MOTION_LIMITED;
Motion[4] = NX_D6JOINT_MOTION_LIMITED;
Motion[5] = NX_D6JOINT_MOTION_LIMITED;



ERGEBNIS:
es passiert NICHTS, also es ist wie ein steinklotzt.
PS: das ist code aus dem manual, jedenfalls was freiheits grade anbetrift.

Wäre nett wenn mir jemand erklären könnte wie ich die Winkel begrezen kann und irgendwie erscheint mir es so das man nur 2 Winkel begrenzen kann... confused
xxxxxxx
Posted By: rojart

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/17/11 07:23

Also auf denn ersten blick, du benutzt die Vectors als Globale struct Pointer, ersetze durch:
Code:
VECTOR* swingLimit = {x=30;y=70;z=0;}
VECTOR* twistLimit = {x=-90;y=45;z=0;}
VECTOR* linearLimit = {x=10;y=0;z=0;}


Sonst, wenn die Vectors in einer funktion benutzt werden, dann wie der code unten.
Außerdem ein kleiner tipp fehler rot markiert:

pXcon_setparams2(Body1,swindLimit,twistLimit,linearLimit);

Code:
VECTOR swingLimit; vec_set(swingLimit, vector(30,70,0));
VECTOR twistLimit; vec_set(twistLimit, vector(-90,45,0));
VECTOR linearLimit; vec_set(linearLimit, vector(10,0,0));
pXcon_add(PH_6DJOINT,Body1,Body2,0);
vec_for_bone(to.x,Skelett,"Body");
pXcon_setparams1(Body1, to.x,NULL,NULL);
pXcon_setparams2(Body1,swingLimit,twistLimit,linearLimit);
pXcon_set6djoint(Body1,Motion,NULL);



Posted By: MasterQ32

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/17/11 09:52

Hast du schon mal pXent_setcollisionflag ausporbiert?
Weil deine Ragdoll-Teile kollidieren ja ineinander und erzeugen dadurch ständig kollisionen und mit der Funktion kannst du diese Kollisionen ausschalten
ich würde es mal probieren

Manual sagt:
Code:
pXent_setcollisionflag( me, you, NX_IGNORE_PAIR); // no more collision between me and you entities


Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/17/11 10:36

Irgendwie bringt mich physX langsam zum verzweifeln cry
@rojart
ich habs jetzt beides ausprobiert ausprobiert, es passiert leider nichts. frown
@Richi007
Es bewegt sich auch hier leider nichts...

Vielen Dank für die bisjetzige Hilfe!
xxxxxxx
Posted By: rojart

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/17/11 11:03

Was meinst du es passiert nichts, bewegt sich gar nichts mehr?
Wäre es hilfreich, wenn ich dein geänderten Code sehen könnte.
Außerdem, bei mir funktioniert mit deine Einschränkung tadellos.
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/17/11 15:58

So siehts jetzt aus:
Code:
pXent_setcollisionflag( Body1, Body2, NX_IGNORE_PAIR);
pXcon_add(PH_6DJOINT,Body1,Body2,0);
vec_for_bone(to.x,Skelett,"Body");
pXcon_setparams1(Body1, to.x,NULL,NULL);
pXcon_setparams2(Body1,swingLimit,twistLimit,linearLimit);
pXcon_set6djoint(Body1,Motion,NULL);


Die vectoren:
Code:
VECTOR* swingLimit = {x=30;y=70;z=0;}
VECTOR* twistLimit = {x=-90;y=45;z=0;}
VECTOR* linearLimit = {x=10;y=0;z=0;}



eigentlich sollte jetzt meine Ragdoll im Bauch beweglich sein, das habe ich auch schon mit mehreren Gelenken (gleichzeitig) ausprobiert.
PS: ich habe mir heute schon ein neues physX runtergeladen aber das ändert auch nichts.
xxxxxxx
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/19/11 17:01

keine Ideen mehr? frown
Posted By: rojart

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/19/11 17:28

Kleiner Tipp, du benutzt die Globale Einschränkungen für alle Gelenke gleich groß.
Setze einige, wie der im Bauch individuell ein.
Außerdem, benutzte den Visual Debugger von der PhysX SDK, um es zu sehen wie dein Ragdoll nach eine bestimmte Änderung sich verhält.
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/19/11 18:13

mir ist grade durch einen anderen Test aufgefallen das die Gelenke durch aus verformbar sind nur sobald man sie losläst "wakeln"(so ähnlich wie ein sprungbrett im schwinbat) in ihre uhrsprungs ausrichtung position confused
Gibt es da irgendwelche parameter zu setzen???

PS: Was ist der "Visual Debugger von der PhysX SDK" und wie ruft man ihn auf, ich finde ihn nicht. frown
xxxxxxx
Posted By: Widi

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/19/11 18:22

Hier guckst du...

(erstellt von Quadraxas)
Posted By: rojart

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/19/11 18:52

Originally Posted By: xxxxxxx
PS: Was ist der "Visual Debugger von der PhysX SDK" und wie ruft man ihn auf, ich finde ihn nicht. frown
xxxxxxx

Quote:
What is PVD (PhysX Visual Debugger)?
The PhysX Visual Debugger is an object-based database application for analyzing captured data from a remote engine. It can display a set of objects and properties and track the changes to those items over time, "playing" the object graph forward and rewinding it so that developers can analyze the state of the PhysX engine and their application frame by frame.

It contains basic database querying capabilities accessed through the main menu and through the python extension layer and thus users can graph states of objects over time and in relation to each other. In addition it contains a 3D view of the scene from PhysX's perspective allowing quick scene overview and understanding of the engine's current state of PhysX actors.


Hier (NVIDIA PhysX SDK 2.8.1) kannst du eine ältere Version beziehen, dort findest du auch viele PhysX Examples, sonst für eine neue Version muss du dich auf der Developer Homepage von Nvidia registrieren lassen.

Originally Posted By: Widi
Hier guckst du...

(erstellt von Quadraxas)
grin
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/19/11 20:16

war klar das "let me google this for you" kommt... grin

soweit sogut ich habe jetzt allerdigs keine ahnung wie ich diesen Debugger verwende - sorry für die blöden Fragen...
Posted By: rojart

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/20/11 05:50

Also, als erstes wird der PVD gestartet damit er im Hintergrund alle deine PhysX Aktivitäten aufzeichnen kann, danach wird z.B deine Ragdoll app gestartet.
Normaler weise kannst du sofort sehen was der PVD aufgenommen hat, beende aber rechtzeitig deine Ragdoll app, um in der PVD dein Ragdoll zu analysieren.
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/20/11 11:58

Ich habe zu der public beta geupdated - wie ichs mir schon dachte - das problem mit dem begrenzen war WEG!!! laugh - muss wohl ein problem bei der instalation von A8.10.1 gewesen sein...
Allerdings meine ich immer noch ein zucken zu sehen, aber erstmal werde ich die freiheits grade richtig setzen und wenns dann immer noch zuckt, melde ich mich noch einmal...
xxxxxxx
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/21/11 10:30

irgenwie versteh ich das prinzip vom sperren nochnicht nicht soganz...
ich hab ja jetzt zwei vectoren swingLimit und twistLimit zum sperren, nun will ich einstellen das mein unteram sich nur in einer richtung zum oberarm hindrehen kann. Jetzt weiß ich nicht was ich wie einstellen soll oder was was genau macht, irgenwie krieg ich nur sowas wie 90° = 45° in die eine und 45° in die andere richtung hin. frown
xxxxxxx
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/21/11 20:48

*push
Posted By: soulkeep

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/22/11 05:54


Thank you suggest, but good things to come.
Posted By: rojart

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/22/11 21:30

Originally Posted By: xxxxxxx
irgenwie versteh ich das prinzip vom sperren nochnicht nicht soganz...
ich hab ja jetzt zwei vectoren swingLimit und twistLimit zum sperren, nun will ich einstellen das mein unteram sich nur in einer richtung zum oberarm hindrehen kann. Jetzt weiß ich nicht was ich wie einstellen soll oder was was genau macht, irgenwie krieg ich nur sowas wie 90° = 45° in die eine und 45° in die andere richtung hin. frown
xxxxxxx

Richtung kann man mit (Parameter 2 Joint axis) verändern.

Beispiel:
Code:
pXcon_add(PH_6DJOINT, UnterarmR, OberarmR, 0);
pXent_setcollisionflag(UnterarmR, OberarmR, NX_IGNORE_PAIR);
vec_for_bone(to.x, Skelett, "ArmR1");
pXcon_setparams1(UnterarmR, to.x, vector(0,-1,0), NULL);
pXcon_setparams2(UnterarmR, NULL, vector(0,135,0), NULL);
pXcon_set6djoint(UnterarmR, Motion, NULL);


Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/23/11 20:45

Vielen Dank rojart!

Ich dachte nur es währe einfacher geregelt zb. so:
pXcon_setparams2(UnterarmR, vector(min_pan,min_tilt,min_roll), vector(max_pan,max_tilt,max_roll), NULL);
aber egal...

Alle winkel auser an der schulter, sind jetzt richtig gesetz.
Bei der schulter kriege ich das gelenk einfach nicht hin frown
hier der code
Code:
pXent_setcollisionflag(OberarmL,Body3, NX_IGNORE_PAIR);
pXcon_add(PH_6DJOINT,OberarmL,Body3,0);
vec_for_bone(to.x,Skelett,"ArmL");
pXcon_setparams1(OberarmL, to.x,vector(0,0,1),NULL);
pXcon_setparams2(OberarmL,vector(120,120,150),NULL,NULL);

pXcon_set6djoint(OberarmL,Motion,NULL);


mein problem ist das wenn ich versuche die hand per px_pick(); auf die andere schulter zu ziehen, der oberarm an der richtigen stelle stoppt, jedoch der unterarm sich vom kopf hin/weg dreht statt zur schulter...

es leuft gut wenn man roll aus NX_D6JOINT_MOTION_FREE setzt aber da dreht sich der arm an vielen stellen unütz kann man das irgendwie fixen?

EDIT: Das Zucken ist NICHT weg! frown
xxxxxxx
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/25/11 11:09

Ich hab jetzt das Gelenk doch noch richtig setzen können, jetzt zuckt es (mal wieder) wie verückt...
Was ich beim Testen auch bemerkt habe ist das das Zucken teilweise dadurch kommt, dass das Gelenk sich bspw. durch einen teilweise blockierten Roll-Winkel nur solange aufhalten lässt bis es in eigenlicheinen wieder erlaubten Bereich kommt und dann dort auch hinflippt, egal ob es dabei durch einen verbotenen Bereich kommt oder nicht! - Es fiel mir jedenfalls soetwas auf während ich mit dem Begrenzen/Sperren experimentierte...
Was meint ihr ist das ein Bug?
xxxxxxx
Posted By: rojart

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/25/11 13:08

Um es nachzuvollziehen, wäre gar nicht verkehrt geänderten code hier zu sehen.
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/25/11 13:47

hier viel Spaß xD:
sorry hab noch nichts in einer schleife oder so gepackt
Code:
///////////////////////////////
#include <acknex.h>
#include <default.c>
#include <ackphysx.h>

///////////////////////////////
ENTITY* Kopf;
ENTITY* OberarmR;
ENTITY* UnterarmR;
ENTITY* HandR;
ENTITY* OberarmL;
ENTITY* UnterarmL;
ENTITY* HandL;
ENTITY* Bein1R;
ENTITY* Bein2R;
ENTITY* FussR;
ENTITY* Bein1L;
ENTITY* Bein2L;
ENTITY* FussL;
ENTITY* Body1;
ENTITY* Body2;
ENTITY* Body3;
ENTITY* Hals;
ENTITY* Haare;
ENTITY* Skelett;
ENTITY* Plane;
VECTOR* swingLimit = {x=60;y=0;z=0;}
VECTOR* twistLimit = {x=-30;y=0;z=0;}
VECTOR* linearLimit = {x=0;y=0;z=0;}
var elasticity = 0;
var linear = 0;
var angular = 0;
var friction = 0;

function main()
{
	vec_set(screen_size,vector(1200,900,0));
	ENTITY* to;
	var Motion[6];
	var Motion2[6];
	video_window(NULL,NULL,0,"PhysX Grundsteuerung");
	physX_open();
	pX_setsteprate(512, 8, NX_TIMESTEP_FIXED);
	pX_setccd (1);
	level_load("");
	Motion[0] = NX_D6JOINT_MOTION_LOCKED;
	Motion[1] = NX_D6JOINT_MOTION_LOCKED;
	Motion[2] = NX_D6JOINT_MOTION_LOCKED;
	Motion[3] = NX_D6JOINT_MOTION_LIMITED;
	Motion[4] = NX_D6JOINT_MOTION_LIMITED;
	Motion[5] = NX_D6JOINT_MOTION_LIMITED;
	Plane = ent_create(NULL, nullvector,NULL);
	Kopf = ent_create("Kopf.mdl",nullvector,NULL);
	OberarmR = ent_create("ArmR1.mdl",nullvector,NULL);
	UnterarmR = ent_create("ArmR2.mdl",nullvector,NULL);
	HandR = ent_create("HandR.mdl",nullvector,NULL);
	OberarmL = ent_create("ArmL1.mdl",nullvector,NULL);
	UnterarmL = ent_create("ArmL2.mdl",nullvector,NULL);
	HandL = ent_create("HandL.mdl",nullvector,NULL);
	Bein1R = ent_create("BeinR1.mdl",nullvector,NULL);
	Bein2R = ent_create("BeinR2.mdl",nullvector,NULL);
	FussR = ent_create("FusR.mdl",nullvector,NULL);
	Bein1L = ent_create("BeinL1.mdl",nullvector,NULL);
	Bein2L = ent_create("BeinL2.mdl",nullvector,NULL);
	FussL = ent_create("FusL.mdl",nullvector,NULL);
	Body1 = ent_create("Body1.mdl",nullvector,NULL);
	Body2 = ent_create("Body2.mdl",nullvector,NULL);
	Body3 = ent_create("Body3.mdl",nullvector,NULL);
	Hals = ent_create("Hals.mdl",nullvector,NULL);
	Haare = ent_create("Haare.mdl",nullvector,NULL);
	Skelett = ent_create("Skelett.mdl",vector(0,0,500),NULL);
	to = ent_create(NULL,nullvector,NULL);
	ent_animate(Skelett,"Angle",0,NULL);
	
	vec_for_bone(Body1.x,Skelett,"Main");

	vec_for_bone(Body2.x,Skelett,"Body");
	vec_for_bone(to.x,Skelett,"Body1");
	vec_add(to.x,Body2.x);
	vec_mul(to.x,vector(0.5,0.5,0.5));
	vec_set(Body2.x,to.x);

	vec_for_bone(Body3.x,Skelett,"Body1");
	vec_for_bone(to.x,Skelett,"Body2");
	vec_add(to.x,Body3.x);
	vec_mul(to.x,vector(0.5,0.5,0.5));
	vec_set(Body3.x,to.x);

	vec_for_bone(Hals.x,Skelett,"Body2");
	vec_for_bone(to.x,Skelett,"Head");
	vec_add(to.x,Hals.x);
	vec_mul(to.x,vector(0.5,0.5,0.5));
	vec_set(Hals.x,to.x);

	vec_for_bone(Kopf.x,Skelett,"Head");
	vec_for_bone(to.x,Skelett,"Head1");
	vec_add(to.x,Kopf.x);
	vec_mul(to.x,vector(0.5,0.5,0.5));
	vec_set(Kopf.x,to.x);

	vec_for_bone(OberarmR.x,Skelett,"ArmR");
	vec_for_bone(to.x,Skelett,"ArmR1");
	vec_add(to.x,OberarmR.x);
	vec_mul(to.x,vector(0.5,0.5,0.5));
	vec_set(OberarmR.x,to.x);
	OberarmR.tilt = 90;

	vec_for_bone(UnterarmR.x,Skelett,"ArmR1");
	vec_for_bone(to.x,Skelett,"HandR");
	vec_add(to.x,UnterarmR.x);
	vec_mul(to.x,vector(0.5,0.5,0.5));
	vec_set(UnterarmR.x,to.x);
	UnterarmR.tilt = 90;

	vec_for_bone(HandR.x,Skelett,"HandR");
	vec_for_bone(to.x,Skelett,"HandR1");
	vec_add(to.x,HandR.x);
	vec_mul(to.x,vector(0.5,0.5,0.5));
	vec_set(HandR.x,to.x);
	HandR.tilt = 90;

	vec_for_bone(OberarmL.x,Skelett,"ArmL");
	vec_for_bone(to.x,Skelett,"ArmL1");
	vec_add(to.x,OberarmL.x);
	vec_mul(to.x,vector(0.5,0.5,0.5));
	vec_set(OberarmL.x,to.x);
	OberarmL.tilt = -90;

	vec_for_bone(UnterarmL.x,Skelett,"ArmL1");
	vec_for_bone(to.x,Skelett,"HandL");
	vec_add(to.x,UnterarmL.x);
	vec_mul(to.x,vector(0.5,0.5,0.5));
	vec_set(UnterarmL.x,to.x);
	UnterarmL.tilt = -90;

	vec_for_bone(HandL.x,Skelett,"HandL");
	vec_for_bone(to.x,Skelett,"HandL1");
	vec_add(to.x,HandL.x);
	vec_mul(to.x,vector(0.5,0.5,0.5));
	vec_set(HandL.x,to.x);
	HandL.tilt = -90;

	vec_for_bone(Bein1R.x,Skelett,"LegR");
	vec_for_bone(to.x,Skelett,"LegR1");
	vec_add(to.x,Bein1R.x);
	vec_mul(to.x,vector(0.5,0.5,0.5));
	vec_set(Bein1R.x,to.x);

	vec_for_bone(Bein2R.x,Skelett,"LegR1");
	vec_for_bone(to.x,Skelett,"FootR");
	vec_add(to.x,Bein2R.x);
	vec_mul(to.x,vector(0.5,0.5,0.5));
	vec_set(Bein2R.x,to.x);

	vec_for_bone(FussR.x,Skelett,"FootR");
	vec_for_bone(to.x,Skelett,"FootR1");
	vec_add(to.x,FussR.x);
	vec_mul(to.x,vector(0.5,0.5,0.5));
	vec_set(FussR.x,to.x);
	FussR.roll = -90;

	vec_for_bone(Bein1L.x,Skelett,"LegL");
	vec_for_bone(to.x,Skelett,"LegL1");
	vec_add(to.x,Bein1L.x);
	vec_mul(to.x,vector(0.5,0.5,0.5));
	vec_set(Bein1L.x,to.x);

	vec_for_bone(Bein2L.x,Skelett,"LegL1");
	vec_for_bone(to.x,Skelett,"FootL");
	vec_add(to.x,Bein2L.x);
	vec_mul(to.x,vector(0.5,0.5,0.5));
	vec_set(Bein2L.x,to.x);

	vec_for_bone(FussL.x,Skelett,"FootL");
	vec_for_bone(to.x,Skelett,"FootL1");
	vec_add(to.x,FussL.x);
	vec_mul(to.x,vector(0.5,0.5,0.5));
	vec_set(FussL.x,to.x);
	FussL.roll = -90;
	
	pXent_settype(Plane, PH_STATIC, PH_PLANE);
	pXent_settype(Kopf, PH_RIGID, PH_SPHERE);
	pXent_settype(OberarmR, PH_RIGID, PH_CAPSULE);
	pXent_settype(UnterarmR, PH_RIGID, PH_CAPSULE);
	pXent_settype(HandR, PH_RIGID, PH_CAPSULE);
	pXent_settype(OberarmL, PH_RIGID, PH_CAPSULE);
	pXent_settype(UnterarmL, PH_RIGID, PH_CAPSULE);
	pXent_settype(HandL, PH_RIGID, PH_CAPSULE);
	pXent_settype(Bein1R, PH_RIGID, PH_CAPSULE);
	pXent_settype(Bein2R, PH_RIGID, PH_CAPSULE);
	pXent_settype(FussR, PH_RIGID, PH_CAPSULE);
	pXent_settype(Bein1L, PH_RIGID, PH_CAPSULE);
	pXent_settype(Bein2L, PH_RIGID, PH_CAPSULE);
	pXent_settype(FussL, PH_RIGID, PH_CAPSULE);
	pXent_settype(Body1, PH_RIGID, PH_CAPSULE);
	pXent_settype(Body2, PH_RIGID, PH_CAPSULE);
	pXent_settype(Body3, PH_RIGID, PH_CONVEX);
	pXent_settype(Hals, PH_RIGID, PH_CAPSULE);
	
	pXent_setcollisionflag( Body1, Body2, NX_IGNORE_PAIR);
	pXcon_add(PH_6DJOINT,Body1,Body2,0);
	vec_for_bone(to.x,Skelett,"Body");
	pXcon_setparams1(Body1, to.x,NULL,NULL);
	pXcon_setparams2(Body1,vector(30,10,0),NULL,NULL);
	pXcon_set6djoint(Body1,Motion,NULL);

	pXent_setcollisionflag( Body2, Body3, NX_IGNORE_PAIR);
	pXcon_add(PH_6DJOINT,Body2,Body3,0);
	vec_for_bone(to.x,Skelett,"Body1");
	pXcon_setparams1(Body2, to.x,NULL,NULL);
	pXcon_setparams2(Body2,vector(30,20,0),NULL,NULL);
	pXcon_set6djoint(Body2,Motion,NULL);
	
	pXent_setcollisionflag( Hals, Body3, NX_IGNORE_PAIR);
	pXcon_add(PH_6DJOINT,Hals,Body3,0);
	vec_for_bone(to.x,Skelett,"Body2");
	pXcon_setparams1(Hals, to.x,NULL,NULL);
	pXcon_setparams2(Hals,vector(30,20,0),NULL,NULL);
	pXcon_set6djoint(Hals,Motion,NULL);
	
	pXent_setcollisionflag(Kopf, Hals, NX_IGNORE_PAIR);
	pXcon_add(PH_6DJOINT,Kopf,Hals,0);
	vec_for_bone(to.x,Skelett,"Head");
	pXcon_setparams1(Kopf, to.x,NULL,NULL);
	pXcon_setparams2(Kopf,vector(30,20,0),NULL,NULL);
	pXcon_set6djoint(Kopf,Motion,NULL);
	
	pXent_setcollisionflag(OberarmR,Body3, NX_IGNORE_PAIR);
	pXcon_add(PH_6DJOINT,OberarmR,Body3,0);	
	vec_for_bone(to.x,Skelett,"ArmR");
	pXcon_setparams1(OberarmR, to.x,vector(0,0,1),NULL);
	pXcon_setparams2(OberarmR,vector(120,120,0),vector(0, 0, 70),NULL);
	pXcon_set6djoint(OberarmR,Motion2,NULL);
	
	pXent_setcollisionflag(OberarmL,Body3, NX_IGNORE_PAIR);
	pXcon_add(PH_6DJOINT,OberarmL,Body3,0);
	vec_for_bone(to.x,Skelett,"ArmL");
	pXcon_setparams1(OberarmL, to.x,vector(0,0,1),NULL);
	pXcon_setparams2(OberarmL,vector(120,120,0),vector(0, 0, 70),NULL);
	pXcon_set6djoint(OberarmL,Motion2,NULL);
	
	pXent_setcollisionflag(UnterarmR, OberarmR, NX_IGNORE_PAIR);	
	pXcon_add(PH_6DJOINT, UnterarmR, OberarmR, 0);
	vec_for_bone(to.x, Skelett, "ArmR1");
	pXcon_setparams1(UnterarmR, to.x, vector(0,0,1), NULL);
	pXcon_setparams2(UnterarmR, NULL, vector(0,135,0), NULL);
	pXcon_set6djoint(UnterarmR, Motion, NULL);

	pXent_setcollisionflag(UnterarmL, OberarmL, NX_IGNORE_PAIR);	
	pXcon_add(PH_6DJOINT, UnterarmL, OberarmL, 0);
	vec_for_bone(to.x, Skelett, "ArmL1");
	pXcon_setparams1(UnterarmL, to.x, vector(0,0,-1), NULL);
	pXcon_setparams2(UnterarmL, NULL, vector(0,135,0), NULL);
	pXcon_set6djoint(UnterarmL, Motion, NULL);	
	
	pXent_setcollisionflag(HandR,UnterarmR, NX_IGNORE_PAIR);	
	pXcon_add(PH_6DJOINT,HandR,UnterarmR,0);
	vec_for_bone(to.x,Skelett,"HandR");
	pXcon_setparams1(HandR, to.x,NULL,NULL);
	pXcon_setparams2(HandR, vector(135,135,0), NULL, NULL);
	pXcon_set6djoint(HandR,Motion,NULL);
	
	pXent_setcollisionflag(HandL,UnterarmL, NX_IGNORE_PAIR);	
	pXcon_add(PH_6DJOINT,HandL,UnterarmL,0);
	vec_for_bone(to.x,Skelett,"HandL");
	pXcon_setparams1(HandL, to.x,NULL,NULL);
	pXcon_setparams2(HandL, vector(135,135,0), NULL, NULL);
	pXcon_set6djoint(HandL,Motion,NULL);
	
	pXent_setcollisionflag(Bein1R,Body1, NX_IGNORE_PAIR);	
	pXcon_add(PH_6DJOINT,Bein1R,Body1,0);
	vec_for_bone(to.x,Skelett,"LegR");
	pXcon_setparams1(Bein1R, to.x,NULL,NULL);
	pXcon_setparams2(Bein1R, vector(50,135,0), NULL, NULL);
	pXcon_set6djoint(Bein1R,Motion,NULL);
	
	pXent_setcollisionflag(Bein1L,Body1, NX_IGNORE_PAIR);	
	pXcon_add(PH_6DJOINT,Bein1L,Body1,0);
	vec_for_bone(to.x,Skelett,"LegL");
	pXcon_setparams1(Bein1L, to.x,NULL,NULL);
	pXcon_setparams2(Bein1L, vector(50,135,0), NULL, NULL);
	pXcon_set6djoint(Bein1L,Motion,NULL);
	
	pXent_setcollisionflag(Bein2R,Bein1R, NX_IGNORE_PAIR);	
	pXcon_add(PH_6DJOINT,Bein2R,Bein1R,0);
	vec_for_bone(to.x,Skelett,"LegR1");
	pXcon_setparams1(Bein2R, to.x,vector(1,0,0),NULL);
	pXcon_setparams2(Bein2R, NULL, vector(0,135,0), NULL);
	pXcon_set6djoint(Bein2R,Motion,NULL);

	pXent_setcollisionflag(Bein2L,Bein1L, NX_IGNORE_PAIR);	
	pXcon_add(PH_6DJOINT,Bein2L,Bein1L,0);
	vec_for_bone(to.x,Skelett,"LegL1");
	pXcon_setparams1(Bein2L, to.x,vector(1,0,0),NULL);
	pXcon_setparams2(Bein2L, NULL, vector(0,135,0), NULL);
	pXcon_set6djoint(Bein2L,Motion,NULL);
	
	pXent_setcollisionflag(FussR,Bein2R, NX_IGNORE_PAIR);
	pXcon_add(PH_6DJOINT,FussR,Bein2R,0);
	vec_for_bone(to.x,Skelett,"FootR");
	pXcon_setparams1(FussR, to.x,vector(1,0,0),NULL);
	pXcon_setparams2(FussR, vector(10,0,0), vector(0,30,0), NULL);	
	pXcon_set6djoint(FussR,Motion,NULL);

	pXent_setcollisionflag(FussL,Bein2L, NX_IGNORE_PAIR);	
	pXcon_add(PH_6DJOINT,FussL,Bein2L,0);
	vec_for_bone(to.x,Skelett,"FootL");
	pXcon_setparams1(FussL, to.x,vector(1,0,0),NULL);
	pXcon_setparams2(FussL, vector(10,0,0), vector(0,30,0), NULL);	
	pXcon_set6djoint(FussL,Motion,NULL);
	
	vec_set(camera.x,vector(1000,0,0));
	vec_set(camera.pan,vector(180,15,0));
	
	pXent_setelasticity(Plane, elasticity);
	pXent_setelasticity(Kopf, elasticity);
	pXent_setelasticity(Hals, elasticity);
	pXent_setelasticity(Body1, elasticity);
	pXent_setelasticity(Body2, elasticity);
	pXent_setelasticity(Body3, elasticity);
	pXent_setelasticity(OberarmR, elasticity);
	pXent_setelasticity(UnterarmR, elasticity);
	pXent_setelasticity(HandR, elasticity);
	pXent_setelasticity(Bein1R, elasticity);
	pXent_setelasticity(Bein2R, elasticity);
	pXent_setelasticity(FussR, elasticity);
	pXent_setelasticity(OberarmL, elasticity);
	pXent_setelasticity(UnterarmL, elasticity);
	pXent_setelasticity(HandL, elasticity);
	pXent_setelasticity(Bein1L, elasticity);
	pXent_setelasticity(Bein2L, elasticity);
	pXent_setelasticity(FussL, elasticity);
	
	while(1)
	{
		pX_pick();
		vec_set(Haare.x, Kopf.x);
		vec_set(Haare.pan, Kopf.pan);
		wait(1);
	}
}


QUELLEN DES ZUCKENS:
an den Armen und an den Beinen...


hier mit modellen und alles für die denen der code noch nicht reicht...
http://www.2shared.com/file/v_iSMvyz/PhysX_Problem.html
in SED ist es eh übersichtlicher...

hier falls ihr das am Arm besser sehen wollt müsst ihr zeile 216 in
Code:
pXent_settype(Body3, PH_CHAR, PH_CONVEX);

umwandeln

EDIT:
z.252 u. z.259 müsst ihr das Motion2 in ein Motion umwandeln, iss beim kürzen vergessen worden...

EDIT2:Sorry Montion2 in Montion
xxxxxxx
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/26/11 10:52

Ist es nun ein Bug oder nicht?
nochma sorry für die Verschreiber...
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/27/11 15:24

*push sleep
nächtesmal werde ich nicht nur pushen smirk
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/29/11 12:07

*push
*push
*KICK
Ist es jetzt ein Bug oder nicht???
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/30/11 21:11

Originally Posted By: ICH
Ist es jetzt ein Bug oder nicht???

hab zwar keine ahnung ob es einer iss confused
ABER da ich mir heute dachte "Ahh, was solls ich mach schonmal den Teil wo es darum geht das Modell(was ich in den letzten tagen mühsam erstellte) mit der Ragdoll zu verbinden..." smile
So da ich dachte es wäre schöner meine Capsules/Convex-Bodys auf F11 zu sehen habe ich mir neue dummys, die bei einer anderen Figur eh nötig waren, gemacht.... cool

UND jetzt wage ich zu bezweifeln das das Zucken weg ist. laugh grin laugh
Es muss wohl an dem Center der Masse oder soetwas gelegen haben, oder so... confused

Es bewegt sich zwar noch nicht "all zu realistisch" für einen Menschen aber da muss ich wohl an den parametern hantieren...

Nochmal Vielen Dank an rojart, der mir wirklich viel geholfen hat, und alle anderen. laugh
(auch Sorry für mein ständiges pushen/kicken, hät ich mich doch schon früher dran gesetzt)
EDIT: wie bereits erwähnt wollte ich ja die hüllen auf F11 anzeigen lassen geht das schon oder muss ich da mit mtl_wireframe(soweit ich weiß) nachelfen?
EDIT2: es ist nicht ganz weg aber es würde erst auftreten wenn meine ragdoll einen NINJA-Karate tritt machen sollte...
xxxxxxx
Posted By: rojart

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 04/30/11 21:40

Nein, es ist kein Bug, aber deine merkwürdige art die physX funktionen zu Interpretieren.

Zum Beispiel (rot markiert):
Quote:
pXcon_setparams2(OberarmL,vector(120,120,0),vector(0, 0, 70),NULL);

Was bewirkt 70, laut Manual (Parameter 5)???

Momentan, bin wirklich sehr beschäftigt, aber ich glaube es wäre einfacher ein Ragdoll Tutorial von A bis Z zu fertigen, natürlich wenn ich mehr Zeit gehabt hätte.

P.S.
Mit Pushen verlierst du nur Bekanntschaften.
Zeit ist Geld und nicht jeder hat so viel ZEIT im Augenblick wie DU, oder? wink
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 05/02/11 18:19

Tut mir wirklich Leid wenn ich hier schon wieder nerve, frown
aber wie kriege hin das der winkel einer Entity lokal zu meiner Player entity, also die entity wo die ganzen bones sind...

und ich habe noch das problem das ich an den armen mit der bones rotataion scheitere, ich addiere und subtrahiere schon die ganze zeit werte zu/von der/den winkel am arm hinzu doch ich krieg es nicht passend. ich brauch nur einen (ober)arm, den Rest habe ich schon. laugh
hier könnt ihr in zeile 109 jeweils die hinzuaddirten zahlen verändern. laugh klick mich XD
wenn ihr eine lösung findet immer her damit, oh und das sieht wenn man das script startet allse ok aus aber schüttelt mal den arm! wink
xxxxxxx
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 05/05/11 14:26

Um den Winkel zu dem Player lokal zumachen müsste ich doch nur jeweils die
ausrichtt des obj. - der ausrichtung des Players(u. natürlich einen wert der das obj so zurück dreht das es nicht zu den winkel des vorherigen bone drauf addiert wird) nehmen aller dings sieht das ergebnis ziemlich seltsam aus...
Code:
while(1)
{
	pX_pick();
	vec_set(Skelett.x, Body1.x);
	vec_set(Skelett.pan, Body1.pan);
	
	
	//Body2/3
	ent_bonereset_all(Skelett);
	
	vec_set(rotateBack,Skelett.pan);
	vec_set(rotate,Body2.pan);
	vec_sub(rotate,rotateBack);
	ent_bonerotate(Skelett,"Body",rotate);
	
	vec_add(rotateBack, rotate);
	vec_set(rotate, Body3.pan);
	vec_sub(rotate,rotateBack);
	ent_bonerotate(Skelett,"Body1",rotate);
	
	//Neck and Head
	vec_add(rotateBack,rotate);
	vec_set(to.skill1,rotateBack);
	vec_set(rotate, Hals.pan);
	vec_sub(rotate,rotateBack);
	ent_bonerotate(Skelett,"Body2",rotate);
	
	vec_add(rotateBack,rotate);
	vec_set(rotate, Kopf.pan);
	vec_sub(rotate,rotateBack);
	ent_bonerotate(Skelett,"Head",rotate);
	
	//Right Leg
	vec_set(rotateBack,Skelett.pan);
	vec_set(rotate, Bein1R.pan);
	vec_sub(rotate,rotateBack);
	ent_bonerotate(Skelett,"LegR",rotate);
	
	vec_add(rotateBack, rotate);
	vec_set(rotate, Bein2R.pan);
	vec_sub(rotate,rotateBack);
	ent_bonerotate(Skelett,"LegR1",rotate);
	
	vec_add(rotateBack,rotate);
	vec_set(rotate, FussR.pan);
	vec_sub(rotate,rotateBack;
	ent_bonerotate(Skelett,"FootR",vector(rotate.x,rotate.y,rotate.z+90));
		
	//Left Leg
	vec_set(rotateBack,Skelett.pan);
	vec_set(rotate, Bein1L.pan);
	vec_sub(rotate,rotateBack);
	ent_bonerotate(Skelett,"LegL",rotate);
	
	vec_add(rotateBack, rotate);
	vec_set(rotate, Bein2L.pan);
	vec_sub(rotate,rotateBack);
	ent_bonerotate(Skelett,"LegL1",rotate);
	
	vec_add(rotateBack,rotate);
	vec_set(rotate, FussL.pan);
	vec_sub(rotate,rotateBack);
	ent_bonerotate(Skelett,"FootL",vector(rotate.x,rotate.y,rotate.z+90));
		
	wait(1);
}


sooo-ha hier sind noch die bilder

dass sieht ganz gut aus aber jetzt betrachte man es wenn es auf dem boden liegt/in der hängt...

es "springt" immer wieder aus den Dummys, also immer wieder hängt es total komisch
der winkel der entity macht ärger nur wie, kapier ich nicht, diese art, also mit dem winlkel der entity subtrahieren, hat schon vorher zum ausrichten unabhängig der unterbone gedint, wieso klppt sie jetzt nicht???
xxxxxxx
Posted By: rojart

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 05/08/11 14:33

Auf den ersten Blick, sehe ich nur Rotation, versuche es mit ent_bonemove zusätzlich.
Offsets kann man in MED nachvollziehen, um später gleiche Ragdolls Positionierung anzupassen.
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 05/08/11 18:43

an der fehlenden positiunierung kann es nicht liegen weil
1.wenn man Body1(Ragdoll und model uhrsprung) zu einem PH_CHAR macht(damit der winkel sich nicht verändert) denn rotieren beine, Körper und Kopf perfekt.

2. die Gelenke zwischen den bones und sie phsyX gelenke haar genau übereinstimmen, jedenfalss bevor die ragdoll aktiv wird...

die offsets kenn ich schon(mein modell hat gerade bones, also arme usw. stehen im 90° winkel zueinader ab). ich hab wie gesagt alle möglichen addi/subtractions kombos ausprobiert. sowohl bei der entity rotation als auch bei den armen versteh ich keinen sinn/ sehe keine regeläßigkeit/oder kann nicht einschätzen woran es liegt, leider! frown
Trotzdem danke für die Tipps!
xxxxxxx
Posted By: rojart

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 05/08/11 20:39

Originally Posted By: xxxxxxx
an der fehlenden positiunierung kann es nicht liegen weil
1.wenn man Body1(Ragdoll und model uhrsprung) zu einem PH_CHAR macht(damit der winkel sich nicht verändert) denn rotieren beine, Körper und Kopf perfekt.

Bist Du ganz sicher, mit ent_bonemove schon einaml versucht?
Woher weisst dein "Körper Skelett" von deinem Ragdoll in welchen Koordinaten X,Y,Z sich gerade befindet?

Komischerweise, ohne ent_bonerotate in Verbindung mit ent_bonemove, würde mein Ragdoll gar nicht funktioniert, aber es funktioniert ohne ent_bonemove dann wie ich auf den Bildern sehen kann.
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 05/09/11 13:11

Originally Posted By: rojart
Komischerweise, ohne ent_bonerotate in Verbindung mit ent_bonemove, würde mein Ragdoll gar nicht funktioniert, aber es funktioniert ohne ent_bonemove dann wie ich auf den Bildern sehen kann.
Was soll den ent_bonemove bringen, wenn die rotation fehl schlägt, daher auch die falsche position wink.
Und mit der rotation versuche ich das Skelett auf die Ragdoll anzupassen und da das Bone- mit dem Ragdollskelett übereinstimmt ist Positionieren überflüssig(da ja an der Ragdoll nur rotiert wird und nicht positioniert) und falls es dir darum geht das ich den körper nicht bewege: vec_set(Skelett.x, Body1.x);
und mit vec_set(Skelett.pan, Body1.pan); rotiere ich dann erstmal meine gesamte körper entity, dann versuche ich die bones richtig rotieren(Körperteil rotation - Rotation vom vorherigen Körperteil)
xxxxxxx
Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 05/10/11 18:08

ok, ich habs mir grade nochmal ganz genau angeguckt, die rotation schlägt auch fehl wenn der winkel von body1 0,0,0 ist, nur nicht in dem ausmas wie bei einem anderen winkel
hier ist das gesammte Ragdoll-Projekt, das script ist "Test.c"
http://www.2shared.com/file/sKegJKUi/PhysX-Problem.html
wenn ihr irgendeinen fehler findet, irgendeine regelmäßigkeit oder vorschläge wie man es besser machen könnte wäre ich sehr dankbar! laugh
xxxxxxx
Posted By: rojart

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 05/11/11 10:13

Ich werde es überprüfen und melde mich am Wochenende wieder.
Hier sehe ich schon einige Fehler:
Code:
pXcon_setparams2(OberarmR,vector(120,120,70),vector(0,0,70),NULL);


Geändert durch:
Code:
pXcon_setparams2(OberarmR,vector(120,120,0),vector(-35,35,0),NULL);


Auf dem Bild von der linke Seite meine Änderung und rechte Seite nicht geändert mit fehlenden Twist Winkel.


Posted By: xxxxxxx

Re: Zucken einer Ragdoll beim Sperren eines Winkels - 05/11/11 14:35

Danke! aber jetzt habe ich meine arme so und nun zuckt es wieder.
hier der code:
Code:
pXent_setcollisionflag(OberarmR,Body3, NX_IGNORE_PAIR);
pXcon_add(PH_6DJOINT,OberarmR,Body3,0);	
vec_for_bone(to.x,Skelett,"ArmR");
pXcon_setparams1(OberarmR, to.x,vector(1,0,0),NULL);//hinzugefügt damit sich der arm an der richtigen axis dreht ohne klappt es entspricht aber nicht einem menschlichem schultergelenk
pXcon_setparams2(OberarmR,vector(120,120,0),vector(-50,50,0),NULL);
pXcon_set6djoint(OberarmR,Motion,NULL);


das mit der 70 an der falschen stelle hat übrigens bewirkt das der winkel "frei" war, warum auch immer. -_O?
xxxxxxx
© 2024 lite-C Forums