Exotische Texturformen

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

Computer Graphics Shader
Imperative Programmierung
der Universität Oldenburg
Grundlagen der Geometrie
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
FH-Hof Texturen Richard Göbel. FH-Hof Anwendungen von Texturen Darstellung von 2D-Bildern Gestaltung von Oberflächen Simulation komplexer Geometrien...
FH-Hof Geometrie Richard Göbel. FH-Hof Aufbau des virtuellen Universums.
Sortierverfahren Richard Göbel.
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
FH-Hof Texturen Richard Göbel. FH-Hof Anwendungen von Texturen Darstellung von 2D-Bildern Gestaltung von Oberflächen Simulation komplexer Geometrien...
PowerPoint & Impress kurz, die Registerkarten
Dynamisches Array als "verkettete Liste". Ein Vergleich.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Simulation und 3D-Programmierung Praxis: Dreiecke, Texturen, Vertex-Buffer Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung.
Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung
Java3d „Licht und Material“
EXCAVE ein 3D-Modell eines archäologischen Grabungsquadranten
OpenGL mit Delphi Allgemeines OpenGL-Funktionsbezeichnungen
Arrays,Strings&Pointer in C/C++
Computergrafik Vom Dreieck zum Ego-Shooter Olaf Müller
Displacement Mapping Dynamische Generierung detaillierter Geometrien
Special Effects Realistischeres Rendern einer Scene.
Computergrafik Begriff: Was ist Computergrafik?
FHP - Fachbereich Bauingenieurwesen
Computergraphik mit OpenGL Einführung. Bilder Objekt existiert im Raum unabhängig vom Betrachter Objekte sind beschrieben durch die Position verschiedener.
XNA 3D Tutorial Anzeigen eines Objektes. Inhalt Lernen Sie, wie Sie Modelle implementieren. Initializing Lernen Sie, wie Sie Modelle aus der Content Directory.
Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. Manfred Thaller AM 3 Übung: Softwaretechnologie.
3D- Spieleprogrammierung
PHP und MYSQL am Organisatorisches Der komplette Kurs im Schnelldurchgang Bewertung von wichtig und unwichtig Historisch Kulturwissenschaftliche.
Computergraphische Visualisierungs- verfahren für 3D-Stadtmodelle
Effekte 1 Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung.
Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen.
Wasser in 3D Die Modellierung und realitätsnahe Echtzeitberechnung von Wasser unter Zuhilfenahme der Grafik Engine OGRE 3D Präsentation von Paul van Hemmen.
Von der Planung bis zum Hauptmenü Seminar: Softwaretechnologie II Dozent: Prof. Manfred Thaller Referent: Jan Bigalke.
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
§5-1 §5 Mapping-Techniken Computergrafik - SS Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte Freiformflächen)
Verhalten von Objekten in der Szene
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
Ganzheitliches Projekt-, Ressourcen- und Qualitätsmanagement 1 Reports und AddOns Auf den folgenden Seiten wird Ihnen die Funktionsweise der Reports und.
Software Adobe Photoshop Elements (ca. 100 €)
Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung.
Java Programmierung.
Helwig Hauser Teil 4: Texturing Farbe, Struktur, Umgebung.
AddIn erstellen Herbers Excel-Server - der Workshop Angebote des Excel-Servers: Die Excel/VBA-Beispiele Die Excel/VBA-BeispieleDie Excel/VBA-BeispieleDie.
Präsentation der Diplomarbeit:
ICT – Modul Textverarbeitung
BMEVIEEA100 Grundlagen der Programmierung
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
CSS Cascading Style Sheets
Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung WS 2013/14.
Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002.
Einführung Blue J. Inhaltsverzeichnis  Definition  Vokabeln.
Übung 6 - MdMT Methoden der Medizintechnik Übung zur Vorlesung Folge 6 – Bilder in Matlab Einlesen, Erzeugen.
Universität zu Köln WS 2014/15 HKI – Softwaretechnologie 2 (Teil 1) Von Tilo Kochs.
Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken.
Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm.
1. Charakteranimation 2. PlugIns schreiben und laden Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/2011.
Die Renderpipeline.
A&D Persa K TB Herzlich Willkommen zum Flash 4 - Seminar.
Java-Kurs Übung Besprechung der Hausaufgabe
Grundlagen der Geometrie
Tutorium Software-Engineering SS14 Florian Manghofer.
Key-Value Paare (KVP) - Metadaten für Kanäle speichern und nach MDF4 exportieren PM (V1.0)
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
© Tobias Bäuerle, Virtuelle Präsenz WS10/11, Uni Ulm Übung Second Life Techniken.
 Präsentation transkript:

Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation und 3D Programmierung Referat von Sara Hommelsen

