Mw8 new

background image

Multimedia

Dr Ewa Świercz

background image

Wybrane aspekty renderingu



Obliczanie jasności (koloru) poszczególnych
pikseli obrazu sceny (na rzutni) z
uwzględnieniem (między innymi) wybranych
efektów oświetlenia

.



Metoda raytracing



Metoda energetyczna

background image

Mechanizmy renderingu - raytracing



Raytracing (śledzenie promieni) jest jednym z
najczęściej używanych algorytmów
renderowania obrazów.



Pozwala na uzyskanie fotorealistycznych odbić,
refleksów i efektów przezroczystości.



Opiera się na znajdowaniu parametrów
ś

wietlnych piksela poprzez śledzenie promienia

w odwrotnym kierunku – od obserwatora
(kamery) poprzez płaszczyznę obrazową aż do
pierwszego napotkanego obiektu w scenie.

background image

Mechanizmy renderingu - raytracing

Analizowane są tylko te
promienie, które docierają
do obserwatora przez
piksele ekranu.

background image

Mechanizmy renderingu - raytracing



Raytracing – jak to działa?

1.

Dla każdego przetwarzanego piksela na płaszczyźnie obrazowej
prowadzimy wirtualny promień, wybiegający od obserwatora i

przechodzący przez ten piksel (zielony).

2.

Badamy, w jaki obiekt w scenie trafi nasz wirtualny promień. Obliczamy
ś

wiatło ze wszystkich źródeł dla trafionego punktu, według ustalonego

modelu oświetlenia. Badane jest, czy jakiś inny obiekt nie przysłania
ź

ródła światła, i nie rzuca cienia. Obliczane są wszystkie efekty

powierzchniowe i cieniowanie.

3.

Jeżeli powierzchnia jest zdefiniowana jako odbijająca i stosujemy
odbicia raytracingowe – z miejsca uderzenia promienia wysyłany jest

promień wtórny i cały algorytm uruchamiany jest rekurencyjnie dla tego
promienia. Obliczony promień odbiciowy dodawany jest do
obliczonego w pkt.2 oświetlenia.

4.

Jeżeli powierzchnia jest zdefiniowana jako przezroczysta. Z trafionego
punktu wysyłany jest promień przezroczystości, pod kątem zależnym

od geometrii obiektu i parametrów materiału. Zostaje przeanalizowany
w podobny sposób jak wtórne promienie odbicia.

background image

Cienie – metoda śledzonych promieni

(raytracing)

Przykład procedury dla

sceny bardziej
skomplikowanej

Obserwator (kamera)

znajduje się w punkcie
O, na scenie
umieszczone zostały
dwa światła L1 i L2 oraz
3 obiekty:

a (elipsa): nieprzezroczysty,

nie odbija światła

b (koło): przezroczysty,

odbija światło

c (prostokąt): tylko odbija

ś

wiatło

Kreskami przerywanymi zaznaczono
dodatkowe promienie, służące
określeniu widoczności świateł w
punktach przecięcia

background image

Mechanizmy renderingu - raytracing

O – obserwator

• b – obiekt odbijający, przezroczysty

• a – obiekt nieodbijający, nieprzezroczysty

• c – obiekt odbijający, nieprzezroczysty.

1.

W analizowany piksel na płaszczyźnie obrazowej wystrzeliwany jest z obserwatora promień (zielony,
pierwotny).

2.

Promień pada na punkt na pierwszym napotkanym obiekcie. Badane jest, z jakich źródeł światło dociera
do tego punktu (tutaj: tylko ze źródła

L1

), Obliczane jest światło i cieniowanie tego punktu.

3.

Ponieważ

b

to obiekt odbijający, wysyłany jest z trafionego punktu promień odbicia (czerwony, wtórny) .

Promień pada na obiekt

a

.

4.

Obiekt

a

jest analizowany podobnie jak w punkcie 2 – badane jest, jakie źródła oświetlają trafiony punkt,

obliczane jest światło i cieniowanie. Obiekt nie odbija promieni, więc tutaj analiza jest zakończona.

5.

Ponieważ

b

jest obiektem przezroczystym, z miejsca trafienia wysyłany jest także wtórny promień

przezroczystości (niebieski). Kąt promienia zależny jest od geometrii obiektu

b

i parametrów jego

