Musterloesung WS 2002/2003

Werbung
Fachhochschule Furtwangen
Seite 1
Fachbereich Informatik
Graphische DV
Klausur WS 2002 / 2003
3.2.2003
Name:__________________email:_____________________Matr.Nr.:_______________
Klausur zur Vorlesung Graphische Datenverarbeitung WS 2002 / 2003
Bitte lesen Sie sich die Aufgabenstellung sorgfältig durch.
Die Klausur ist ab der Hälfte der Punktzahl sicher bestanden.
Hilfsmittel außer Schreibgerät und leeren Blättern sind nicht erlaubt.
Alle Blätter einschließlich Aufgabenstellung abgeben !
Name (auf allen Blättern) und email Adresse nicht vergessen !
Versuchen Sie die Fragen so vollständig wie möglich zu beantworten.
1) Aufgabe ............. (4+4 Punkte)
a) rotate und tempRotate seien Rotationen vom Typ Transform3D. Beschreiben Sie, was die folgenden
Programmzeilen bewirken:
rotate.mul(tempRotate);
TransformGroup objRotate = new TransformGroup(rotate);
objRoot.addChild(objRotate);
objRotate.addChild(new ColorCube(0.4));
mul ist eine Methode von Transform3D und bewirkt die Multiplikation von
Matrizen. Es könnte sich bei rotate und tempRotate um Rotationen um die
gleiche oder verschieden Achsen handeln. rotate nach der Multiplikation
enthält beide Rotationen und zwar wird zunächst der Cube mit tempRotate
und dann der rotierte Cube mit rotate gedreht.
Dann wird eine neuer Transform – innerer Knoten angelegt, der der die
beiden Rotation enthält und an den Kind-Untergraphen weitergibt. Als
Kind wird direkt ein Color Cube angehängt, der dann entsprechend den
Rotationen in rotate rotiert wird.
b) Bewirken folgende Programmzeilen im Vergleich zu den vorigen Programmzeilen das gleiche oder
etwas anderes? Begründen Sie Ihre Antwort.
tempRotate.mul(rotate);
TransformGroup objRotate = new TransformGroup(tempRotate);
objRoot.addChild(objRotate);
objRotate.addChild(new ColorCube(0.4));
Bei verschiedenen Achsen spielt die Reihenfolge der Multiplikation durch mul eine Rolle. Bei gleichen
Achsen nicht.
2) Aufgabe ............. (2+4 Punkte)
Angenommen in nebenstehender Zeichnung entspricht
A)
B)
„rotation“ einer Rotation um die Z-Achse um 45° und
„translation“ entspricht einer Verschiebung um ca. 3cm
TG rotation
TG translation
in positive Richtung entlang der Y-Achse.
a) Führen A) und B) zur gleichen Transformation des
ColorCube ?
TG translation
TG rotation
b) Zeichnen Sie jeweils für die Szenarien A) und B) den
ColorCube Würfel (mit einer Kantenlänge von ca. 1cm)
ColorCube
vor und nach den beiden Transformationen. (Wenn sie
ColorCube
zur gleichen Transformation führen genügt eine
Zeichnung).
a) Sie führen nicht zur gleichen Transformation.
b)
Prof. Dr. Harald Gläser, Fachbereich Informatik
Fachhochschule Furtwangen
Seite 2
Fachbereich Informatik
Graphische DV
Klausur WS 2002 / 2003
3.2.2003
Name:__________________email:_____________________Matr.Nr.:_______________
B)
A)
y
y
3) Aufgabe ...............(10 Punkte)
Es soll eine Linie zwischen X1,Y1 und X2, Y2 gezeichnet werden. Beschreiben Sie die Funktion des
Bresenham Algorithmus mit allen Einschränkungen.
Vorraussetzung: Steigung der Geraden <= 1; ganzzahlige Pixelkoordinaten
dy = (Y2-Y1) / (X2-X1)
x=X1
y =Y1
s=0
For alle x Koordinaten der Pixel zwischen X1 und X2
s = s + dy
Wenn s >0.5
s = s-1
y=y+1
Male x,y Pixel schwarz
x = x +1
4) Aufgabe ...............(10 Punkte)
Warum ist es sinnvoll einen Teil des Szene Graphen als Baum darzustellen ?
Ein Pfad im Szene Graph Baum von der Wurzel zum Blatt definiert den Zustand des Blattes. Visual
Objects sind immer Blätter. Da der Zustand eines Visual Objects immer eindeutig sein muss, ergibt sich,
das die Pfade zusammen einen Baum bilden müssen, den Pfade die irgendwo zusammenlaufen, machen
den Zustand uneindeutig.
5) Aufgabe ................. (3 Punkte)
Mit Hilfe welcher Klassen wird in Java3D ein visual object dargestellt ?
Appearance, Geometry, Shape3D und deren „Bündel“
6) Aufgabe ................. (5 Punkte)
a) In welche zwei großen Gruppen teilen sich die von SceneGraphObject abgeleiteten Klassen und unter
welchen Gesichtspunkten unterscheiden sie sich ?
Node, NodeComponent. Die Node’s bilden Baum, die NodeComponents nicht, sondern ergänzen den
Baum zu einem allgemeinen Graph.
Prof. Dr. Harald Gläser, Fachbereich Informatik
Fachhochschule Furtwangen
Seite 3
Fachbereich Informatik
Graphische DV
Klausur WS 2002 / 2003
3.2.2003
Name:__________________email:_____________________Matr.Nr.:_______________
b) Welche Methode unterscheidet die Gruppen besonders ?
Node hat addChild, sorgt dafür, dass ein Kind nicht mehrere Väter hat.
7) Aufgabe ................. (7 Punkte)
Malen Sie zu dem folgenden Programm den vollständigen Szenegraphen (stellvertretend für den
Sichtzweig können Sie den BranchGroup Knoten zeichnen, an dem dieser Zweig hängt).
BranchGroup objRoot = new BranchGroup();
TransformGroup objSpin = new TransformGroup();
objSpin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
objRoot.addChild(objSpin);
objSpin.addChild(new ColorCube(0.4));
Alpha rotationAlpha = new Alpha(-1, 4000);
RotationInterpolator rotator =
new RotationInterpolator(rotationAlpha, objSpin);
BoundingSphere bounds = new BoundingSphere();
rotator.setSchedulingBounds(bounds);
objSpin.addChild(rotator);
objRoot
objSpin
BG
TG
TG
Alpha
B
ColorCube
8) Aufgabe ................. (6 Punkte)
Warum sind geometrisch Primitive wie Box oder Sphere nicht von der Oberklasse Geometry abgeleitet ?
Box oder Sphere sind Visual Objects, also Blätter im Baum (sind aber erstaunlicherweise nicht von Leaf
abgeleitet !). Als solche müssen sie von Node abgeleitet sein. Geometry ist aber eine NodeComponent. In
Java gibt es keine Mehrfachvererbung.
Prof. Dr. Harald Gläser, Fachbereich Informatik
Fachhochschule Furtwangen
Seite 4
Fachbereich Informatik
Graphische DV
Klausur WS 2002 / 2003
3.2.2003
Name:__________________email:_____________________Matr.Nr.:_______________
9) Aufgabe ................. (4 Punkte)
Was sind Vertex basierte Geometrien mit Index und was unterscheidet Sie von Vertex basierten
Geometrien ohne Index ?
In Geometrien mit Index werden die Vertexkoordinaten indiziert. Dadurch können die Vertizes mehrfach
verwendet werden, ohne sie mehrfach angeben zu müssen. Dies ist bei Geometrien ohne Index nur durch
mehrfache Angabe der Vertexkoordinaten möglich. Die Performanz ist bei letzteren Geometrien besser.
10) Aufgabe ................. (6 Punkte)
Wie und in welcher Reihenfolge werden 5 Vertizes v1 bis v5 jeweils bei einem
1. PointArray, 2. LineArray, 3.
TriangleArray, 4. QuadArray,
5. LineStripArray, 6.
TriangleStripArray, 7. TriangleFanArray,
verbunden ?
1. Die Punkte werden nicht verbunden.
2. v1 mit v2, v3 mit v4, ...
3. v1 mit v2, v2 mit v3, v3 mit v1, v4 mit v5, v5 mit v6, v6 mit v4, v7 mit v8...
4. v1 mit v2, v2 mit v3, v3 mit v4, v4 mit v1, v5 mit v6, ...
5. v1 mit v2, v2 mit v3, v3 mit v4, v4 mit v5 ... bis stripIndex die Verbindungsunterbrechung
anzeigt
6. v1 mit v2, v2 mit v3, v3 mit v1, v4 mit v2, v4 mit v3, vX mit vX-2, vX mit vX-1, ...
7. v1 mit v0, v2 mit v0, v3 mit v0, vX mit v0, ...
11) Aufgabe ................. (6 Punkte)
Warum gibt es kein QuadStripArray ?
Die Strip Arrays dienen zur Darstellung von Flächen. Ein Fläche mit 4 Eckpunkten könnte z.B. nicht eben
oder konkav sein. Dies würde den Flächen Renderer von Java3D vor Probleme stellen.
12) Aufgabe ................. (3 Punkte)
Was gibt ein stripVertexCounts[] Array an ?
Es gibt an, welche Vertizes zusammen eine Fläche beschreiben. Und zwar beginnend vom Index 0 sind die
stripVertexCounts[0] ersten Vertizes im GeometryArray Objekt eine Fläche u.s.w.
13) Aufgabe ...............(17 Punkte)
a) Welche Unterschiede gibt es zwischen einem Bounds Objekt und einem BoundingLeaf Objekt ?
Das Bounds Objekt wird nur durch ein Objekt referenziert. Der Ort des Bounds Objekts ist bereits durch
dieses Objekt festgelegt. Daher darf das Bounds Objekt kein Leaf sein (kein 2. Ort)
b) Warum ist ein BoundingLeaf ein Leaf ?
Beim BoundingLeaf ist der Ort unabhängig vom Objekt, welches es refernziert. Durch addChild wird es
von einem Knoten zusätzlich referenziert. Dadurch wird der Ort des BoundingLeaf festgelegt. Weil es den
räumlichen Wirkungsbereich eines Objekts festlegt, ist es nicht sinnvoll einen Knoten anzuhängen. Daher
ist BoundingLeaf ein Blatt. Kein Teil der Zustandsbeschreibung eines VO.
c) Warum ist das Bounds Objekt kein Leaf ?
siehe oben.
d) Warum ist das BoundingLeaf für Behavior Objekte nicht so wichtig wie für Light Objekte ?
Behavior Objekte haben keinen Ort. Daher kann man Sie unbesorgt an irgendeinen Ort in den Baum
hängen, der ein Funktionieren des Behavior über die Dauer des Programmablaufs hinweg gewährleistet.
Ein Light Objekt hat für sich einen Ort (der z.B. bei Point Lichtquellen wichtig ist). Die Objekte, die
Prof. Dr. Harald Gläser, Fachbereich Informatik
Fachhochschule Furtwangen
Seite 5
Fachbereich Informatik
Graphische DV
Klausur WS 2002 / 2003
3.2.2003
Name:__________________email:_____________________Matr.Nr.:_______________
beleuchtet werden sollen haben aber davon unabhängige Orte. An diese Orte können die BoundingLeafs
angehängt werden. Ein Bounds Objekt wäre fest mit dem Ort der Lichtquelle verknüpft.
e) Welchen Vorteil hat es, ein BoundingLeaf Objekt an eine Viewing Platform und an ein Background
Objekt zu binden ?
Unabhängig von der Bewegung der Viewing Platform bleibt der Background immer gleich (und gerät nicht
aus dem Wirkungsbereich).
f) Man bewegt die viewing platform entlang der Z-Achse in Richtung wachsender z Werte. Plötzlich
verschwinden visual objects. Was ist passiert ?
Das activation volume der viewing platform schneidet sich nicht mehr mit der scheduling region des Blatts.
14) Aufgabe ................. (3 Punkte)
Was ist der Unterschied zwischen Interaktion und Animation ?
Interaktion: die virtuelle Welt reagiert auf Benutzereingaben.
Animation: die virtuelle Welt verändert sich im Laufe der Zeit, aber auch indirektes Reagieren auf
Benutzereingaben z.B. Billboard
15) Aufgabe ...............(12 Punkte)
a) Manchmal funktioniert ein DistanceLOD Objekt nicht. Welche Ursachen kann das (abgesehen von
trivialen Fehlern) haben (Denken Sie an das Switch Objekt) ?
DistanceLOD oder Switch nicht in Szenegraphen eingesetzt, allow_switch_write nicht gesetzt
b) Warum sind für ein DistanceLOD Objekt weniger Distanzen als visual objects definiert ?
Vom Abstand 0 bis zur 1. Distanz wird das erste Switch Objekt benutzt.
c) In der unendlich laufenden Animation eines Strichmännchens sind vier frames gegeben, von denen zwei
(z.B. 1. und 3.) völlig gleich aussehen. Die Animation nutzt ein Morph Objekt, das immer wieder die 4
frames durchläuft. Kann man einen frame weglassen ?
Nein, denn obwohl der 1. frame genuaso wie der 3. , unterscheiden Sie sich doch in der Reihenfolge der
Vertizes, was für die Interpolation der Bewegung der Vertzies in der Animation von Bedeutung ist.
16) Aufgabe ................. (7 Punkte)
a) Welche 3 Vektoren werden für die Beleuchtungsrechnung benötigt ?
Lichtvektor, Augenvektor, Flächennormale
b) Warum werden diese Vektoren für die Beleuchtungsrechnung benötigt ?
spekulare Reflektion -> Eingangswinkel = Ausgangswinkel, Eingangswinkel und Ausgangswinkel kann
man aus Lichtvektor und Flächennormale berechnen, Winkel zum Beobachter aus dem Augenwinkel
c) Welche Lichtquellenarten gibt es in Java3D ?
AmbientLight, PointLight, DirectionalLight, SpotLight,
d) Sie haben eine Lichtquelle in ihre virtuelle Welt eingeführt. Aber alles ist schwarz. Was kann die
Ursache sein ?
Licht nicht im Szenegraph
influencing bounds falsch
17) Aufgabe ................. (5 Punkte)
Zwei Lichtquellen, rot und blau, strahlen auf eine weiße Kugel ein. Wie sieht diese Kugel aus ?
Die der roten Lichtquelle zugewandte Seite rot, die der blauen zugewandten blau und der Bereich der von
beiden getroffen wird violett.
Prof. Dr. Harald Gläser, Fachbereich Informatik
Fachhochschule Furtwangen
Seite 6
Fachbereich Informatik
Graphische DV
Klausur WS 2002 / 2003
3.2.2003
Name:__________________email:_____________________Matr.Nr.:_______________
18) Aufgabe ...............( 12 Punkte)
Automatische Texturerzeugung: angenommen die s und t Ebene sind parallel und mit gleichem Abstand
gegenüber einer Kugel angeordnet, die mit einer Textur überzogen wird. Die Textur besteht aus einem
blau/weissen Streifenmuster, mit den Streifen parallel zu t . Wie sieht die Textur auf der Kugel aus ?
Konzentrische Ringförmige Streifen in weiss und blau, wobei die Streifenbreite nach außen hin abnimmt.
Prof. Dr. Harald Gläser, Fachbereich Informatik
Herunterladen