Volumentexturen dreidimensional Angabe der Größe in Pixeln/Texeln ausgehend von 2D-Textur > bei 3D: flache Textur wird zum Quader > bekommt zusätzlich Tiefe zu Höhe/Breite

Volumentexturen 3D-Vektor für Texturkoordinaten: Makros: tbVector3 D3DFVF_TEXCOORDSIZE

sonstige Eigenschaften Filterung Erzeugung von Mip-Maps viel Speicherplatz

Schnittstelle bisher: IDirect3DTexture9, nun: IDirect3DVolumeTexture9 > erwarten Methode: IDirect3DDevice9::SetTexture

Schnittstelle: Format/Größe GetVolumeLevel der IDirect3DVolumeTexture9 1. Parameter: Mip-Map-Ebene zum abfragen 2. Parameter: Zeiger auf IDirect3DVolume9 Schnittstelle, die Direct3D erfüllen soll. Aufruf GetDesc > ausgefüllte Textur vom Typ D3Volume_DESC

Wozu Volumentexturen? Landschaften Animation Licht/Schatten

Herstellung/Ladevorgang Verwendung von DirectXTextureTool (gehört zum DirectX SDK) DDS-Format

Volumentexturen laden Standard: D3DXCreateTextureFromFile (Ex) Volumen: D3DXCreateVolumeTextureFromFile (Ex) erwartet Tiefe als weiteren Parameter wenn Originalgröße übernommen werden soll, dann: D3DX_DEFAULT letzter Parameter: Adresse des Zeigers auf IDIRECT3DVolumeTexture9-Schnittstelle

Umgebungstexturen kubische Umgebungstexturen (in Würfelform angeordnet) Generierung von 6 Texturen Texturen werden auf Objekt gelegt > tatsächliche Struktur , reflektierte Bilder der Umgebung sind sichtbar

Texturkoordianten - 1 Flags sind dreidimensional Texturschicht-State D3DTSS_TEXTURETRANSFORMFLAGS auf D3DTTFF_COUNT3 Schnittstelle IDirect3DCubeTexture9 laden D3DXCreateCubeTextureFromFile (Ex)

Texturkoordianten - 2 generieren: DirectXTextureTool neue Textur erstellen cubeMapTexture wählen um zwischen Würfelflächen hin und her zu schalten: view -> CubeMapView => Bilddateien auf entsprechende Flächen der Würfeltextur laden (s. Standardtextur)

Skybox Sky Box = Würfel indem man sich befindet vorteilhaft, wenn Textur hoch aufgelöst Sky Box und Reflexion: gleiche Textur > Vertizes brauchen 3 Koordinaten

Bump Mapping (mit 3D) Simulation der Oberfläche auf Pixelebene Unterstützung abfragen: im Eintrag sind TextureOpCaps der D3DCAPS-9 Struktur die Flags D3DTEXOPCAPS_BUMPENVMAP gesetzt

Bump Mapping Transformation: U/V-Steigungswerte werden mit 2x2-Matrix multipliziert Matrixangabe m. H. der Texturschicht-States D3DTSS_BUMPENVMAT00 (M11) D3DTSS_BUMPENVMAT10 (M21) D3DTSS_BUMPENVMAT01 (M12) D3DTSS_BUMPENVMAT11 (M22)

Luminanz Veränderung: L´= L*S+0 S= Skalierungsfaktor D3DTSS_BUMPENVSCALE O= Offset-Wert D3DTSS_BUMPENVOFFSET

Einsetzen der Bump Map Verwendung von 3 Texturen: Schicht = normale Oberflächenstruktur Schicht = Bump-Map Schicht = Environment Map

Aktivierung der Bump Map Farboperator stellen auf: D3DTOP_BUMPENVMAP D3DTOP_BUMPENVMAPLUMINANCE gleiche Texturkoordinaten: D3DTSS_TCI_CAMERASPACEPERFECTIONVE CTOR und D3DTTFF_COUNT3

