rearProject doku 01 .pdf



Nom original: rearProject_doku_01.pdfTitre: D:/FH/DM Semester 1 - WS05/PRO/CD-ROM/Systemdoku/diplomarbeit-40/ba.dvi

Ce document au format PDF 1.3 a été généré par dvips(k) 5.90a Copyright 2002 Radical Eye Software / AFPL Ghostscript 8.13, et a été envoyé sur fichier-pdf.fr le 16/02/2011 à 11:32, depuis l'adresse IP 77.204.x.x. La présente page de téléchargement du fichier a été vue 1153 fois.
Taille du document: 197 Ko (12 pages).
Confidentialité: fichier public


Aperçu du document


Systemdokumentation - Ru
¨ ckprojektion
mit mehreren Spiegeln

Robert Priewasser
dm05022

Semesterprojekt
Betreuer: DI(FH) Peter Brandl
WS 05/06
Digitale Medien
in Hagenberg

Inhaltsverzeichnis
1 Umsetzung
1.1 Entwicklungsumgebung . . . . . . . . . . .
1.2 Shockwave3D . . . . . . . . . . . . . . . . .
1.2.1 pModel . . . . . . . . . . . . . . . .
1.2.2 fmModel und smModel . . . . . . .
1.2.3 tModel . . . . . . . . . . . . . . . .
1.3 Views . . . . . . . . . . . . . . . . . . . . .
1.4 GUI . . . . . . . . . . . . . . . . . . . . . .
1.4.1 Men¨
u . . . . . . . . . . . . . . . . .
1.4.2 Sliders und QuickTransform Buttons
1.4.3 Spiegeln hinzuf¨
ugen und entfernen .
1.5 Vektoren . . . . . . . . . . . . . . . . . . . .
1.5.1 Berechnung . . . . . . . . . . . . . .
1.5.2 Darstellung . . . . . . . . . . . . . .
1.5.3 Spiegelung der Vektoren . . . . . . .
1.6 Ausgabefenster . . . . . . . . . . . . . . . .
1.6.1 Projected Area . . . . . . . . . . . .
1.6.2 Bounding Box . . . . . . . . . . . .
2 Probleme bei der Umsetzung

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1
1
1
2
2
2
3
4
4
5
5
6
6
7
7
7
8
8
10

i

Kapitel 1

Umsetzung
1.1

Entwicklungsumgebung

Bei der Entwicklung der Software-Simulation im Zuge dieses Semesterprojekts mussten bez¨
uglich der Wahl der Entwicklungsumgebung einige Punkte
beachtet werden:
• Es m¨
ussen mathematische Berechnungen im dreidimensionalen Raum
durchgef¨
uhrt werden
• Es muss eine korrekte und informative Darstellung m¨oglich sein
• Es soll ein umfangreiches und userfreundliches GUI geschaffen werden
Nach Ber¨
ucksichtigung dieser Punkte standen drei Umgebungen zur Auswahl: OpenGL, Virtools und Director mit Shockwave3D. Die Wahl fiel wegen
ausreichender 3D-Darstellungsm¨oglichkeiten, einfacher GUI-Programmierung
und der Web-Publizierungsm¨oglichkeit auf Macromedia Director MX mit
Shockwave3D.

1.2

Shockwave3D

Bei Director MX ist es m¨
oglich, Shockwave3D-Castmembers einzuf¨
ugen.
Diese stellen eine komplette 3D-Welt dar, in der einige Primitive wie W¨
urfeln,
Kugeln, und Zylinder erstellt und bearbeitet werden k¨onnen. Die Sicht auf
diese 3D-Welt erfolgt u
¨ber eine Kamera, deren Eigenschaften ebenfalls ver¨andert werden k¨
onnen. Um beispielsweise einen W¨
urfel zu erstellen, muss zuerst eine ModelResource angelegt werden, welche die Art des Objekts (cube)
und dessen Dimensionen beschreibt. Diese ModelResource wird dann einer
Funktion u
¨bergeben, die daraus ein Model generiert, welches transformiert,
texturiert und geshadet werden kann.

1

KAPITEL 1. UMSETZUNG

2

Abbildung 1.1: Model f¨
ur den Projektor mit angeh¨angtem Model f¨
ur die
Linse.

Abbildung 1.2: Model f¨
ur einen Spiegel.

1.2.1

pModel


ur den Projektor wurden ein Cube Model namens pModel und ein Cylinder
Model namens lModel f¨
ur die Linse erstellt. Das lModel wurde dem pModel
als child hinzugef¨
ugt, dadurch macht es alle Transformationen mit, die das
pModel macht. 1.1

1.2.2

fmModel und smModel

