Ich habe momentan ein Marker-Erkennungssystem für AR, es erkennt Marker in der Szene und gibt die Transformationsmatrix der Kamera für jeden Marker in der Szene an.
Sagen wir, ich habe zwei Marker gefunden. Ich versuche, die Rotationsmatrix zu finden, die ich auf einen der Marker anwenden muss, damit er mit der Ausrichtung des anderen Markers übereinstimmt.
Ich dachte, es sollte dasselbe sein wie die Transformationsmatrix eines Markers zu einem anderen zu berechnen und die Transformation zu zerlegen, um die x, y, z euler Rotationsmatrix zu erhalten, aber ich kann das nicht zum Funktionieren bringen. Ich verwende C # mit XNA.
Im Code:
%Vor%Das oben genannte scheint nicht zu funktionieren.
Eine andere Frage wäre, wie man die x, y, z euler Rotationen aus der Rotationsmatrix herausholt?
BEARBEITEN:
Ich habe eine Funktion gefunden, um die Quaternion nach x, y, z Ordnung in euler umzuwandeln: Ссылка
Wenn ich dies auf meinen Code anwendete, erhielt ich folgende Ergebnisse:
Die tatsächliche Drehung sollte sein: x: 0 y: 0 z: -0,52
Ich habe auch bemerkt, dass sich das y und z stark verändert hat, je nachdem wie ich die Kamera positioniert habe.
Die beiden Transformationsmatrizen, die ich vom Markierungsdetektor erhalte, enthalten die Orientierung und Translation der Kamera relativ zu einer der Markierungen, wie hier erklärt: Ссылка Ich habe sie in XNA-Format umgewandelt und ich weiß, dass sie korrekt funktionieren, da ich die Ecken auf den Bildschirm zeichnen kann und es mit dem übereinstimmt, was die Kamera sieht.
Die Lösung, die ich am meisten mag, ist die Verwendung von Quaternionen. Wenn Sie eine Ausrichtung haben, die mit q1 beschrieben wird, und eine andere mit q2 , können Sie mit
von einer Ausrichtung zur anderen gelangenq1 = q * q2
ist q die Rotation, nach der Sie suchen.
q = q1 * (q2) ^ - 1; q = q1 · konj (q2);
Sie müssen nur von Rotation in Quaternion und quaternion to rotation .
Stellen Sie nur sicher, dass Sie Quaternionen normalisieren, damit die Äquivalenzen wahr sind. In den Seiten, die ich verlinkt habe, hast du alle notwendigen Formeln, Erklärungen, sogar Code in Java, C ++. Wirklich wert, zu den Favoriten hinzuzufügen.
Tags und Links c# math augmented-reality xna matrix-multiplication