|
"gimbal lock"-Frage
#113635
02/23/07 17:53
02/23/07 17:53
|
Joined: Jun 2005
Posts: 154
Marc
OP
Member
|
OP
Member
Joined: Jun 2005
Posts: 154
|
Hi,
ich versuche nun schon seit einer ganzen Woche meine Winkel so zu berechnen wie in "Große Frage zu..." beschrieben, aber komme einfach nicht weiter.
broozar hat mich dan auf das "gimbal lock"-Problem hingewiesen. Ich hab dan mal seinen Link verfolgt und mich bei Wiki über gimbal lock schlau gemacht.
Ich raffe aber einfach nicht wie das gehen soll.
alles was ich bisher hingekrigt habe ist dieser Code:
action AApasa { var z1; var z2; var z3; var m1; var m2; var m3; my.passable=on; wait(1); z1=my.x-bark1.x; z2=my.y-bark1.y; z3=my.z-bark1.z; m1=my.pan; m2=my.tilt; m3=my.roll; while(1){ my.passable=on; vec_set(my.x,bark1); vec_set(my.pan,bark2); c_move(me,vector(z1,z2,z3),nullvector,IGNORE_YOU);
my.pan+=m1; my.tilt+=m2; my.roll+=m3;
wait(1);} }
bark1 bezeichnet hier die Position des Bezugsobjeckts und bark2 seine Winkel.
Der Code funktioniert ganz gut, solange die Objekte mit dieser Action schön brav die Ausgangswinkel 0,0,0 haben. Aber das sollen sie ja nicht immer.
In jedem dritklassigem Panzer-Spiel ist dieses Problem gelöst. (die Geschütze auf dem Panzern sind eigendtändige Objekte, die sich jedoch drehen können, also nicht nur die winkel 0,0,0 haben)
|
|
|
Re: "gimbal lock"-Frage
[Re: ventilator]
#113637
02/24/07 21:07
02/24/07 21:07
|
Joined: Jun 2005
Posts: 154
Marc
OP
Member
|
OP
Member
Joined: Jun 2005
Posts: 154
|
Jeeeeaaaaaaa!!!!!!!
Geschaft!!!
hier ist der Code:
action AAbarke2 {var o_dist[3]; var mipa[3]; var o_ang[3]; var omp[3]; o_dist.x = my.x-bark1.x; o_dist.y = my.y-bark1.y; o_dist.z = my.z-bark1.z; vec_set(mipa,my.pan); vec_diff(omp,nullvector,o_dist); vec_to_angle(o_ang,omp); o_ang.roll = 0; while(1) { vec_set(my.x,o_dist);//pos vec_rotate(my.x,bark2.pan);//hmmm vec_add(my.x,bark1.x);//pos vec_set(my.pan,mipa);//o_ang ang_add(my.pan,bark2.pan);// wait(1); } }
ihr braucht nur die Position des Bezugsobjeckt (bark1) und seine Winkel (bark2) ich irgentwelche Vektoren zu speichern und dan DIESEN Code irgendeinem Objeckt geben, und schon bewegt es sich in perfeckter Relation zum Bezugsobjeckt. (Es kann auch eine Person sein, die im Luping-fliegenden Raumschiff rumläuft.)
Ich danke allen die mir bei der Lösung dieses Problems Hinweise gegeben haben.
Bis bald
Marc
|
|
|
Moderated by mk_1, Perro, rayp, Realspawn, Rei_Ayanami, rvL_eXile, Spirit, Superku, Tobias, TSG_Torsten, VeT
|