Als Spiegel wurden ebenfalls Cube Models verwendet, in x- und y-Richtung
entsprechend skaliert. Die Software-Simulation sieht eine Verwendung von
maximal zwei Spiegeln vor, diese Einschr¨ankung kann jedoch relativ problemlos aufgehoben werden. Die beiden Spiegel-Models wurden fmModel
und smModel f¨
ur first mirror model und second mirror model genannt. 1.2

1.2.3

tModel

Das Model f¨
ur den Tisch ist den Spiegel-Models a¨hnlich. Es besteht auch
aus einem cube model mit der entsprechenden Skalierung und wurde tModel

KAPITEL 1. UMSETZUNG

3

Abbildung 1.3: Model f¨
ur den Tisch.

genannt. 1.3

1.3

Views

Es entstand die Idee, nicht nur eine 3D-Ansicht des Setups bereitzustellen, sondern auch eine Draufsicht und eine noch wichtigere Seitenansicht.
So k¨
onnen die Auswirkungen von Parameter¨anderungen besser interpretiert
werden. Die Oberfl¨
ache der Software sollte der des 3D Studios ¨ahnlich sein.
Im linken oberen Fenster ist nun die 3D-Ansicht zu sehen, rechts daneben
die Seitenansicht und rechts unten die Draufsicht (Abb. 1.4). Urspr¨
unglich
war f¨
ur das linke untere Fenster die Frontansicht geplant, diese wurde jedoch nach der Erkenntnis deren Sinnlosigkeit durch ein Informationsfenster
ersetzt. Mehr zum Informationsfenster gibt es in Abschn. 1.6.
Das Seitenansichts- und das Draufsichtfenster sind eigenst¨andige
Shockwave3D-Castmembers, in denen das Gleiche dargestellt wird wie im
3D-Fenster, es gibt jedoch zwei wesentliche Unterschiede: die Projektionseigenschaft der Kamera wurde beim 3D-Fenster auf perspective und bei den
beiden anderen auf orthographic gestellt, außerdem wurde die Kamera bei
den beiden orthographischen Fenstern um den jeweils entsprechenden Winkel um die Szene gedreht.
Jede der drei Ansichten ist als Objekt einer Klasse world definiert,
diese Klasse enth¨
alt neben einigen anderen Variablen auch eine f¨
ur das
Shockwave3D-Castmember und Funktionen zum Zeichnen der Models und
der Vektoren (mehr zu den Vektoren in Abschn. 1.5). In der Hauptanwendung (ein Moviescript) werden die drei Objekte der Klasse world in einem
Array verwaltet. Soll z. B. der Projektor gezeichnet werden, wird in einer
Schleife f¨
ur jede der drei Welten die drawProjecor()-Funktion aufgerufen.

KAPITEL 1. UMSETZUNG

4

Abbildung 1.4: Die drei Ansichten des Setups und das Informationsfenster.

Abbildung 1.5: Die Hauptmen¨
uleiste.

1.4
1.4.1

GUI
Menu
¨

Als Men¨
u dient eine Leiste rechts neben den Grafikfenstern mit vier Hauptmen¨
upunkten: Projector Properties, Camera Properties, Table Properties
und Mirror Properties (Abb. 1.5). Durch einen Klick auf einen der Punkte
werden unter der Hauptleiste weitere Interaktionsm¨oglichkeiten geboten. Die
Interaktionsm¨
oglichkeiten werden in der Userdokumentation behandelt, in
diesem Dokument wird nur auf die technische Umsetzung eingegangen.

KAPITEL 1. UMSETZUNG

5

Abbildung 1.6: Sliders und QuickTransform Buttons.

1.4.2

Sliders und QuickTransform Buttons

Zur Parameter¨
anderung wurden einerseits Schieberegler mit nebenstehender
Textanzeige, andererseits QuickTransform Buttons gew¨ahlt. Auf den Schiebereglern liegt jeweils ein Script, das bei Ziehen des Reglers dessen Position
verarbeitet und die entsprechenden Funktionen
(z. B. moveProjector(transformVector)) aufruft. Wird einer der QuickTransform Buttons aktiviert, hat der User die M¨oglichkeit, direkt in eines
der orthographischen Fenster zu klicken und das jeweilige Model durch Mousedragging zu bewegen, rotieren oder skalieren (Skalierung ist u
¨ber QuickTransform Buttons nur bei Spiegeln oder beim Tisch m¨oglich, weil der Projektor in drei Dimensionen skaliert werden kann).

1.4.3

Spiegeln hinzufu
¨ gen und entfernen