materiału.

6.

Promień przezroczystości trafia w obiekt

c.

Wykonywana jest znowu procedura z pkt 2.

7.

Ponieważ obiekt

c

jest odbijający – po obliczeniu światła i cieni w miejscu trafienia wysyłany jest znowu

wtórny promień odbicia (czerwony z obiektu c) .

8.

Itd… Do mementu, aż wszystkie wtórne promienie nie zostaną obliczone.

background image

Mechanizmy renderingu - raytracing



Na scenie może być wiele źródeł

ś

wiatła i wiele obiektów.



Jeżeli jakiś obiekt blokuje linię

pomiędzy punktem trafienia a
ź

ródłem światła, to źródło nie

dodaje swojego udziału w
oświetlenie trafionego punktu.



W skali całego obiektu jest to

widziane jako precyzyjny cień.

background image

Mechanizmy renderingu - raytracing

Metoda prowadzi w tym przypadku do błędnego wyznaczenia
oświetlenia. W metodzie śledzenia promieni punkt P będzie
oświetlony jedynie przez źródło światła S.
W rzeczywistości, punkt P oświetlany jest przez źródło światła S i
ś

wiatło odbite od lustra, którego promień odbity nie analizuje.

background image

Mechanizmy renderingu - raytracing



Render raytracingowy



Fotorealistyczny efekt,
możliwość zobaczenia
kształtów odbijających się
obiektów, ich cech
powierzchniowych.



Dynamiczne cienie – przy
dynamicznej zmianie
oświetlenia cienie dopasują
się odpowiednio do tej
zmiany.



Dobrze odwzorowane
efekty półprzezroczystości,
rozbłysków, itd.

background image

Mechanizmy renderingu - raytracing



Odbicia raytracingowe – pułapki.



Jeżeli kilka obiektów dających
odbicia zwierciadlane znajdzie się
w odpowiedniej konfiguracji,
mogą w nieskończoność odbijać
nawzajem swoje promienie
wtórne, powodując nieskończoną
rekurencję i załamanie rendrera.



Aby tego uniknąć wprowadza się
maksymalną liczbę odbić. W
większości przypadków 4-ty
poziom odbicia jest w zupełności
wystarczający do osiągnięcia
fotorealistycznych efektów i nie
ma potrzeby obliczania bardziej
złożonych odbić.

background image

Mechanizmy renderingu - raytracing



Przezroczystość



Wtórny promień przezroczystości jest
odpowiednio załamywany, w
zależności od kształtu modelu i
parametrów materiału, co pozwala
uzyskać efekt soczewki, szkła, itd..



Załamanie



Możliwość zdefiniowania
współczynnika załamania dla
materiału pozwala na modyfikowanie
kąta, pod jakim wypuszczane są
wtórne promienie przezroczystości.

background image

Scena wygenerowana metod

Scena wygenerowana metod

ą

ą

raytracingu

raytracingu

, w

, w

kt

kt

ó

ó

rej wszystkie obiekty odbijaj

rej wszystkie obiekty odbijaj

ą

ą

ś

ś

wiat

wiat

ł

ł

o

o

background image

Mechanizmy renderingu - raytracing



Demonstracja renderingu metodą śledzenia promieni. Proszę
zwrócić uwagę na cienie, odbicia i ich reakcję na zmianę warunków
oświetlenia w połowie nagrania!

background image

POV-Ray program służący do ray tracingu dla
komputerów z systemami np. Windows



Cechą charakterystyczną programu jest wykorzystywanie
zaawansowanego języka opisu sceny SDL (ang. Scene Description
Language
), który jest w zasadzie językiem programowania,
zawierającym elementy takie jak m.in. zmienne, tablice, instrukcje
warunkowe, pętle, funkcje.



W programie wygląd sceny opisuje się w skrypcie, w którym
umieszcza się informacje dotyczące:



położenia kamery



oświetlenia



obiektów w postaci brył i powierzchni



Program umożliwia wygenerowanie sekwencji obrazów do celów
animacji.

background image

POV-Ray program służący do ray tracingu dla
komputerów z systemami np. Windows

Wygenerowana scena na podstawie zamieszczonego skryptu

background image

Przykładowy skrypt



#include "colors.inc"




global_settings {



assumed_gamma 1.0

//ogólne parametry



max_trace_level 5



}




