24
Grafika 3D Podsumowanie omówionych zagadnień kład z grafiki komputerowej II (3D) cek Matulewski (e-mail: [email protected]) tp://www.fizyka.umk.pl/~jacek/dydaktyka/3d/ Wersja: 15 listopada 2007

Grafika 3D

  • Upload
    shawna

  • View
    75

  • Download
    3

Embed Size (px)

DESCRIPTION

Wykład z grafiki komputerowej II (3D) Jacek Matulewski (e-mail: [email protected] ) http://www.fizyka.umk.pl/~jacek/dydaktyka/3d/. Grafika 3D. Podsumowanie omówionych zagadnień. Wersja: 15 listopada 2007. Zagadnienia grafiki 3D. Podstawowe zagadnienia grafiki 3D: - PowerPoint PPT Presentation

Citation preview

Page 1: Grafika 3D

Grafika 3DPodsumowanie omówionych zagadnień

Wykład z grafiki komputerowej II (3D)Jacek Matulewski (e-mail: [email protected])http://www.fizyka.umk.pl/~jacek/dydaktyka/3d/

Wersja: 15 listopada 2007

Page 2: Grafika 3D

Zagadnienia grafiki 3D

Podstawowe zagadnienia grafiki 3D:

• Modelowanie – budowanie modeli obiektów (ze świata realnego) za pomocą przestrzennych figur geometrycznych (trójkątów, wielokątów).Ilość trójkątów – jakość modelowania (realizm) – wymagany sprzęt

• Animacja – ruch obiektów – zmiana położenia w poszczególnych kadrach (renderowanych statycznych scenach)

• Renderowanie – techniczne aspekty przygotowania sceny (alg. rys. linii, bufor głębii, antyaliasing itp.)

Page 3: Grafika 3D

Przykład modelowania(niestety to nie OpenGL lub DirectX, a ray tracing)

Page 4: Grafika 3D

Modelowanie: wierzchołki

Podstawowe pojęcia grafiki 3D:

• Vertex – wierzchołek figury 2D lub 3D (glVertex3f), element siatki rozpiętej w 3D, która jest bazą renderowanej sceny

• Z wierzchołkiem mogą być związane m.in.: - kolor (glColor3ub),- normalna (glNormal3f), - współrzędna tekstury (glTexCoord2f)

Funkcje OpenGL: glVertex{234}{sfid}[v](GLType współrzędne)

Page 5: Grafika 3D

Podstawowe pojęcia grafiki 3D:

• Primitiwy – figury zbudowane z vertexów, dwustronny obiekt modelowany jest z tysięcy trójkątów

glBegin(typ prymitiwu);

glVertex3f(współrzędne);glVertex3f(współrzędne);…

glEnd();

zbiór wierzchołków

Modelowanie: primitiwy

GL_POINTSGL_LINESGL_LINE_STRIPGL_LINE_LOOPGL_TRIANGLESGL_TRIANGLE_STRIPGL_TRIANGLE_FANGL_QUADSGL_QUAD_STRIPGL_POLYGON

wypukłybez przecięć

Używanie trójkątów (i pasów): najbardziej wydajne numerycznie, zmniejsza artefakty

Page 6: Grafika 3D

Modelowanie: potok

Podstawowe pojęcia grafiki 3D:

• Potok (ang. pipeline) – ciąg przekształceń macierzy (sprzętowo zrównoleglone)

dane wejściowe: wierzchołki (vertices) w 3D transformacje: translacje, obroty (m. model-widok),obcięcia: frustum (ograniczenie ilości wierzchołków)rzutowanie: macierz rzutowania + mieszanie kolorówwynik: piksele obrazu 2D (współrzędne ekranu)

Page 7: Grafika 3D

Transformacje

Podstawowe pojęcia grafiki 3D:

• Transformacje – określane we współrzędnych sceny 3Dtranslacja (glTranslatef), obrót (glRotatef)skalowanie (glScalef), pochyleniezłożenie – dowolna macierz 4x4 (glMultMatrixf)

• Transformacje muszą być ustalone przed narysowaniem wierzchołka, np..:

glRotatef(45.0f, 0.0f, 1.0f, 0.0f); //kąt, kierunek osi

