• Keine Ergebnisse gefunden

   Wie kommt man zu den Texturkoordinaten an jedem Vertex?

N/A
N/A
Protected

Academic year: 2021

Aktie "   Wie kommt man zu den Texturkoordinaten an jedem Vertex? "

Copied!
32
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

G C G

Parametrisierung

C

   Wie kommt man zu den Texturkoordinaten an jedem Vertex?

  Triviale Texturierung eines Terrains:

 3D-Koordinaten nach unten projzieren

 Achtung: dies ist nicht notwendig eine "gute" Texturierung!

(2)

G C G C

   Idee: 2-stufiger Prozess [Bier & Sloan, 1986]

  Lege (konzeptionell) einen "kanonisch" parametrisierbaren Hüllkörper um das ganze Objekt

1.  Projiziere Vertices (nicht notw. Vertex-Koord.!) auf diesen Hüllkörper

2. Verwende die Texturkoordinaten des projizierten Punktes auf dem Hüllkörper

v

"Projektor" 1

(3)

G C G

Einige Hüllkörper und deren Parametrisierung

C

   Ebene:

 Projiziere Punkt (x,y,z) auf Ebene

→ (x,y)

 (u,v) = ( s x x + t x , s y y + t y )

  Verallgemeinerung:

  Definiere 2 beliebige Ebenen E 1 und E 2

  u := dist( P, E 1 )

v := dist( P, E 2 )

(4)

G C G

Beispiel

C

   Erzeuge Höhenlinien mittels dieser Technik:

 1D-Textur

 u := dist( P, E 1 )

(5)

G C G C

   Zylinder-Parametrisierung:

 Konvertiere kartesische Koord. (x,y,z) in zylindrische Koord.

 

  Beachte "Naht" bei ( θ =0 & 2π)

(0.5, 0) (1, 1) (1, 0)

( 1, 0.5)

ө

(r sin Θ , r cos Θ , z )

(u , v ) = (Θ /2π, z )

(6)

G C G C

   Kugel-Parametrisierung:

 Stelle Punkt in sphärischen Koord. dar

 

  Beachte: Singularität bei Nord- und Südpol!

(u , v ) = (θ/2π, φ/π + 1)

(7)

G C G C

   Hier gibt es 2 Varianten:

1. 

2. 

f (u, v ) =

 

sin(π v ) cos(2πu) sin(π v ) sin(2π u)

cos(π v )

 

f (u, v ) =

 

2v 1 cos(2πu)

2v 1 sin(2π u) 2v 1

 

(8)

G C G

Was soll man projizieren?

C

   Bisher: einfach die Koordinaten (x,y,z) des Vertex auf den (gedachten) Hüllkörper projiziert

  Verallgemeinerung: statt dessen kann man genauso gut (oder schlecht) andere Attribute des Vertex projizieren, z.B.

  Normale

 Vektor vom Zentrum des Objektes durch den Vertex

 Reflektierter Viewing-Vektor

 …

(9)

G C G C

   Beispiele:

planar

cylindrical

(10)

G C G

Automatische Erzeugung von Textur-Koordinaten in OpenGL

C

  glEnable( GL_TEXTURE_GEN_S ); // S, T, R, Q

  glTexGeni( GL_S, GL_TEXTURE_GEN_MODE , mode );

   mode =

GL_OBJECT_LINEAR : Texturkoord. = Distanz des Vertex von einer Ebene; die Ebene wird spezifiziert mit

glGenTexfv( GL_S, GL_OBJECT_PLANE, v ) GL_EYE_LINEAR : benutze Vertex-Koord. nach MODEL_VIEW

GL_SPHERE_MAP : für Environment-Mapping (später) GL_NORMAL_MAP

GL_REFLECTION_MAP

(11)

G C G

Beispiel

C

glEnable( GL_TEXTURE_GEN_S );

glTexGeni( GL_S,

GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR );

glTexGenfv( GL_S,

GL_OBJECT_PLANE,

xPlane );

(12)

G C G C

   Parametrisierung parametrischer Flächen ist oft "kanonisch":

(13)

G C G

Probleme bei der Parametrisierung

C

  Verzerrungen: Größe & Form

   Folge: Relatives over- bzw. under-sampling

   Beispiele:

(14)

G C G

Seams (Textursprünge)

C

   Ziel: Verringern der Verzerrung

  Idee: Aufschneiden des Netzes entlang gewisser Kanten

  Ergibt „doppelte“ Kanten, auch

„seams“ genannt

  Unvermeidlich bei nicht-planarer

Topologie 1

2 3

4

Seam

(15)

G C G C

   Idee 1 [Piponi 2000]:

 Das Objekt entlang nur einer zusammenhängenden Kante so

aufschneiden, daß eine topologische Scheibe entsteht

 Dieses aufgeschnittene Netz dann in die

Ebene einbetten

(16)

G C G C

   Probleme:

 Es gibt immer noch Verzerrungen

 Mehrfaches "Einschneiden" ergibt stark "zerfranstes" eingebettetes Gitter

(17)

G C G C

   Idee 2:

 Zerschneide Fläche in einzelne Patches

 Karte (map) = einzelnes Parametergebiet im Texture-Space für ein Patch

 Textur-Atlas = Vereinigung dieser Patches mit ihren jeweiligen Parametrisierungen

  Problemstellung:

 Wähle Kompromiß zwischen Seams und Verzerrung

 „Verstecke“ Schnitte in wenig sichtbaren Regionen