Erzeugung der Bump Map Direct3D erwartet Steigung oder durch Umrechnung selbst angeben oder Verwendung von DirectXTextureTool > Speicherung im DDS-Format

Environmental Bump Mapping Neuberechnung der Vektoren

Stencil-Buffer - 1 Teil des Z-Stencil-Buffers verschiedene Formate: D3DFMT_D32 D3DFMT_D16 D3DFMT_D24S8

Stencil-Buffer - 2 Der Clear-Methode der Schnittstelle IDirect3Device9 werden Flags D3DCLEAR_TARGET, D3DCLEAR_ZBUFFER, Flag D3DCLEAR_STENCK übergeben > leert Stencil-Buffer

Stencil-Buffer - 3 2^Anzahl der Stencil-Buffer reservierten Pixel – 1 >größter Wert, den Stencil-Buffer in einem Pixel erreichen kann

Stencil-Buffer - 4 Zweck: Reihe von Effekten in Echtzeitberechnung Format: Z-Stencil-Buffer setzen von Render-State D3DRS_STENCILABLE auf TRUE => alle gezeichneten Primitive verwenden Stencil-Buffering

Stencil-Test wenn Render-State D3D_STENCILABLE auf TRUE, dann Test Aufstellung gezielter Vergleichsfunktion und Referenzwert

Schreiben in Stencil-Buffer Festlegung was mit Stencil-Wert geschehen soll Werte können für Render-States eingesetzt werden (vgl. Tab. S. 247) Vergleich aller Stencil-Werte mit Referenzwert, festlegen mit D3DRS_STENCILREF

Lese- und Schreibbitmasken Einführung, weil manchmal nur einzelne Bits eines Stencil-Werts getestet werden sollen gesetzt in Form von Render-States Schreibbitmaske: Bitmaske wird mit bitweisem &-Operator auf alle Werte im Stencil-Buffer angewendet Lesebitmaske: Anwendung von Direct3D auf Referenzwert und auf aus Stencil-Buffer gelesene Werte

zweiseitiger Stencil-Buffer-Modus Flag D3DSTENCILCAPS_TWOSIDED im Element Stencilcaps der D3DCAPS9- Struktur gesetzt Render-State (RS) D3DRS_TWOSIDEDSTENCILMODE auf TRUE danach weitere RS zur Verfügung RS legen Stencil-Buffer-Einstellungen fest, die auf Bildschirm GEGEN den Uhrzeigersinn angeordnet sind Referenzwert und Schreibbitmasken werden NICHT voneinander getrennt betrachtet.

Stencil-Buffer füllen ohne Bildpufferfüllung Beschreibung des Stencil-Buffers auf 2 Weisen Clear-Methode zeichnen von Primitiven mit aktiviertem Stencil- Buffering um Abdruck im Stencil-Buffer zu hinterlassen: Vergleichsfunktion: D3DRS_STENCILFUNC auf D3DCMP_ALWAYS für D3DRS_STENCILPASS: D3DSTENCILOP_REPLACE und D3DRS_STENCILSREF auf den Wert der von Primitiven hinterlassen werden soll

D3DX Effekte Aufteilung des Render-Vorgangs: Zeichnung aller Dreiecke die Material A/Textur A verwenden, dann alle die Material B/Textur B verwenden usw. VOR jedem Rendern: Material muss eingesetzt werden, eventuelle Veränderungen einiger Werte

Effekte D3DX definiert Effektschnittstelle ID3DXEffect Techniken Durchgänge

Render States & Co. Wertezuweisung Texturschicht-/Samplerstate: Darstellung als Array Übernahme aller Namen ohne Präfixe

Transformationsmatrizen Worldtransform ViewTransform ProjectionTransform TextureTransform

Variablentypen Texture DWord Float String

Laden eines Effekts kann aus Datei/Speicher o.ä. geladen werden Funktion: D3DXCreateEffectFromFile

Mit Effekten rendern - 1 Technik durch Typ D3DXHANDLE ansprechen Anzahl verfügbarer Technik Methodenaufruf: ID3DXEffect::GetDesc füllt Struktur D3DXEFFECT_DESC aus Techniques-Element for-Schleife Methode ID3DXEffect::ValidateTechnique dafür D3DXHANDLE-Variable In for-Schleife: Index steht zur Verfügung