glVertex3f(…);

• Transformacje są wykonywane „od końca”

Page 8: Grafika 3D

Transformacje

• Współrzędne jednorodne (homogenous coordinates)

• Wprowadzone w 1946 przez E. Maxwella (rzutowanie)

• W 1965 L. Roberts użył ich do zunifikowania zapisu wszystkich transformacji: translacji, obrotów, skalowanie i pochylania

• Opis punktów n-wymiarowej przestrzeni za pomocą n+1 współrzędnych

• Obcinanie we współrzędnych jednorodnych może odbywać się w sześcianie zamiast w ściętym ostrosłupie (znacznie efektywniejsze numerycznie)

Page 9: Grafika 3D

Transformacje

• We współrzędnych kartezjańskich (2D) obrót i translacja mogą być zapisane:

yyyyx

xyxxx

y

x

yyyx

xyxx

tyoxo

tyoxo

t

t

y

x

oo

ooT

y

xO

y

x

00

00

0

0

0

• O korzystaniu ze współrzędnych jednorodnych (glMultMatrixf) w osobnej prezentacji!

• We współrzędnych jednorodnych:

111001100

00

0

0

0

0

yyyyx

xyxxx

yyyyx

xxyxx

tyoxo

tyoxo

y

x

too

too

y

x

Hy

x

Page 10: Grafika 3D

Kolor

• Składowe RGB + A (atrybut figury), alternatywa HSB

• R = 650 nm, G = 530 nm, B = 450 nm

• Możliwość cieniowania wewnątrz figury (atrybut wierzchołków)

Page 11: Grafika 3D

Kolor• Inne układy wsp. kolorów:

CMY(K), HSB, YPbPr, CIE xyY, CIE LUV, CIE Lab

• Biblioteka colormaps.cpp/.h [obejrzeć kod!]

• RGB – dobre dla monitorów, TV (emisja światła), odpowiada fizjologii oka• CMY(K) = 1 – RGB – drukarki (absorpcja światła)

Page 12: Grafika 3D

Kolor

• HSB (HSV, HSL) – hue, saturation, brightness (value, lightness, luminance)

• Bardziej intuicyjne, używane w interakcji z człowiekiem

Page 13: Grafika 3D

Fizyka i biologia koloru

• Składowe RGB + A (atrybut figury), alternatywa HSB

• R = 650 nm, G = 530 nm, B = 450 nm

Page 14: Grafika 3D

Fizyczny model oświetlenia – na efekt końcowy (tj. kolor piksela) wpływają „własności emisyjne” źródła światła, „własności absorpcyjne” materiału, który jest oświetlany i własności ewentualnych ciał półprzezroczystych

Światło (cieniowanie)

Typy źródeł oświetlenia:• Światło otoczenia (ambient) – bez źródła i kierunku – rozświetla jednorodnie całą scenę, także wewnątrz figur) – nie daje cieni na obiekcie (nie ma złudzenia 3D)

Typy źródeł oświetlenia:• Światło otoczenia (ambient)• Rozproszone (diffuse) – posiada źródło, ale jest jednorodne we wszystkich kierunkach Generalnie: Jasność proporcjonalna do kosinusa kąta padania (normalna)

Typy źródeł oświetlenia:• Światło otoczenia (ambient)• Rozproszone (diffuse)• Rozbłysk (specular) – źródło i kierunek reflektor, efekt „zajączka” – rozbłysku na gładkich pow.

+ + =

Typy źródeł oświetlenia:• Światło otoczenia (ambient) – światło słoneczne w białym pomieszczeniu• Rozproszone (diffuse) – mleczna żarówka, świeca• Rozbłysk (specular) – reflektor, odbicie od lustra

Dla każdego typu parametry materiału ustalane są osobno

Page 15: Grafika 3D

Model oświetlenia Phonga

+ + =

• Opracowany w 1975 przez Phong Bui-Tuonga• Jest jedynie zgrubnym przybliżeniem praw optyki• Zakłada trzy niezależne komponenty odbitego światła• Światło rozproszone – model Lamberta (1760)

• Model cieniowania Phonga (coś innego niż model ośw.) = interpolacja normalnych (uśrednianie normalnych)

