Prof. Dr. Tobias Breiner

Größe: px
Ab Seite anzeigen:

Download "Prof. Dr. Tobias Breiner"

Transkript

1

2 Eigene Geometrien Inhalt Grundlagen Dreieckslisten Dreiecksstreifen Dreieckstabellen Importer von 67

3 Grundlagen von 67

4 Grundlagen Modellierung in der virtuellen Welt (0D => D) Punktmodelle (D => D) Linienmodelle (D => D) Flächenmodelle (D => D) Volumenmodelle Fh Kempten von 67

5 Eigene Geometrien Grundlagen Flächenmodelle Flächenmodelle Flächenmodelle beschreiben die Oberflächen der virtuellen Objekte durch Vielecke (Polygone). Das Innenleben des virtuellen Objektes bleibt dagegen undefiniert. Das funktioniert so lange, wie die Kamera das Objekt nur von außen betrachtet und das Objekt intakt bleibt. von 67

6 Eigene Geometrien Grundlagen Flächenmodelle Flächenmodelle Durch die Berechnung der Interaktion zwischen Licht und Material auf der Oberfläche (Shading) entsteht eine Optische Simulation des Objektes. Da das Innenleben nicht mitberechnet wird, sind Flächenmodelle performant bei gleichzeitiger hoher visueller Qualität. Fast alle gängigen D-Werkzeuge basieren daher vornehmlich auf polygonalen Flächenmodellen. 6 von 67

7 Eigene Geometrien Grundlagen Flächenmodelle Definition Polygon Ein Polygon wird mathematisch durch eine einfache und geschlossene Folge von Kanten (Edges) in einer Ebene beschrieben, die durch je zwei Punkte definiert werden: {(p 0,p )... (p n-,p n- )} p p 0 =p 6 p p p p Fh Kempten 7 von 67

8 Eigene Geometrien Grundlagen Flächenmodelle Vorteil der Dreiecke I Ein Polygon kann beliebig viele Eckpunkte beinhalten. In Vektoria (und den meisten anderen D- Systemen) sind allerdings nur Dreiecke als Polygone erlaubt. Werden Vierecke, Fünfecke, Sechsecke, etc. benötigt, müssen diese durch mehrere Dreiecke ersetzt werden. Das ganz obige Polygon könnte man z.b. folgendermaßen aufteilen. 8 von 67

9 Eigene Geometrien Grundlagen Flächenmodelle Vorteil der Dreiecke II Indem die meisten D-Systeme sich auf Dreiecke als Polygone beschränken, wird eine Menge Ärger vermieden: Insbesonde mit Offenheit, Kreuzvernetzungen und Polygonunebenheiten durch Eckpunkte, die nicht in einer Ebene liegen. 9 von 67

10 Eigene Geometrien Grundlagen Flächenmodelle Facetten und Vertices Die von einem Polygon eingeschlossene Fläche wird als Facette (engl. Face) bezeichnet und die mit Zusatzinformationen versehenen Eckpunkte eines Polygons werden in der Computergrafik Vertices genannt (Singular: Vertex). 0 von 67

11 Eigene Geometrien Grundlagen Flächenmodelle Zusatzinformationen von Vertices Die Zusatzinformationen eines Vertex, neben seiner D-Position im Raum, unterscheiden sich von Engine zu Engine. In Vektoria sind diese konkret: - Oberflächennormale (für das Shading wichtig) - Tangente (für das POM- und Dot-Bumpmapping wichtig) - Bitangente (für das POM- und Dot-Bumpmapping wichtig) - UV-Koordinaten (geben die Position der Textur am Vertex an) (u,v) von 67

12 Eigene Geometrien Grundlagen Flächenmodelle CVertex::Init void Init ( CHVector vpos, CHVector vnormal, CHVector vtangent, CHVector vbitangent, float fu=0, float fv=0, ); Normalerweise muss die Bitangente nicht angegeben werden, sie errechnet sich mittels der Vertexnormalen und der Vertextangenten mittels dem Kreuzprodukt. In seltenen Fällen ist die Bitangente aber nicht rechtshändig orthogonal. Dann muss sie explizit mit angegeben werden. von 67

13 Eigene Geometrien Grundlagen Flächenmodelle Drehrichtung der Facetten Es ist wichtig, dass die Vertices in einem rechtshändigen System auch rechtsdrehend vernetzt sind (mathematisch positive Rotation, wenn man das Objekt von Außen betrachtet) v v v 0 v und nicht linksdrehend, sonst zeigt die Flächennormale der Facette nach innen. v v 0 von 67

14 Eigene Geometrien Grundlagen Flächenmodelle Polygonnetze Normalerweise wird eine Oberfläche nicht durch einzelne isolierte Polygone definiert, sondern durch Polygonnetze. Hier können sich verschiedene Facetten ein- und denselben Vertex teilen. V In diesem Beispiel teilen sich die Facetten F, F, F und F den Vertex V. V6 V6 Diese Vertexredundanzen lassen sich zur Renderbeschleunigung und zur Speicherplatzreduzierung ausnutzen. F V F V0 F V F F F0 F0 F F F6 V V von 67

15 Eigene Geometrien Grundlagen Flächenmodelle Streifen (Strips) Die Vertexredundanzen kann man u.a. durch Streifen bzw. engl. Strips vermeiden. Hier wird das Polygonnetz implizit durch die Reihenfolge der Vertices definiert. Bei Dreiecksstreifen (Triangle Strips) definieren immer drei aufeinanderfolgende Vertices eine neue Facette. V0,V,V => F V,V,V => F V,V,V => F V,V,V => F V0 V F V F F V V F V von 67

16 Eigene Geometrien Grundlagen Flächenmodelle Fans Die Vertexredundanzen können bei speziellen Geometrien auch durch Fans eliminiert werden. Fans beschreiben eine Menge von Polygonen, die sich einen zentralen Vertex teilen. Bei Triangle Fans gibt der erste Vertex den Zentralvertex an, die nachfolgenden Vertices die restlichen Vertices der adjazenten Facetten. In diesem Beispiel teilen sich die Facetten F0 bis F den zentralen Vertex V0. Die Anwendungsgebiete von Fans sind sehr eng begrenzt, die Performanzvorteile marginal und die Struktur so inflexibel, dass Fans in modernen D-Systemen für gewöhnlich nicht mehr angeboten werden, z.b. werden sie ab DirectX 0, OpenGL.0, Vektoria V, etc. nicht mehr unterstützt. F F V F0 F F V0 F 6 von 67

17 Eigene Geometrien Grundlagen Tabellen (Indexed Face Sets) Spezielle Tabellen, auch Indexed Face Sets genannt, sind die flexibelste und meist genutzte Möglichkeit zur Vermeidung von Vertexredundanzen. Hier wird jeder Vertex einmal in einer Vertextabelle aufgelistet und mit einer Facettentabelle beliebig oft referenziert. Vertextabelle Facettentabelle V0 V X Y Z V A V B V C V F0 F V F F V F0 V V V.0.. V V V V F0 0 F F F 7 von 67

18 Eigene Geometrien Grundlagen Flächenmodelle Erzeugung polygonaler Geometrien Neben den parametrisierten Erzeugung von geometrischen Primitiven (Kugel, Quader, Tetraeder, Quad, ) gibt es die Möglichkeit, eigene geometrische Flächenmodelle zu erstellen. Die Möglichkeit zur Erzeugung eigener Geometrien bieten nicht alle Szenegrafen bzw. Game- oder D-Engines. In Vektoria gibt es mehere Möglichkeiten zur Erzeugung eigener polygonaler Geometrien, u.a.: Dreieckslisten per CGeoTriangleList, Dreiecksstreifen per CGeoTriangleStrip, Dreieckstabellen per CGeoTriangleTable 8 von 67