camera {



location <0.0, 0.5, -4.0> //punkt umieszczenia kamery



direction 1.5*z



right

x*image_width/image_height



look_at <0.0, 0.0, 0.0> //punkt na który patrzy (jest skierowana) kamera



}




sky_sphere {



pigment {



gradient y



color_map {



[0.0 rgb <0.6,0.7,1.0>] //określenie koloru (składowe r-czerwony,g-zielony,b-niebieski)



[0.7 rgb <0.0,0.1,0.8>]



}



}



}



background image

Przykładowy skrypt



light_source { // wstawienie światła punktowego



<0, 0, 0> // pozycja początkowa światła



color rgb <1, 1, 1> // kolor światła



translate <-30, 30, -30> // przemieszczenie x,y,z



}




plane { // podłoga w "szachownicę"



y, -1



texture



{



pigment {



checker



color rgb 1



color blue 1



scale 0.5



}



finish{



diffuse 0.8



ambient 0.1



}



}



}



background image

Przykładowy skrypt



sphere { // błyszcząca kulka



0.0, 1



texture {



pigment {



color rgb <0.8,0.8,1.0>



}



finish{



diffuse 0.3



ambient 0.0



specular 0.6



reflection {



0.8



metallic



}



conserve_energy



}



}



}

background image

Tekstury

Tekstury

Tekstury mogą być użyte do kontrolowania różnych atrybutów
powierzchni, do tworzenia różnych efektów renderingu.
Siedem najbardziej popularnych technik mapowania (przekształcenia)
teksturowego to:



mapowanie koloru (color mapping)



mapowanie odblasku (specular mapping)



mapowanie samooświetlenia (incandescence mapping)



mapowanie przezroczystości (transparency mapping)



mapowanie przemieszczenia (displacement mapping)



mapowanie nierówności (bump mapping)



mapowanie normalnych (normal mapping)

background image

Tekstury



Mapowanie koloru – nałożona tekstura zmienia w danym punkcie
kolor powierzchni obiektu na swój. Intuicyjnie daje to efekt
„otapetowania” modelu.



Jest to jedna z najczęściej stosowanych technik teksturowych,
nadająca modelowi charakter i mająca największy potencjał
artystyczny

background image

Tekstury



Specular maping – mapowanie odblaskowości – nałożona tekstura
jest interpretowana jako mapa odblaskowości – jasne rejony tekstury
oznaczają miejsca, gdzie występuje efekt rozbłysków i odbić
zwierciadlanych, ciemne oznaczają rejony matowe

background image

Tekstury



Mapowanie przezroczystosci:



Jasne kolory nałożonej tekstury są
interpretowane jako miejsca
przezroczyste.



Jest to częsta metoda stosowana do
tworzenia listowia drzew, obiektów
przypominających sito, końców
włosów, itd. Wszystkie te elementy
można zasymulować odpowiednią
teksturą przezroczystości, bez
potrzeby komplikowania siatki obiektu

background image

Tekstury



Mapowanie przemieszczeń:



Tekstura interpretowana jest jako mapa
głębokości, gdzie jasne oznacza „wyżej” a
ciemne „niżej”.



W zależności od koloru nałożonej tekstury
w danym punkcie odpowiednio
modyfikowana jest geometria modelu!
Zmieniana jest rzeczywista siatka obiektu.



Ponieważ zmienia się geometria, staje się
to widoczne w cieniu rzucanym przez
obiekt jak i w jego obrysie.



Metoda kosztowna, ze względu na częstą
konieczność zwiększenia liczby wielokątów
w modelu i przeliczenia większej ich liczby
w transformacjach geometrycznych.

background image

Efekty teksturowe



Mapowanie przemieszczeń – model oryginalny oraz
przekształcony. Proszę zwrócić uwagę na obrys obiektu
- geometria została faktycznie zmieniona.

background image

Efekty teksturowe



Mapowanie nierówności:



Pozwala na stworzenie wrażenia bardziej skomplikowanej geometrii
modelu bez rzeczywistej zmiany tej geometrii, symuluje małe
deformacje powierzchni.



Nałożona na model tekstura jest traktowana jako mapa wysokości –
jasny punkt oznacza „wyżej”, ciemny – „niżej”.



