AUTOMATYKA 2009 Tom 13 Zeszyt 3 Micha³ Turek* Optymalizacja skanowanych rotacyjnie siatek 3D prowadzona na potrzeby szybkiego renderowania w czasie rzeczywistym 1. Wprowadzenie Wirtualne sceny 3D tworzone dziœ masowo na potrzeby gier czy prezentacji multimedialnych anga uj¹ ogromne iloœci graficznych kszta³tów trójwymiarowych wyœwietlanych póÿniej w symulowanej przestrzeni 3D jako postrzegane przez obserwatora kszta³ty [3]. Aby ich obróbka przy wyœwietlaniu by³a odpowiednio wydajna, a efekt wizualny satysfakcjonuj¹cy, struktura modelu 3D przedstawiaj¹cego dany kszta³t jest obarczona ograniczeniami. Ograniczenia powoduj¹ koniecznoœæ definiowania materia³ów 3D zgodnie z zasadami, okreœlanymi przez twórców algorytmów wyœwietlaj¹cych te obiekty, a funkcjonuj¹cych w silnikach 3D. Dotycz¹ one g³ównie sposobu definiowania siatek wielok¹tów w modelach trójwymiarowych, ich stopnia skomplikowania oraz wielu przypadków szczególnych geometrycznego u³o enia komponentów kszta³tu 3D. Zadanie odpowiedniego przygotowania modeli 3D spoczywa na projektantach i grafikach, którzy wykorzystuj¹c edytory 3D, dokonuj¹ rêcznie mudnych czynnoœci adaptuj¹cych. Najwiêcej trudnoœci przysparza obróbka materia³u bêd¹cego dos³own¹ kopi¹ obiektów trójwymiarowych ze œwiata rzeczywistego, a pozyskanego w drodze ich skanowania. Tu prace adaptacyjne s¹ szczególnie k³opotliwe. Istniej¹ mo liwoœci przyspieszenia tych prac g³ównie poprzez wprowadzenie rozwi¹zañ automatycznie optymalizuj¹cych siatki wielok¹tów w modelach 3D. Takie mo liwoœci rozwa y niniejsze opracowanie, proponuj¹c gotow¹ procedurê finalnie adaptuj¹c¹ skanowane siatki 3D do wymagañ stawianych przez obecnie stosowane renderuj¹ce silniki 3D. 2. Technologia skanowania rotacyjnego Istnieje kilka mniej lub bardziej dopracowanych metod pozyskiwania kszta³tów 3D ze œwiata rzeczywistego. Wœród nich szczególne znaczenie ma metoda skanowania rotacyjne- * Katedra Automatyki, Akademia Górniczo-Hutnicza w Krakowie 1469
1470 Micha³ Turek go. Przez producentów skanerów 3D jest obecnie najczêœciej stosowana, gdy umo liwia pobieranie kszta³tów z obiektów wypuk³ych, a takie najczêœciej umieszczane s¹ w wirtualnych scenach 3D (kamera przemieszcza siê pomiêdzy obiektami, eksponuj¹c w kadrze ich zewnêtrzne powierzchnie) [8]. Metoda skanowania rotacyjnego umo liwia doœæ precyzyjny odczyt pozycji punktów zlokalizowanych na powierzchni skanowanej bry³y, lecz jednak przy niewielkiej liczbie tych punktów w danym regionie bry³y (odwrotnie, ni w przypadku zastosowania kamer i u ycia metod fotometrycznych [10] lub stereoskopii [4]). Ponadto u ycie tej metody wymaga skonstruowania stosunkowo prostego urz¹dzenia, przy mo liwoœci adaptacji modu³ów ju istniej¹cych na rynku i wykorzystywanych w innych urz¹dzeniach. Podstawowym za³o eniem procesu skanowania rotacyjnego jest obrót obiektu skanowanego wokó³ w³asnej osi podczas procedury skanowania oraz zsynchronizowany z obrotem odczyt informacji o powierzchni obiektu. W wariancie urz¹dzenia przeznaczonego do skanowania obiektów znacznej wielkoœci mo liwa jest naturalnie rotacja jednostki oœwietlaj¹co-skanuj¹cej wokó³ umieszczonego statycznie obiektu skanowanego. Tak czy inaczej podczas skanowania obiekt jest oœwietlany sukcesywnie dooko³a wi¹zk¹ laserow¹. Wi¹zka odbija siê od powierzchni obiektu i po odbiciu pada na listwê œwiat³oczu³¹ (podobn¹ do montowanych w skanerach 2D). Odczyt z listwy umo liwia wykrycie dok³adnego miejsca padania odbitej wi¹zki. Poniewa zarówno laser oœwietlaj¹cy, jak i listwa w urz¹dzeniu skanuj¹cym ustawione s¹ pod ustalonym k¹tem (rys. 1), miejsce padania wi¹zki na listwê œwiat³oczu³¹ uzale nione jest od drogi przebytej przez wi¹zkê. Z prostego obliczenia mo na zatem ustaliæ odleg³oœæ punktu oœwietlanego na skanowanym obiekcie od jednostki skanuj¹cej. Rys. 1. Skanowanie rotacyjne wyrzutnia i detektor Gdy obiekt skanowany jest obracany, odczyty z listwy dokonywane s¹ co œciœle okreœlon¹ wartoœæ k¹tow¹. Pozwala to na uzyskanie kompletu odczytów odleg³oœci powierzchni obiektu skanowanego od jego osi obrotu (znaj¹c odleg³oœæ œrodka od urz¹dzenia skanuj¹cego oraz wartoœæ odczytu z listwy). Ka da z wartoœci odczytanej odleg³oœci jest sprzê ona w wartoœci¹ k¹tow¹, ale której zosta³a pobrana. Pozostaje zatem dokonanie konwersji tych par na wspó³rzêdne w przestrzeni euklidesowej 2D (dwuwymiarowej). Liczba takich odczytów w ramach pe³nego obrotu obiektu (360) mo e byæ naturalnie ró na, formu³uj¹c parametr skanowania zwany potocznie rozdzielczoœci¹ k¹tow¹ skanowania. Gdy po wykonaniu
Optymalizacja skanowanych rotacyjnie siatek 3D... 1471 pe³nego obrotu dokonamy przesuniêcia jednostki skanuj¹cej wzd³u osi pionowej i powtórzymy pe³ny obrót skanowania uzyskamy podstawy do utworzenia siatki trójwymiarowej (rys. 2). Wielokrotne powtarzanie tej czynnoœci spowoduje powstanie obrazu 3D ca- ³ej skanowanej bry³y. Przesuniêæ jednostki skanuj¹cej wzd³u osi pionowej dokonuje siê co sta³¹ jednostkê odleg³oœci, ustalaj¹ odgórnie i okreœlan¹ mianem rozdzielczoœci pionowej skanowania. Rys. 2. Konwersja odczytów rotacyjnych do przestrzeni euklidesowej oraz wyniki po wykonaniu dwóch pe³nych odczytów rotacyjnych Materia³ powsta³y ze skanowania jest siatk¹ czworok¹tów otwart¹ w czêœci górnej i dolnej (te powierzchnie skanowanej bry³y znajduj¹ siê poza zasiêgiem wi¹zki). Procedura generowania siatki, jak i technologia samego skanowania nie s¹ doskona³e. Wady skanowania (zwi¹zane g³ównie z b³êdami odczytu wi¹zki laserowej) powoduj¹ powstawanie licznych niedoskona³oœci siatki, które nale y eliminowaæ dalszymi przekszta³ceniami. Propozycje takich przekszta³ceñ s¹ jednym z przedmiotów rozwa añ w niniejszym artykule. Proponowane w artykule algorytmy utworzono, opieraj¹c siê na specyfice charakteryzuj¹cej rzeczywiste materia³y 3D (siatki) generowane w procesie skanowania rotacyjnego. Typowy ich kszta³t, najczêstsze wady czy przypadki niewystêpuj¹ce zosta³y okreœlone w konsekwencji analizy dziesi¹tek siatek 3D faktycznie skanowanych obiektów trójwymiarowych o najró niejszych kszta³tach i charakterystykach powierzchni. Do badañ wykorzystywano g³ównie profesjonalny rotacyjny skaner 3D firmy Roland. Skaner ten generuje szumy typowe dla takich urz¹dzeñ, operuje monochromatycznym emiterem i detektorem œwiat³a. Materia³ z takiego urz¹dzenia najlepiej nadaje siê do prowadzenia doœwiadczeñ i testowania algorytmów optymalizuj¹cych. Celem jest optymalne przystosowanie tego materia³u do potrzeb renderowania w czasie rzeczywistym. Wi¹ e siê to przede wszystkim z koniecznoœci¹ usuniêcia wad niedoskona³oœci siatek 3D skutkuj¹cych ich póÿniejszymi wadami wizualnymi. W drugiej kolejnoœci z uzyskaniem du ej precyzji prezentacji wizualnej siatki 3D jako odpowiednika skanowanego wczeœniej obiektu. 3. Transformacje siatek skanowanych rotacyjnie W konsekwencji operacji skanowania otrzymujemy zbiory zawieszonych w przestrzeni 3D punktów (definiuj¹cych przysz³¹ siatkê i model 3D) o sta³ej rozdzielczoœci k¹towej
1472 Micha³ Turek i pionowej. Siatki 3D wytwarzane z u yciem opisanej metody charakteryzuj¹ siê du ymi odleg³oœciami pomiêdzy wierzcho³kami, co eliminuje tak e problem redukcji redundantnej informacji. Krawêdzie wielok¹tów przysz³ej siatki tworzone s¹ domyœlnie poprzez zdefiniowanie adiacencji punktów-s¹siadów, niezale nie od wartoœci odczytów odleg³oœci od œrodka obrotu skanowanej bry³y 3D. Jedynym wyj¹tkiem jest tutaj odczyt zerowy, który móg³ powstaæ w wyniku b³êdu skanowania (gdy na przyk³ad niew³aœciwa powierzchnia obiektu rozproszy³a lub poch³onê³a wi¹zkê), albo wyjœcia poza zakres wysokoœci obiektu (obiekt by³ ni szy ni wysokoœæ skanowania). Generowane s¹ zatem krawêdzie, które ³¹cz¹ ka dy punkt 3D z jego s¹siadem po stronie prawej, po lewej, na górze oraz na dole. Wyj¹tkiem s¹ sytuacje brzegowe (dolna lub górna krawêdÿ bry³y skanowanej). Z braku kolejnej warstwy wierzcho³ków te krawêdzie nie s¹ wspó³dzielone przez wielok¹ty. 3.1. Usuwanie szumów skanowania Wielokrotne testy skanowania ró norodnych powierzchni wykaza³y (tab. 1), i oko³o 97% b³êdów skanowania skutkuj¹cych szumem to b³êdne odczyty jednopunktowe. Pojedynczy wierzcho³ek siatki powsta³y w konsekwencji szumów urz¹dzenia ³atwo sklasyfikowaæ pos³uguj¹c siê choæby danymi o pozycji jego bezpoœrednich s¹siadów w linii oraz w liniach poprzedzaj¹cej i nastêpuj¹cej. Tabela 1 Œrednie zliczeñ szumów dla przypadków szumu pojedynczego (jeden wierzcho³ek b³êdny) lub z³o onego (2 4 s¹siaduj¹ce wierzcho³ki b³êdne). Wartoœæ danego pola w tabeli to œrednia arytmetyczna trzech identycznych skanowañ. Skanowano ze zmiennymi rozdzielczoœciami pionowymi i k¹towymi Obiekt zbli ony kszta³tem do walca Obiekt zbli ony kszta³tem do kuli Obiekt nieregularny wypuk³y Obiekt nieregularny wklês³y 1 o / 1 mm 18 3 15 3 31 2 43 4 1 o / 3 mm 9 1 16 2 12 2 39 3 3 o / 1 mm 7 2 9 1 4 0 36 4 3 o / 3 mm 3 1 7 0 8 1 16 3 5 o / 3 mm 2 0 4 0 4 0 16 3 3 o / 5 mm 0 0 2 0 2 0 9 2 5 o / 5 mm 0 0 3 0 0 0 1 0 Rozdzielczoœæ k¹towa/pionowa pojedynczy z³o ony pojedynczy z³o ony pojedynczy z³o ony pojedynczy z³o ony Natychmiastowa eliminacja wierzcho³ków b³êdnych okaza³a siê niekorzystnym rozwi¹zaniem. Burzy ona uk³ad siatki maj¹cy jeszcze na tym etapie monogeniczn¹ strukturê prostok¹tów. To znacznie utrudni³oby dalsze transformacje. W miejsce eliminacji lepiej do-
Optymalizacja skanowanych rotacyjnie siatek 3D... 1473 konaæ korekt wspó³rzêdnych wierzcho³ka. Do klasyfikacji wierzcho³ków jako szum najproœciej zdefiniowaæ metrykê okreœlaj¹c¹ tolerancjê na szum i bazuj¹c¹ na œredniej arytmetycznej odleg³oœci wierzcho³ków s¹siadów od œrodka obrotu skanowanej bry³y. Metryka porówna ró nicê œredniej dla s¹siadów (r œrednia ) i odleg³oœci rozwa anego punktu (r test ) z wartoœci¹ tolerancji T. W przypadku wykrycia szumu przesunie wierzcho³ek: je eli r œrednia = (r 1 + r 2 ) /2 abs (r test r œrednia ) > T, wtedy r test = r œrednia Ta podstawowa procedura odszumiania da³a bardzo przyzwoite efekty i w zupe³noœci wystarczy³a w przypadku wiêkszoœci powierzchni skanowanych (rys. 3). a) b) Rys. 3. Przyk³ady szumów skanowania (a) i korekta pozycji wierzcho³ków (b) przy skanowaniu rotacyjnym 3.2. Usuwanie oderwanych wielok¹tów Podstawowym za³o eniem skanowania rotacyjnego jest to, i w jego wyniku powstaje jedna siatka wielok¹tów. Wielok¹ty wspó³dziel¹ swoje krawêdzie (s¹siedztwo). Wœród wad siatki mog¹ wystêpowaæ wielok¹ty nie posiadaj¹ce kompletu s¹siadów. Istnienie wielok¹ta nie posiadaj¹cego jakichkolwiek s¹siadów definiuje now¹ siatkê (z³o on¹ z jednego wielok¹ta), co jest niedozwolone. W kolejnym kroku procedury odszumiania musimy zatem wyeliminowaæ z obrabianego materia³u wszystkie takie wielok¹ty (rys. 4). Wielokrotnie prowadzone skanowania testowe wykaza³y, e jeœli w materiale w ogóle wystêpowa³y oderwane wielok¹ty, to zawsze wystêpowa³y pojedynczo. Tym samym rozwi¹zanie okreœlaj¹ce procedurê ich eliminowania nie bêdzie skomplikowane. W zupe³noœci
1474 Micha³ Turek wystarcza przegl¹dniêcie wszystkich wielok¹tów i dla ka dego z nich wykazanie istnienia krawêdzi wspólnej w innym wierzcho³kami. Gdy adna z krawêdzi nie jest wspó³dzielona wielok¹t jest oderwany. 3.3. Zamykanie siatki 3D Rys. 4. Szumy skanowanie oderwane wielok¹ty Zamykanie siatki 3D mo na zdefiniowaæ jako jej przekszta³cenie do postaci reprezentuj¹cej graficznie bry³ê 3D posiadaj¹c¹ tzw. kubaturê (cubic measure). Innymi s³owy, zamkniêta siatka 3D musi byæ tak zdefiniowana, aby swoim kszta³tem umo liwia³a ekspozycjê tylko jednej (tzw. zewnêtrznej) strony ka dego z nale ¹cych do niej wielok¹tów [9]. Celem konwersji zamykaj¹cej siatkê (bêd¹c¹ produktem skanowania rotacyjnego) jest zatem eliminacja wszelkich ubytków w siatce. Ubytki te objawiaj¹ siê g³ównie wystêpowaniem wielok¹tów nie posiadaj¹cych kompletu swoich s¹siadów. Po zakoñczeniu procesu zamykania ka da krawêdÿ siatki powinna byæ wspó³dzielona przez dok³adnie dwa wielok¹ty. Wówczas efekt graficzny procesu zamykania siatki 3D bêdzie skutkowa³ w³aœnie wytworzeniem wra enia kubatury prezentowanej bry³y poprzez uniemo liwienie ekspozycji wewnêtrznej strony siatki 3D j¹ reprezentuj¹cej. W przypadku materia³ów pochodz¹cych ze skanowania rotacyjnego nie bêdziemy mieli do czynienia z redundancj¹ wierzcho³ków, pojawiaj¹c¹ siê np. w konsekwencji ³¹czenia siatek czy u ycia innych technik skanowania 3D. Nie ma zatem sensu przeprowadzania procedury redukcji wierzcho³ków (wykrywania i eliminacji serii wierzcho³ków o zbli onych pozycjach zastêpuj¹c je tylko jednym). Wykrycie krawêdzi otworów skanowanej bry³y w przypadku jej dolnej i górnej powierzchni nie przysparza problemów. Po usuniêciu odczytów stanowi¹cych szum mamy do czynienia z lini¹ ³aman¹ zamkniêt¹, znajduj¹c¹ siê na pozycji 0 (licz¹c j¹ na skali wysokoœci skanowania). Dodatkowo zak³adaj¹c, i podstaw¹ skanowanego obiektu jest p³aszczyzna, wystarczy pokryæ t¹ p³aszczyznê siatk¹ wielok¹tów, aby uzyskaæ po ¹dany efekt. Pokrycie takie w najprostszym przypadku bêdzie polega³o na prowadzeniu nowych krawêdzi pomiêdzy kolejnymi wierzcho³kami ³amanej, tworz¹c z nich wierzcho³ki trójk¹tów (sk¹din¹d trójk¹t jest najbardziej po ¹danym w siatkach 3D wielok¹tem, co uzasadnione zostanie w nastêpnych podrozdzia³ach). Okazuje siê, e kolejnoœæ prowadzenia linii mo e tu byæ istotna. Przyk³adem transformacji skutkuj¹cej póÿniejszymi wadami bry³y 3D by³o rozpoczynanie i kontynuowanie zamykania danego otworu bry³y zawsze od tego samego wierz-
Optymalizacja skanowanych rotacyjnie siatek 3D... 1475 cho³ka, nale ¹cego do ³amanej. Na rozwa anej p³aszczyÿnie tworz¹ siê wówczas tzw. wachlarze trójk¹tów, których istnienie wprowadza bardzo jaskrawe refleksy œwietlne podczas renderowania (rys. 5) w silniku 3D (efekt uboczny stosowania techniki cieniowania wierzcho³ków przy renderowaniu bry³y). Innym wadliwym rozwi¹zaniem jest generowanie krawêdzi w takiej kolejnoœci, i w nowopowsta³ym wielok¹cie pojawia siê parzysta liczba wierzcho³ków, nale ¹cych uprzednio do wejœciowej krzywej ³amanej. W konsekwencji tego zjawiska konieczne jest koñcowe ³¹czenie krawêdziami dwóch s¹siednich wierzcho³ki krzywej ów ³amanej, co zdefiniuje trójk¹t ekstremalnie ma³y i wp³ywaj¹cy negatywnie na póÿniejszy efekt wizualny projekcji tworzonej bry³y. Testy pokaza³y, i najlepsz¹ metod¹ jest wybór kilku maksymalnie odleg³ych punktów ³amanej i prowadzenie stamt¹d nowych krawêdzi w kierunku kolejnych (ju np. losowo) wybranych punktów (z uszanowaniem wy ej opisanej regu³y nieparzystoœci ). Nieregularnoœæ tak powsta³ej siatki wyeliminuje niepo ¹dane efekty wizualne (rys. 5). Rys. 5. Etap pierwszy zamykania otworu siatki : kwalifikowanie krawêdzi do krzywej ³amanej zamkniêtej i wstêpne generowanie dodatkowych krawêdzi ³¹cz¹cych wierzcho³ki ³amanej (przypadek uproszczony) W przypadku istnienia braków poza p³aszczyznami doln¹ i górn¹ ich wykrycie wymaga ju dok³adnej analizy poszczególnych wielok¹tów siatki. Koncepcja algorytmu wykrywaj¹cego bêdzie oparta na poszukiwaniu takich krawêdzi siatki (par wierzcho³ków), które nie s¹ wspó³dzielone przez dok³adnie dwa wielok¹ty. To za³o enie nie pokrywa naturalnie wszystkich mo liwoœci wyst¹pienia wad w siatce 3D (przyk³adowo istnienie dwóch identycznych wielok¹tów). W poszukiwanym rozwi¹zaniu brane s¹ jednak pod uwagê tylko siatki powsta³e w wyniku skanowania rotacyjnego, a w tym konkretnym przypadku autor nie stwierdzi³ wystêpowania innego rodzaju wad (po zanalizowaniu oko³o 200 skanowanych siatek). Gdy wykryje siê wadê siatki, mo liwe jest uruchomienie faktycznego algorytmu okreœlaj¹cego zakres korekty. Bêd¹c jednym z przedmiotów niniejszego opracowania, okreœla on, w jaki sposób ustaliæ seriê wierzcho³ków siatki 3D (definiuj¹cych jednoczeœnie krzyw¹ ³aman¹), które bêd¹ ³¹czone dodatkowymi krawêdziami w celu usuniêcia wady siatki.
1476 Micha³ Turek Propozycja algorytmu bêdzie nastêpuj¹ca: 1. Stworzyæ listê wszystkich krawêdzi, posiadaj¹cych wady (metodê okreœlono wczeœniej). 2. Wprowadziæ parametr Distance (o wartoœci liniowej) determinuj¹cy minimalne s¹siedztwo miêdzy krawêdziami wadliwymi (czyli wp³ywaj¹ na okreœlenie zagêszczenia wad na danym fragmencie siatki tworz¹cego podstawê do zdefiniowania krzywej zamkniêtej i ich eliminacji) (rys. 6). 3. Od wybranej losowo wadliwej krawêdzi rozpocz¹æ poszukiwanie najbli szego wadliwego s¹siada, do którego liczba przejœæ przez inne wierzcho³ki jest mniejsza ni Distance. Do poszukiwania zastosowaæ algorytm OSPF (siatka jest jednoczeœnie grafem zadanym listami krawêdzi i wierzcho³ków) i wówczas: 3.1. Gdy za pierwszym razem nie znaleziono losowaæ nastêpny. 3.2. Gdy znaleziono szukaæ kolejnego, poczynaj¹c od uprzednio znalezionego. 3.3. Gdy za kolejnym razem nie znaleziono wzi¹æ kolejny dalszy wierzcho³ek. Gdy nie ma ju dalszych znalezionych przejœæ do 4. Do poszukiwañ u yty zostanie podwójnie zagnie d ony algorytm rekursywny OSPF ze sta³¹ metryk¹ odleg³oœci miêdzy wierzcho³kami: 4. Wszystkie kolejno znalezione wierzcho³ki wraz ze œcie kami do nich prowadz¹cymi odnotowaæ w liœcie. 5. Wyszukaæ (OSPF) najkrótsz¹ drogê pomiêdzy pierwszym i ostatnim wierzcho³kiem listy. Dodaæ drogê na koniec listy zamykaj¹c tym samym krzyw¹ ³aman¹ definiowan¹ t¹ list¹ wierzcho³ków. Po wykonaniu kroków 1 5 lista zawiera wierzcho³ki stanowi¹ce krzyw¹ ³aman¹ okreœlaj¹c¹ granice otworu bry³y do zamkniêcia (rys. 6). Rys. 6. Zamykanie siatki 3D do bry³y Powy szy algorytm zosta³ zaimplementowany i przetestowany na siatkach skanowanych o najró niejszych kszta³tach. Testy algorytmu i zaimplementowanej z jego u yciem procedury odby³y siê na próbie 80 przypadków siatek 3D (reprezentuj¹cych ró ne kszta³ty).
Optymalizacja skanowanych rotacyjnie siatek 3D... 1477 Detekcja przebieg³a poprawnie dla 77 z nich. Pozosta³e 3 cechowa³y siê jednak tak wysokim poziomem zaszumienia, i ich reprezentacja graficzna nawet nie by³a postrzegana jako trójwymiarowy kszta³t. Tym samym i tak stosowanie zarówno algorytmu, jak i ca³ej opisywanej metody by³oby wobec nich bezcelowe. Przy tak du ej próbce i wysokim odsetku poprawnie przetworzonych obiektów mo na wysun¹æ tezê o przydatnoœci algorytmu w pracach zwi¹zanych z optymalizacj¹ siatek 3D. Obecna implementacja jest zakodowana w C++ i operuje na plikach w formacie.3ds (siatki wielok¹tów). Tester wizualizuj¹cy zosta³ stworzony nad OpenGL/GLUT. Nastêpnym krokiem bêdzie wype³nienie ustalonej ju krzywej ³amanej dodatkowym fragmentem siatki, którego brakuje. 3.4. Zamykanie siatki 3D z emulacj¹ wypuk³oœci Rozwi¹zanie takie mo e zostaæ zastosowane w celu zatarcia œladów pozostawionych przez procedurê zamykania bry³y. Lwia czêœæ skanowanych kszta³tów (szczególnie dla technologii skanowania rotacyjnego) to kszta³ty wypuk³e. Powody takiej w³aœnie sytuacji zosta³y przedstawione wczeœniej. Zamkniêcie bry³y poprzez wygenerowanie wielok¹ta uzupe³niaj¹cego siatkê zaburzy naturaln¹ wypuk³oœæ bry³y (rys. 7). Poprawne rozwi¹zanie (daj¹ce w konsekwencji przyzwoity wizualnie efekt) wymaga zastosowania wiêkszej liczby wielok¹tów i bardziej z³o onej procedury ich generowania. Generowanie wiêkszej liczby wielok¹tów w zamykanej przestrzeni mo e byæ wykonanie z pomoc¹ jednej z ogólnie znanych technik (mo na u yæ przyk³adowo techniki Kobbelta [6], Loopa [7], czy Doo-Sabina [2]). Gotowe rozwi¹zania w tym zakresie ju istniej¹ i nie ma sensu ich dalej rozwa aæ. Gdy powierzchnia bry³y w miejscu prowadzenia korekty jest wypuk³a lecz zbli ona do p³aszczyzny najlepsze wyniki prezentowa³a metoda Kobbelta (algorytm testowo zaimplementowany wprowadza³ do siatki n 2 /3 dodatkowych wierzcho³ków, gdzie n to liczba wierzcho³ków na krzywej ³amanej definiuj¹cej otwór w siatce do zamkniêcia). W przypadku powierzchni mocno wypuk³ych najlepiej sprawdzi³ siê wariant metody Doo-Sabina (przy tej samej liczbie dodanych wierzcho³ków). Rys. 7. Selekcja wierzcho³ków definiuj¹cych krzyw¹ ³aman¹ wokó³ otworu siatki do zamkniêcia
1478 Micha³ Turek 3.5. Triangularyzacja siatki 3D Jak wspomniano, skanowana rotacyjnie siatka 3D powstaje w wyniku ³¹czenia s¹siednich wierzcho³ków materia³u skanowanego (górny, dolny, prawy i lewy). Powstaje materia³, bêd¹cy seri¹ czworok¹tów, posiadaj¹cych wspólne krawêdzie (rys. 8a). Koñcow¹ transformacj¹ dokonywan¹ podczas obróbki 3D powinna byæ triangularyzacja. Termin ten mo na tu zdefiniowaæ jako przekszta³cenie siatek modelu 3D do postaci zawieraj¹cych wy³¹cznie trójk¹ty [5]. Redukcja dowolnych wielok¹tów siatki do trójk¹tów umo liwia znaczne uproszczenie póÿniejszych procedur renderuj¹cych tak¹ siatkê. Proces triangularyzacji czêsto jest wrêcz wymagany, gdy niektóre silniki renderuj¹ce s¹ w stanie operowaæ wy³¹cznie na siatkach definiowanych przy u yciu trójk¹tów. Trójk¹ty w siatkach 3D s¹ tak- e wskazane ze wzglêdów wydajnoœciowych. Definicje procedur teksturuj¹cych obiekty (teksturowanie przyrostowe) czy rozmywaj¹ce obiekty (cieniowanie gradientem na podstawie wartoœci wektorów normalnych) s¹ implementowane w³aœnie dla trójk¹tów [1]. Na pierwszy rzut oka proces triangularyzacji jest banalny i nie wart nawet omówienia. Jest oczywiste, i ka dy wielok¹t mo na poprzecinaæ dodatkowymi krawêdziami ³¹cz¹cymi jego wierzcho³ki i tym samym przebudowaæ go do zbioru trójk¹tów (rys. 8b). Taka operacja znacznie jednak zwiêksza liczbê wielok¹tów koniecznych do póÿniejszej obróbki. Celowe wiêc bêdzie opracowanie takiej procedury triangularyzacji, które nie powoduj¹c powstawania wad modelu, utrzyma liczbê wielok¹tów (docelowo: trójk¹tów) na sta³ym poziomie, lub wrêcz j¹ zmniejszy. W ramach badañ do niniejszego opracowania zaimplementowano wiele ró norodnych procedur tak udoskonalonej triangularyzacji. Powsta³e na ich bazie algorytmy s¹ zbyt skomplikowane, aby mo na by³o je opisaæ na ³amach tej publikacji. Generalnie polegaj¹ na wykrywaniu w produkcie wstêpnej triangularyzacji par trójk¹tów przylegaj¹cych (maj¹cych wspóln¹ krawêdÿ) i scalaniu ich w nowy wielok¹t. Równoczeœnie realizowana jest korekta pozycji jednego ze wspólnych wierzcho³ków scalonych trójk¹tów tak aby nowy wielok¹t znów by³ trójk¹tem. Pary trójk¹tów musz¹ naturalnie spe³niaæ szereg kryteriów gwarantuj¹cych, i scalanie nie pogorszy efektu wizualnego uzyskiwanego z prezentacji wynikowej siatki jako obiektu 3D. a) b) Rys. 8. Triangularyzacja siatki 3D przyk³ad: a) siatka przed triangularyzacj¹; b) wynik dzia³ania procedury triangularyzacji 3.6. Losowe deformowanie bry³y w procesie triangularyzacji siatki 3D Potrzeba wprowadzania deformacji wynika bezpoœrednio ze specyfiki procedur renderuj¹cych, jakimi pos³uguj¹ siê silniki 3D. Bry³a renderowana w akceleratorze 3D jako
Optymalizacja skanowanych rotacyjnie siatek 3D... 1479 komponent sceny 3D, powinna jak najwierniej odzwierciedlaæ symbolizowany ni¹ obiekt. Nieznaczne nieregularnoœci siatki 3D potrafi¹ (mo na by powiedzieæ paradoksalnie) ukryæ niedoskona³oœci algorytmów renderuj¹cych, zwi¹zane najczêœciej z nieprecyzyjnym obliczaniem refleksów œwietlnych. Nieregularnoœci deformuj¹ punktowo takie refleksy [9], a niedoskona³oœci obliczeñ (w tym np. efekt Moire, b³êdy, zatarcie perspektywy przy mocno oœwietlonych lub zbyt du ych obiektach) nie bêd¹ postrzegane przez cz³owieka. Najprostszym przyk³adem procedury deformuj¹cej jest zaburzenie pozycji wszystkich wierzcho³ków siatki o niewielk¹ wartoœæ liczbow¹ (zarówno wspó³rzêdnej X, Y, jak i Z) generowan¹ losowo. Na rysunku 9 przedstawiono efekt dzia³ania procedury deformuj¹cej. Rys. 9. Triangularyzacja ze zniekszta³caniem (tu zniekszta³cenie zbyt intensywne, lecz przedstawione tak celowo dla zobrazowania efektu koñcowego) Co oczywiste tak¹ transformacj¹ najlepiej jest zakoñczyæ procedurê optymalizacji siatki. Zastosowanie jej w fazie wczeœniejszej zniszczy³oby informacjê o siatce 3D, konieczn¹ do u ycia innych opisanych tu metod. 4. Podsumowanie rozwi¹zania adaptacja skanowanych siatek 3D dla potrzeb silników 3D Podjête w artykule rozwa ania wykaza³y, i procedura eliminacji wad modelu 3D maj¹cych znaczenie przy jego renderowaniu w silnikach 3D bêdzie z³o ona i wieloetapowa. Mo liwe jest jednak jej sformu³owanie, a wyniki jej stosowania powinny daæ zadowalaj¹cy efekt. Wa ne jest wziêcie pod uwagê konkretnych technologii renderowania, jakie wykorzystuj¹ silniki 3D. Wymaga to przeprowadzania dziesi¹tek testów i empirycznej oceny wyników dostêpnych wy³¹cznie w postaci efektu wizualnego. Celowe wydaje siê zdefiniowanie nastêpuj¹cej kolejnoœci postêpowania przy prowadzeniu wspomnianego procesu adaptacji: 1. Odszumianie. 2. Eliminacja kszta³tów niepowi¹zanych z bry³¹ (pojedyncze wielok¹ty).
1480 Micha³ Turek 3. Zamykanie bry³y 3D i emulacja wypuk³oœci dla zamykanej bry³y wybran¹ metod¹. 4. Triangularyzacja zamkniêtej siatki 3D. 5. Redukcja (scalanie) trójk¹tów po triangularyzacji. 6. Deformowanie losowe. Stosuj¹c powy sz¹ procedurê oraz opisane algorytmy, autor podda³ obróbce siatki 3D powsta³e w konsekwencji skanowania kilkudziesiêciu ró norodnych bry³ trójwymiarowych przeprowadzaj¹c je do postaci zoptymalizowanego modelu 3D. Wyniki wizualne by³y satysfakcjonuj¹ce. W przypadku tego konkretnego problemu wydaje siê, i tylko taka ocena koñcowego rozwi¹zania mo e miarodajnie wp³yn¹æ na uzasadnienie zasadnoœci jego stosowania w praktyce. Literatura [1] Botsch M., Steinberg S., Openmesh a generic and efficient polygon mesh data structure. OpenSG Symposium, 2002. [2] Doo D., Sabin. M., Analysis of the Behaviour of Recursive Division Surfaces Near Extraordinary Points. Computer Aided Design, vol. 10, 1978, 356 360. [3] Foley D.A. van Dam., Wprowadzenie do Grafiki Komputerowej. WNT, 1995. [4] Julesz B., Binocular depth perception of computer-generated images. The Bell System Technical Journal, 39(5), 1125 1163. [5] Kettner L., Using generic programming for designing a data structure for polyhedral surfaces. 14 Annual ACM Symposium. On Computational Geometry, 1998 (wykorzystano tezy ogólne). [6] Kobbelt L., Interpolatory Subdivision on Open Quadrilatera, Nets With Arbitrary Topology. Proceedings of Eurographics 96, 1996, 409 420. [7] Loop C., Smooth Subdivision Surfaces Based on Triangles. Department of Mathematics, 1987 (Master s thesis, Unversity of Utah). [8] Mayer R., Invention and Innovation From Canada s National Research Council, Scientific Canadian. Raincoast Books, Vancouver, 1999. [9] Tobler R., Maierhofer S., A Mesh Data Structure for Rendering and Subdivision. Short Communications proceedings. WSCG 2006, January 30-February 3, 2006. [10] Woodham R.J., Photometric method for determining surface orientation from multiple images. Optical Engineering, vol. 19, No. 1, 1980, 139 144.