Page 16: Grafika 3D

Model LambertaModel światła rozproszonego

Jasność przedmiotu (natężenie światła) równa jest Ii.Jest ono jakąś funkcją natężenia światła padającego napowierzchnię i kąta odbicia (= padania)

Model zakłada, że natężenie światła odbitego Id jest proporcjonalne do „efektywnej powierzchni” widzianejprzez obserwatora Acos().

Id = Ii cos()

Obliczanie cos() jest szybkie:cos() = NxLx+NyLy+NzLz

N – wektor normalny, L – promień św. odbitego

N L

Page 17: Grafika 3D

Model PhongaModel światła specular („zajączek”)

Wprowadzony przez Phonga – nie ma podstaw fizycznych

Is = Ii cos n

()

Parametr n kontroluje „ostrość” zależności od kąta pod którym oglądamy fragment powierzchni

n = 1, 5, 10, 20, 50, 100n ~ GL_SPOT_CUTOFF

N – wektor normalnyL – promień św. odbitegoV – kierunek do obserwatora

N L

V

Page 18: Grafika 3D

+ + = I

Model oświetlenia PhongaTrójkomponentowy model oświetlenia

+ + =

Ia Id Iska kd ks

ka kd ksIi cos() Ii cos n

()Ia

ambient diffuse specular

W rzeczywistości (tj. w OpenGL) takie obliczenia prowadzone są osobno dla każdej składowej koloru (RGB)

Page 19: Grafika 3D

Modele cieniowaniaCieniowanie płaskie – jasność określana jest wzorem Phonga dla całej płaskiej powierzchni trójkąta w modelu.

W przypadku powierzchni płaskich efekt jest „kanciasty”

Jak kolorować powierzchnie zaokrąglone?

Dodatkowo niekorzystnyefekt pasm Macha

Page 20: Grafika 3D

Modele cieniowaniaCieniowanie Phonga – obliczenia koloru dla każdego punktu trójkąta z wektorem normalnym wyznaczonym na podstawie interpolacji na bazie trzech wektorów normalnych przypisanych do każdego wierzchołka trójkąta

płaskie Phong

Page 21: Grafika 3D

Modele cieniowaniaCieniowanie Gourauda – kolor punktu na prymitywie uzyskiwany jest przez interpolację składowych koloru jego wierzchołków (tylko te wyznaczane są np. wzorem Phonga)

Mniej wymagający numerycznie, ale też mniej realistyczny

Model to żona Henri Gourauda, Sylvie.

Wada: wyraźnie widać granicę użytych figur (wymaga gęstszej sieci niż met. Phonga)

Page 22: Grafika 3D

• Obliczenia rekurencyjne• Używane w metodzie śledzenia promieni (ray tracing)• Powoli wchodzi do silników graficznych działających w czasie rzeczywistym• Automatycznie generuje także cienie obiektów rzucane na inne powierzchnie

Modele cieniowaniaCieniowanie globalne

Jim Kajiya, 1986 (Microsoft)

Przy obliczaniu składowych światła odbitegouwzględnia nie tylko światło pochodząceze źródeł, ale również odbite od innych pow.

I(x, x') – sumaryczna intensywność (składowe koloru) w punkcie x z punktu x'g(x, x') = 0 jeśli x i x‘ są przesłonięte, = 1/d 2 w przeciwnym wypadku, d = odl. między punktami x i x'(x, x') – intensywność emitowana przez x' do x(x, x ',x'') – intensywność światła odbitego z x'' do x przez x'S – wszystkie punkty na wszystkich powierzchniach odbijających światło

xdxxIxxxxxxxgxxI

S

),(),,(),(),()',(

Page 23: Grafika 3D

Przykładu użycia ray tracing

Źródło: http://hof.povray.org/

Page 24: Grafika 3D

Co dalej?

• Studium przypadku: wizualizacja funkcji z = f (x,y)

• Fizyka zbioru punktów materialnych(układ słoneczny, lina, symulacja lotu)

• Wczytywanie obiektów z pliku

• Stencil Buffer: lustro, cienie rzucane przez obiekty

• PixelShader, VertexShader