Sztuczka shader’a – nie modyfikuje modelu, tylko zmienia sposób, w
jaki poszczególne punkty są cieniowane!



Służy również do wywoływania efektu małych nierówności powierzchni



Nie zmienia układu cieni – ponieważ rzeczywista geometria modelu
pozostaje ta sama, cienie są gładkie i równe, nie reagują na pozorne

nierówności, obrys obiektu jest zgodny z siatką – tu również
nierówności się nie ujawniają.

background image

Efekty teksturowe



Mapowanie nierówności – przykład 1

background image

Efekty teksturowe



Mapowanie nierówności – przykład 2

background image

Efekty teksturowe



Mapowanie przemieszczeń – przykład zastosowania
techniki mapowania nierówności do zasymulowania
pomarszczonej powierzchnia wody na płaskim
modelu.

background image

Efekty teksturowe



Mapowanie normalnych:



Metoda pozornego zwiększania szczegółowości modelu, bez faktycznego
zwiększenia liczby wielokątów nań się składających.



Obliczanie transformacji przestrzennych modelu o dużej liczbie wielokątów jest
czasochłonne, więc lepiej jest obliczyć prostszy model i



Dla każdego punktu tekstura definiuje pozorną zmianę położenia normalnej do
powierzchni w tym punkcie. Normalna jest zawsze prostopadła do powierzchni i
według tego obliczane jest oświetlenie, odbicia, itd..



Zatem modyfikując położenie normalnej możemy zmieniać sposób, w jaki
cieniowany jest model i uzyskać pozorny wzrost szczegółowości. Uzyskamy
wrażenie innego kształtu powierzchni, niż to ma miejsce w rzeczywistości.



Tekstura jest kolorowa – każdy kanał koloru niesie informację o jednej
współrzędnej „pozornej” normalnej.



Nie zmienia się rzeczywista geometria modelu! Nie ma wpływu na rzucane
cienie!

background image

Efekty teksturowe



Mapowanie normalnych – 1) model o wysokiej liczbie wielokątów,
2) model o niskiej liczbie wielokątów, 3) model o niskiej liczbie
wielokątów po zastosowaniu normal mappingu. Widoczny efekt
pozornej poprawy szczegółowości

background image

Tekstury



Nakładanie tekstur na obiekty. Jak to zrobić?



Tekstura jest płaskim obrazem, a obiekt w scenie trójwymiarową
bryłą zbudowaną ze ścian-wielokątów, lub z powierzchni
parametrycznych.



Należy rozwiązać problem – dla każdego punktu powierzchni bryły
znaleźć odpowiadający mu punkt tekstury, we współrzędnych 2D
związanych z teksturą. Jaką wybrać metodę?

background image

Tekstury



Stosowanych jest kilka rodzajów rzutowań, dających
różne efekty i obarczonych różnymi wadami.



Rzutowanie płaskie



Rzutowanie cylindryczne



Rzutowanie sferyczne



Rzutowanie typu „box”



Każda z metod powoduje zniekształcenia pierwotnego
obrazu 2D. Dlatego tekstury są często nakładane
metodą malowania na rozciętej siatce, w celu uniknięcia
problemów związanych z rzutowaniem.

background image

Tekstury



Rzutowanie płaskie:



Prosta metoda nakładania tekstur, często stosowana przy
bezpośrednim teksturowaniu wielokątów modelu.



Dla współrzędnej (x, y, z) każdego punktu powierzchni modelu
3D odrzucamy współrzędną z. Pozostają dwie współrzędne (x, y),
które dają się bezpośrednio przełożyć na współrzędne
odpowiedniego punktu tekstury.



Intuicyjnie można to rozumieć jako „spłaszczenie” modelu

background image

Tekstury



Rzutowanie płaskie

background image

Tekstury



Nakładanie tekstur – rzutowanie płaskie

background image

Tekstury



Nakładanie tekstur – rzutowanie
cylindryczne



Podobna idea, jak w poprzedni
przypadku – odrzucenie jednej
współrzędnej i proste odwzorowanie
punktu na powierzchni modelu (teraz już
opisanego dwoma współrzędnymi) na
punkt tekstury



Zamieniamy współrzędne kartezjańskie
na współrzędne cylindryczne (walcowe)



Odrzucana jest współrzędna ρ,
współrzędna φ traktowana jest jako
współrzędna x punktu tekstury a z- jako
współrzędna y tekstury

