Wzory stosowane w generowaniu powierzchni podziałowych

Transkrypt

Wzory stosowane w generowaniu powierzchni podziałowych
Open GL – powierzchnie podziałowe Catmulla-Clarka
W grafice komputerowej modelując kształty obiektów często pragniemy uzyskać gładkie bryły o
zaokrąglonych krawędziach. Możemy wtedy skorzystać z tzw.
powierzchni podziałowych. Jednym z rodzajów tych
powierzchni są powierzchnie podziałowe Catmulla-Clarka.
Edwin Catmull, współzałożyciel studia Pixar i obecnie prezes
połączonych firm Pixar i Disney Animation Studios opracował
ten algorytm w 1978 roku razem z Jimem Clarkiem.
Technika
modelowanie
powierzchni
za
pomocą
powierzchni podziałowych polega na zaprojektowaniu
przybliżonego zarysu kształtu obiektu, dla którego następnie
stosowany jest algorytm dzielący powierzchnie w sposób rekursywny. W ten sposób uzyskuje się gładkie,
obłe kształty brył, oraz w wygodny sposób kontroluje się ich kształt.
Na poniższych rysunkach przedstawiono przykładowe siatki dla modeli ręki i ucha oraz powierzchnie
podziałowe wygenerowane dla tych siatek.
Metoda wyznaczania powierzchni podziałowych Catmulla-Clarka
1. Dla każdej ze ścian bryły tworzymy punkty F położone w ich środkach ciężkości.
2. Dla każdej krawędzi bryły tworzymy punkt E będący średnią czterech punktów: dwóch (V)
stanowiących końce rozważanej krawędzi i dwóch (F) stanowiących środki ciężkości ścian
przylegających do tej krawędzi.
3. Dla każdego wierzchołka bryły tworzymy punkt P będący średnią ważoną dla następujących
punktów: rozważanego wierzchołka V, punktów środkowych F ścian przylegających do tego
wierzchołka oraz punktów środkowych K krawędzi dochodzących do tego wierzchołka. Średnią
ważoną wyznacza się według następującej zależności:
P
1
 n  3 V  F  2K 
n
gdzie n jest ilością ścian przylegających do danego wierzchołka
4. Następnie w oparciu o wygenerowane w punktach 1, 2 i 3 algorytmu punkty F, E, P tworzona jest
nowa bryła.
Powyższy algorytm można powtórzyć kilkukrotnie otrzymując bryłę o coraz to bardziej wygładzonej
powierzchni, lecz także oczywiście o coraz to gęstszej siatce składającej się z coraz większej ilości
wierzchołków i ścian.
Wyznaczanie powierzchni podziałowych dla istniejących już powierzchni podziałowych, określane jest
jako generowanie powierzchni podziałowych na poziomie 1, 2, 3 lub wyższym.
1
2
3
Zadanie
Korzystając z funkcji graficznych biblioteki OpenGL opracować w środowisku Visual C++ aplikację
pozwalającą dla prostej bryły, ewentualnie kilku jej wariantów na wyliczenie i reprezentację graficzną
powierzchni podziałowych Catmulla-Clarka. Aplikacja powinna umożliwiać włączanie i wyłączanie
powierzchni podziałowych oraz zmianę poziomu zagęszczenia siatki. Wektory normalne niezbędne do
poprawnego cieniowania powierzchni wyznacza się z iloczynu wektorowego.

Podobne dokumenty