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