(18)

G C G C

   Beispiel

(19)

G C G C

(20)

G C G

Verzerrung oder Seams?

C

in ein Patch aufschneiden in Dreiecke

zerschneiden

Seams V er zer

(21)

G C G

Cube Maps [Greene '86, Voorhies '94]

C

  Ω = Einheits-Würfel:

 Sechs quadratische Textur-Bitmaps

 3D Texturkoordinaten:

 Größte Komponente von (s,t,r) wählt die Karte aus, Schnittpunkt liefert (u,v)

innerhalb der Karte

   Rasterisierung

 Interpolation von (s,t,r) in 3D

 Projektion auf Würfel

glTexCoord3f( s, t, r );

glVertex3f( x, y, z );

(-1,-1,-1) (-1, -1,1)

(1, -1, -1)

(1,-1, -1)

(1,1,1)

(22)

G C G

Beispiele

C

(23)

G C G C

   Weitere Anwendung: man kann eine Cube-Map auch sehr gut verwenden, um irgendeine Funktion der Richtung zu speichern!

(vorberechnet als LUT)

  Beispiel: Normierung eines Vektors

 Jedes Cube-Map-Texel (s,t,r) speichert in RGB den Vektor

 Jetzt kann man beliebige Texturkoordinaten mittels glTexCoord3f() angeben, und bekommt den normierten Vektor

(s , t , r )

! (s , t , r ) !

(24)

G C G

Cube-Maps in OpenGL

C

glBindTexture( GL_TEXTURE_CUBE_MAP );

glTexImage( GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, w, h, 0, GL_RGB, GL_UNSIGNED_BYTE, image );

glTexParameter( GL_TEXTURE_CUBE_MAP, ... );

...

glEnable( GL_TEXTURE_CUBE_MAP );

glBindTexture( GL_TEXTURE_CUBE_MAP );

glBegin( GL_... );

glTexCoord3f( s, t, r );

glVertex3f( ... );

(25)

G C G

Textur-Atlas vs. Cube-Map

C

  Seams

  Dreiecke innerhalb der Patches

  nur für ein Dreiecksnetz

   Mip-Mapping schwierig

   verschwendete Texel

  Keine seams

  Dreiecke in mehreren Patches

  für viele Dreiecksnetze

   Mip-Mapping okay

   alle Texel benutzt

(26)

G C G C

Textur Patch A von

Textur Patch B von

  seams

  Dreiecke innerhalb der Patches

  nur für ein Dreiecksnetz

   Mip-Mapping schwierig

  keine seams

  Dreiecke in mehreren Patches

  für viele Dreiecksnetze

   Mip-Mapping okay

(27)

G C G C

Textur Patch A von

Textur Patch B von

  seams

  Dreiecke innerhalb der Patches

  nur für ein Dreiecksnetz

   Mip-Mapping schwierig

   verschwendete Texel

  keine seams

  Dreiecke in mehreren Patches

  für viele Dreiecksnetze

   Mip-Mapping okay

   alle Texel benutzt

(28)

G C G C

  seams

  Dreiecke innerhalb der Patches

  nur für ein Dreiecksnetz

   Mip-Mapping schwierig

  keine seams

  Dreiecke in mehreren Patches

  für viele Dreiecksnetze

   Mip-Mapping okay

(29)

G C G C

  seams

  Dreiecke innerhalb der Patches

  nur für ein Dreiecksnetz

   Mip-Mapping schwierig

   verschwendete Texel

  keine seams

  Dreiecke in mehreren Patches

  für viele Dreiecksnetze

   Mip-Mapping okay

   alle Texel benutzt

(30)

G C G C

  seams

  Dreiecke innerhalb der Patches

  nur für ein Dreiecksnetz

   Mip-Mapping schwierig

  keine seams

  Dreiecke in mehreren Patches

  für viele Dreiecksnetze

   Mip-Mapping okay

(31)

G C G

Polycube-Maps

C

   Polycube statt eines einzelnen Würfels

  An Geometrie und Topologie angepaßt

(32)

G C G

Beispiele

C

Referenzen

ÄHNLICHE DOKUMENTE

The fact that all out- arcs of a vertex are pancyclic in the majority digraph does by no means imply that all out-arcs of said vertex are pancyclic in the hypertournament, as not

• If a student is not able to present a correct solution although he/she marked the exercise as presentable, he/she will lose all of his/her points on the exercise sheet. Exercise

Definition: Three paths are vertex-disjoint if the intersection of the vertex sets of the paths without the start and end vertex is empty.... Exercise 6.3: (4 points) Construct

Key words: Molecular Graph; Vertex PI Index; Edge PI index; Molecular Structure Descriptor;. Topological Index; Distance (in Graph); Estimating the Vertex

Lower and Upper Bounds on Vertex PI Index Theorem 2.1 Let G be a connected graph on n ver- tices, m edges, and diameter d.. There- fore the diameter of G is at

While cuts of minimum edge width (and arbitrary size) can be deter- mined in polynomial time using network-flow techniques [18], the problem of finding a bisection of minimum edge

Our algorithm is based on the detection of strong backdoor sets of bounded size; each instantia- tion of the variables of a strong backdoor set puts the given formula into a class

The main features of the proposed memetic algorithm for the vertex-biconnecti- vity augmentation problem are: The effective deterministic preprocessing which reduces the search space