19 Eigene Geometrien Grundlagen Flächenmodelle Flächenmodellklassen in Vektoria kann sein Triangle Lists CGeoTriangleList Geometrie CGeo kann sein Triangle Table CGeoTriangleTable Triangle Strip CGeoTriangleStrip Besteht aus einzelnen Dreieckspolygonen => für unzusammenhängende oder kantige Strukturen mit wenigen Polygonen geeignet Besteht aus einer Serie von Vertices, die ein Dreieckspolygonnetz definieren. => Für runde, zusammenhängende Strukturen geeignet. Besteht aus Vertexund Indextabelle (Indexed Face Set). => meist beste Wahl (vermeidet Vertexredundanzen) 9 von 67

20 Kapitel Kapitel Dreieckslisten 0 von 67

21 Eigene Geometrien Dreieckslisten kann sein Triangle Lists CGeoTriangleList Geometrie CGeo Triangle Strip CGeoTriangleStrip kann sein Triangle Table CGeoTriangleTable Besteht aus einzelnen Dreieckspolygonen => für unzusammenhängende oder kantige Strukturen mit wenigen Polygonen geeignet Besteht aus einer Serie von Vertices, die ein Dreieckspolygonnetz definieren. => Für runde, zusammenhängende Strukturen geeignet. Besteht aus Vertexund Indextabelle (Indexed Face Set). => meist beste Wahl (vermeidet Vertexredundanzen) von 67

22 Dreieckslisten Triangle Lists Pro und Cons Vorteile: Einfacher als Triangle Strips und Triangle Tables. Auch für kantige und/oder unzusammenhängende Geometrien verwendbar. Nachteile: Etwas Langsamer als Triangle Strips und Triangle Tables, da redundante Vertices mehrfach aufgelistet werden. Im Folgenden ein Beispiel, wie man mit Hilfe von Triangle Lists einen Einheitswürfel erzeugen kann. von 67

23 Dreieckslisten Allgemeines Vorgehen bei Triangle Lists Vertices erzeugen CVertex::Init( ) Vertices zu Polygonen vernetzen CGeoTriangleList::AddVertex( ) Dreiecksliste initialisieren CGeoTriangleList::Init(); Die initialisierte Triangle List kann man wie eine normale Geometrie verwenden. von 67

