Zurück   Flashforum > Software > 3D

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-09-2010, 16:14   #1 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.159
HPB in XYZ-Rotation oder 3D-Matrix umwandeln?!

Hallo zusammen!

Ich stehe gerade vor der Aufgabe, in Cinema4D gerenderte Inhalte mit Script generiertem 3D zu synchronisieren. Dafür ist es wichtig die genauen Transformationen von Kamera und Objekt sowie die Perspektive mit Matrix3D und PerspectivProjection nachzubauen.

Translation und Skalierung sind ja kein allzu großes Problem, aber bei der Rotation gibt es Probleme, weil es hier auf die Reihenfolge der Rotationswinkel ankommt.

Cinema4D arbeitet (laut diesem Artikel) in einem System (HPB), dass reihenfolgenunabhängig funktioniert und mit den Werten Heading, Pitch und Bank arbeitet.

Wie kann man diese HPB-Rotationswerte in XYZ bzw. eine 3D-Matrix umrechnen?

Ich wäre für alle Tipps oder Links dankbar, würde mich aber noch mehr freuen, wenn jemand eine fertige Funktion hätte?!
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist gerade online   Mit Zitat antworten
Alt 29-09-2010, 07:22   #2 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 548
Es ist definitiv reihenfolgenabhängig, aber da C4D eine feste Reihenfolge vorgibt, sich die absoluten Werte merkt und jedesmal von der Einheitsmatrix aus anwendet, spielt es für den User keine Rolle in welcher Reihenfolge er die Werte eintippt. Dafür kann es aber passieren dass zwei Achsen zusammenfallen (Gimbal-Lock): 90 Grad Pitch lässt z.B. Heading und Bank zusammenfallen. Nur dank Gizmo kann man eine Figur dann noch intuitiv um die eigene Hochachse drehen, wodurch aber alle HPB-Werte komplett neu berechnet werden.

So weit ich erkennen kann dreht C4D folgendermaßen:
zuerst Heading um die Y-Achse, dann Pitch um die neue X-Achse, dann Bank um die neue Z-Achse.
In PV (dort ist der Drehsinn der Winkel umgekehrt) hieße das also:

mymodel.yaw(-H);
mymodel.pitch(-P);
mymodel.roll(-B);

P.S.: da du nach einer Matrix gefragt hast, die liegt dann in der Eigenschaft mymodel.transform (DisplayObject3D). Kannst auch mal nach den settern für localRotationX usw. schauen, kann sein dass man die Winkel damit absolut setzen kann (obiges Beispiel geht immer von einem ungedrehten Objekt mit Einheitsmatrix aus), aber ich habe nicht ausprobiert wie sich das auf die Reihenfolge auswirkt.

Geändert von joeydee (29-09-2010 um 07:29 Uhr)
joeydee ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
pdf umwandeln in xls oder doc asyoulikeit Am Rande 7 12-03-2010 09:32
3D-Rotation mit Matrix marcodeneu Softwarearchitektur und Entwurfsmuster 3 10-09-2004 18:12
*.dcx umwandeln in wav oder mp3 Hans meisa Am Rande 3 17-05-2003 17:37
MAtrix? ODer wat is das? :) Naja.. _TextEffect DoppelX ActionScript 1 5 05-08-2002 16:59


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:06 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele