• Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
  • Wir freuen uns, wenn du dich in unserem Forum anmeldest. Bitte beachte, dass die Freigabe per Hand durchgeführt wird (Schutz vor Spammer). Damit kann die Freigabe bis zu 24 Stunden dauern.
  • Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Sie geben Einwilligung zu unseren Cookies, wenn Sie unsere Webseite weiterhin nutzen.

Kamerarichtung auslesen

Hallo zusammen
Ich will eine eigene walkanimation benutzen, und zwar ausgelöst durch ein Attachment. Also eigentlich ein AO. Nun möchte ich aber nicht die Standartgeschwindigkeit von SL nutzen, sondern mich langsamer bewegen.
Also frage ich die die Tasten ab und addiere entsprechende Werte über moveto.
Nun brauche ich natürlich eine Richtung. Ich denke das sollte ja normal die sein, in die man schaut. Also lese ich die Camerarichtung aus, und zerlege sie in die drei Werte (brauche ja nur x und y).
Da fängt es dann an. Ich komme überhaupt nicht mit den Werten klar die da ausgegeben werden. Ich erhalte werte zwischen -0,13 bis + 0,13 für die werte von rotation.x und rotation.y. Und zwar sind die nicht wirklich nachvollziehbar, da sich der X wert zB auch ändert wenn ich die Kamera rauszoome, was ja keine richtungsänderung ist.
Keine Ahnung was die aussagen. Wenn ich die Werte einfach zur position addiere und als moveto target nehme bewege ich mich eindeutig in richtung einer Ecke der Sim. Also im Schnitt, nicht nur, aber auch wenn ich mich "versuche " in verschiedene Richtungen bewege, ist dieHauptrichtung eine.
So, das sieht hoffentlich nicht zu durcheinader aus :) Wäre für Hilfe, dankbar. Evtl benutze ich ja den falschen Lösungsansatz.

gruß Jaquline
 
Also, nachdem du die Permissions für PERMISSION_TRACK_CAMERA eingeholt hast, kannst du die Kameraposition

vector campos = llGetCameraPos();

und die Rotation der Kamera holen:

rotation camrot = llGetCameraRot();

Ein Punkt, der in der Blickrichtung liegt, wäre dann

vector destination = campos + llRot2Fwd(camrot)*dist;

wobei float dist = 3.0; dann 3 Meter von der Kamera entfernt wäre.

Dein Problem war wahrscheinlich unter anderem, dass du versucht hast, die Rotation als Vektor zu interpretieren. Du kannst eine Rotation zu einem Vektor machen durch vector v = llRot2Euler(rot). Für weiteres Interesse solltest du dich einfach mal in die Befehle einlesen:
http://lslwiki.net/lslwiki/wakka.php?wakka=rotation
 
Danke Ezian, das hat mich einen guten Schritt weiter gebracht. Und ja, die entsprechenden Wiki LSL Seiten habe ich natürlich auch vorher studiert. Aber manchmal werde ich nicht schlau draus ;) Matheunterricht ist schon ne Weile her ^^.
Eine weitere Frage hätte ich noch, wie ignoriere ich denn die Z achse ?
Man soll sich ja normal über die Berge und Täler in SL bewegen können, sozusagen bei der Z Achse den normal Bewegungsstandart beibehalten.

Danke noch mal, und Gruß Jaquline
 
Jaquline Jewell schrieb:
Eine weitere Frage hätte ich noch, wie ignoriere ich denn die Z achse ?
Man soll sich ja normal über die Berge und Täler in SL bewegen können, sozusagen bei der Z Achse den normal Bewegungsstandart beibehalten.

Danke noch mal, und Gruß Jaquline

Da fällt mir jetzt nur quick & dirty ein, z der Rotation einfach auf 0 zu setzen. Also

vector vcamrot = llRot2Euler(camrot);
vector destination = campos + llRot2Fwd(llEuler2Rot(<vcamrot.x,vcamrot.y,0.>))*dist;

Könnte klappen. Geht aber sicher mit irhendeinem schicken Befehl noch eleganter und direkter.
 

Users who are viewing this thread

Zurück
Oben Unten