24 Dreieckslisten - Einheitswürfel mit Triangle Lists Benötigte Variablen im Header class CGeoUnitCube : public CGeoTriangleList { public: // In den Konstruktor wird alles reingeschrieben: CGeoUnitCube(void); // der Destruktor kann erst einmal leer bleiben: ~CGeoUnitCube(void); }; // Pro Würfelseite brauche ich Vertices. // Ein Würfel hat 6 Seiten. // Also brauche ich * 6 = Vertices // (Acht Vertices miteinander zu teilen ist keine // gute Idee, da die Normalen, Tangenten und // Bitangenten pro Seite anders sind): CVertex m_avertex[]; von 67

25 Dreieckslisten - Einheitswürfel mit Triangle Lists Benötigte Variablen im Header CGeoUnitCube :: CGeoUnitCube(void) { } // // Hier in den Konstruktorkörper kommt der Code der folgenden Seiten rein. Damit wird der Einheiswürfel gleich am Anfang mit den richtigen Vertices und Polygonen aufgebaut. CGeoUnitCube :: ~CGeoUnitCube(void) { } Der Destruktor kann erst einmal leer bleiben von 67

26 Dreieckslisten - Einheitswürfel mit Triangle Lists Nummerierung der Vorderseite y v z v 0 x v v 6 von 67

27 Dreieckslisten - Einheitswürfel mit Triangle Lists Aufbau der Vorderseite // Zuerst muss die Seite Z Plus gebaut werden: m_avertex[0].init( // Vertex 0 von Seite Z+: CHVector(+.0f,+.0f,+.0f), // Position CHVector( 0.0f, 0.0f,.0f), // Normale CHVector(-.0f, 0.0f, 0.0f), // Tangente 0.0f,.0f); // UV-Koordinaten m_avertex[].init( // Vertex von Seite Z+: CHVector(-.0f,+.0f,+.0f), // Position CHVector( 0.0f, 0.0f,.0f), // Normale CHVector(-.0f, 0.0f, 0.0f), // Tangente.0f,.0f); // UV-Koordinaten m_avertex[].init( // Vertex von Seite Z+: CHVector(+.0f,-.0f,+.0f), // Position CHVector( 0.0f, 0.0f,.0f), // Normale CHVector(-.0f, 0.0f, 0.0f), // Tangente 0.0f, 0.0f); // UV-Koordinaten 7 von 67

28 Dreieckslisten - Einheitswürfel mit Triangle Lists Aufbau der Vorderseite m_avertex[].init( // Vertex von Seite Z+: CHVector(-.0f,-.0f,+.0f), // Position CHVector( 0.0f, 0.0f,.0f), // Normale CHVector(-.0f, 0.0f, 0.0f), // Tangente.0f, 0.0f); // UV-Koordinaten // Jetzt haben wir die Vertices der Vorderseite // definiert, wir müssen noch die Vertices // zu Dreieckspolygonen vernetzen: //. Dreieck auf der Z+-Seite: AddVertex(&m_avertex[0]); AddVertex(&m_avertex[]); AddVertex(&m_avertex[]); //. Dreieck auf der Z+-Seite: AddVertex(&m_avertex[]); AddVertex(&m_avertex[]); AddVertex(&m_avertex[]); Auf rechtshändige Drehrichtung achten! Auf rechtshändige Drehrichtung achten! 8 von 67

29 Dreieckslisten - Einheitswürfel mit Triangle Lists Nummerierung der Rückseite y v v z x v 7 v6 9 von 67

30 Dreieckslisten - Einheitswürfel mit Triangle Lists Aufbau der Rückseite // Dann muss die Seite Z Minus gebaut werden: m_avertex[].init( // Vertex von Seite Z-: CHVector(+.0f,+.0f,-.0f), // Position CHVector( 0.0f, 0.0f,-.0f), // Normale CHVector(.0f, 0.0f, 0.0f), // Tangente 0.0f,.0f); // UV-Koordinaten m_avertex[].init( // Vertex von Seite Z-: CHVector(-.0f,+.0f,-.0f), // Position CHVector( 0.0f, 0.0f,-.0f), // Normale CHVector(.0f, 0.0f, 0.0f), // Tangente.0f,.0f); // UV-Koordinaten m_avertex[6].init( // Vertex 6 von Seite Z-: CHVector(+.0f,-.0f,-.0f), // Position CHVector( 0.0f, 0.0f,-.0f), // Normale CHVector(.0f, 0.0f, 0.0f), // Tangente 0.0f, 0.0f); // UV-Koordinaten 0 von 67

31 Dreieckslisten - Einheitswürfel mit Triangle Lists Aufbau der Rückseite m_avertex[7].init( // Vertex 7 von Seite Z -: CHVector(-.0f,-.0f,-.0f), // Position CHVector( 0.0f, 0.0f,-.0f), // Normale CHVector(.0f, 0.0f, 0.0f), // Tangente.0f, 0.0f); // UV-Koordinaten // Jetzt haben wir die Vertices der Hinterseite // definiert, wir müssen nun noch die Vertices zu // Dreieckspolygonen vernetzen: //. Dreieck auf der Z Minus-Seite: AddVertex(&m_avertex[]); AddVertex(&m_avertex[6]); AddVertex(&m_avertex[]); //. Dreieck auf der Z Minus-Seite: AddVertex(&m_avertex[]); AddVertex(&m_avertex[6]); AddVertex(&m_avertex[7]); Auf rechtshändige Drehrichtung achten! Auf rechtshändige Drehrichtung achten! von 67

32 Dreieckslisten - Einheitswürfel mit Triangle Lists Nummerierung auf der rechten Seite y v 9 z v 8 v 0 v x von 67

33 Dreieckslisten - Einheitswürfel mit Triangle Lists Aufbau der rechten Seite // Seite X Plus: m_avertex[8].init( // Vertex 8 von Seite X+: CHVector(+.0f,+.0f,+.0f), // Position CHVector(.0f, 0.0f, 0.0f), // Normale CHVector( 0.0f,.0f, 0.0f), // Tangente.0f, 0.0f); // UV-Koordinaten m_avertex[9].init( // Vertex 9 von Seite X+: CHVector(+.0f,+.0f,-.0f), // Position CHVector(.0f, 0.0f, 0.0f), // Normale CHVector(0.0f,.0f, 0.0f), // Tangente.0f,.0f); // UV-Koordinaten m_avertex[0].init( // Vertex 0 von Seite X+: CHVector(+.0f,-.0f,+.0f), // Position CHVector(.0f, 0.0f, 0.0f), // Normale CHVector( 0.0f,.0f, 0.0f), // Tangente 0.0f, 0.0f); // UV-Koordinaten von 67

34 Dreieckslisten - Einheitswürfel mit Triangle Lists Aufbau der rechten Seite m_avertex[].init( // Vertex von Seite X+: CHVector(+.0f,-.0f,-.0f), // Position CHVector(.0f, 0.0f, 0.0f), // Normale CHVector( 0.0f,.0f, 0.0f), // Tangente 0.0f,.0f); // UV-Koordinaten // Jetzt haben wir die Vertices der rechten Seite // definiert, wir müssen nun noch die Vertices zu // Dreieckspolygonen vernetzen: //. Dreieck auf der X Plus-Seite: AddVertex(&m_avertex[8]); AddVertex(&m_avertex[0]); AddVertex(&m_avertex[9]); //. Dreieck auf der X Plus-Seite: AddVertex(&m_avertex[9]); AddVertex(&m_avertex[0]); AddVertex(&m_avertex[]); von 67

35 Dreieckslisten - Einheitswürfel mit Triangle Lists Nummerierung auf der linken Seite v y v z v v x von 67

36 Dreieckslisten - Einheitswürfel mit Triangle Lists Aufbau der linken Seite // Seite X Minus: m_avertex[].init ( // Vertex von Seite X-: CHVector(-.0f,+.0f,+.0f), // Position CHVector(-.0f, 0.0f, 0.0f), // Normale CHVector( 0.0f,.0f, 0.0f), // Tangente.0f,.0f); // UV-Koordinaten m_avertex[].init ( // Vertex von Seite X-: CHVector(-.0f,+.0f,-.0f), // Position CHVector(-.0f, 0.0f, 0.0f), // Normale CHVector( 0.0f,.0f, 0.0f), // Tangente.0f,0.0f); // UV-Koordinaten m_avertex[].init( // Vertex von Seite X-: CHVector(-.0f,-.0f,+.0f), // Position CHVector(-.0f, 0.0f, 0.0f), // Normale CHVector( 0.0f,.0f, 0.0f), // Tangente 0.0f,.0f); // UV-Koordinaten 6 von 67

37 Dreieckslisten - Einheitswürfel mit Triangle Lists Aufbau der linken Seite m_avertex[].init( // Vertex von Seite X-: CHVector(-.0f,-.0f,-.0f), // Position CHVector(-.0f, 0.0f, 0.0f), // Normale CHVector( 0.0f,.0f, 0.0f), // Tangente 0.0f, 0.0f); // UV-Koordinaten // Jetzt haben wir die Vertices der linken Seite // definiert, wir müssen nun noch die Vertices zu // Dreieckspolygonen vernetzen: //. Dreieck auf der linken Seite: AddVertex(&m_avertex[]); AddVertex(&m_avertex[]); AddVertex(&m_avertex[]); //. Dreieck auf der linken Seite: AddVertex(&m_avertex[]); AddVertex(&m_avertex[]); AddVertex(&m_avertex[]); 7 von 67

38 Dreieckslisten - Einheitswürfel mit Triangle Lists Übung: Ober- und Unterseite Das Prinzip sollte jetzt klar geworden sein, es fehlen aber noch Ober- und Unterseite. Diese Aufgabe bleibt Ihnen überlassen. y Oberseite z x 8 von 67

39 Dreieckslisten - Einheitswürfel mit Triangle Lists Initialisierung der Triangle List Nachdem Ober- und Unterseite erstellt wurden, kommt der letzte Befehl im Konstruktor. Mit CTriangleList::Init werden die Polygondaten an die Grafikkarte übergeben und damit einie eigene Geometrie erzeugt: CGeoTriangleList::Init(); Die Klasse kann nun so vertwendet werden, als wäre sie eine normale Geometrie, man inkluded sie und schreibt im Header: CGeoUnitCube m_zgunitcube; Die Variable m_zgunitcube muss natürlich noch an ein geeignetes Placement geadded werden und eventuell per SetMaterial mit einem Material versehen werden: m_zp.addgeo(&m_zgunitcube); m_zgunitcube.setmaterial(pmaterial); 9 von 67

40 Dreieckslisten - Einheitswürfel mit Triangle Lists Ausgabe Einheitswürfel 0 von 67

41 Kapitel Kapitel Dreiecksstreifen von 67

42 Dreiecksstreifen CGeoTriangleStrips kann sein Triangle Lists CGeoTriangleList Geometrie CGeo Triangle Strip CGeoTriangleStrip kann sein Triangle Table CGeoTriangleTable Besteht aus einzelnen Dreieckspolygonen => für unzusammenhängende oder kantige Strukturen mit wenigen Polygonen geeignet Besteht aus einer Serie von Vertices, die ein Dreieckspolygonnetz definieren. => Für runde, zusammenhängende Strukturen geeignet. Besteht aus Vertexund Indextabelle (Indexed Face Set). => meist beste Wahl (vermeidet Vertexredundanz) von 67

43 Dreiecksstreifen Pro und Cons von Triangle Strips Vorteile: Shader können etwas schneller mit Triangle Strips umgehen (Faustregel ca. 0% schneller) Nachteile: Komplizierter als Triangle Lists und Triangle Tables Nur schwer kantige Strukturen erzeugbar Keine unzusammenhängenden Strukturen erzeugbar von 67

44 Dreiecksstreifen Quad durch Triangle Strips Im Folgenden ein Beispiel, wie man mittels Triangle Strips ein Quad erzeugen kann. Ein Quad ist eine rechteckige Fläche im Raum, bestehend aus zwei Dreieckspolygonen von 67

45 Dreiecksstreifen Eigenen Quad mit Triangle Strips (/) // Im Header der Game-Klasse brauchen wir eine // Instanz eines Dreiecks-Strips: CGeoTriangleStrip m_zgtrianglestrip; // In der CGame::Init() erfolgt die Erzeugung der // Geometrie: // Erst die Vertices initalisieren: m_avertex[0].init( // Vertex : CHVector(-,-,0,), // Position CHVector(0,0,,0), // Normale CHVector(,0,0,0), // Tangente 0.0F, 0.0f // UV-Koordinaten ); von 67

46 Dreiecksstreifen Eigenen Quad mit Triangle Strips (/) m_avertex[].init( // Vertex : CHVector(+,-,0,), // Position CHVector(0,0,,0), // Normale CHVector(,0,0,0), // Tangente.0F, 0.0f // UV-Koordinaten ); m_avertex[].init( // Vertex : CHVector(-,+,0,), // Position CHVector(0,0,,0), // Normale CHVector(,0,0,0), // Tangente 0.0F,.0f // UV-Koordinaten ); 6 von 67

47 Dreiecksstreifen Eigenen Quad mit Triangle Strips (/) m_avertex[].init( // Vertex : CHVector(+,+,0,), // Position CHVector(0,0,,0), // Normale CHVector(,0,0,0), // Tangente.0F,.0f, // UV-Koordinaten ); // Die Vertices gehören zum Triangle Strip: for(int i=0;i<;i++) { m_zgtrianglestrip.addvertex(&m_avertex[i]); m_zgtrianglestrip.addindex(i); } 7 von 67

48 Dreiecksstreifen Eigenen Quad mit Triangle Strips (/) // Initialisiere den Triangle Strip: m_zgtrianglestrip.init(); // Mappe Material auf das Rechteck: m_zgtrianglestrip.setmaterial(&m_material); // und nun kannst Du Deinen eigenen persönlichen Triangle Strip benutzen, wie eine ganz normale Geometrie: m_placement.addgeo(& m_zgtrianglestrip); 8 von 67

49 Dreiecksstreifen Ergebnis: Eigener Quad 9 von 67

50 Dreiecksstreifen Übung Erzeugen Sie einen Pfeiler mit Hilfe von Triangle Strips! Freiwillige Zusatzaufgabe für die schnellen Nerds: Erzeugen Sie eine Prozedur, die parametrisiert dorische und ionische Pfeiler erzeugt! 0 von 67

51 Kapitel Kapitel Dreieckstabellen von 67

52 Polygonale Flächenmodelle Dreieckstabellen kann sein Triangle Lists CGeoTriangleList Geometrie CGeo Triangle Strip CGeoTriangleStrip kann sein Triangle Table CGeoTriangleTable Besteht aus einzelnen Dreieckspolygonen => für unzusammenhängende oder kantige Strukturen mit wenigen Polygonen geeignet Besteht aus einer Serie von Vertices, die ein Dreieckspolygonnetz definieren. => Für runde, zusammenhängende Strukturen geeignet. Besteht aus Vertexund Indextabelle (Indexed Face Set). => meist beste Wahl (vermeidet Vertexredundanzen) von 67

53 Dreieckstabellen Vorgehen bei CGeoTriangleTables Vertices erzeugen CVertex::Init( ) Vertex-Tabelle erzeugen CGeoTriangleTable::AddVertex( ) Facetten-Tabelle erzeugen CGeoTriangleTable::AddIndex(..) Dreieckstabelle initialisieren CGeoTriangleTable::Init(); Die initialisierte Dreieckstabelle kann man wie eine normale Geometrie verwenden. von 67

54 Dreieckstabellen Beispiel: Fünfeck in XY-Ebene V Vertextabelle Facettentabelle V0 F F V X Y Z V V V V A V B V C F0 0 F 0 F 0 V F0 V V V Wird mit AddVertex() befüllt Wird mit AddIndex() befüllt. Jeweils drei aufeinanderfolgende Aufrufe bilden eine Dreiecksbeschreibung. von 67

55 Dreieckstabellen Eigenes Fünfeck mittels CGeoTriangleTable Benötigte Variablen im Header (/) class CGeoPentagon : public CGeoTriangleTable { public: // In den Konstruktor wird alles reingeschrieben: CGeoPentagon(void); // der Destruktor kann erst einmal leer bleiben: ~CGeoPentagon(void); }; // Für ein Fünfeck brauche ich natürlich // fünf Vertices. CVertex m_avertex[]; von 67

56 Dreieckstabellen Eigenes Fünfeck mit Triangle Tables (/) // Zuerst muss die Seite Z Plus gebaut werden: m_avertex[0].init( // Vertex 0 von Seite Z+: CHVector(+0.0f,+0.8f, 0.0f), // Position CHVector( 0.0f, 0.0f,.0f), // Normale CHVector(-.0f, 0.0f, 0.0f), // Tangente 0.0f,.0f); // UV-Koordinaten m_avertex[].init( // Vertex von Seite Z+: CHVector(-0.f,+0.0f, 0.0f), // Position CHVector( 0.0f, 0.0f,.0f), // Normale CHVector(-.0f, 0.0f, 0.0f), // Tangente.0f,.0f); // UV-Koordinaten m_avertex[].init( // Vertex von Seite Z+: CHVector(+.f,-0.0f, 0.0f), // Position CHVector( 0.0f, 0.0f,.0f), // Normale CHVector(-.0f, 0.0f, 0.0f), // Tangente 0.0f, 0.0f); // UV-Koordinaten 6 von 67

57 Dreieckstabellen Eigenes Fünfeck mit Triangle Tables (/) m_avertex[].init( // Vertex von Seite Z+: CHVector(-.f,-0.8f, 0.0f), // Position CHVector( 0.0f, 0.0f,.0f), // Normale CHVector(-.0f, 0.0f, 0.0f), // Tangente.0f, 0.0f); // UV-Koordinaten m_avertex[].init( // Vertex von Seite Z+: CHVector(-0.7f,-.f, 0.0f), // Position CHVector( 0.0f, 0.0f,.0f), // Normale CHVector(-.0f, 0.0f, 0.0f), // Tangente.0f, 0.0f); // UV-Koordinaten // Jetzt haben wir die Vertices definiert und fügen sie nacheinander der Vertextabelle hinzu: for(int i = 0; i<; ++i) AddVertex(&m_avertex[i]); 7 von 67

58 Dreieckstabellen Eigenes Fünfeck mit Triangle Tables (/) // Wir erzeugen nun die Facettenliste, indem wir für jede // Facette nacheinander ihre drei Vertices per AddIndex // aufrufen: //. Dreieck F0: AddIndex(0); AddIndex(); AddIndex(); //. Dreieck F: AddIndex(0); AddIndex(); AddIndex(); //. Dreieck F: AddIndex(0); AddIndex(); AddIndex(); Auf rechtshändige Drehrichtung achten! 8 von 67

59 Dreieckstabellen Eigenes Fünfeck mit Triangle Tables (/) // Am Schluss müssen wir den Triangle Table // initialisieren: Init(); // Man kann natürlich den Triangle Table auch noch mit // einem Material versehen: SetMaterial(&m_material); // Nun kann man die Klasse CGeoPentagon verwenden, // wie eine ganz normale Gemetrie und eine // diesbezügliche Instanz per AddGeo an ein // Placement hängen. 9 von 67

60 Kapitel Kapitel Importer 60 von 67

61 Importer Wavefront-Import (OBJ-Dateien) In der Game.h: CGeo * m_pzg; CFileWavefront m_filewavefront; In der Game.cpp / Init-Methode: m_pzg = m_filewavefront.loadgeo( myfile.obj"); Blender invertiert die UV-Maps, daher müssen Sie beim Importieren den dafür extra angelegten Invertierungsflag setzen, also:.loadgeo( myfile.obj, true); Importieren Sie mit Blender oder Maya erstellte D- Geometrien am besten mit diesem Importer, das bringt die schönsten Ergebnisse! 6 von 67

62 Importer Blender-Import In der Game.h: Achtung, Nr.! Bisher ist es nur möglich, Blender Files von -Bit Blender-Versionen zu importieren! Achtung, Nr.! Es wird immer nur das allererste Mesh aus einem Blender-File importiert! CGeo * m_pzg; CFileBlender m_fileblender; In der Game.cpp / Init-Methode: m_pzg = m_fileblender.loadgeo( myfile.blend"); 6 von 67

63 Importer D Studio Max-Import In der Game.h: CGeo * m_pzg; CFileDS m_fileds; In der Game.cpp / Init-Methode: m_pzg = m_fileds.loadgeo( myfile.ds"); 6 von 67

64 Importer XD-Import Achtung, Nr.! XD-Files enthalten für gewöhnlich weder Normalenvektoren noch UV-Koordinaten! Diese Daten werden daher von Vektoria heuristisch abgeschätzt. Die meisten importierten Meshes werden daher vom Shading und von der Texturierung her etwas seltsam aussehen. Achtung, Nr.! Es wird immer nur das allererste Mesh aus einem XD-File importiert! In der Game.h: CGeo * m_pzg; CFileXD m_filexd; In der Game.cpp / Init-Methode: m_pzg = m_filexd.loadgeo( myfile.xd"); 6 von 67

65 Tipp Prozedural topp, modelliert flopp (/) Ziehen Sie möglichst eine in Vektoria prozedural erzeugte Geometrie bzw. eine vorgefertigte Vektoria- Primitivengeometrie einer importierten Geometrie vor! Die Gründe dafür sind:.) Prozedural erzeugte Geometrien sind sparsamer hinsichtlich der Vertices und genauer durchdacht..) Prozeduren können möglicherweise wiederverwendet werden..) Tangenten- und Bitangentenkoordinaten für das Bumpmapping werden in Modellierungsprogrammen oft nicht gut generiert und wenn doch, meist nicht exportiert..) Beim Importieren können Fehler auftreten Achtung! Die Form einer einmal erzeugten Geometrie kann danach nur noch schwer verändert werden! 6 von 67

66 Tipp Prozedural topp, modelliert flopp (/) Materialartefakte durch fehlende Tangenten und Bitangenten. UtahTeapot, per OBJ-Datei importiert. UtahTeapot, prozedural erzeugt. 66 von 67

67 Game Over Danke für Ihr Interesse! Copyright: ; Tobias.Breiner@D-Generation.de 67 von 67

Objektorientierte Programmierung

Objektorientierte Programmierung Unterlagen zur Veranstaltung Einführung in die Objektorientierte Programmierung Mit Processing Alexis Engelke Sommer 2012 Alexis Engelke Inhalt Level 1: Geometrie Hintergrundfarben Punkte, Linien und deren

Mehr

2. Den einzelnen Objekten Material zuteilen. Die Materialien können mit Farben versehen werden (siehe 4) oder mit einer Image Textur (siehe 5).

2. Den einzelnen Objekten Material zuteilen. Die Materialien können mit Farben versehen werden (siehe 4) oder mit einer Image Textur (siehe 5). Kurzanleitung Modellerstellung für Heli-X mit Blender 1. Schritt: Modellstruktur zeichnen (oder bestehendes Modell importieren obj = Wavefront) Dabei möglichst für verschiedene Modellteile eigene Layer

Mehr

Objektorientierung: Klassen und Objekte

Objektorientierung: Klassen und Objekte Objektorientierung: Klassen und Objekte Klasse: Beschreibung für eine Menge von Objekten Schablone, Bauplan abstrakte Form Objekt: Instanz einer Klasse konkreter Inhalt (Werte) Klassen bestehen aus Attributen

Mehr

(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU

(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU (7) Normal Mapping Vorlesung Computergraphik II S. Müller Dank an Stefan Rilling Einleitung Die Welt ist voller Details Viele Details treten in Form von Oberflächendetails auf S. Müller - 3 - Darstellung

Mehr

Einführung in die Programmierung 1

Einführung in die Programmierung 1 Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener

Mehr

Praktikum: Spieleengine im Eigenbau

Praktikum: Spieleengine im Eigenbau Seite 1/17 Praktikum Spieleengine im Eigenbau Alexander Weggerle, Tobias Bäuerle 19.10.09 http://www.saschawillems.de Praktikum: Spieleengine im Eigenbau Seite 2/17 Praktikum Spieleengine im Eigenbau Alexander

Mehr

Modellierungsmethoden

Modellierungsmethoden Modellierungsmethoden Definition (smethoden) smethoden fassen verschiedene Beschreibungsmittel, insbesondere Datenstrukturen und Operationen, für geometrische Objekte zusammen. Äquivalente Begriffe: Geometrische

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

Programmierpraktikum 3D Computer Grafik

Programmierpraktikum 3D Computer Grafik Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Szenegraphen, Texturen und Displaylisten. Agenda Beleuchtungsmodelle in OpenGL Bump-Maps zur Erzeugung von Reliefartigen Oberflächen Height-Maps

Mehr

Quader und Würfel. 1. Kreuze jene Wörter oder Bilder an, die Körper bezeichnen. Mathematische Bildung von der Schulstufe

Quader und Würfel. 1. Kreuze jene Wörter oder Bilder an, die Körper bezeichnen. Mathematische Bildung von der Schulstufe Geometrische Körper Diagnoseblatt 5. Schulstufe Quader und Würfel 1. Kreuze jene Wörter oder Bilder an, die Körper bezeichnen Kreis Schuhschachtel Eistüte Fahrkarte Kugel Seite 1 2. Kannst du Quader und

Mehr

Objektorientierung Grundlagen

Objektorientierung Grundlagen Prof. Dr.-Ing. Andreas Simon Telefon +49 (0)5331 939 42630 Telefax +49 (0)5331 939 43634 E-Mail a.simon@ostfalia.de Objektorientierung Grundlagen Probeklausur 18. Mai 2015 Name: Mat.-Nr.: Vorname: Login:

Mehr

Übung Datenstrukturen. Objektorientierung in C++

Übung Datenstrukturen. Objektorientierung in C++ Übung Datenstrukturen Objektorientierung in C++ Aufgabe 1a - Farben Schreiben Sie eine Klasse COLOR zur Beschreibung von Farben. Eine Farbe werde hierbei additiv durch ihren Rot-, Grün- und Blauanteil

Mehr

Kapitel 3: Variablen

Kapitel 3: Variablen Kapitel 3: Variablen Thema: Programmieren Seite: 1 Kapitel 3: Variablen Im letzten Kapitel haben wir gelernt, bestimmte Ereignisse zu wiederholen solange eine Bedingung erfüllt ist. Nun möchten wir aber

Mehr

3 Klassen, Attribute, Methoden

3 Klassen, Attribute, Methoden 3 Klassen, Attribute, Methoden Jörn Loviscach Versionsstand: 10. April 2011, 10:25 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.j3l7h.de/videos.html

Mehr

Probelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering

Probelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering Probelektion zum Thema Shadow Rendering Shadow Maps Shadow Filtering Renderman, 2006 CityEngine 2011 Viewport Real reconstruction in Windisch, 2013 Schatten bringen viel Realismus in eine Szene Schatten

Mehr

OpenGL. (Open Graphic Library)

OpenGL. (Open Graphic Library) OpenGL (Open Graphic Library) Agenda Was ist OpenGL eigentlich? Geschichte Vor- und Nachteile Arbeitsweise glscene OpenGL per Hand Debugging Trend Was ist OpenGL eigentlich? OpenGL ist eine Spezifikation

Mehr

Jörn Loviscach Hochschule Bremen

Jörn Loviscach Hochschule Bremen Programmierbare Hardware-Shader Jörn Loviscach Hochschule Bremen Überblick Vertex- und Pixel-Shader Anwendungsbeispiele fx-dateien Anwendungsbeispiele Zusammenfassung Puffer Vertex- und Pixel-Shader Hardware-Renderpipeline

Mehr

Spamschutz bei TYPO3. von Bernd Warken bei Fa. Netcos AG

Spamschutz bei TYPO3. von Bernd Warken bei Fa. Netcos AG Spamschutz bei TYPO3 von Bernd Warken bei Fa. Netcos AG Kapitel 0: Einleitung 3 0.1 Vorwort 3 0.2 Lizenz 3 Kapitel 1: Aktivierung und Konfiguration 4 1.1 config.spamprotectemailaddresses 4 1.2 config.spamprotectemailaddresses_atsubst

Mehr

1. Das Koordinatensystem

1. Das Koordinatensystem Liebe Schülerin! Lieber Schüler! In den folgenden Unterrichtseinheiten wirst du die Unterrichtssoftware GeoGebra kennen lernen. Mit ihrer Hilfe kannst du verschiedenste mathematische Objekte zeichnen und

Mehr

Jeder Flächentyp erfordert seine eigenen Modellierungstechniken, die als Set zu diesen Typen gruppiert sind.

Jeder Flächentyp erfordert seine eigenen Modellierungstechniken, die als Set zu diesen Typen gruppiert sind. Modellierung mittels Maya-Software Es werden dafür drei verschiedene Modellflächentypen (modeling surfaces) verwendet : 1. Polygone 2. NURBS verallgemeinerte B-Splines 3. Subdivision surfaces (unterteilte

Mehr

Java Vererbung. Inhalt

Java Vererbung. Inhalt Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter

Mehr

Überblick Echtzeit-Rendering. Uwe Domaratius dou@hrz.tu-chemnitz.de

Überblick Echtzeit-Rendering. Uwe Domaratius dou@hrz.tu-chemnitz.de Überblick Echtzeit-Rendering Uwe Domaratius dou@hrz.tu-chemnitz.de Gliederung 1. Einleitung 2. geometriebasierende Verbesserungen 3. Level-of-Detail 4. Culling 5. Texturen 6. bildbasiertes Rendering Was

Mehr

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Wozu objektorientiertes Programmieren? Die Welt besteht für den Menschen

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Klassenbeziehungen & Vererbung

Klassenbeziehungen & Vererbung Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in

Mehr

Java 3D. Linien, Flächen und Objekte Axel Bartsch, Okt. 2002

Java 3D. Linien, Flächen und Objekte Axel Bartsch, Okt. 2002 Java 3D Linien, Flächen und Objekte Axel Bartsch, Okt. 2002 Virtual World Koordinaten System Grundlagen zur Definition visueller Objekte Shape3D Unterklasse der Leaf-Klasse Eigenschaften des visuellen

Mehr

Aufbau von Klassen. class punkt {...

Aufbau von Klassen. class punkt {... Einführung in C++ Aufbau von Klassen Eine wird mit dem Schlüsselwort class eingeleitet, und endet mit einem Semikolon. Der Inhalt wird zwischen geschweiften Klammern geschrieben. class punkt {... ; Im

Mehr

2.4A. Reguläre Polyeder (Platonische Körper)

2.4A. Reguläre Polyeder (Platonische Körper) .A. Reguläre Polyeder (Platonische Körper) Wie schon in der Antike bekannt war, gibt es genau fünf konvexe reguläre Polyeder, d.h. solche, die von lauter kongruenten regelmäßigen Vielecken begrenzt sind:

Mehr

3D-Druckformate und COLLADA

3D-Druckformate und COLLADA Historisch-Kulturwissenschaftliche Informationsverarbeitung AM 1 Hauptseminar: Re-usable Content in 3D und Simulationssystemen Dozent: Prof. Dr. Manfred Thaller SS 2015 Robert Lee Phillips 16.07.2015 3D-Druckformate

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Felder, mehrdimensional Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Überblick: mehrdimensionale Felder 2 Vereinbarung

Mehr

Universität Osnabrück Fachbereich Mathematik / Informatik. 5. Vorlesung ( )

Universität Osnabrück Fachbereich Mathematik / Informatik. 5. Vorlesung ( ) Universität Osnabrück Fachbereich Mathematik / Informatik 5. Vorlesung (06.05.2013) Prof. Dr. rer. nat. Oliver Vornberger Nico Marniok, B. Sc. Erik Wittkorn, B. Sc. Game Application Layer Rückblick Game

Mehr

Java basierte Browser Plug-ins. Martin Kreis 3D-Graphik im Web WS 02/03. 27.01.2003 Java basierte Browser Plug-ins 1. Übersicht

Java basierte Browser Plug-ins. Martin Kreis 3D-Graphik im Web WS 02/03. 27.01.2003 Java basierte Browser Plug-ins 1. Übersicht Java basierte Browser Plug-ins Martin Kreis 3D-Graphik im Web WS 02/03 27.01.2003 Java basierte Browser Plug-ins 1 Übersicht Plug-ins 2D/3D Präsentationen und Animationen im Web Shout3D 3DAnywhere Anfy/Anfy3D

Mehr

3D Programmierpraktikum: Einführung in C++ - Teil 2

3D Programmierpraktikum: Einführung in C++ - Teil 2 3D Programmierpraktikum: Einführung in C++ - Teil 2 Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 4. Mai 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Was sind Felder? 2 Vereinbarung von Feldern 3 Erzeugen von Feldern

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

Mehr

Beispiel des Zusammenführens der APV- Tabellen Stammdaten und Verlaufsdaten mithilfe von Access

Beispiel des Zusammenführens der APV- Tabellen Stammdaten und Verlaufsdaten mithilfe von Access Beispiel des Zusammenführens der APV- Tabellen Stammdaten und Verlaufsdaten mithilfe von Access Diese Übersicht stellt die Zusammenführung der APV Tabellen Stammdaten und Verlaufdaten mithilfe der Datenbank

Mehr

Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit. Direct 3D-Output für ein Rendering Framework

Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit. Direct 3D-Output für ein Rendering Framework Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit Direct 3D-Output für ein Rendering Framework von Benjamin Betting unter der Betreuung von Daniel Schiffner 1 Gliederung Kapitel I und II: Motivation,Einführung,Grundlagen

Mehr

C A R L V O N O S S I E T Z K Y. Wavefront OBJ Format. Johannes Diemke. Übung im Modul OpenGL mit Java Wintersemester 2010/2011

C A R L V O N O S S I E T Z K Y. Wavefront OBJ Format. Johannes Diemke. Übung im Modul OpenGL mit Java Wintersemester 2010/2011 C A R L V O N O S S I E T Z K Y Wavefront OBJ Format Johannes Diemke Übung im Modul OpenGL mit Java Wintersemester 2010/2011 Motivation 3D-Modelle bestehen i. d. R. aus Tausenden von Dreiecken Händische

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

GeoGebra Quickstart. Eine Kurzanleitung für GeoGebra 3.0

GeoGebra Quickstart. Eine Kurzanleitung für GeoGebra 3.0 GeoGebra Quickstart Eine Kurzanleitung für GeoGebra 3.0 Dynamische Geometrie, Algebra und Analysis ergeben GeoGebra, eine mehrfach preisgekrönte Unterrichtssoftware, die Geometrie und Algebra als gleichwertige

Mehr

Objektorientierte Programmierung mit Python Objekt und Klassen

Objektorientierte Programmierung mit Python Objekt und Klassen Objektorientierte Programmierung mit Python Objekt und Klassen hat Kanten hat eine Farbe hat eine Kantenfarbe Rechteck zeichnen Rechteck einfärben Rechteck drehen Modulare Programmierung Eine Aufgabe wird

Mehr

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode Methoden und Klassen Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode

Mehr

2. Platonische Körper

2. Platonische Körper 2 Platonische Körper 27 2. Platonische Körper Dieses Kapitel legt den Schwerpunkt auf die Geometrie. Geometrie in der Grundschule befasst sich mit zwei zentralen Gebieten: Symmetrie und Raumvorstellung.

Mehr

Abschnitt 9: Schnittstellen: Interfaces

Abschnitt 9: Schnittstellen: Interfaces Abschnitt 9: Schnittstellen: Interfaces 9. Schnittstellen: Interfaces 9.1 Die Idee der Schnittstellen 9.2 Schnittstellen in Java 9.3 Marker-Interfaces 9.4 Interfaces und Hilfsklassen 9.5 Zusammenfassung

Mehr

ANIMATION - GRUNDLAGEN

ANIMATION - GRUNDLAGEN ANIMATION - GRUNDLAGEN Bei CAD-Programmen gibt es meist folgende Verfahren zur Erzeugung von : Festlegung von Schlüsselszenen, aus denen das Programm automatisch Zwischenbilder generiert ( Keyframing )

Mehr

Ogre Einführung Teil 1

Ogre Einführung Teil 1 Inhalt -Einleitung -Installieren und Einrichten von Ogre -Die erste Anwendung Ogre Einführung Teil 1 Einleitung Eine 3D Engine ist eine sehr komplexe Software und besteht aus mehreren tausend Zeilen Programmcode.

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Website importieren oder erstellen?

Website importieren oder erstellen? 94 Eine Website aus Vorlagen Website importieren oder erstellen? Grundsätzlich gibt es zwei Möglichkeiten, MAGIX Web Designer zu benutzen: entweder Sie haben bereits eine Website und wollen sie mit MAGIX

Mehr

Erwachsenenschule Bremen Abteilung I: Sekundarstufe Doventorscontrescarpe 172 A Bremen. Die Kursübersicht für das Fach Mathematik

Erwachsenenschule Bremen Abteilung I: Sekundarstufe Doventorscontrescarpe 172 A Bremen. Die Kursübersicht für das Fach Mathematik Erwachsenenschule Bremen Abteilung I: Sekundarstufe Doventorscontrescarpe 172 A 28195 Bremen Die Kursübersicht für das Fach Mathematik Erwachsenenschule Bremen Abteilung I: Sekundarstufe Doventorscontrescarpe

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

Wima-Praktikum 2: Bildsynthese-Phong

Wima-Praktikum 2: Bildsynthese-Phong Wima-Praktikum 2: Bildsynthese-Phong Wima-Praktikum 2: Prof. Dr. Lebiedz, M. Sc. Radic 1 Inhaltsverzeichnis 1 Einleitung 3 2 Kurze Beschreibung der Aufgabenstellung und dem Phong- Modell 3 3 Modellierung

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

5.2 Neue Projekte erstellen

5.2 Neue Projekte erstellen 5.2 Neue Projekte erstellen Das Bearbeiten von bestehenden Projekten und Objekten ist ja nicht schlecht wie aber können Sie neue Objekte hinzufügen oder gar völlig neue Projekte erstellen? Die Antwort

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Die Vererbung ermöglicht es, neue Klassen auf der Basis von schon

Mehr

Kapitel D : Flächen- und Volumenberechnungen

Kapitel D : Flächen- und Volumenberechnungen Kapitel D : Flächen- und Volumenberechnungen Berechnung einfacher Flächen Bei Flächenberechnungen werden die Masse folgendermassen bezeichnet: = Fläche in m 2, dm 2, cm 2, mm 2, etc a, b, c, d = Bezeichnung

Mehr

Diplomvorprüfung in Datenverarbeitung EBS Sommersemester 2002

Diplomvorprüfung in Datenverarbeitung EBS Sommersemester 2002 Diplomvorprüfung in Datenverarbeitung EBS Sommersemester 2002 Prüfungsaufgaben zu den Vorlesungen Datenverarbeitung im ersten und im zweiten Semester Aufgabensteller: Gleißner Die Lösungen sind auf das

Mehr

3. Semester : 1. Prüfung

3. Semester : 1. Prüfung 3. Semester : 1. Prüfung Name : Die gesamte Prüfung bezieht sich auf die!! Prüfungsdauer: 90 Minuten mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter geschrieben werden

Mehr

Prof. W. Henrich Seite 1

Prof. W. Henrich Seite 1 Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse

Mehr

Geometrie 1. Roman Sommer. Informatik 2 Programmiersysteme Martensstraße Erlangen

Geometrie 1. Roman Sommer. Informatik 2 Programmiersysteme Martensstraße Erlangen Geometrie 1 Roman Sommer Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Grundlagen Punkte, Vektoren Schreibweise: Skalar: Vektor: Komponente: Punkt: (spitzer) Winkel zw. zwei Vektoren:

Mehr

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte) Praktische Informatik (Software) Vorlesung Softwareentwicklung 1 Prof. Dr. A. Ferscha Hauptklausur am 01. 02. 2001 Zuname Vorname Matr. Nr. Stud. Kennz. Sitzplatz HS / / / Punkte Note korr. Fügen Sie fehlende

Mehr

Wie erstellt man dynamische Elemente mit JSXGraph?

Wie erstellt man dynamische Elemente mit JSXGraph? Wie erstellt man dynamische Elemente mit JSXGraph? 1. Kurzinformation zu JSXGraph Was ist JSXGraph? Eine freie dynamische Mathematiksoftware, die vollständig in Javascript programmiert ist. Daher benötigt

Mehr

Non-Photorealistic Rendering

Non-Photorealistic Rendering Übersicht 1. Motivation und Anwendungen 2. Techniken - Cel Shading - Konturlinien - Hatching Einführung Traditionelle Computergraphik Ziel: Fotorealismus Einführung Motivation Bewusste Vermeidung von

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

Kurs zur Ergänzungsprüfung Darstellende Geometrie CAD. Ebenes Zeichnen (2D-CAD) und die ersten Befehle

Kurs zur Ergänzungsprüfung Darstellende Geometrie CAD. Ebenes Zeichnen (2D-CAD) und die ersten Befehle CAD Ebenes Zeichnen (2D-CAD) und die ersten Befehle Schnellzugriff-Werkzeugkasten (Quick Access Toolbar) Registerkarten (Tabs) Gruppenfenster (Panels) Zeichenfläche Befehlszeile: für schriftl. Eingabe

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr

Schrägbilder von Körpern Quader

Schrägbilder von Körpern Quader Schrägbilder von Körpern Quader Vervollständige die Zeichnung jeweils zum Schrägbild eines Quaders. Bezeichne die für die Berechnung des Volumens und des Oberflächeninhalts notwendigen Seiten und bestimme

Mehr

Lernmodul 2 Geometr.-topol. Datenstrukturen. Lernmodul 2: Geoobjekte und ihre Modellierung - Geometr.-topol. Datenstrukturen

Lernmodul 2 Geometr.-topol. Datenstrukturen. Lernmodul 2: Geoobjekte und ihre Modellierung - Geometr.-topol. Datenstrukturen Folie 1 von 27 Lernmodul 2 Geometr.-topol. Datenstrukturen Folie 2 von 27 Geometr.-topol. Datenstrukturen Übersicht Überblick/Motivation Fokus Geometrisch-topologische Datenstrukturen Spaghetti Spaghetti

Mehr

MB 10. Seiten im Materialblock: Wissensspeicher ab Seite MB 11 Methodenspeicher Seite MB 14 Arbeitsmaterial ab Seite MB 15 Checkliste Seite MB 23

MB 10. Seiten im Materialblock: Wissensspeicher ab Seite MB 11 Methodenspeicher Seite MB 14 Arbeitsmaterial ab Seite MB 15 Checkliste Seite MB 23 MB 10 Seiten im Materialblock: Wissensspeicher ab Seite MB 11 Methodenspeicher Seite MB 14 ab Seite MB 15 Checkliste Seite MB 23 Wissensspeicher Körper und Flächen MB 11 Wissensspeicher Fachwörter zu Körpern

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

16. Platonische Körper kombinatorisch

16. Platonische Körper kombinatorisch 16. Platonische Körper kombinatorisch Ein Würfel zeigt uns, daß es Polyeder gibt, wo in jeder Ecke gleich viele Kanten zusammenlaufen, und jede Fläche von gleich vielen Kanten berandet wird. Das Tetraeder

Mehr

Shadingalgorithmen zur Visualisierung nanostrukturierter Oberflächen

Shadingalgorithmen zur Visualisierung nanostrukturierter Oberflächen Universität Hamburg Fachbereich Informatik Arbeitsbereich Technische Aspekte Multimodaler Systeme Seminar Informatikanwendungen in Nanotechnologien Betreuer: Bernd Schütz Sommersemester 2014 Shadingalgorithmen

Mehr

Testprüfung (Abitur 2013)

Testprüfung (Abitur 2013) Testprüfung (Abitur 2013) Steve Göring, stg7@gmx.de 3. April 2013 Bearbeitungszeit: Zugelassene Hilfsmittel: 270 Minuten Taschenrechner (nicht programmierbar, nicht grafikfähig), Tafelwerk Name: Punkte:

Mehr

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Letztes Mal static int ggt(int a, int b) { if (a == b) return a; else if (a > b) } return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Darf hier nicht stehen! Compiler sagt: Missing return statement

Mehr

LICOM Tutorial Fräsen 3D 3-Achsen

LICOM Tutorial Fräsen 3D 3-Achsen LICOM Tutorial Fräsen 3D 3-Achsen Kapitel 1 Seite 1 von 24 Borchersstr. 20 Kapitel 1 Einleitung Bevor Sie mit dem Durcharbeiten des Tutorials starten: Sofern Sie dieses Tutorial als pdf- Dokument verwenden,

Mehr

Handbuch organice ExcelTransfer

Handbuch organice ExcelTransfer Handbuch organice ExcelTransfer OSATE Version 2 Stand: Juni 2014 Inhaltsverzeichnis Allgemein... 2 ExcelTransfer-Features... 2 Startmaske... 3 Export Einzeltabelle... 4 Export Adressen und Ansprechpartner...

Mehr

3.5 Implizite Beschreibungen

3.5 Implizite Beschreibungen 3.5 Implizite Beschreibungen 3 Repräsentation und Modellierung von Objekten Idee: Beschreibung von Objekt-Flächen bzw. -Volumina als Isoflächen in Skalarfeldern. Die Skalarfelder ihrerseits entstehen kontrolliert

Mehr

Objekte für die Sims 2 erstellen. Einführung

Objekte für die Sims 2 erstellen. Einführung Objekte für die Sims 2 erstellen Einführung Dieses Anleitung richtet sich an Anfänger, ist aber trotzdem immer eine gute Referenz für alle Sims2 Designer. In dieser Anleitung möchte ich Ihnen von Anfang

Mehr

Java Kurzreferenz Für Fortgeschrittene

Java Kurzreferenz Für Fortgeschrittene Java Kurzreferenz Für Fortgeschrittene 1. Initialisierung von Applets: Die Methode init Wenn ein Applet gestartet wird, werden immer zwei Methoden aufgerufen. Diese heissen init und start. Um gewisse Berechnungen

Mehr

Inhaltsverzeichnis. Inhaltsverzeichnis

Inhaltsverzeichnis. Inhaltsverzeichnis Inhaltsverzeichnis Inhaltsverzeichnis Einleitung 5 1 Zahlen 7 1.1 Zahlen und Zahlenmengen....................................... 7 1.2 Rechnen mit Zahlen und Termen....................................

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans Graphische Benutzungsoberflächen mit Java Einführung in NetBeans Graphische Benutzungsoberflächen! Interaktion mit dem Programm! Datenein- und ausgabe! Rückmeldungen über Verarbeitung der Daten! Visualisierung

Mehr

Arbeiten mit Auswahlwerkzeugen

Arbeiten mit Auswahlwerkzeugen Arbeiten mit Auswahlwerkzeugen Kennen Sie das auch: Bei der Bearbeitung eines Bildes möchten Sie nur den Himmel verändern, oder einen bestimmten Teil in Schwarz-Weiß umwandeln? Sie denken, das können nur

Mehr

syntax.tex Eine Übersicht

syntax.tex Eine Übersicht syntax.tex Eine Übersicht Bernd Worsch 7. Juli 1997 Inhaltsverzeichnis 1 Einleitung 1 2 Bevor es funktioniert... 1 3 Grundelemente von syntax.tex 1 4 Strukturelemente von syntax.tex 3 5 Setzen von Syntaxdiagrammen

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Mesh-Visualisierung. Von Matthias Kostka. Visualisierung großer Datensätze

Mesh-Visualisierung. Von Matthias Kostka. Visualisierung großer Datensätze Mesh-Visualisierung Von Matthias Kostka Übersicht Einführung Streaming Meshes Quick-VDR Rendering virtueller Umgebung Rendering mit PC-Clustern Zusammenfassung 2 Mesh Untereinander verbundene Punkte bilden

Mehr

HS Heilbronn - Prof. Dr. P. Fleischmann CAD-K2 10/2010 2/1. Definitionen

HS Heilbronn - Prof. Dr. P. Fleischmann CAD-K2 10/2010 2/1. Definitionen HS Heilbronn - Prof. Dr. P. Fleischmann CAD-K2 10/2010 2/1 2 3D-Modellierung 2.1 Modellerzeugung 2.2 Volumenspeicherung beim Solid Model: 2.3 Volumenmodellierung 2.3.1 Verschiebe-Operationen - Sketcher

Mehr

Preisaktualisierungen via BC Pro-Catalogue

Preisaktualisierungen via BC Pro-Catalogue Preisaktualisierungen via BC Pro-Catalogue 1. Allgemein Seite 1 2. Anwendungsfall : Lieferant mit im System bereits vorhandenen Katalog Seite 2-3 3. Anwendungsfall : Neuer Lieferant Seite 4-8 1. Allgemein

Mehr

Handbuch Teil 9 Produktion

Handbuch Teil 9 Produktion Handbuch Teil 9 Inhaltsverzeichnis 9... 3 9.1 Preisliste... 3 9.2 Fertigungsauftrag... 4 9.3 EXCEL Import Stückliste... 5 9 9.1 Preisliste Die Preisliste bietet die Möglichkeit Stücklisteninhalte in Word

Mehr

CasCADos 4.1 - Update-Patch 4.1.1083

CasCADos 4.1 - Update-Patch 4.1.1083 CasCADos 4.1 - Update-Patch 4.1.1083 CasCADos-Update Version 4.1.1083 Bitte überprüfen Sie vor Installation des Update-Patches zunächst die derzeit auf Ihrem Rechner installierte CasCADos-Version. Voraussetzung

Mehr

Felder (1) Allgemeines

Felder (1) Allgemeines Felder (1) Allgemeines Gleichartige Daten, wie Tabelle von Zahlen, Datumswerten, Namen etc. Felder (engl. Array) stellen einen Verbundtyp dar, in dem mehrere Daten desselben Typs gespeichert werden Oft

Mehr

Faustregeln zu Zusicherungen

Faustregeln zu Zusicherungen Faustregeln zu Zusicherungen Zusicherungen sollen stabil sein (vor allem an Wurzel der Typhierarchie) keine unnötigen Details festlegen explizit im Programm stehen unmissverständlich formuliert sein während

Mehr

Kurs 7 Geometrie 2 MSA Vollzeit (1 von 2)

Kurs 7 Geometrie 2 MSA Vollzeit (1 von 2) Erwachsenenschule Bremen Abteilung I: Sekundarstufe Doventorscontrescarpe 172 A 2815 Bremen Kurs 7 Geometrie 2 MSA Vollzeit (1 von 2) Name: Ich 1. 2. 3. So schätze ich meinen Lernzuwachs ein. kann die

Mehr

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen. Ziele sind das Arbeiten mit Funktionen und dem Aufzählungstyp (enum), sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 3: Diese Aufgabe

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

Die abgeleiteten Klassen Kreis und Viereck erben die Elemente des Basisklasse und verfügen über zusätzliche Eigenschaften (Seitenlänge,

Die abgeleiteten Klassen Kreis und Viereck erben die Elemente des Basisklasse und verfügen über zusätzliche Eigenschaften (Seitenlänge, Kompaktkurs C++ Vererbung (inheritance) 1 Oft besitzen verschiedene Datentypen einen gemeinsamen Kern: Kreis und Viereck sind geometrische Figuren; sie haben eine Kantenzahl, eine Fläche, einen Umfang

Mehr

Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife

Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife 303 Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife durchgeführt wird. 304 305 for-schleifen sind in Aktivitätsdiagrammen

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren

Mehr

Das Mathematikabitur. Abiturvorbereitung Geometrie. Autor: Claus Deser Abiturvorbereitung Mathematik 1

Das Mathematikabitur. Abiturvorbereitung Geometrie. Autor: Claus Deser Abiturvorbereitung Mathematik 1 Das Mathematikabitur Abiturvorbereitung Geometrie Autor: Claus Deser Abiturvorbereitung Mathematik 1 Gliederung Was sind Vektoren/ ein Vektorraum? Wie misst man Abstände und Winkel? Welche geometrischen

Mehr