Mit Effekten rendern - 2 4. Methode GetTechnique erwartet Technikindex, liefert D3DXHANDLE zurück, der für ValidateTechnique gebraucht wird 5. wenn erfolgreich, dann Aktivierung m.H. der Methode ID3DXEffect::SetTechnique

Effekte aktivieren Effekt aktivieren mit ID3DXEffect::Begin 1. Parameter: Zeiger auf UINT 2. Parameter: 0 oder D3DXFX_DONOTSAVESTATE

Rendern Durchgang jedes einzelnen Durchgangs mit for-Schleife VOR jedem Zeichenvorgang Methodenaufruf ID3DXEffect::BeginPass Aufruf EndPass >nachdem alles gezeichnet ist: ID3DXEffect::End

Transformation umgehen Vertizes wandern durch Transformationspipeline rein: einfache objektrelative/absolute Positionsangaben raus: fertig bearbeitete 2D-Koordinaten Umgehung durch transformierte Vertizes

Unterschied - 1 x/y-Koordinate: echte Bildschirmkoordinaten mit 1 Pixel als Einheit z-Koordinate muss zwischen 0 und 1 liegen zusätzliche Angabe von w-Koordinate

Unterschied - 2 transformierte Vertizes: keine Beleuchtung keine Garantie, dass Clipping durchgeführt wird >transformierte Vertizes hervorragend, weil Raum zur Entwicklung eigener Verfahren

anderes Vertexformat transformierte Vertizes:

Imitation von DirectDraw Blitting > kopieren eines bestimmten Bereichs eines Quellbildes auf ein Zielbild > Verwendung hauptsächlich um Grafikobjekte zu zeichnen, die in seperaten Oberflächen gespeichert sind > immer dann verwenden, wenn Texturen im Spiel sind

Color Keying bestimmte Farben werden ausgelassen in Quellbildern gespeicherte Objekten wird Hintergrundfarbe zugewiesen Pixel in dieser Farbe werden verworfen Verwendung von Alpha-Kanal um Informationen zu speichern nichtkopierte Pixel = Alphawert 0 eingebauter Alphakanalgenerator: D3DXCreateTextureFromFile (Ex)

Rotation Veränderung der Vertex-Position, die Rechteck formen keine Verwendung von Transformationspipeline, sondern Funktion tbvector2TransformCoords > damit Transformation der Vertizes von Hand mit einer vorher erstellen Rotationsmatrix

andere Methode für 2D-Grafik Verzicht von Sichtmatrix und Projektionsmatrix -> Identitätsmatrix Z-Koordinate muss zwischen 0 und 1 liegen Vorteile: kein anderes Vertexformat, Verwendung von Weltmatrix, Clipping funktioniert

In Texturen rendern - 1 erstellen einer Textur/Z-Buffers - Identifizierung der Grafikkarte als Render- Target - Flag: D3DUSAGE_RENDERTARGET übergeben an Funktion D3DCreateTextureFromFile oder Methode IDirect3DDevice9::CreateTextur e

In Texturen rendern - 2 - Flag wird für usage-Parameter angegeben - Speicherklasse muss D3DPOOL_DEFAULT sein - Erzeugung Z-Stencil-Buffer mit Flag D3DUSAGE_DEPTHSTENCIL

In Texturen rendern - 3 2. Schritt: neues Render-Target setzen - rendern auf neu erzeugte Textur und Z-Stencil-Buffer m.H. von 2 Methoden: IDirect3DDevice9::SetRenderTarget SetDepthStencilSurface - erwarten Zeiger auf Direct3D-Oberfläche - zuerst: Oberfläche - SetRenderTarget erwartet Render-Target-Index

In Texturen rendern - 4 3. Schritt: alles rendern was in Textur erscheinen soll - Aufurf von clear am Anfang - Textur: andere Auflösung als alte Back-Buffer

Einfacher mit D3DX erleichtert Vorgang enorm folgende Schnittstellen: ID3RenderToSurface ID3DRenderToEnvMap -> Schnittstellen kümmern sich um Erzeugung Z-Stencil-Buffer, Anpassung an Viewport, ermöglicht rendern auf Texturen, die mit Mip-Mapping arbeiten

DANKE!