background image

Tekstury



Rzutowanie cylindrczne

background image

Tekstury



Rzutowanie cylindrczne

background image

Tekstury



Nakładanie tekstur – rzutowanie sferyczne:

Stojąc w miejscu obiektu możemy rozglądać się dookoła - widzimy
wszystko 3D, ale możemy zrobić zdjęcia.
Aby sfotografować całą otaczającą nas rzeczywistość będziemy musieli
obrócić się we wszystkie możliwe strony.
Jeśli teraz zbudujemy sobie dla przykładu kulę i jej wnętrze wyłożymy
naszymi odbitkami (oczywiście każdą we właściwym miejscu) a
następnie wejdziemy do niej, to będziemy mogli odnieść wrażenie, że
mamy namiastkę naszej rzeczywistości. Tak mniej więcej działa
sferyczne mapowanie środowiska. Na obiekt nałożymy teksturę w taki
sposób, że tekstura zostanie niejako "zrzutowana" z kuli otaczającej
nasz obiekt na niego samego.

background image

Tekstury



Nakładanie tekstur – rzutowanie sferyczne:



Podobna idea jak w przypadku rzutowania
cylindrycznego.



Współrzędne kartezjańskie modelu (x, y, z)
są przekształcane na współrzędne sferyczne
(r, phi, theta) a następnie współrzędna r jest
odrzucana i możliwe jest proste
odwzorowanie pozostałych dwóch
współrzędnych sferycznych na współrzędne
(x,y) punktu tekstury

background image

Tekstury



Nakładanie tekstur – rzutowanie sferyczne:

background image

Tekstury



Nakładanie tekstur – rzutowanie sferyczne

background image

Tekstury



Nakładanie tekstur – model pudełkowy – jest to wariant
odwzorowania płaskiego, ale mamy kilka kierunków
rzutowania, każda ściana pudełka rzutuje swoje punkty
na leżącą pod sobą część obiektu

background image

Tekstury



Nakładanie tekstur – model pudełkowy - efekt

background image

Tekstury



Model pudełkowy – nakładanie rzeczywistej tekstury na
obiekt

background image

Tekstury



Nakładanie tekstur poprzez bezpośrednie malowanie na rozciętej
siatce modelu.



Siatka obiektu zostaje rozcięta wzdłuż odpowiednich krawędzi.



Rozcięta siatka jest „prostowana” do dwóch wymiarów.



Na rozprostowaną siatkę nanoszona jest bezpośrednio tekstura. Tutaj
nie ma problemu rzutowania – mapowanie jednej powierzchni 2D na
drugą.



Siatka z nałożoną teksturą jest ponownie sklejana w bryłę, wzdłuż tych
samych rozcięć.



Metoda ta jest często stosowana do tworzenia tekstur na
zaawansowanych modelach składających się z dużej liczby
wielokątów i trudnych do prawidłowego odwzorowania
parametrycznego– np. modeli w grach 3D

background image

Tekstury



Model głowy kobiety – nałożone tekstury oraz
siatka modelu

background image

Tekstury



Rozcięta siatka, fragment nakładanej na nią
tekstury oraz pełna, gotowa tekstura

background image

Demonstracja przedstawionego mechanizmu

nakładania tekstur


Wyszukiwarka

Podobne podstrony:
Prezentacja KST 2007 new
new employee safety orientation 1201643571904060 5
jakość 1 new
Active new pl 200605
CHRYSLER NEW YORKER 1994
IMG 0004 NEW id 211048 Nieznany
czesci rozbite new do druku
More Than Meets The Eye New Feats
03 ulotka new age
New Headway Intermediate Test
cw8s rozwiazania zadan new id 123854
egzamin 2007, II rok, II rok CM UMK, Giełdy, 2 rok, II rok, giełdy od Nura, fizjo, egzamin, New fold
[8]konspekt new, Elektrotechnika AGH, Semestr II letni 2012-2013, Fizyka II - Laboratorium, laborki,
New Age, 01 ANDRZEJ WRONKA - TRÓJCA ŚWIĘTA - META JĘZYK, P. Andrzej Wronka
New Microsoft Word Document (2)
REGULAMIN PREMIOWANIA new
NEW AGE

więcej podobnych podstron