Unter dem Men¨
upunkt Mirror Properties findet sich die M¨oglichkeit, via
Klick auf den addMirror Button einen Spiegel hinzuzuf¨
ugen (geht zwei mal)
oder die Spiegel via Klick auf den removeMirror Button wieder zu entfernen
(Abb. 1.6). Durch das Hinzuf¨
ugen eines Spiegels wird einiges ver¨andert: der
Projektor und der/die Spiegel werden standardm¨aßig so in Form gebracht,
dass ein sinnvolles Setup entsteht, bei dem der User nicht mehr so viel ¨andern

KAPITEL 1. UMSETZUNG

6

Abbildung 1.7: Initialisierung der Vektoren.

muss, um seinen Vorstellungen n¨aherzukommen. Auf der Berechnungsseite
fallen jetzt nat¨
urlich Reflektionen an, die im Abschnitt u
¨ber die Vektoren
(Abschn. 1.5) behandelt werden.

1.5

Vektoren

Um den Weg des Lichts aus der Linse bis zur Tischfl¨ache zu beschreiben,
wurden vier Vektoren verwendet (bei einem Setup mit einem Spiegel werden
es acht, mit zwei Spiegeln sechzehn), jeweils f¨
ur den linken oberen, den
rechten oberen, den linken unteren und den rechten unteren Strahl.

1.5.1

Berechnung

Diese vier Vektoren werden im Code durch Objekte der Director-Klasse
vector dargestellt. Sie werden bei der Inititalisierung auf Werte gesetzt, die
in Abb. 1.7 zu sehen sind.
Die Werte f¨
ur lensOffset und throwRatio sind u
¨ber das GUI einstellbar. lensOffset beschreibt eine Verschiebung der Linse nach unten
oder oben, wodurch das projizierte Bild ebenfalls nach unten oder oben
wandert, aber nicht verzerrt wird. throwRatio beschreibt das Verh¨altnis
zwischen dem Abstand von Linse zur Projektionsfl¨ache und der Breite der
Projektionsfl¨
ache. Angenommen die throwRatio hat den Wert 1.0 und der
lensOffset ist 0.0, werden die Vektoren in der Form gebildet, dass ein 4:3
Bild projiziert wird, dessen Breite genauso groß ist wie der Abstand zur
Linse.
Die Vektoren werden ge¨
andert, sobald die throwRatio oder der
lensOffset ver¨
andert werden, oder sobald der Projektor rotiert wird. Sie
werden bei jedem Zeichnen-Durchgang neu gesetzt, zuerst werden sie wie bei
der Initialisierung unter Einbeziehung der throwRatio oder des lensOffsets
ver¨
andert, danach unterziehen sie sich der Multiplikation mit der Rotationsmatrix des Projektors. Somit sind die Vektoren immer am aktuellen Stand,
sie k¨
onnen nun also gezeichnet werden.

KAPITEL 1. UMSETZUNG

7

Abbildung 1.8: Funktion Spiegelung eines Vektors.

1.5.2

Darstellung

Leider gibt es im Director nicht die M¨oglichkeit, Objekte der Klasse vector
in einem Shockwave3D-Fenster darzustellen. Deshalb wurde f¨
ur jeden Vektor
ein langgezogenes cylinder model erstellt, das dann nach den Werten des
zugeh¨
origen Vektors rotiert und transliert wird.

1.5.3

Spiegelung der Vektoren

Wird dem Setup ein Spiegel hinzugef¨
ugt, m¨
ussen die Vektoren an diesem
gespiegelt werden. Dazu wird eine Funktion aufgerufen, der der zu spiegelnde
Vektor und das Spiegel-Model u
¨bergeben wird. Nach den Berechnungen in
Abb. 1.8 gibt diese Funktion den gespiegelten Vektor zur¨
uck.
Das cylinder model f¨
ur diesen gespiegelten Vektor muss jetzt nur noch
an die richtige Stelle transliert werden, n¨amlich an den Schnittpunkt zwischen dem urspr¨
unglichen Vektor und der Spiegelfl¨ache. Dieser Schnittpunkt
wird durch die Berechnungen in Abb. 1.9 erhalten.
Letztendlich werden die cylinder models noch in der L¨ange skaliert,
und zwar auf einen Wert, der sich aus der L¨ange des Vektors zwischen
dem Startpunkt und dem Schnittpunkt mit der Ebene ergibt. Zus¨atzlich
wird noch u
uft, ob die Vektoren auch wirklich die Fl¨ache des Spiegels
¨berpr¨
schneiden, tun sie das nicht, werden sie rot texturiert anstatt dem u
¨blichen
blau.

1.6

Ausgabefenster

Wie schon in Abschn. 1.3 erl¨autert, wurde auf eine Frontansicht verzichtet und stattdessen ein Informationsfenster in den linken unteren Bereich

KAPITEL 1. UMSETZUNG

