3D Rotation anhand von Transition bestimmen (Face To)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 3D Rotation anhand von Transition bestimmen (Face To)

    Problem:

    Gegeben sind die Koordinaten eines Objekts (x/y/z) in VRML. Dieses Objekt soll nun immer in die Richtung eines bestimmten Punktes ausgerichtet werden. Z.B. dem Punkt (0/0/0).

    Mein Lösungsansatz mit PHP:

    Zunächst wird die Euler- Rotation anhand der Koordinaten berechnet.
    Und zwar eine nach der anderen:
    Info: Punkt: ($y/$y/$Z), rotation: $xr, $yr, $zr
    PHP-Code:

    // Y- ROTATION 
    if (($z == 0) && ($x >= 0)) { 
    $yr = -90
    } else if((
    $z == 0) && ($x 0)) { 
    $yr 90
    } else if(
    $z 0) { 
    $yr 180 atan2($x,$y); 
    } else if(
    $z 0) { 

    $yr atan2($x,$y); 

    // X- ROTATION 
    if (($y == 0) && ($z >= 0)) { 
    $xr = -90
    } else if((
    $y == 0) && ($z 0)) { 
    $xr 90
    } else if(
    $y 0) { 
    $xr 180 atan2($z,$y); 
    } else if(
    $y 0) { 

    $xr atan2($z,$y); 

    // Z- ROTATION 
    if (($y == 0) && ($x >= 0)) { 
    $zr = -90
    } else if((
    $y == 0) && ($x 0)) { 
    $zr 90
    } else if(
    $y 0) { 
    $zr 180 atan2($x,$y) - 180
    } else if(
    $y 0) { 
    $zr atan2($x,$y) ; 

    Dann erfolgt die Umwandlung in ein Quaternion:

    PHP-Code:
    function get_quaternionByEulerRotation($xr,$yr,$zr){ 
    $q1 cos($xr/2) * cos($yr/2) * cos($zr/2) + sin($xr/2) * sin($yr/2) * sin($zr/2); 
    $q2 sin($xr/2) * cos($yr/2) * cos($zr/2) - cos($xr/2) * sin($yr/2) * sin($zr/2); 
    $q3 cos($xr/2) * sin($yr/2) * cos($zr/2) + sin($xr/2) * cos($yr/2) * sin($zr/2); 
    $q4 cos($xr/2) * cos($yr/2) * sin($zr/2) - sin($xr/2) * sin($yr/2) * cos($zr/2); 
    return array(
    $q2,$q3,$q4,$q1); 

    So, irgendwas stimmt da nicht. Obwohl es schon nicht schlecht aussieht.
    Hab ich einen Denkfehler???

    bin mal gespannt ob mir da jemand helfen kann...

    Stefan

  • #2
    Re: 3D Rotation anhand von Transition bestimmen (Face To)

    Original geschrieben von Stefanie
    So, irgendwas stimmt da nicht. Obwohl es schon nicht schlecht aussieht.
    Hab ich einen Denkfehler???

    bin mal gespannt ob mir da jemand helfen kann...
    Die Spannung wird wohl noch sehr lange anhalten ...
    Die (Haus-)Aufgabe ist ziemlich weit weg von dem was die meisten hier normalerweise so beschäftigt und "irgendwas stimmt nicht" bietet uns keinen Ansatzpunkt.

    Wenn ich mal soo viel Freizeit habe, das ich mich da reinlesen könnte, gehe ich lieber'n Bier trinken.

    Kommentar


    • #3
      Da ich nichts sehen kann, was denn nun nicht funktioniert bleibt mir nur eine Vermutung :

      Die Berechnungen in deiner Umwandlung sollten zum Teil in Klammern stehen (Punkt-vor-Strich-Rechnung), da sonst eben einfach nur von links nach rechts gerechnet wird.

      Also z.B. nicht so :
      PHP-Code:
      $q1 cos($xr/2) * cos($yr/2) * cos($zr/2) + sin($xr/2) * sin($yr/2) * sin($zr/2); 

      sondern so :
      PHP-Code:
      $q1 = (((cos($xr/2) * cos($yr/2) * cos($zr/2)) + sin($xr/2)) * sin($yr/2) * sin($zr/2); 
      Wenn's das nicht ist, bitte mal posten WAS denn nicht funktioniert oder stimmt

      Kommentar


      • #4
        Schauts euch einfach an...

        Hier die URL:


        http://3ddd.game-host.org/3Drisk/phprisk-3d/

        Benutzer: red
        Passwort: stefan

        Ihr braucht den Cortona VRML Player aber der müsste sich automatisch installieren.
        Ach ja, nur IE, am besten 6.0
        Und es könnte beim ersten mal ein wenig länger dauern mangels upstream und nicht optimierter dateien.

        Habe den Tip von oben jetzt noch nicht eingebaut.
        Mache ich heute abend.

        Gruß Stefan

        Kommentar


        • #5
          Re: Schauts euch einfach an...

          Original geschrieben von Stefanie
          Ihr braucht den Cortona VRML Player aber der müsste sich automatisch installieren.
          OffTopic:
          Na dann bin ich ja beruhigt.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar

          Lädt...
          X