53
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

Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Embed Size (px)

Citation preview

Page 1: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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

Page 2: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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

Page 3: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Volumentexturen

• 3D-Vektor für Texturkoordinaten:– tbVector3

• Makros:– D3DFVF_TEXCOORDSIZE

Page 4: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

sonstige Eigenschaften

• Filterung

• Erzeugung von Mip-Maps

• viel Speicherplatz

Page 5: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Schnittstelle

• bisher: IDirect3DTexture9,– nun: IDirect3DVolumeTexture9– > erwarten Methode: IDirect3DDevice9::SetTexture

Page 6: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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

Page 7: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Wozu Volumentexturen?

• Landschaften

• Animation

• Licht/Schatten

Page 8: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Herstellung/Ladevorgang

• Verwendung von DirectXTextureTool (gehört zum DirectX SDK)

• DDS-Format

Page 9: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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

Page 10: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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

Page 11: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Texturkoordianten - 1

• Flags

• sind dreidimensional

• Texturschicht-State D3DTSS_TEXTURETRANSFORMFLAGS auf D3DTTFF_COUNT3

• Schnittstelle IDirect3DCubeTexture9• laden D3DXCreateCubeTextureFromFile (Ex)

Page 12: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Texturkoordianten - 2

• generieren: DirectXTextureTool1. neue Textur erstellen

2. cubeMapTexture wählen

3. um zwischen Würfelflächen hin und her zu schalten: view -> CubeMapView

=> Bilddateien auf entsprechende Flächen der Würfeltextur laden (s. Standardtextur)

Page 13: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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

Page 14: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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

Page 15: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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)

Page 16: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Luminanz

• Veränderung: L´= L*S+0

• S= Skalierungsfaktor D3DTSS_BUMPENVSCALE

• O= Offset-Wert D3DTSS_BUMPENVOFFSET

Page 17: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Einsetzen der Bump Map

• Verwendung von 3 Texturen:1. Schicht = normale Oberflächenstruktur

2. Schicht = Bump-Map

3. Schicht = Environment Map

Page 18: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Aktivierung der Bump Map

• Farboperator stellen auf:– D3DTOP_BUMPENVMAP– D3DTOP_BUMPENVMAPLUMINANCE

• gleiche Texturkoordinaten:– D3DTSS_TCI_CAMERASPACEPERFECTIONVECTOR und D3DTTFF_COUNT3

Page 19: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Erzeugung der Bump Map

• Direct3D erwartet Steigung– durch Umrechnung selbst angeben

oder– Verwendung von DirectXTextureTool– > Speicherung im DDS-Format

Page 20: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Environmental Bump Mapping

• Neuberechnung der Vektoren

Page 21: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Stencil-Buffer - 1

• Teil des Z-Stencil-Buffers

• verschiedene Formate:– D3DFMT_D32– D3DFMT_D16– D3DFMT_D24S8

Page 22: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Stencil-Buffer - 2

• Der Clear-Methode der Schnittstelle IDirect3Device9

werden

Flags D3DCLEAR_TARGET, D3DCLEAR_ZBUFFER,

Flag D3DCLEAR_STENCK

übergeben– > leert Stencil-Buffer

Page 23: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Stencil-Buffer - 3

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

Pixel erreichen kann

Page 24: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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

Page 25: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Stencil-Test

• wenn Render-State D3D_STENCILABLE auf TRUE, dann Test

• Aufstellung gezielter Vergleichsfunktion und Referenzwert

Page 26: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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

Page 27: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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

Page 28: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

zweiseitiger Stencil-Buffer-Modus

• Flag D3DSTENCILCAPS_TWOSIDED im Element Stencilcaps der D3DCAPS9-Struktur gesetzt

1. Render-State (RS) D3DRS_TWOSIDEDSTENCILMODE auf TRUE

2. danach weitere RS zur Verfügung3. RS legen Stencil-Buffer-Einstellungen fest, die

auf Bildschirm GEGEN den Uhrzeigersinn angeordnet sind

4. Referenzwert und Schreibbitmasken werden NICHT voneinander getrennt betrachtet.

Page 29: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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

Page 30: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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

Page 31: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Effekte

• D3DX definiert Effektschnittstelle ID3DXEffect

• Techniken

• Durchgänge

Page 32: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Render States & Co.

• Wertezuweisung

• Texturschicht-/Samplerstate: Darstellung als Array

• Übernahme aller Namen ohne Präfixe

Page 33: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Transformationsmatrizen

• Worldtransform

• ViewTransform

• ProjectionTransform

• TextureTransform

Page 34: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Variablentypen

• Texture

• DWord

• Float

• String

Page 35: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Laden eines Effekts

• kann aus Datei/Speicher o.ä. geladen werden– Funktion: D3DXCreateEffectFromFile

Page 36: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Mit Effekten rendern - 1

• Technik durch Typ D3DXHANDLE ansprechen1. Anzahl verfügbarer Technik

1. Methodenaufruf: ID3DXEffect::GetDesc

2. füllt Struktur D3DXEFFECT_DESC aus

3. Techniques-Element

1. for-Schleife1. Methode ID3DXEffect::ValidateTechnique

2. dafür D3DXHANDLE-Variable

1. In for-Schleife: Index steht zur Verfügung

Page 37: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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

Page 38: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Effekte aktivieren

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

Page 39: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Rendern

• Durchgang jedes einzelnen Durchgangs mit for-Schleife

• VOR jedem Zeichenvorgang Methodenaufruf ID3DXEffect::BeginPass

• Aufruf EndPass– >nachdem alles gezeichnet ist: ID3DXEffect::End

Page 40: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Transformation umgehen

• Vertizes wandern durch Transformationspipeline

• rein: einfache objektrelative/absolute Positionsangaben

• raus: fertig bearbeitete 2D-Koordinaten

• Umgehung durch transformierte Vertizes

Page 41: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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

Page 42: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

Unterschied - 2

• transformierte Vertizes: keine Beleuchtung

• keine Garantie, dass Clipping durchgeführt wird– >transformierte Vertizes hervorragend, weil

Raum zur Entwicklung eigener Verfahren

Page 43: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

anderes Vertexformat

• transformierte Vertizes:

Page 44: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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

Page 45: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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)

Page 46: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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

Page 47: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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

Page 48: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

In Texturen rendern - 1

1. erstellen einer Textur/Z-Buffers

- Identifizierung der Grafikkarte als Render-Target

- Flag: D3DUSAGE_RENDERTARGET übergeben an Funktion D3DCreateTextureFromFile oder Methode IDirect3DDevice9::CreateTexture

Page 49: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

In Texturen rendern - 2

- Flag wird für usage-Parameter

angegeben

- Speicherklasse muss

D3DPOOL_DEFAULT sein

- Erzeugung Z-Stencil-Buffer mit Flag

D3DUSAGE_DEPTHSTENCIL

Page 50: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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

Page 51: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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

Page 52: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

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

Page 53: Exotische Texturformen Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation

DANKE!