8

Abbildung 1.9: Funktion zur Bestimmung des Schnittpunkts eines Vektors
mit einer Ebene.

gestellt. In diesem Informationsfenster werden Daten u
¨ber die projizierte
Fl¨ache und u
¨ber die Abmessungen der gesamten Konstruktion dargestellt.

1.6.1

Projected Area

In diesem Bereich des Ausgabefensters wird die projizierte Fl¨ache graphisch
und textuell dargestellt (Abb. 1.10 oben). Zur graphischen Darstellung:
Diese erfolgt ausnahmsweise in 2D-Director-Grafik. Unter Verwendung der
Schnittpunkte zwischen dem Tisch-Model und den Vektoren, die den Tisch
schneiden, werden mittels draw(point1, point2, color) die vier Linien
gezeichnet, die die projizierte Fl¨ache darstellen. Dadurch und durch die textuelle Ausgabe neben der Grafik kann man u
ufen, ob eine Trapezver¨berpr¨
zerrung vorliegt oder nicht.

1.6.2

Bounding Box

Im unteren Bereich des Ausgabefensters wird das Rechteck dargestellt, das
das Setup umgibt (Abb. 1.10 unten). Dazu werden von jedem Model im
Setup die maximalen x- und y-Koordinaten ermittelt, von all diesen werden
anschließend noch einmal die Maxima herausgesucht. Die Differenz zwischen
dem maximalen und dem minimalen x-Wert ergibt die Breite der Bounding
Box, die Distanz zwischen maximalem und minimalem y-Wert die H¨ohe.
Diese Informationen sind wichtig f¨
ur die Konstruktion des Setups.

KAPITEL 1. UMSETZUNG

Abbildung 1.10: Ausgabefenster mit Informationen u
¨ber die projizierte
Fl¨
ache und die Bounding Box.

9

Kapitel 2

Probleme bei der Umsetzung
Haupts¨
achlich entstanden Probleme bei der 3D-Programmierung mit Director Shockwave3D. Da es diese Umgebung noch nicht sehr lange gibt, gibt
es auch wenige Menschen, die sich gut damit auskennen. Außerdem ist die
Dokumentation dazu noch etwas sp¨arlich, was auch von der MacromediaSeite best¨
atigt wird. Es gibt nicht die umfassenden M¨oglichkeiten zur 3DProgrammierung, wie man sie z. B. von OpenGL gewohnt ist. Vor allem beim
Einsatz objektorientierter Programmierung oder dem Einsatz von Funktionen zur Strukturierung kommen beim Director noch Performance-Schwierigkeiten
dazu, die bei C++ oder Java nicht in diesem Ausmaß auftreten. Aufgrund
des großen Umfangs und Rechenaufwands des Projekts musste deshalb in
sehr zeitaufwendigen Schritten die Performance verbessert werden.
Als weiteres Problem ist die Untersch¨atzung der mathematischen Problemstellungen anzuf¨
uhren. Angefangen bei der grunds¨atzlichen Vektorrechnung u
osen von Gleichungssystemen (Vektor schneidet Ebene) bis
¨ber das L¨
hin zum r¨
aumlichen Vorstellungsverm¨ogen musste viel Auffrischungszeit und
-arbeit investiert werden.
Zu guter Letzt kommt die Erkenntnis dazu, dass man bei diesem Projekt
noch viel mehr h¨
atte machen k¨onnen, w¨are nur die Zeit dazu gewesen. Zum
Beispiel w¨
are es fein, wenn man die Daten des Projektors nicht selbst einstellen muss, sondern aus einer Liste einen Projektor und eine Linse ausw¨ahlen
kann, deren Daten dann aus einer Datenbank ausgelesen und in die Applikation eingebunden werden. Aus diesen Gr¨
unden wurde vom Betreuer und
mir beschlossen, dieses Projekt im Sommersemester 2006 weiterzuf¨
uhren.

10


Aperçu du document rearProject_doku_01.pdf - page 1/12
 
rearProject_doku_01.pdf - page 3/12
rearProject_doku_01.pdf - page 4/12
rearProject_doku_01.pdf - page 5/12
rearProject_doku_01.pdf - page 6/12
 




Télécharger le fichier (PDF)


rearProject_doku_01.pdf (PDF, 197 Ko)

Télécharger
Formats alternatifs: ZIP



Documents similaires


rearproject doku 01
pdf
farid gabteni die ursprungliche botschaft des islams
kapitalgesellschaftsrecht 2
essafi mohamed amine hiwi bericht bei michal bosuk in ag uwe hartmann report stm essafi by borsuk in ag hartmann saarland university
sofc kraft w rme kopplung

Sur le même sujet..