MaTHEMATISCHE GRUNDLAGEN BUGA-AR TELESCOPE Marko HeRBERTZ
Wiederholung: Objekt-, Welt- und Kamerakoordinaten Kugelkoordinaten in kartesische Mögliche Schwierigkeiten Kameralinse Lage der Festung Lagerichtige Augmentierung
Modell-, Weltkoordinaten Hier gleich zwei KoordinatenSysteme: Vorgefertigte Objekte haben eigenes Koordinatensystem Verschiebung in Weltkoordinaten mit Translationen, Rotationen, Skalierungen RECHTSSYSTEM!
Transformationen Translationsmatrix Verschiebe Px Py Pz um tx ty tz
Rotationsmatrizen
Skalierung Beachte: Skalieren im Ursprung! Zuerst Objekt skalieren, dann in Welt einfügen. Oder Objekt in Ursprung schieben, skalieren, und wieder zurück schieben.
Aufmultiplizieren in richtiger Reihenfolge! Jetzt lässt sich jeder Ort erreichen. glmatrixmode(gl_modelview); glloadidentity(); glulookat(0,-1,8,0,0,0,0,1,0); glpushmatrix(); gltranslatef(2,2,0); glrotatef(angle,1,1,0); glscalef(1.5,1.5,1.5); glmaterialfv(gl_front_and_back,gl_diffuse,pot1color); glutsolidteapot(1.0); glpopmatrix();
PROJECTION: ABER: Es müssen Near und Far Clipping Planes definiert werden. Tiefenwerte werden hinten ungenau! Bei Festung also darauf achten, dass vorne und hinten nichts geclippt wird.
Kugelkoordinaten in kartesische Koordinaten Unser Teleskop ist die Kameraposition in der 3D-Welt. Augpunkt damit fest! Upvektor ebenfalls. Was bleibt? Bestimmung des Centerpoints... Unser Teleskop hat zwei Freiheitsgrade, Pitch und Yaw. Wir haben also zwei Winkel, die noch zu einem vernünftigen Centerpoint In kartesischen Koordinaten umgerechnet werden müssen.
x=r*sin(θ)*cos(φ) y=r*sin(θ)*sin(φ) z=r*cos(θ) Die Sensoren des Teleskops kennen 8192 Messpunkte auf einem Vollkreis. Horizontal lässt sich das Teleskop zu 360 Grad drehen, dass muss bedeuten, dass ein Messpunkt 360/8192 = 0,0439453125 Grad vom nächsten entfernt liegt. Vertikale Auflösung noch zu ermitteln. Dieses Wissen müsste ausreichen um wenigstens irgendetwas, das sich richtig mitbewegt einblenden zu können.
Mögliche Schwierigkeiten mit der Linse Jede Kamera, auch unsere, hat ein Linsensystem. Dies kann abweichend vom Ideal der OpenGL Kamera (Lochkamera) das Bild verzerren.
Auch könnte uns eine radiale Verzerrung begegnen, das bedeutet, dass der CCD-Chip Mittelpunkt nicht exakt hinter der Mitte der Linse steht. Dies führt zu einer Verzerrung entlang der Tangenten um einen gedachten Kreis um die Mitte. Das Kamerabild dreht sich ein wenig. Formeln zum Ausgleich radialer Verzerrungen. Aber wie kommt man auf die Konstanten? Notwendig zum Ausgleich, falls uns dieser Effekt drastisch stören sollte: Prozess der Kalibrierung / Registrierung
Kalibrierung Vorgehensweise: Kalibrierpattern ausdrucken und aus mehreren Perspektiven aufnehmen. Dann müssen manuell die Punkte markiert werden. Die Software errechnet dann die notwendigen Konstanten der Linse. Es gibt bisher wohl nur diese fertigen Implentierungen: http://www.hitl.washington.edu/artoolkit/documentation/usercalibration.htm http://www.cs.cmu.edu/~rgw/ (Reg Willson Tsai Code) Hilfreich (?): http://www.vision.caltech.edu/bouguetj/calib_doc/htmls/links.html
Wenn wir Glück haben spielt der Verzerrungseffekt kaum ein Rolle, da wir ein sehr weit entferntes Objekt haben mit einer langen Brennweite. Weiteres Problem: Kamera und Bildschirm 530mm voneinander entfernt, also zwei Augpunkte? Muss hier ein weiterer Korrekturterm mit einer Translation nach hinten eingebaut werden?
Ich denke nicht, denn die Festung ist ziemlich genau 540m vom Standort des Teleskops entfernt: tan(α)=geg./an. -18 Grad Öffnungswinkel - in 540m Entfernung: 166,87m breite Sicht - in 540,53m Entfernung : 167,03m breite Sicht 16cm Differenz
tan(a)=x/540 Wir haben eine horizontale Bildschirmauflösung von 752 Pixel (Kamera),und ein horizontales Blickfeld von 18 Grad => 0,024 Grad pro Pixel. In einer Entfernung von 540m sind 0,024 Grad eine Strecke von 0,23m. Der kleine Fehler durch eine Teleskoplänge entspricht also recht genau einem Pixel. Das dürfte nicht auffallen: Virtuelle Kamera in Mitte setzen! Ich bin die virtuelle Kamera und sitze in der Mitte! Dieses Wissen sollte jetzt zu Beginn ausreichen um Objekte im Teleskop korrekt mitbewegen zu können.
LAGERICHTIGKEIT! So soll es bitte NICHT aussehen.
Die Lage der Festung / Lagerichtige Augmentierung
Es folgt der Versuch, Lage der Kamera in Relation zur Festung auszurechnen...
Wo ist die Kamera ungefähr? Der sichtbare obere Bereich der Festung ist ca. 500m breit. Trigonometrie / Sinussatz: a/sin(α) = b/sin(β) Virtuelle Kamera: eine gute Festungslänge (1,08 fache) unter einem Winkel von 126 Grad zur vorderen Mauer und vorderen Kante. Die Festung ist zudem ungefähr 57m höher gelegen als das Teleskop, daraus ergibt sich ein Blickwinkel nach oben von ca. 6 Grad. Nur grobe Abschätzung! Feintuning erst vor Ort möglich.
So ungefähr müsste es am Ende aussehen!