praca dyplomowa magisterska -...

of 85 /85
Politechnika Wroclawska Wydzial Elektroniki Instytut Cybernetyki Technicznej K IERUNEK: Automatyka i Robotyka (AiR) S PECJALNO ´ S ´ C : Robotyka (ARR) PRACA DYPLOMOWA MAGISTERSKA System modelowania obiektów dla potrzeb wizualizacji sceny robota AUTOR : P ROWADZ ˛ ACY PRAC ˛ E : Przemyslaw Jakwert dr in˙ z. Bogdan Kreczmer, I-6 O PIEKUN : dr in˙ z. Bogdan Kreczmer, I-6 O CENA PRACY: Wroclaw 2004

Author: nguyenminh

Post on 27-Feb-2019

226 views

Category:

Documents


0 download

Embed Size (px)

TRANSCRIPT

Politechnika WrocawskaWydzia Elektroniki

Instytut Cybernetyki Technicznej

KIERUNEK: Automatyka i Robotyka (AiR)SPECJALNOSC: Robotyka (ARR)

PRACA DYPLOMOWAMAGISTERSKA

System modelowania obiektw dla potrzebwizualizacji sceny robota

AUTOR: PROWADZACY PRACE:Przemysaw Jakwert dr inz. Bogdan Kreczmer, I-6

OPIEKUN:dr inz. Bogdan Kreczmer, I-6

OCENA PRACY:

Wrocaw 2004

Rozdzia 1

Wstep

Celem pracy byo stworzenie systemu do trjwymiarowego modelowania i symulacji urzadzenrobotycznych. Dzieki mozliwosciom oferowanym dzisiaj przez producentw sprzetu graficz-nego, wizualizacja trjwymiarowa stosowana jest niemal we wszystkich dziedzinach nauki iprzemysu - pozwala znacznie lepiej ocenic wyglad modelowanego obiektu. W dziedzinie ro-botyki moze oszczedzic duzo wysiku i kosztw, zwiazanych z projektowaniem zautomatyzo-wanego srodowiska. Aplikacja Gwell (Graphical workshop for modelling and simulating robotenvironments) zostaa stworzona wasnie do tego celu. Pozwala w dosyc atwy i intuicyjnysposb budowac zozone sceny, wykorzystujac do modelowania otwartych ancuchw kinema-tycznych dowolne bryy geometryczne. Jadro aplikacji stanowi biblioteka VIONA (autorstwaB. Kreczmera), implementujaca kinematyczna strukture drzewiasta przystosowana do opera-cji na elementach trjwymiarowych. W celu wizualnego poprawienia jakosci modelowanychobiektw, aplikacja Gwell oferuje szereg dodatkowych efektw, takich jak: zmienne warunkioswietlenia, definiowanie wasciwosci materiau, nakadanie tekstur, mga czy przezroczystosc.Aby zmaksymalizowac szybkosc i jakosc wyswietlania edytowanych scen, wykorzystano bi-blioteke graficzna OpenGL firmy Silicon Graphics. Interakcje z uzytkownikiem zrealizowanow oparciu o biblioteke Qt firmy Trolltech.

Aplikacje Gwell podzielono na dwa moduy: Modeler i Layout. Pierwszy z nich wspo-maga modelowanie bry zozonych, rozumianych jako kompletne elementy sceny. Umozliwianadawanie im wszystkich efektw wizualnych oraz wasnosci kinematycznych. Modu Layoutsuzy do budowy finalnej sceny ze wspomnianych elementw oraz w przyszosci bedzie umoz-liwia symulacje caego srodowiska robotycznego (obecnie brak odpowiednich mechanizmww bibliotece VIONA).

W pracy przedstawiono krtki opis najwazniejszych technik modelowania obiektw trj-wymiarowych, poczawszy od najprostszych do najbardziej zozonych, dostepnych tylko w naj-bardziej rozbudowanych pakietach graficznych. Celem wprowadzenia czytelnika w standardyi rznorodnosc aplikacji 3D, zamieszczono przeglad dostepnych rozwiazan. Opisujac kolejnepakiety, poozono nacisk na ukazanie ich zrznicowania pod wzgledem zastosowania, moz-liwosci modelowania, zrealizowanego interfejsu i jakosci generowanych obrazw. W kolej-nym rozdziale zamieszczono opis mechanizmu modelowania zaimplementowanego w biblio-tece VIONA z dokadnym jego wyjasnieniem i przykadami. Sposb, w jaki wykorzystanostruktury dostepne we wspomnianej bibliotece, opisany jest w rozdziale Opis zrealizowanegosystemu modelowania. Znajduja sie tam wszystkie elementy, ktre musiay zostac wprowa-dzone, aby aplikacja Gwell pozwalaa na szybkie i efektowne modelowanie. Dokadny opis orazinstrukcja posugiwania sie moduami Modeler i Layout zostay zawarte w rozdziale zatytuo-wanym Interfejs aplikacji Gwell. Aby pokazac mozliwosci, oferowane przez zrealizowanysystem, zbudowano w nim (w skali 1:1), model Laboratorium 010, znajdujacego sie w piwnicybudynku C-3 Politechniki Wrocawskiej. Rozdzia smy zawiera przykadowe obrazy tej sceny.

1

2 ROZDZIA 1. WSTEP

Rozdzia 2

Cel pracy i zaozenia

W ramach pracy zostac ma zrealizowany system modelowania sceny roboczej. Powinien onskadac sie z aplikacji pozwalajacej tworzyc bryy zozone. Powinny one byc podstawa dlanastepnej aplikacji umozliwiajacej z ich wykorzystaniem modelowanie sceny roboczej. Repre-zentacja modeli bry ma zostac zrealizowana w oparciu o struktury z biblioteki VIONA.

Przy wizualizacji sceny roboczej powinno zostac zapewnione uzyskanie wszystkich pod-stawowych efektw, tzn. oswietlenie, cienie, mga itp. Dla kazdego z tworzonych obiektwpowinno byc mozliwe naozenie tekstury. Aplikacje powinny rwniez zapewnic mozliwoscgenerowania interfejsw do sterowania obiektami, o ile odpowiednie struktury zostana udo-stepnione w bibliotece VIONA.

3

4 ROZDZIA 2. CEL PRACY I ZAOZENIA

Rozdzia 3

Techniki modelowania obiektw 3D

Obecnie mamy do dyspozycji wiele technik modelowania i reprezentacji obiektw przestrzen-nych, oferujacych zrznicowana szybkosc dziaania, dokadnosc i stopien gadkosci modelu.Ponizej zostaa przedstawiona krtka charakterystyka tych metod poczawszy od najprostszychdo najbardziej zaawansowanych, dostepnych w profesjonalnych aplikacjach 3D.

Modelowanie za pomoca bry elementarnych - najprostsza z technik modelowania.Obiekt buduje sie z gotowych, predefiniowanych, elementw skadajacych sie ze staejliczby scian i krawedzi rwniez o staej dugosci. Zmianie moga ulegac jedynie trans-formacje wierzchokw, realizowane za pomoca macierzy translacji, rotacji, skali, itp.[8]

Modyfikowanie pojedynczych scian, krawedzi i wierzchokw stosowane do modeli3D, w ktrych wszystkie krawedzie stanowia linie proste, a sciany reprezentowane saprzez paskie, wypuke obiekty geometryczne. Otrzymujemy wtedy reprezentacje obiektuw postaci siatki. Mozliwa jest wwczas np. zmiana dugosci krawedzi, rozdzielenie nadwie osobne czy aczenie. W przypadku scian mozliwe jest odwrcenie sciany przd/ty,wszelkie operacje skalowania, obrotu czy pochylenia oraz usuwanie i rozdzielanie. Jest tostosunkowo prosta technika modelowania, ze wzgledu na maa zozonosc obliczeniowanadaje sie dobrze do wizualizacji w czasie rzeczywistym. W przypadku jednak zaim-plementowania interakcji z uzytkownikiem w programie edycyjnym, porwnywalna dozaawansowanej edycji krzywych.

Modelowanie sferyczne - technika ta stanowi raczej efektowny dodatek niz standard wmodelowaniu. Wychodzi z zaozenia, ze dowolny obiekt mozna reprezentowac za po-moca dowolnej ilosci, rznej skali i wielkosci, sfer. W wielu aplikacjach mozna znalezc,przewaznie w postaci wtyczek, moduy posrednio wykorzystujace te technike oferujacenp. rysowanie tzw. blobw.

Krzywe Bziera - reprezentacja powierzchni za pomoca kolejnych segmentw, bedacychtrjwymiarowymi krzywymi Bziera. W mniej zaawansowanych aplikacjach stosowanesa krzywe kubiczne (stopnia 3), natomiast jezeli chcemy uzyskac wyzsza klase gadkoscimodelowanej powierzchni nalezy uzyc krzywych wyzszych stopni [9].Bezposrednia obsuge tej techniki oferuje m.in. biblioteka OpenGL [27] udostepniajactzw. ewaluatory: pojedynczy segment krzywej dowolnego stopnia tworzy sie za pomocafunkcji glMap1*(), a kolejne punkty tego segmentu przekazywane sa do silnika renderu-jacego za pomoca funkcji glEvalCoord1f() [10].Modelowanie za pomoca krzywych Bziera jest szybkie i wygodne, niektre aplikacjestosuja je jako gwny sposb definiowania geometrii (np. Shade).

5

6 ROZDZIA 3. TECHNIKI MODELOWANIA OBIEKTW 3D

NURBS (Nonuniform Rational B-Splines) - krzywe sklejania typu B lub niejedno-rodne wymierne krzywe giete. Technika ta jest pewnym matematycznym uoglnieniemmodelowania za pomoca krzywych Bziera - nie interpoluje punktw kontrolnych, jestzawarta w ich otoczce wypukej [9]. Oprcz samych punktw kontrolnych krzywej, wy-maga przechowywania dodatkowych informacji o wadze tych punktw. Technika ta dajebardzo gadkie i precyzyjne odwzorowanie powierzchni przy rwnoczesnej prostocie mo-delowania i do niedawna uznawana bya za najlepsza reprezentacje obiektw 3D.Biblioteka OpenGL (a dokadnie towarzyszaca jej biblioteka GLU) udostepnia specjalnyobiekt ewaluatora GLUnurbsObj i funkcje do rysowania krzywych NURBS: gluBeginCurve(),gluNurbsCurve() i gluEndCurve() [10].

Powierzchnie rekurencyjnie podziaowe (Subdivision Mesh) to najnowsza i najbardziejefektowna ze wszystkich dotychczasowych technik. Wykorzystano ja do zbudowania po-staci Golluma i innych stworzen z filmu Wadca Pierscieni. Matematycznie jest to algo-rytm przyblizania krzywych i powierzchni gietych poprzez amane kontrolne ich kolej-nych podziaw [9]. Technika ta jest stosunkowo nowa, najbardziej rozwiniete narzedziado jej stosowania oferuje obecnie pakiet Maya [22]. Jak na razie nie ma dla niej bezpo-sredniego wsparcia w bibliotekach graficznych typu OpenGL.

Na koniec warto jeszcze wspomniec o technice modelowania niezaleznej od sposobu re-prezentacji bryy - modelowaniu szkieletowym. Ten sposb budowy obiektw opiera sie natworzeniu ancuchw kinematycznych z tzw. kosci, stanowiacych kolejne ogniwa struktury.Kosci nie egzystuja jako fizyczna czesc modelu, nie posiadaja geometrii - sa tylko wirtualnymszkieletem, ktry dopiero mozna obudowywac w bryy geometryczne. Technika ta znalazaogromne zastosowanie w animacji postaci ze wzgledu na bardzo realistyczny efekt, atwoscsterowania i rozbudowy takiego obiektu. Bardzo ciekawa jest mozliwosc przeniesienia goto-wego szkieletu, wraz z caa sekwencja animacji, do innego obiektu - mozna wtedy na przykadanimowac postac ludzka jak kota.

Rozdzia 4

Przeglad znanych rozwiazan

Niniejszy rozdzia zawiera przeglad najbardziej popularnych i zaawansowanych aplikacji domodelowania zozonych obiektw trjwymiarowych. Warto tutaj wspomniec, ze oprcz dro-gich wyspecjalizowanych stacji graficznych przeznaczonych do zastosowan High-End, najcze-sciej stosowana do niedawna platforma w grafice 3D byy komputery Macintosh firmy Applez systemem Mac OS. Wraz z nadejsciem systemw Windows z rodziny NT, firma Microsoftprzejea znaczna czesc producentw i uzytkownikw zaawansowanego oprogramowania 3D.Dzisiaj nie ma wasciwie wiekszej aplikacji, ktra nie byaby dostepna na platforme tego pro-ducenta, a czesto niestety rozwijana jest tylko i wyacznie na niej. Wielu specjalistw z tejdziedziny wiaze duze nadzieje z systemem Linux, czego wyrazem moga byc bardzo pochlebneopinie doswiadczonych grafikw na temat pakietu Blender [5]. Obiecujacym jest fakt, ze wieluczoowych producentw sprzetu graficznego (takich jak NVidia[25] czy ATI[4]) wyraznie za-interesowao sie ta platforma i opracowuje dla niej sterowniki swoich urzadzen, co pozwoliow peni wykorzystac oferowane wsparcie sprzetowe dla oswietlenia, tekstur czy geometrii. Toznaczne przyspieszenie grafiki oraz rosnace zaawansowanie i atwosc tworzenia aplikacji dlasrodowiska X Window (dzieki takim bibliotekom jak GTK czy Qt[31]) sprawio, ze systemwmodelowania 3D dla Linuxa o duzych mozliwosciach pojawia sie coraz wiecej. Systemem Li-nusa Torvaldsa powoli zacza interesowac sie rwniez przemys rozrywkowy (np. dostepna zadarmo kontynuacja synnego Wolfensteina - Enemy Territory, firmy id Software[15]).

Bardziej efektowna komputerowa grafika trjwymiarowa wymaga duzych mocy oblicze-niowych oraz pamieci do przechowywania tekstur i buforw koloru, przezroczystosci, itp. Wzaleznosci od zozonosci sceny i zaawansowania srodowiska projektowego, wymagania aplika-cji rozciagaja sie od minimalnych, np. POV-Ray (Persistence of Vision)[26], ktry nie posiadainterfejsu graficznego i moze wygenerowac dowolnie zozona scene na komputerze klasy 386 z4MB pamieci RAM do bardzo wysokich np. dla pakietu 3ds max 7[2], w ktrym prace moznarozpoczac dopiero z procesorem Pentium III 500MHz, 512 MB pamieci RAM i 64MB kartagraficzna, przy czym jest to absolutnie odradzane minimum.

Mozna bez przesady stwierdzic, ze obecnie to wasnie trjwymiarowa grafika komputerowa,a szczeglnie coraz bardziej zaawansowane gry i przemys filmowy sa gwnym motorem roz-woju sprzetu komputerowego. W niewielu dziedzinach zwiazanych z komputerami tkwi takduzy niedosyt wydajnosci. Szacuje sie, ze za kilka lat grafika 3D bedzie staa na tak wysokimpoziomie, ze nie bedziemy w stanie odrznic wygenerowanego obrazu od zdjecia - juz dzisbywaja z tym problemy.

Przedstawione w tym rozdziale aplikacje stanowia tylko reprezentatywna czesc ogrom-nej ilosci dostepnych, czesto bardzo wyspecjalizowanych produktw oferujacych wyszukaneefekty i narzedzia modelowania.

7

8 ROZDZIA 4. PRZEGLAD ZNANYCH ROZWIAZAN

4.1 3ds max3ds max firmy Autodesk (Discreet)[2] jest jednym z najwiekszych i chyba najbardziej popular-nym pakietem do pracy z grafika trjwymiarowa. By jednym z pierwszych programw tegotypu (nazywa sie wwczas 3D Studio), dostepnym dla systemu MS-DOS i praktycznie narzuciobowiazujace dzis standardy w zakresie wygladu interfejsu i technik tworzenia modeli 3D. Dodzis format zapisu plikw starszego 3D Studio dominuje przy wymianie informacji o geometriiobiektw.

3ds max zyska ogromne zastosowanie nie tylko w przemysle rozrywkowym (bardzo sze-roko stosowany w produkcjach filmowych), ale cieszy sie ogromnym uznaniem wsrd archi-tektw, inzynierw i projektantw za sprawa bardzo scisej integracji z pozostaym oprogramo-waniem firmy Autodesk (AutoCAD, Architectural Desktop, Inventor, Revit). Charakterystycznacecha wszystkich aplikacji Autodesk jest mozliwosc sterowania programem za pomoca komendwpisywanych w dolnym pasku interfejsu - pozwala to zautomatyzowac wiele zmudnych czyn-nosci. Aplikacja dostepna jest wyacznie na platforme Microsoft Windows.

Ostatnie wersje 3ds max posiadaja duzo znaczacych i wyrzniajacych cech, z ktrych kilkawarto wymienic:

rendering sieciowy umozliwia dystrybuowanie fragmentw sceny do zrenderowania po-miedzy maszyny znajdujace sie np. w sieci lokalnej danego studia projektowego (w iloscizaleznej od obciazenia danego komputera) i wykonanie na nich odpowiednich obliczen.Wyniki odsyane sa do gwnej jednostki, ktra skada je w jedna caosc. Takie rozwia-zanie nazywa sie farma serwerw do renderingu.

interaktywny rendering panoramiczny pozwala pracowac ze wszystkimi obiektami scenyna paskim obrazie bedacym wynikiem obrotu obserwatora wok wasnej osi o 360.

poaczenie w czasie rzeczywistym (ang. live link) z innymi aplikacjami Autodesk - np.kazda modyfikacja modelu w programie AutoCAD automatycznie implikuje odswiezeniesceny w 3ds max.

rewolucyjna technologia Normal Mapping stworzona do zastosowania w grach. Na obiektyzbudowane z mniejszej ilosci wielokatw nakadane sa mapy o wysokiej rozdzielczosci,dzieki czemu uzyskuje sie efekt duzej gadkosci nawet bardzo prostych ksztatw.

bardzo dopracowany renderer oparty na fizycznych wasciwosciach materiaw i oswie-tlenia oraz ogromna ilosc dodatkw i wtyczek znacznie rozszerzajacych mozliwosci pro-gramu.

Rysunek 4.2 przedstawia kadr z filmu Katedra autorstwa Tomasza Baginskiego (produkcjiPlatige Image[16]), nagrodzonego w 2002 roku gwna nagroda na najwiekszych swiatowychtargach grafiki komputerowej Siggraph w kategorii Best Animated Short. Film uzyska nomi-nacje Amerykanskiej Akademii Filmowej do tegorocznej edycji Oscar-w w kategorii ShortFilms - Animation.

4.1. 3DS MAX 9

Rysunek 4.1: 3ds max - interfejs.

Rysunek 4.2: 3ds max - kadr z filmu Katedra Tomasza Baginskiego.

Rysunek 4.3: 3dsmax - to nie jest zdjecie.

10 ROZDZIA 4. PRZEGLAD ZNANYCH ROZWIAZAN

4.2 LightWaveLightWave firmy NewTek[21] jest odwiecznym konkurentem 3D Studio a potem 3ds max. Poja-wi sie mniej wiecej w tym samym czasie co produkt Autodesk, rwniez dla systemu MS-DOS,ale wprowadzi nieco odmienna filozofie pracy z interfejsem. Pod wzgledem mozliwosci sta-wiany jest na rwni z 3ds max.

Charakterystyczny dla LightWave-a jest podzia pakietu na moduy:

Modeler suzacy do modelowania obiektu, zadawania wasciwosci materiau i tekstury;

Layout, w ktrym odbywa sie budowa finalnej sceny ze stworzonych modeli, ustawianieparametrw oswietlenia i atmosfery, definiowanie ruchu przy tworzeniu animacji;

Hub - rezydentny, nadrzedny nad pozostaymi, modu realizujacy komunikacje miedzynimi, np. dynamicznie uaktualniajac w Layoucie obiekt aktualnie edytowany w Modele-rze.

Dzieki takiemu podziaowi aplikacja ma znacznie mniejsze wymagania sprzetowe i z powo-dzeniem pracuje na komputerze z 256MB RAM i karta grafiki z 32MB pamieci (wersja 7.5).Niestety taka budowa utrudnia rwniez animacje parametrw obiektu, szczeglnie gdy jest ichwiecej. Ale wady te nie przeszkadzaja pakietowi utrzymywac sie stale w czowce najlepszychaplikacji do tworzenia realistycznych obrazw, a to gwnie za sprawa bardzo wydajnych i in-tuicyjnych narzedzi do modelowania pozwalajacych bardzo szybko budowac zozone obiekty.

Kolejnym atutem Lightwave-a jest wasny, bardzo efektowny i szybki modu renderujacyoraz rozbudowany mechanizm tworzenia i animacji obiektw (szczeglnie postaci) w oparciuo szkielety kinematyczne. Lightwave, podobnie jak 3ds max, rwniez posiada mozliwosc ren-deringu sieciowego, stworzono tez dla niego caa game wtyczek i rozszerzen.

Interfejs Lightwave-a (rysunki: 4.4 i 4.6) maksymalizuje wielkosc obszaru roboczego dlamodelu i wyglada bardzo estetycznie - grne zakadki steruja zawartoscia lewego panelu znarzedziami. Jako jedyny program 3D nie zawiera zadnych ikon, do ktrych niecheci nie kryjaautorzy programu. Dostepny jest zarwno dla Macintosh-y z systemem Mac OS X, jak i dlakomputerw z systemem MS Windows 98+ (wersja 8 tylko dla 2000/XP).

4.2. LIGHTWAVE 11

Rysunek 4.4: LightWave Modeler -interfejs.

Rysunek 4.5: LightWave - przyka-dowy rendering.

Rysunek 4.6: LightWave Layout -interfejs.

Rysunek 4.7: LightWave - przyka-dowy rendering.

12 ROZDZIA 4. PRZEGLAD ZNANYCH ROZWIAZAN

4.3 MayaSztandarowy produkt firmy Alias[22] to arcydzieo w dziedzinie animacji postaci. Uzyto go wtakich produkcjach jak: Gwiezdne Wojny, Era Lodowcowa, Matrix czy Wadca Pierscieni, a sato tylko najwazniejsze. Powoli zdobywa sobie zwolennikw i liczne nagrody (w tym Oscar-aw 2003 roku), a obecnie pozostawia w tyle nawet takich liderw jak 3ds max czy LightWave.

Maya jest pakietem, ktry od poczatku rozwijany by praktycznie w jednym kierunku - wmodelowaniu i animacji ludzi, zwierzat oraz wszelkich innych postaci i wszystkich elementwz nimi zwiazanych, takich jak: wosy, skra, ubranie czy futro.

Najnowsza, szsta juz, wersja pakietu zawiera moduy:

Maya Fluid Effects do tworzenia realistycznych efektw takich jak chmury, dym, rznerodzaje mgy, fal na powierzchni wody, ognia, eksplozji czy lawy wulkanicznej;

Maya Fur do modelowania rznego rodzaju futer i krtkich wosw, zawiera innowacyjnyinterfejs Artisan pozwalajacy nakadac owosienie na trjwymiarowy obiekt w taki samsposb jak maluje sie pedzlem po zwykej paskiej powierzchni;

Maya Cloth pozwala zamodelowac dowolny rodzaj ubrania i idealnie naozyc go na po-stac, ubir dopasowywany jest do ruchu szkieletu i miesni postaci, Maya Cloth posiadabardzo duza biblioteke predefiniowanych elementw okrycia;

Maya Live to specyficzny modu pozwalajacy definiowac ruch i ogniskowa kamery; mo-zemy dzieki niemu uzyskac np. efekt krecenia z reki albo sledzic zadany obiekt oczymazaby;

Maya Hair suzy do modelowania wosw oraz ich zachowania w zaleznosci od warun-kw otoczenia, takich jak wiatr czy deszcz, pozwala oczywiscie tworzyc z nich dowolnefryzury;

Maya posiada bardzo przejrzysty i intuicyjny interfejs (rysunek 4.8). Projektanci skupiajasie ostatnio gwnie na modyfikatorach opartych na zasadzie dziaania pedzla (ang. Brush-Based Technologies), czyli tak jak w przypadku nakadania wosw mozna dodawac efektyczy modelowac obiekt malujac po nim. Program jest bardzo dobrze zintegrowany ze znanaaplikacja do obrbki grafiki rastrowej Adobe Photoshop oraz umozliwia sprzetowe generowaniewysokiej jakosci podgladu (przez wykorzystanie OpenGL) co nie jest zbyt czesto spotykane.Maya do generowania finalnych scen uzywa, chyba najlepszego obecnie, renderera RenderManfirmy Pixar[33] i jako jedna z niewielu dostepna jest, oprcz systemw MS Windows i Mac OSX, rwniez na platforme Linux i SGI Irix.

Warto podkreslic, ze twrcy zaawansowanych produkcji, takich jak np. Wadca Pierscieni(firma Weta Digital[7]), korzystali wyacznie z Linux-owej wersji aplikacji Maya. Graficy pra-cujacy nad trylogia Matrix (Manex Entertainment[11]) uzywali z kolei tylko wersji dla SGI Irix.Obie grupy projektantw potrzeboway stabilnego i wydajnego systemu, sprawnie zarzadzaja-cego dostepnymi zasobami. Cechy te nie sa charakterystyczne dla systemw firmy Microsoft.

4.3. MAYA 13

Rysunek 4.8: Maya - interfejs.

Rysunek 4.9: Maya - przykadowy rendering.

14 ROZDZIA 4. PRZEGLAD ZNANYCH ROZWIAZAN

4.4 Cinema 4DPakiet firmy Maxon[3] od dawna ustanowia standardy w dziedzinie animacji dla produkacji te-lewizyjnych. Posiada chyba najwieksza liczbe rozmaitych efektw i rozszerzen ze wszystkichtego typu aplikacji. Zyska duza liczbe zwolennikw dzieki bardzo elastycznemu, dowolniekonfigurowalnemu i atwemu interfesowi oraz legendarnej juz stabilnosci dziaania (niewatpli-wie jest to ogromny atut dla uzytkownikw systemu MS Windows).

Dziewiata juz wersja tego oprogramowania zawiera zintegrowane moduy (niektre z nichmoga rwniez pracowac niezaleznie z innymi znanymi pakietami do obrbki grafiki 3D takimijak 3ds max, LightWave czy Maya):

Advanced Render dodatkowy modu renderujacy, oferujacy bardzo zaawansowane reali-styczne efekty (kosztem czasu generowania);

MOCCA stworzona specjalnie do animowania postaci i ubioru, zawiera duza bibliotekegotowych modeli ruchu, ktre mozna zastosowac we wasnym projekcie,

Thinking Particles to bardzo rozbudowany system do tworzenia efektw specjalnychoparty na technologii symulowania zachowania pojedynczych czasteczek, posiada me-chanizm wykrywania kolizji miedzy nimi i pozwala na przykad na symulowania kurzu,odbijajacych sie snopw swiata czy rozpadu obiektu na drobny piasek, przeksztacajacjego sciany w odpowiednio zachowujace sie drobniutkie elementy,

PyroCluster - wolumetryczny system cieniowania, uzywajacy technologii czasteczek dosymulowania takich efektw jak dym, chmury czy ogien;

Dynamics to wyjatkowy, wielokrotnie nagradzany modu suzacy do symulowania real-nych fizycznych zjawisk takich jak grawitacja, zderzenia, sprezystosc czy reakcja obiek-tw na wiatr;

BodyPaint3D R2 to aplikacja, ktra zrewolucjonizowaa sposb modelowania i barwieniaskry postaci, umozliwia w trywialny wrecz sposb naozenie dowolnego obrazu (np.tatuazu) w dowolnym miejscu obiektu (rysunek 4.12);

NET Render - modu do renderingu sieciowego;

Sketch and Toon pozwala wygenerowac, zamiast fotorealistycznego obrazu, scene lubanimacje przypominajaca obrazek malowany kredkami, kreskwke czy owkowy szkic(rysunek 4.11).

Cinema 4D, jak i towarzyszace jej moduy, dostepne sa dla systemw: MS Windows i MacOS X. Program ten jest stosunkowo mao znany i popularny w Polsce.

4.4. CINEMA 4D 15

Rysunek 4.10: Cinema 4D - inter-fejs.

Rysunek 4.11: Sketch And Toon -rendering.

bodypaint-interface

Rysunek 4.12: BodyPaint3D R2 -interfejs.

Rysunek 4.13: BodyPaint3D R2 -przykadowy rendering.

16 ROZDZIA 4. PRZEGLAD ZNANYCH ROZWIAZAN

4.5 BlenderBlender[5] pojawi sie stosunkowo niedawno (najnowsza wersja 2.34) i od razu wzbudzi zywezainteresowanie osb profesjonalnie zajmujacych sie grafika 3D. Jest w peni darmowym (udo-stepnianym na zasadach open source) kompletnym pakietem do modelowania, animacji i rende-ringu trjwymiarowych obiektw, produkcji oraz tworzenia interaktywnych prezentacji i gier.Dostepny jest dla platform: MS Windows (95+), Mac OS X, Linux (i386 i PPC), SGI Irix, SunSolaris i FreeBSD.

Blender, mimo ze rozwijany jest przez grupe niezaleznych programistw i dostepny ca-kowicie za darmo, bardzo niewiele ustepuje (a czasami nawet przewyzsza) duze komercyjneaplikacje. Zawiera bardzo wygodny i rozbudowany interfejs dla skryptw w jezyku Python,umozliwiajacych nie tylko automatyzacje wielu czynnosci, ale tworzenie wasnych narzedzi,efektw, czy wtyczek do obsugi niestandardowych formatw plikw.

Modu animacji wyposazono w bardzo wydajne i efektowne narzedzia do szkieletowegomodelowania postaci oparte na kinematyce oraz nakadania skry. Po wyrenderowaniu anima-cji mozna od razu zsynchronizowac ja z muzyka, wyciac zbedne fragmenty czy dodac noweefekty - Blender posiada wbudowany edytor do nieliniowej edycji filmw wraz z mikseremdzwieku. Rozbudowane i wygodne narzedzia pozwalaja zdefiniowac interakcje obiektw zuzytkownikiem (bez wymaganej znajomosci programowania) i symulowac ich zachowanie wrzeczywistym fizycznym swiecie, uwzgledniajac masy, zderzenia czy plastycznosc materiau, zktrego sa wykonane.

W Blenderze mozna stworzyc interaktywna prezentacje czy gre wasciwie od poczatku dokonca, a nastepnie skompilowac ja do pojedynczego wykonywalnego pliku binarnego odpo-wiedniego dla danej platformy lub umiescic na stronie WWW i uruchamiac po zainstalowaniuspecjalnej wtyczki dostepnej dla przegladarek Netscape i Internet Explorer.

Blender posiada wasny bardzo wydajny raytracer, nie ustepujacy w niczym wielkim komer-cyjnym aplikacjom, a nawet czesto je przewyzszajacym (szczeglnie pod wzgledem szybkosci).Twrcy programu zaimplementowali w jego wnetrzu obsuge sawnego raytracera Yafray (YetAnother Free RAYtracer), tworzacego obrazy nie odbiegajace znacznie od klasycznych fotogra-fii.Yafray akceptuje pliki wejsciowe z opisem sceny w postaci dokumentw XML.

Pakiet Blender posiada bardzo charakterystyczny i wyjatkowy interfejs: gwny obszar ro-boczy mozemy dzielic na dowolna ilosc mniejszych okien, z ktrych kazde moze wyswietlacwybrany przez nas modu: np. animacje postaci, modeler, diagram sceny, wbudowany edytorskryptw w jezyku Python i wiele innych. Twrcy Blendera zapewniaja, ze wyglad i funkcjo-nalnosc srodowiska roboczego jest taka sama dla wszystkich platform.

4.5. BLENDER 17

Rysunek 4.14: Blender - modelo-wanie obiektu.

Rysunek 4.15: Blender - animacjapostaci.

Rysunek 4.16: Blender - tworzenieinteraktywnej gry.

Rysunek 4.17: Blender - przyka-dowy rendering.

18 ROZDZIA 4. PRZEGLAD ZNANYCH ROZWIAZAN

4.6 PoserPakiet Poser firmy Curious Labs[29] nie przypomina wygladem zadnego z wczesniej om-wionych modelerw 3D - jest rozbudowanym i bardzo zaawansowanym narzedziem niemalwyacznie do tworzenia i animacji postaci i zwierzat oraz wszelkich ich atrybutw, takich jakwosy, ubranie, skra, czy mimika twarzy. Wszelkie stworzenia buduje sie w bardzo prostysposb korzystajac z bogatej biblioteki czesci ciaa, elementw garderoby i kompletnych po-staci. Po prawej stronie interfejsu sa tez dostepne rzne predefiniowane ruchy postaci dla celwanimacji takie jak na przykad: bieg, podskok czy kucniecie.

Innowacyjna, wyrzniajaca w dziedzinie grafiki 3D, cecha Posera sa bardzo zaawansowanealgorytmy prbujace zamodelowac trjwymiarowa twarz postaci na podstawie zaadowanegozdjecia. Dla fotografii wykonanych przy prawidowym oswietleniu efekty tej techniki sa na-prawde imponujace. Program dostarczany jest z trzema osobnymi moduami renderujacymi:

ScanLine renderer - uzywany do generowania szybkiego (a przy tym naprawde adnego)podgladu,

Sketch Designer zamiast renderingu tworzy animacje w postaci kreskwek, szkicw,rzezb, obrazw olejnych i innych zaawansowanych technik artystycznych,

FireFly to najwyzszej klasy renderer do finalnej produkcji realistycznych obrazw.

Pakiet obsuguje w obie strony wasciwie wszystkie najpopularniejsze formaty plikw, adzieki wbudowanej obsudze skryptw w jezyku Python umozliwia nieograniczone rozszerza-nie swoich mozliwosci. Jako jeden z niewielu oferuje export wygenerowanych animacji do for-matu Macromedia Flash, co uczynio go przedmiotem zainteresowania projektantw zaawan-sowanych stron internetowych.

Interfejs Posera jest wyjatkowy, poniewaz zosta stworzony dla artystw. Nie znajdziemytutaj obszaru roboczego podzielonego na cztery czesci, siatek pomocniczych czy ogromnej ilo-sci paskw narzedziowych z ikonami. Poser przypomina raczej st chirurgiczny. Bardzo wy-soka estetyka wykonania interfejsu i wyjatkowa natura narzedzi sprawia, ze z aplikacja pracujesie bardzo przyjemnie. Wygladem i zachowaniem przypomina legendarna juz serie programwdo obrbki grafiki rastrowej Kais Power Tools i Kais Power Goo. Poser jest dostepny naplatforme MS Windows i Mac OS X.

4.6. POSER 19

Rysunek 4.18: Poser - modelowa-nie postaci.

Rysunek 4.19: Poser - przykadowyrendering.

Rysunek 4.20: Poser - animacja po-staci.

Rysunek 4.21: Poser - przykadowyrendering.

20 ROZDZIA 4. PRZEGLAD ZNANYCH ROZWIAZAN

4.7 ShadeShade to kolejny produkt Curious Labs[35]. Aplikacja ta, mimo ze jest bardzo dobrze zintegro-wana z Poserem, w niczym nie przypomina jego artystyczego interfejsu. Shade zosta stworzonygwnie dla ilustratorw, architektw i projektantw i dostepny jest w trzech wersjach: ShadeStandard, Shade Designer i Shade Professional. Pakiet, obecnie w wersji 7, jest dostepny od1986 roku, ale dopiero od niedawna mozna go nabyc w wersji innej niz japonska (w tym krajupraktycznie zdominowa rynek). Mimo krtkiej obecnosci na arenie miedzynarodowej zdazyjuz zwrcic na siebie uwage kilkoma wyrzniajacymi cechami:

gwnym mechanizmem modelowania sa krzywe i aty Beziera - pozwala to w szybkiintuicyjny sposb tworzyc bardzo skomplikowane obiekty, te technike mozna nazwactrjwymiarowym rysowaniem wektorowym,

posiada specjalistyczne narzedzia do modelowania naturalnych elementw organicznych,oparte na ich fizycznych wasciwosciach,

duza integracja z aplikacjami do tworzenia wektorowej grafiki 2D (m.in. Adobe Illustra-tor) oraz CAD (m.in. ArchiCAD),

rozbudowany modu RoomPlanner - kreator pozwalajacy szybko rozpoczac nowy pro-jekt architektoniczny,

modu do wyliczania kinematyki prostej i odwrotnej oraz symulacji dynamiki zozonychelementw mechanicznych,

MagicalSketch w inteligentny sposb zamienia rysowane recznie dwywymiarowe linie natrjwymiarowe ksztaty,

bardzo szybki i zaawansowany renderer (rwniez sieciowy) korzystajacy ze sprzetowegowsparcia dla OpenGL, oferujacy wszystkie nowoczesne techniki i efekty dla grafiki 3D.

Shade dostepny jest dla systemw MS Windows i Mac OS X. Jak na produkt o tak imponu-jacych mozliwosciach zdecydowanie wyrznia sie relatywnie niska cena.

4.7. SHADE 21

Rysunek 4.22: Shade - interfejs. Rysunek 4.23: Shade - przyka-dowy rendering.

Rysunek 4.24: Shade - interfejs.

Rysunek 4.25: Shade - przyka-dowy rendering.

22 ROZDZIA 4. PRZEGLAD ZNANYCH ROZWIAZAN

4.8 POV-Ray - The Persistence of Vision RaytracerPOV-Ray[26] rozwijany jest od bardzo dawna, by jednym z pierwszych darmowych raytracer-w o jakosci generowanych obrazw dorwnujacej wczesnym komercyjnym aplikacjom, ta-kim jak 3D Studio czy LightWave.

Pakiet Persistence of Vision reprezentuje grupe raytracerw (m.in.: Yafray[32], BMRT[37]),ktre nie posiadaja wasnego srodowiska do modelowania obiektw, sterowania oswietleniemczy kamerami. Generuje obraz z plikw tekstowych zawierajacych skryptowy opis sceny. Jezykjakim sie posuguje jest przejrzysty i atwy w opanowaniu. W pakiecie znajduje sie ogromnailosc plikw z definicjami kolorw, materiaw, tekstur, efektw czy przerznych obiektw -mozna je wykorzystac uzywajac dyrektywy include we wasnym pliku. Dzieki takiemu in-terfejsowi w bardzo atwy sposb mozna uzyc tego raytracer-a jako systemu wizualizacji wewasnych projektach, a uzyskane efekty z powodzeniem moga dorwnywac najlepszym modu-om renderujacym najwiekszych pakietw do obrbki 3D. Powstao kilka programw modelu-jacych, wykorzystujacych POV-Raya jako wyjscie - dwa z nich zostana pokrtce omwione wkolejnych podrozdziaach.

Ze wzgledu na to, ze POV-Ray dystrybuowany jest na zasadach open source, moze byc za-implementowany na dowolna platforme. Oficjalnie, najnowsza wersja (3.6) dostepna jest dlasystemw: MS Windows, Mac OS/Mac OS X i Linux (i86). Poniewaz nie posiada interfejsu gra-ficznego ani zadnych wymagan co do sprzetowego wsparcia jakichkolwiek operacji 3D, moznago uruchomic nawet na komputerze i386 z 4MB pamieci RAM i generowac dowolnie zozonesceny (w niekoniecznie rozsadnym czasie).

Ponizej znajduje sie kompletny opis najprostszej sceny, zawierajacej teksturowany obiekt(kule) i pojedyncze zrdo swiata (wynik przestawia rysunek 4.26):

#include "colors.inc" // wykorzystanie predefiniowanych kolorw#include "shapes.inc" // biblioteka bry elementarnych#include "stones.inc" // biblioteka tekstur kamieni

background { color Cyan } // kolor ta (predefiniowany koloru Cyan)

camera // dodanie kamery{

location // pozycja kamerylook_at // punkt, na ktry skierowana jest kamera

}sphere // dodanie obiektu z biblioteki - sfery{

, 2 // srodek sfery w punkcie [0,1,2], promien = 2texture{T_Stone25 // tekstura z pliku stones.inc

}}

light_source { color White} // punktowe zrdo swiata

4.8. POV-RAY - THE PERSISTENCE OF VISION RAYTRACER 23

4.8.1 MorayMoray[24] powsta jako darmowy graficzny interfejs dla raytracer-a POV-Ray. Pierwsze wersje,dostepne jeszcze dla systemu MS-DOS (dziaay rwniez w MS Windows 3.1 i IBM OS/2), byykompatybilne z POV-Rayem w wersji 3.0. Najnowsza wersja Moray-a (3.5) dla POV-Raya 3.5+pracuje juz wyacznie w systemach MS Windows.

Moray jest aplikacja do mniej profesjonalnych zastosowan, pozwalajaca bardzo atwo mo-delowac i animowac trjwymiarowe obiekty. Udostepnia graficzny interfejs dla wiekszosciefektw oferowanych przez POV-Raya. Cay projekt charakteryzuje sie bardzo zaawanso-wanym systemem wtyczek - niewiele narzedzi jest wbudowanych bezposrednio w aplikacje,ogromna wiekszosc z nich stanowia adowane dynamicznie moduy. Rwniez za pomocawtyczki (POV-Ray plugin) aplikacja steruje praca wspomnianego raytracera. Dzieki takiej ar-chitekturze mozna na biezaco uzupeniac interfejs programu o efekty z nowych wersji POV-Raya lub zaimplementowac obsuge innych moduw renderujacych.

W ostatnich wersjach aplikacji zerwano z uzaleznieniem od jakiegokolwiek zewnetrznegoraytracer-a i zaimplementowano wasny modu, oparty na bibliotece OpenGL. Jest on maoefektowny w porwnaniu z POV-Rayem, ale za to znacznie szybszy. Mozliwosc uzywaniainnych rendererw jest oczywiscie ciagle dostepna.

Moray posiada bardzo przyjazny i rozbudowany edytor materiaw (tworzenie z kilku warstw)z duza biblioteka juz gotowych. Obiekty wraz ze wszystkimi wasciwosciami przechowywanesa w strukturze drzewiastej co pozwala na szybki dostep i tworzenie z nich ancuchw kinema-tycznych. Program wyposazony jest w zaawansowane, nowoczesne narzedzia do modelowaniabry, takie jak: edycja paszczyzn, operacje boolowskie na obiektach, generowanie blobwczy dowolnych bry obrotowych.

4.8.2 KPovModellerKPovModeller[18] to aplikacja stworzona dla systemu Linux (X Window) z uzyciem biblio-teki Qt. Jest to graficzny interfejs tylko i wyacznie dla raytracer-a POV-Ray, doaczany dosrodowiska KDE.

W aplikacji zastosowano nowatorskie podejscie do tworzenia sceny dla POV-Raya: w celuobejscia rznic w wersjach raytracer-a, caa skadnia skryptu tumaczona jest na postac drzewahierarchicznie porzadkujacego wszystkie instrukcje. Oprcz standardowych akcji wstawianychkliknieciem myszy, KPovModeller pozwala wpisac do tego drzewa dowolna komende, dziekiczemu mozemy uzywac efektw, dla ktrych nie opracowano interfejsu. W obecnej wersji pro-gramu nie mozna jeszcze uzywac takich elementw skadni POV-Raya jak: petle, zmienne, ma-kra czy specyficzne operatory. Mozliwe jest natomiast umieszczenie w drzewie odpowiedniegofragmentu skryptu (KPovModeller posiada wbudowany edytor do tego celu) realizujacego np.petle. Aplikacja moze rwniez bezposrednio wyeksportowac cae takie drzewo jako kompletnascene do pojedynczego pliku POV.

Interfejs programu prezentuje sie bardzo adnie i wygodnie: wszystkie okna widokowe ko-rzystaja z akceleracji OpenGL, niezaleznie od trybu wyswietlania. Wiekszosc elementarnychbry z biblioteki POV-Raya dostepna jest z menu. W ten sam sposb dostepne sa rwniez naj-wazniejsze efekty, kamery i swiata. Klikajac na dowolna akcje w drzewie, w dolnym okniepojawiaja sie wszystkie jej wasciwosci, ktre mozemy edytowac. KPovModeller nie posiadatak zaawansowanych narzedzi do edycji geometrii obiektw jak Moray, niemniej oferowanyprzez niego zestaw modyfikatorw (m.in. operacje boolowskie na obiektach) pozwala recz-nie stworzyc w nim dosc zozone obiekty, a z wykorzystaniem wasnych skryptw POV-Rayamozliwosci sa praktycznie nieograniczone.

24 ROZDZIA 4. PRZEGLAD ZNANYCH ROZWIAZAN

Rysunek 4.26: POV-Ray - przykad. Rysunek 4.27: POV-Ray - przyka-dowy rendering.

Rysunek 4.28: Moray - interfejs. Rysunek 4.29: KPovModeller - in-terfejs.

4.9. EQUINOX 25

4.9 EquinoxEquinox[12] jest stosunkowo nowa, darmowa aplikacja do modelowania i animacji obiektw3D dostepna wyacznie dla systemw UNIX/Linux. Obecna wersja to 0.8.4.

Posiada wasny interaktywny raytracer, ktry nie jest az tak zaawansowany jak np. POV-Rayczy Yafray, ale na pewno duzym jego atutem jest szybkosc dziaania. Pod katem tej ostatniejcechy oraz oszczednego zarzadzania pamiecia zoptymalizowany zosta rwniez przejrzysty iintuicyjny interfejs (wymaga biblioteki OpenGL) oraz mechanizm adowanych dynamiczniemoduw (dzieki temu mozna wykorzystac zewnetrzne raytracery). Sprawia to, ze Equinoxznakomicie nadaje sie do szybkiego tworzenia dosyc zaawansowanych modeli nawet na sto-sunkowo wolnym sprzecie. Autor aplikacji z zadowoleniem twierdzi, ze jego program jestgotowy do pracy w czasie niespena jednej sekundy od uruchomienia, z zaadowanymi juz 75wtyczkami. W porwnaniu z innymi aplikacjami 3D jest to cecha naprawde niezwyka. Kolej-nym krokiem w zwiekszaniu wydajnosci dziaania jest mechanizm wspdzielenia materiaw:wsprzedne tekstury sa przechowywane razem z geometria obiektu, a nie tak jak w wiekszo-sci pakietw - z danymi samej tekstury. Dzieki temu kazde nastepne uzycie danej tekstury niewymusza ponownego adowania pliku graficznego i alokowania pamieci dla nowego obrazu.

Duza szybkosc dziaania idzie w parze ze spora iloscia narzedzi do modyfikacji geometriimodeli 3D i efektw takich jak: multiteksturing (tekstura moze byc zbudowana z nawet osmiuobrazw), realistyczne odbicia od powierzchni lustrzanych, cylindryczne nakadanie tekstur,zaawansowane cieniowanie czy oswietlenie obliczane osobno dla kazdego piksela (uzywa dotego celu specjalnego jezyka programowania Cg[38] opracowanego przez firme NVidia dla kartgrafiki z rodziny FX). Obiekty wraz ze wszystkimi wasciwosciami uporzadkowane sa w wy-godnych strukturach drzewiastych.

Rysunek 4.30: Equinox - interfejs. Rysunek 4.31: Equinox - przykadowyrendering.

26 ROZDZIA 4. PRZEGLAD ZNANYCH ROZWIAZAN

4.10 Innovation3DInnovation3D[17] to bardzo mody, ale intensywnie rozwijany projekt. Wykorzystuje bibliotekeQT, OpenGL i NURBS++. Obecna wersja (0.66) dostepna jest za darmo w postaci kompletnegokodu zrdowego i kompiluje sie wyacznie w systemach UNIX/Linux.

Na te chwile mozliwosci renderingu aplikacji sa bardzo niewielkie - posiada minimalnemozliwosci teksturowania i praktycznie zadnych efektw. Brakuje nawet takich podstaw jakdefiniowanie kamer i zrde swiata. Mimo to da sie zauwazyc ogromny nacisk kadziony narozwj zaawansowanych narzedzi do modelowania.Innovation3D oprcz umieszczania standar-dowych bry, udostepnia wiekszosc z najnowszych technik tworzenia trjwymiarowych obiek-tw takich jak m.in.: modelowanie za pomoca krzywych i at Beziera, punktowa edycja po-wierzchni, szkieletowa budowa obiektu, modelowanie z wykorzystaniem NURBS, edycja po-jedynczych krawedzi, scian i wierzchokw.

Interfejs Innovation3D nie odbiega wygladem od kanonw obowiazujacych w grafice 3D.Istnieje mozliwosc indywidulnego rozmieszczenia widokw na pulpicie (jak np. w graficznympakiecie Gimp) zamiast zamkniecia ich w zwartym obszarze robocznym. Aplikacja posiadaprosty edytor materiaw z mozliwoscia tworzenia wasnych bibliotek. Rwniez prostym, aleinteresujacym elementem jest UV Editor, pozwalajacy na interaktywna definicje wsprzednychmapowania promieni UV dla obiektw teksturowanych.

Aplikacja, posiadajaca obecnie funkcjonalnosc zaawansowanego programu CAD, zapo-wiada sie bardzo obiecujaco. Istniejacy mechanizm wtyczek pozwala na uzycie na razie tylkojednego zewnetrznego raytracera BMRT (Blue Moon Rendering Tool[37]) i mimo duzych mozli-wosci, jest on uzywany wyacznie do generowania podgladw. Jezeli autorzy pooza taki naciskna edycje efektw i realizm generowanych obrazw, jaki poozyli na zaprojektowanie narzedzimodelujacych, to mozemy spodziewac sie w przyszosci bardzo dobrego edytora do grafiki 3D.

Rysunek 4.32: Innovation3D - interfejs. Rysunek 4.33: Innovation3D - UVEditor.

4.11. ROBOWORKS 27

4.11 RoboWorksOstatnia, z przedstawionych aplikacji do modelowania obiektw 3D jest RoboWorks firmy New-tonium[34]. Nie jest to edytor do grafiki 3D, ale symulator sterowania systemami robotycznymiwykorzystujacy do ich modelowania trjwymiarowe bryy elementarne i biblioteke OpenGL dorenderingu. Dostepny jest odpatnie i tylko dla systemu MS Windows, z wyjatkiem darmowejbiblioteki do obsugi interfejsu komunikacyjnego RoboTalk w postaci kodu zrdowego.

RoboWorks zosta zaprojektowany do atwej budowy, symulacji i animacji dowolnie zo-zonych modeli robotycznych w trjwymiarowym srodowisku. Dzieki rozbudowanej obsudzekomunikacji moze z powodzeniem suzyc jako program wizualizacyjny dla zaawansowanychaplikacji symulacyjnych - posiada wbudowane interfejsy dla Matlaba, LabView i Visual Basic-a. Wbudowany mechanizm RoboTalk udostepnia protok komunikacyjny oparty na TCP/IP,pozwalajacy na sterowanie modelem w srodowisku RoboWorks za pomoca zewnetrznej apli-kacji lub nawet ze zdalnego komputera (np. program sterujacy napisany dla systemu Linux).Zaprojektowanym robotem mozna rwniez sterowac z klawiatury (klawisze dowolnie definio-wane) oraz przez podanie sekwencji zmiennych stanu z pliku tekstowego lub strumienia.

Aplikacja oferuje bardzo przyjazny i intuicyjny interfejs, nawet zozone gniazda robotyczneprojektuje sie naprawde szybko. Dostep do parametrw i sterowanie przegubami uatwia bocznypanel porzadkujacy wszystkie elementy w strukturze drzewa. Aplikacja jest bardzo popularnawsrd projektantw robotw, a pliki w formacie RoboWorks SCN mozna znalezc na stronachwielu instytucji i firm zajmujacych sie ich budowa i sterowaniem.

Pod wzgledem zastosowania, RoboWorks jest najblizszy celom stawianym w aplikacji Gwell.Jezeli uda sie w przyszosci zrealizowac w programie Gwell tak dobry mechanizm sterowaniazamodelowanymi robotami, jaki mamy w RoboWorks - uzyskany efekt bedzie o wiele lepszyniz produkt firmy Newtonium. Gwell oferuje znacznie wieksze mozliwosci modelowania i wi-zualizacji.

28 ROZDZIA 4. PRZEGLAD ZNANYCH ROZWIAZAN

Rysunek 4.34: RoboWorks - mode-lowanie.

Rysunek 4.35: RoboWorks -gniazdo produkcyjne.

Rysunek 4.36: RoboWorks - recznesterowanie robotem Puma.

Rysunek 4.37: RoboWorks - stero-wanie z klawiatury.

Rozdzia 5

Opis sposobu modelowania obiektw wbibliotece VIONA

5.1 Oglna koncepcjaBiblioteka VIONA[8] przystosowana jest do przechowywania trjwymiarowych obiektw wpostaci otwartych ancuchw kinematycznych, ktrych elementy sa wynikiem transformacjipredefiniowanych bry wzorcowych (np. szescian czy stozek). Mozliwe jest rwniez zasto-sowanie dowolnych innych macierzy transformacji. Kazdy z obiektw nalezacych do ancu-cha kinematycznego tej struktury moze posiadac dowolna ilosc obiektw potomnych. Podsta-wowa jednostka modelowania kinematyki jest weze, natomiast geometrii - transformowanabrya wzorcowa. Opisy bry wzorcowych (wierzchoki, krawedzie i sciany) grupowane sa wbiblioteki i adowane z plikw tekstowych.Przykad pliku zawierajacego biblioteke bry wzorcowych:

FiguresLibrary: dwie_proste_bryly

Figure CUBOID;Nodes: (0, 0, 0) (0, 0, 1) (0, 1, 0)

(0, 1, 1) (1, 0, 0) (1, 0, 1)(1, 1, 0) (1, 1, 1);

Edges: (1, 2) (3, 4) (5, 6) (7, 8) (1, 3) (3, 7)(5, 7) (1, 5) (2, 4) (4, 8) (8, 6) (2, 6);

Faces: (5, 6, 2, 1) (1, 2, 4, 3) (1, 3, 7, 5)(3, 4, 8, 7) (2, 6, 8, 4) (5, 7, 8, 6);

EndFigure;

Figure SLANTCUBOID;Nodes: (0,0,0) (1,0,0) (0,1,0) (0,0,1) (0,1,1) (1,0,1);Edges: (1,2) (2,3) (3,1) (1,4) (2,6) (3,5) (4,6) (5,6) (4,5);Faces: (3, 2, 1) (6, 5, 4) (1, 4, 5, 3) (1, 2, 6, 4) (2, 3, 5, 6);EndFigure;

EndLibrary.

Kazdy obiekt struktury, posiadajacy reprezentacje geometryczna, jest sensu stricto bryawzorcowa poddana zadanym trasformacjom. W strukturze moga istniec obiekty zozone niepo-siadajace reprezentacji geometrycznej - ich przeznaczeniem jest tylko i wyacznie rola ogniwanadrzednego nad swoimi elementami (wsrd ktrych moga byc takze inne obiekty zozone).

29

30ROZDZIA 5. OPIS SPOSOBU MODELOWANIA OBIEKTW W BIBLIOTECE VIONA

Tylko obiekty zozone moga byc korzeniami ancuchw kinematycznych. Obiekt sceny jestkontenerem zawierajacym wszystkie te korzenie.Ponizsze rysunki przedstawiaja dwa sposoby wyswietlania przykadowej struktury w aplikacjiGwell (kolumna Pattern Polyhedron zawiera typ bryy wzorcowej) :

Rysunek 5.1: Struktura wyswietlana w postaci drzewa

Rysunek 5.2: Struktura wyswietlana w postaci sciezek

5.2 Charakterystyka poszczeglnych klasAby atwiej i precyzyjniej przedstawic budowe struktury obiektw w bibliotece Viona uzywanesa (rwniez w dokumentacji samej biblioteki) nastepujace pojecia:

brya wzorcowa - obiekt klasy ViPattePolyh nie istniejacy samodzielnie w strukturze,zawierajacy informacje o wierzchokach, krawedziach i scianach bryy geometrycznej;

weze drzewa - obiekt klasy ViPolyhHierList, tworzacy logiczny element struktury jestklasa bazowa, ktra musza dziedziczyc wszystkie obiekty tworzace drzewo; weze mozebyc zarwno potomkiem jak i posiadac dowolna ilosc innych wezw potomnych;

brya elementarna - obiekt klasy ViElemePolyh dziedziczy klase ViPolyhHierList -jest wiec wezem drzewa; posiada wskaznik do bryy wzorcowej, ktra modeluje, ma-cierz przeksztacenia ukadu wsprzednych tej bryy do wasnego ukadu oraz macierzetranslacji, rotacji i skali transformujace te brye; brya elementarna stanowi jedyny ele-ment w bibliotece posiadajacy graficzna reprezentacje;

5.3. REPREZENTACJA KINEMATYKI OBIEKTW 31

brya zozona - obiekt klasy ViMultiPolyh rwniez dziedziczacy ViPolyhHierList; obiektytej klasy nie posiadaja geometrii - suza jako wezy-rodzice grupy swoich obiektw po-tomnych, wsrd ktrych, oprcz bry elementarnych znajdowac sie moga rwniez innebryy zozone; tylko obiekty zozone moga byc korzeniami struktur;

scena - obiekt klasy ViScene, jest kontenerem dla wszystkich korzeni (bry zozonych)struktur - tym samym stanowi gwny korzen caego drzewa; umozliwia dodawanie, usu-wanie oraz dostep do posiadanych bry zozonych.

Dodatkowo bryy elementarne umozliwiaja trasformacje wasnego lokalnego ukadu wsp-rzednych. Podstawowym elementem kinematycznej struktury drzewiastej jest weze drzewa.Obiekty elementarne i obiekty zozone (oraz wszystkie ich klasy pochodne) sa wezami drzewa,tworzacymi pena stukture kinematyczna.

Ponizej przedstawione zostay zaleznosci miedzy klasami biblioteki. Klasy ViElemePolyh iViMultiPolyh dziedzicza klase ViPolyhHierList. Obiekty obu tych klas moga byc w dowolnysposb podrzedne lub nadrzedne wzgledem siebie, ale kazdy z nich moze posiadac maksymal-nie jednego rodzica. Wszystkie obiekty klasy ViElemePolyh powiazane sa z obiektami klasyViPattePolyh reprezentujacymi bryy wzorcowe. Obiekt klasy ViScene zawiera liste korzeniposzczeglnych drzew. Korzeniami moga byc tylko obiekty klasy ViMultiPolyh.

Rysunek 5.3: Diagram klas (UML) wykorzystywanych do modelowania bry.

5.3 Reprezentacja kinematyki obiektwWszystkie obiekty wchodzace w skad drzewa dziedzicza klase ViPolyhHierList reprezentu-jaca pojedynczy weze. Kazdy weze posiada swj wasny ukad wsprzednych (inwariantny wprzestrzeni ciaa), ktry w ukadzie globalnym drzewa jest wynikiem trasformacji ukadw ko-lejnych rodzicw tego weza. Transformacja, skadajaca sie z przeksztacenia rotacji i translacjiukadu wsprzednych weza rodzica do ukadu aktualnego weza, przechowywana jest w ak-tualnym wezle w polu prywatnym pod nazwa _Transf2ParentCoord. Dostep do tej macierzy

32ROZDZIA 5. OPIS SPOSOBU MODELOWANIA OBIEKTW W BIBLIOTECE VIONA

umozliwia metoda Mtx2ParentCoord(). Utworzona w ten sposb struktura stanowi otwartyancuch kinematyczny.

Oprcz macierzy transformacji do weza rodzica, bryy elementarne (obiekty klasy ViE-lemePolyh) posiadaja macierz transformacji, przeprowadzajaca ukad wsprzednych bryywzorcowej do wasnego ukadu wsprzednych. Macierz ta przechowywana jest w polu pry-watnym _Mtx_Patte2Eleme, a dostep do niej umozliwia metoda Mtx2ElemeCoord(). Tylko temacierz stosuje sie do modyfikowania skali pojedynczej bryy elementarnej. Jezeli zastosujemyskale do Mtx2ParentCoord() - przeskalowane zostana rwniez wszystkie ukady wsprzed-nych potomkw tego elementu.Bryy elementarne oferuja dodatkowo mozliwosc wewnetrznej transformacji wasnego ukaduwsprzednych. Macierz tej transformacji przechowywana jest w prywatnym polu _Mtx_Eleme2Indiv,a dostep do niej uzyskujemy za pomoca metody Mtx2IndivCoord().

Uklad wspolrzednychbryly elementarnej (ViElemePolyh)

A.Mtx2IndivCoord()

Uklad wspolrzednych globalnych

sceny (ViScene)

bryly zlozonej (ViMultiPolyh)Uklad wspolrzednych

A.Mtx2ElemeCoord()

A.Mtx2ParentCoord()

B.Mtx2IndivCoord()

Uklad wspolrzednychbryly elementarnej (ViElemePolyh)

B.Mtx2ParentCoord()

C.Mtx2ParentCoord()

Uklad wspolrzednychbryly wzorcowej (ViPattePolyh)

B.Mtx2ElemeCoord()

C : ViMultiPolyh

B : ViElemePolyh

X : ViPattePolyh

A : ViElemePolyh

_IndivName = "A"

_Name = "X"

_IndivName = "C"

_IndivName = "B"

Scena : ViScene

AX

B

Rysunek 5.4: Ciag transformacji w przykadowym ancuchu kinematycznym.

W przedstawionym powyzej przykadzie ciag kinematyczny dla obiektu C ma postac:

A B C.Brya wzorcowa reprezentowana przez X nie nalezy do ancucha kinematycznego - definiujejedynie geometrie dla poszczeglnych obiektw. Ponizej wyznaczymy globalne wsprzednebryy A (na scenie):

ciag transformacji wyznaczania globalnych wsprzednych bryy A ma postac:XA B C Scena;

ukad wsprzednych bryy wzorcowej X przeksztacany jest do wasnego ukadu bryyelementarnej A przez macierz A.Mtx2ElemeCoord(), czyli:

X A,co obliczamy nastepujaco:

A.Mtx2IndivCoord()A.Mtx2ElemeCoord();

5.3. REPREZENTACJA KINEMATYKI OBIEKTW 33

wasny ukad wsprzednych bryy A moze byc wewnetrznie przesuniety, co opisuje ma-cierz A.Mtx2IndivCoord();

brya elementarna B jest rodzicem bryy A i rwniez wykorzystuje brye wzorcowa X,wiec ciag jej przeksztacen wyglada tak:

X A B,

transformacje te obliczamy nastepujaco:

B.Mtx2IndivCoord()A.Mtx2ParentCoord()A.Mtx2IndivCoord()A.Mtx2ElemeCoord();

przejscie z ukadu bryy B do lokalnego ukadu wsprzednych bryy C ma oglna postac:

X A B C,

wiec mamy:

B.Mtx2ParentCoord()B.Mtx2IndivCoord()A.Mtx2ParentCoord()A.Mtx2IndivCoord()A.Mtx2ElemeCoord();

ostateczne przejscie do ukadu globalnych wsprzednych sceny:

X A BC Scena

wyznaczamy poprzez:

C.Mtx2ParentCoord()B.Mtx2ParentCoord()B.Mtx2IndivCoord()A.Mtx2ParentCoord()A.Mtx2IndivCoord()A.Mtx2ElemeCoord().

Jak widac z powyzszego przykadu, transformacje do kolejnych ukadw obiektw nadrzed-nych wykonywane sa jedynie przez lewostronne pomnozenie aktualnej macierzy transformacjiukadu wsprzednych obiektu potomnego przez macierz przejscia do ukadu rodzica Mtx2ParentCoord().Wyjatek stanowia tylko poczatkowe transformacje: z ukadu wsprzednych bryy wzorcowejdo bryy elementarnej i wewnetrzne przeksztacenie ukadu bryy elementarnej. Sa to operacjesuzace przyporzadkowaniu geometrii danemu obiektowi.

34ROZDZIA 5. OPIS SPOSOBU MODELOWANIA OBIEKTW W BIBLIOTECE VIONA

Rozdzia 6

Opis zrealizowanego systemumodelowania

System modelowania zrealizowany w bibliotece VIONA udostepnia czysty mechanizm mody-fikacji geometrii. Obiekty, zbudowane z bry wzorcowych, nie posiadaja zadnych informacjiwizualnych takich jak kolor, tekstura czy przezroczystosc.W aplikacji Gwell, aby odpowiednio przedstawic zamodelowana strukture, stworzono klaseViElemePolyhExt, dziedziczaca klase bry elementarnych ViElemePolyh, zawierajaca dodat-kowe wasnosci do celw wizualizacji. Klase ViElemePolyh wraz z innymi wykorzystywanymiklasami przedstawia ponizszy diagram w jezyku UML:

TextureParams-_glTexID: GLuint-_magFilter: GLenum-_minFilter: GLenum-_wrapS: GLenum-_wrapT: GLenum-_envMode: GLenum-_blendingEnabled: bool-_srcFactor: GLenum-_destFactor: GLenum-_reflectingEnabled: bool-_minW: GLfloat-_minH: GLfloat-_maxW: GLfloat-_maxH: GLfloat

+set*(value:type): void+get*(): type

ViElemePolyhExt-_material: Material*-_materialEnabled: bool-_applyTo: GLenum-_textureEnabled: bool-_textureParams: TextureParams*-_DefMaterial: static Material-_DefTextureParams: static TextureParams

+material(): Material*+applyTo(): GLenum+materialEnabled(): bool+textureParams*(): TextureParams+textureEnabled(): bool+defaultMaterial(): static const Material&+setDefaultMaterial(material:Material&): void+defaultTextureParams(): static const TextureParams&+setDefaultTextureParams(defTP:TextureParams&): void

Material-_materialName: QString-_shininess: GLint-_qAmbientColor: QColor-_qDiffuseColor: QColor-_qSpecularColor: QColor-_qEmissionColor: QColor-_iAmbientAlpha: int-_iDiffuseAlpha: int-_iSpecularAlpha: int-_iEmissionAlpha: int

+setName(name:QString&): void+setShininess(shininess:GLint): void+set*Color(color:QColor&): void+set*Alpha(alpha:int): void

ViElemePolyh-_pPattePolyh: ViPattePolyh-_Mtx_Patte2Eleme: Matrix3f-_Mtx_Eleme2Indiv: Matrix3f

+PattePolyh(): const ViPattePolyh&+Mtx2ElemeCoord(): const Matrix3f&+Mtx2IndivCoord()(): const Matrix3f&

Texture-_fileName: QString-_scaleMode: QImage::ScaleMode-_mipmapEnabled: bool-_howManyUsers: int-_GLTextureID: GLuint-_isValid: bool-_preview: QPixmap*

+set*(value:type): void+get*(): type+incHowManyUsers(): void+decHowManyUsers(): void+isValid(): bool+howManyUsers(): int

Texture-_fileName: QString-_scaleMode: QImage::ScaleMode-_mipmapEnabled: bool-_howManyUsers: int-_GLTextureID: GLuint-_isValid: bool-_preview: QPixmap*

+set*(value:type): void+get*(): type+incHowManyUsers(): void+decHowManyUsers(): void+isValid(): bool+howManyUsers(): int

Texture-_fileName: QString-_scaleMode: QImage::ScaleMode-_mipmapEnabled: bool-_howManyUsers: int-_GLTextureID: GLuint-_isValid: bool-_preview: QPixmap*

+set*(value:type): void+get*(): type+incHowManyUsers(): void+decHowManyUsers(): void+isValid(): bool+howManyUsers(): int

TextureManager

1 1

1

1

0..* 1

Rysunek 6.1: Klasa ViElemePolyhExt wraz z klasami towarzyszacymi.

35

36 ROZDZIA 6. OPIS ZREALIZOWANEGO SYSTEMU MODELOWANIA

typ nazwa opisMaterial* _material opisuje wszystkie wasciwosci materiau elementu

bool _materialEnabled okresla czy element ma byc wyswietlany z materiaemGLenum _applyTo okresla dla jakich scian ma byc stosowany materia

TextureParams* _textureParams opisuje teksture obiektu wraz z jej wasciwosciamibool _textureEnabled okresla czy obiekt ma byc teksturowany

static Material _DefMaterial domyslny materia stosowany do nowych obiektwstatic TextureParams _DefTextureParams domyslna tekstura z parametrami

Tablica 6.1: Dodatkowe pola klasy ViElemePolyhExt.

Klasa Material zawiera wszystkie informacje o kolorze obiektu i jego reakcjach na rznerodzaje oswietlenia. Zostaa dokadnie scharakteryzowana w rozdziale 6.1.Istnieje mozliwosc wyaczenia materiau elementu poprzez zmienna boolowska _materialEnabled- element rysowany jest wtedy w domyslnym kolorze zdefiniowanym w systemie rysowaniaobiektw (nie ma to nic wsplnego z polem _DefMaterial). W implementacji Gwell takiobiekt domyslnie rysowany jest kolorem biaym (odpowiada w ten sposb na kazdy koloroswietlenia).

Pole _applyTo jest typu wyliczeniowego zdefiniowanego w bibliotece OpenGL i okresla,ktre ze scian obiektu maja byc rysowane z wykorzystaniem materiau. Zmienna ta moze przyj-mowac 3 wartosci:

GL_FRONT - przednie powierzchnie scian (wierzchoki scian zostay zadane w kierunkuprzeciwnym do ruchu wskazwek zegara),

GL_BACK - tylne powierzchnie scian,

GL_FRONT_AND_BACK - wszystkie powierzchnie obiektu rysowane sa z wykorzystaniemmateriau.

Klasa TextureParams zawiera (posrednio) obraz tekstury oraz wszystkie jej parametry,takie jak: filtry, przezroczystosc czy sposb nakadania na obiekt. Klasa ta zostaa dokadnieopisana w rozdziale 6.2.2.Podobnie jak w przypadku materiau, istnieje mozliwosc wyaczenia teksturowania obiektu.Odpowiada za to pole _textureEnabled. Sposb potraktowania tego pola (podobnie jak wprzypadku materiau) zalezy od funkcji rysujacej element.

Statyczne pola klasy: _DefMaterial i _DefTextureParams suza jako ustawienia do-myslne (poczatkowe) dla nowo tworzonych obiektw klasy ViElemePolyhExt. Mozna je do-wolnie modyfikowac. Parametry domyslne przydaja sie, gdy tworzymy kolejno wieksza iloscobiektw o tych samych wasnosciach. Nie ma wtedy potrzeby ciagego zadawania tych sa-mych wasciwosci.

6.1. MATERIA 37

6.1 Materia

Kolorystyczna reakcja powierzchni elementu w zaleznosci od rodzaju oswietlenia opisana jestprzez klase Material.

typ pole opisQString _materialName nazwa wasna materiauQColor _qAmbientColor skadowa Ambient

int _iAmbientAlphaQColor _qDiffuseColor skadowa Diffuse

int _iDiffuseAlphaQColor _qSpecularColor skadowa Specular

int _iSpecularAlphaQColor _qEmissionColor skadowa Emission

int _iEmissionAlphaGLint _shininess parametr Shininess

GLfloat _ambientColor[4] reprezentacja dla OpenGLGLfloat _diffuseColor[4]GLfloat _specularColor[4]GLfloat _emissionColor[4]

Tablica 6.2: Pola klasy Material.

Wartosci koloru zadawane materiaowi odpowiadaja w rzeczywistosci proporcjom stopniaodbicia skadowych koloru danego swiata.Na przykad: ustawiajac wartosc koloru Diffuse dla materiau na RGB = (255, 128, 0) okre-slamy, ze materia, oswietlony swiatem typu Diffuse odbija caa skadowa czerwona swiata,poowe skadowej zielonej i cakowicie absorbuje skadowa niebieska.

Swiata typu: Ambient, Diffuse oraz Specular:

swiato typu Ambient nie posiada kierunku, dociera do obserwatora ze wszystkich stron(w wyniku odbicia od bardzo wielu powierzchni),

swiato typu Diffuse pochodzi z okreslonego kierunku i daje jasniejszy efekt, gdy pada napowierzchnie prostopadle niz pod innym katem, poniewaz w wyniku odbicia rozpraszanejest tak samo w kazdym kierunku,

swiato typu Specular rwniez posiada okreslony kierunek, ale od powierzchni odbija siew okreslona strone - ma postac wiazki; duza wartosc skadowej Specular posiadaja takiemateriay jak np. byszczacy metal i plastik.

Kolor Emission ma inne znaczenie niz wymienione wyzej - jest barwa swiecenia obiektu.Mimo to element nie funkcjonuje jako zrdo swiata - jego kolor po prostu nie ulega zmianomw zaleznosci od zewnetrznego oswietlenia. Efekt prawdziwie swiecacego obiektu uzyskamy,umieszczajac wewnatrz niego zrdo swiata (i oczywiscie odpowiednio ustawiajac kolor Emis-sion).

Ostatnim elementem, wpywajacym na charakterystyke materiau jest parametr Shininess.Jest to pojedyncza wartosc okreslajaca wielkosc odblasku na obiekcie, powstaego w wynikupadajacego swiata. Im jest wieksza tym bardziej skupiony i jasniejszy jest obszar odbicia.

38 ROZDZIA 6. OPIS ZREALIZOWANEGO SYSTEMU MODELOWANIA

Klasa Material przechowuje parametry kolorw w dwch formatach rwnoczesnie, po-zwala to zredukowac kazdorazowe przeliczenia. Obiekty klasy QColor (pola _q* i _i*) sa uzy-wane w interfejscie do interakcji z uzytkownikiem, natomiast format OpenGL (4-elementowetablice) do szybkiego rysowania elementw.

6.2 Zarzadzanie teksturami w aplikacji GwellMechanizm przechowywania i zadawania elementom tekstury wraz z parametrami zosta waplikacji Gwell mocno zoptymalizowany pod katem szybkosci i oszczednosci pamieci. Zreali-zowane to zostao nawet szerzej niz w pakiecie Equinox (patrz rozdzia 4.9).

obraz, ktry ma zostac uzyty jako tekstura, musi miec rozmiary bedace potega liczby2 (maksymalny rozmiar tekstury zalezy od implementacji OpenGL dla danej karty gra-ficznej i wynosi przewaznie 2048x2048); rzadko ktry obraz spenia te wymaganie, wiecGwell oferuje trzy rodzaje skalowania obrazu (dostepne w Qt) do najblizszych wymiarwbedacych potegami liczby 2 (zawsze wiekszych lub rwnych niz pierwotne):

ScaleFree - proste skalowanie bez zachowania pierwotnego stosunku wysokosc/szerokosc, ScaleMin - skalowanie z zachowaniem proporcji, przeskalowany obraz w caosci

miesci sie w nowych wymiarach, jest maksymalnie rozciagniety wzduz wiekszegoboku (wolny obszar wypeniany jest kolorem czarnym),

ScaleMax - zachowuje proporcje, ale przeskalowany obraz zajmuje w caosci nowyobszar, jego duzszy bok jest wiec obcinany.

Skalowanie w zaden sposb nie zmienia oryginalnego pliku z obrazem.

przeskalowany obraz adowany jest do pamieci w postaci pojedynczej tekstury lub mip-map (kilku fragmentw o mniejszej skali, przyspieszajacych wyswietlanie dzieki wy-eliminowaniu kazdorazowego skalowania pojedynczej tekstury) - informacja ta jest nie-zbedna ze wzgledu na odmienny sposb adowania przez OpenGL; umieszczajac takiobraz w pamieci dostajemy informacje o adresie pod ktrym sie teraz znajduje;

adresy zaadowanych tekstur, wraz z nazwa pliku, typem skalowania i informacja o dzie-leniu na mipmapy, przechowywane sa w strukturach tworzacych odpowiednio zarzadzanaliste; do tekstury doaczana jest rwniez informacja o liczbie obiektw z niej korzystaja-cych - pozwala to dynamicznie usuwac z pamieci obrazy nieuzywane;

kazda brya posiada liste parametrw tekstury takich jak: filtry, przezroczystosc, wsp-rzedne; wsrd tych parametrw znajduje sie rwniez fizyczny adres tekstury w pamiecikarty graficzej;

Takie rozwiazanie pozwala na pene wspdzielenie pojedynczej tekstury (Texture) przez wieleobiektw. Kazdy obiekt posiada wasne parametry modyfikujace wyglad tekstury (TexturePa-rams) i sposb jej nakadania na siebie. Zarzadca kolejki tekstur (TextureManager), podczasadowania obrazu przez uzytkownika sprawdza, czy obraz o takich parametrach nie znajduje siejuz w pamieci - wtedy automatycznie uzywa go w danym obiekcie. Udostepnia tez uzytkowni-kowi liste zaadowanych tekstur gotowych do ponownego wykorzystania.

6.2. ZARZADZANIE TEKSTURAMI W APLIKACJI GWELL 39

6.2.1 Klasa TextureObiekt klasy Texture reprezentuje pojedyncza teksture znajdujaca sie w pamieci.

typ pole opisQString _fileName nazwa pliku, z ktrego zaadowany zosta obraz

QImage::ScaleMode _scaleMode sposb skalowania obrazubool _mipmapEnabled czy obraz adowany w postaci mipmap

GLuint _GLTextureID fizyczny adres tekstury w pamieciint _howManyUsers ile elementw aktualnie z niej korzysta

bool _isValid czy obraz zosta poprawnie odczytany z plikuQPixmap* _preview mini-podglad obrazu

Tablica 6.3: Pola klasy Texture.

Do efektywnego zarzadzania obiektami tej klasy oraz kojarzenia ich z elementami suzyspecjalna klasa TextureManager (patrz rozdzia 6.2.3).

6.2.2 Klasa TextureParamsKazda brya posiada wasny zestaw parametrw uzywanej tekstury. Parametry te zawarte sa wobiekcie klasy TextureParams, doaczonym do obiektu klasy ViElemePolyhExt.

typ pole opisGLuint _glTexID fizyczny adres tekstury w pamieci

GLenum _magFilter typ filtra MagnificationGLenum _minFilter typ filtra MinificationGLenum _wrapS multiplikacja tekstury w poziomieGLenum _wrapT multiplikacja tekstury w pionieGLenum _envMode interakcja tekstury z materiaem

bool _blendingEnabled obiekt jest pprzezroczystyGLenum _srcFactor wspczynnik zrdaGLenum _destFactor wspczynnik celu

bool _reflectingEnabled obiekt posiada wasnosci lustrzaneGLfloat _minW wsprzedne teksturyGLfloat _minHGLfloat _maxWGLfloat _maxH

Tablica 6.4: Pola klasy TextureParams.

Pole _glTexID przechowuje fizyczny adres tekstury w pamieci, jest to ten sam adres, ktryjest przechowywany w obiektach klasy Texture. Obiekt klasy ViElemePolyhExt nie posiadatego adresu, korzysta z tej tekstury posrednio acznie z jej parametrami.

Filtry Minification i Magnification okreslaja w jaki sposb teksele (punkty tekstury) majabyc mapowane w sytuacji, gdy pojedynczy piksel obrazu pokrywa sie jedynie z fragmentemteksela (Magnification) lub caa ich grupa (Minification). Zeby uzyskac poprawny efekt nalezywtedy, albo interpolowac (tekstura sie rozszerza) albo usredniac teksele (tekstura sie zmniejsza).

40 ROZDZIA 6. OPIS ZREALIZOWANEGO SYSTEMU MODELOWANIA

Dostepne sa nastepujace algorytmy:

filtry dla Magnification:

GL_NEAREST - algorytm zwraca wartosc najblizszego sasiada (wedug normy Man-hattan) danego teksela; otrzymujemy efekt ostrego i wyraznego obrazu; znaczacawada tego algorytmu jest fakt, ze zblizajac sie do teksturowanego obiektu widzimycoraz wieksze kwadraty bedace efektem skalowania teksela; jest to najprostszy inajszybszy algorytm;

GL_LINEAR - algorytm zwraca wartosc bedaca srednia wazona czterech najblizszychtekseli; otrzymujemy adny efekt gadkiej (nieco rozmytej) tekstury nawet dla bar-dzo maych odlegosci od obiektu; algorytm posiada wieksza zozonosc oblicze-niowa;

filtry dla Minification:

GL_NEAREST - jak dla Magnification; GL_LINEAR - jak dla Magnification; GL_NEAREST_MIPMAP_NEAREST - algorytm wybiera mipmape, ktrej rozmiar jest

najblizszy rozmiarowi teksturowanego piksela i stosuje z nia algorytm najblizszegosasiada (GL_NEAREST);

GL_NEAREST_MIPMAP_LINEAR - algorytm wybiera dwie mipmapy najbardziej zbli-zone rozmiarem do teksturowanego piksela i stosujac algorytm najblizszego sa-siada znajduje wartosci tekstury dla kazdej mipmapy; wynikowa tekstura dla pik-sela jest srednia wazona tych dwch wartosci;

GL_LINEAR_MIPMAP_NEAREST - algorytm wybiera mipmape najbardziej odpowia-dajaca rozmiarem teksturowanemu pikselowi i stosuja z nia algorytm GL_LINEAR;

GL_LINEAR_MIPMAP_LINEAR - algorytm wybiera dwie mipmapy najbardziej zbli-zone rozmiarem do teksturowanego piksela i stosujac algorytm usredniania linio-wego (GL_LINEAR) znajduje wartosci tekstury dla kazdej mipmapy; wynikowa tek-stura dla piksela jest srednia wazona tych dwch wartosci

Filtry dla Minification ze sowem _MIPMAP_, daja pozadany efekt tylko wtedy, gdy aktualnatekstura obiektu zbudowana jest z mipmap, w przeciwym wypadku obiekt bedzie wyswietlanybez tekstury.

Parametry _wrapS i _wrapT okreslaja w jaki sposb tekstura ma byc nakadana w poziomiei pionie na obiekt, jezeli jej wsprzedne nie pokrywaja sie idealnie z wierzchokami scianelementu. Oba parametry moga przyjmowac dwie wartosci:

GL_CLAMP - pojedyncza tekstura nakadana jest na sciane obiektu, a pozostay obszarwypeniany jest liniami o kolorach skrajnych pikseli tekstury,

GL_REPEAT - tekstura nakadana jest na powierzchnie w postaci kafelek.

6.2. ZARZADZANIE TEKSTURAMI W APLIKACJI GWELL 41

Zmienna _envMode okresla w jaki sposb wartosci punktw tekstury reaguja z materia-em obiektu:

GL_DECAL - kolory tekstury zastepuja kolor materiau, GL_MODULATE i GL_BLEND - kombinacja koloru tekstury i koloru materiau w zaleznosci

od ilosci skadowych koloru tekstury.

Aby tekstura obiektu reagowaa na zmienne warunki oswietlenia, parametr ten nie moze bycustawiony na GL_DECAL.

Waczenie lub wyaczenie przezroczystosci (mieszania obiektu z innymi) realizowane jestpoprzez pole _blendingEnabled. Blending posiada dwa parametry: wspczynniki okresla-jace w jaki sposb materia i tekstura danego obiektu (zrdo - _srcFactor) mieszaja sie zwartosciami przechowywanymi aktualnie w buforze (cel - _destFactor), zawierajacym nary-sowane juz fragmenty innych elementw (framebuffer). Wynikowa wartoscia piksela otrzyma-nego na ekranie bedzie suma tych wspczynnikw.

Wspczynniki zrda i celu moga przyjmowac wartosci:

GL_ZERO - wartosc piksela wogle nie jest brana pod uwage; GL_ONE - pena wartosc piksela; GL_DST_COLOR - wartosc koloru piksela, znajdujacego sie w buforze (framebuffer), GL_SRC_COLOR - wartosc koloru piksela obiektu, GL_ONE_MINUS_DST_COLOR - wartosc bedaca rznica liczby 1 i koloru piksela w buforze, GL_ONE_MINUS_SRC_COLOR - wartosc bedaca rznica liczby 1 i koloru piksela obiektu, GL_SRC_ALPHA - wartosc przezroczystosci piksela obiektu, GL_ONE_MINUS_SRC_ALPHA - rznica miedzy liczba 1 i wartoscia przezroczystosci pik-

sela obiektu,

GL_DST_ALPHA - wartosc przezroczystosci piksela w buforze, GL_ONE_MINUS_DST_ALPHA - rznica miedzy liczba 1 i wartoscia przezroczystosci pik-

sela w buforze,

GL_SRC_ALPHA_SATURATE - ?Ustawienie: _srcFactor = GL_ONE i _destFactor = GL_ZERO jest rwnoznaczne z wya-czeniem przezroczystosci.

Obiekt moze posiadac quasi-lustrzana powierzchnie odbijajaca elementy znajdujace sie wo-k. Wasnosc te okresla pole _reflectingEnabled.

Teksturowanie w aplikacji Gwell realizowane jest osobno dla kazdej pary trjkatnych scian.Wsprzedne tekstury odpowiadaja wsprzednym wierzchokw, utworzonej w ten sposbczworobocznej sciany. Modyfikacja tych wsprzednych przydaje sie na przykad w sytuacjach,gdy oryginalny obraz otoczony jest jakas ramka innego koloru - mozna ja wtedy atwo wyeli-minowac.

42 ROZDZIA 6. OPIS ZREALIZOWANEGO SYSTEMU MODELOWANIA

6.2.3 Klasa TextureManagerKlasa TextureManager stworzona zostaa do efektywnego zarzadzania teksturami elementw.Przechowuje liste struktur jednoznacznie okreslajacych obraz i w dynamiczny sposb aduje lubusuwa je z pamieci karty graficznej. W aplikacji Gwell zadawanie tekstur obiektom odbywa sietylko i wyacznie za posrednictwem klasy TextureManager. Klasa ta udostepnia uzytkowni-kowi liste zaadowanych tekstur, umozliwiajac ponowne ich wykorzystanie (mozliwosc usta-wienia wskaznika do obiektu klasy QComboBox). Wszystkie metody klasy TextureManagersa statyczne, dzieki czemu mozna ich uzywac w dowolnym miejscu z ta sama lista tekstur.Aby klasa pracowaa poprawnie nalezy na samym poczatku ustawic jej bazowe okno (kontekst)OpenGL, w ktrego przestrzeni przechowywane beda wspdzielone testury. Kontekst bazowyw aplikacji Gwell jest wsplny dla wszystkich edycyjnych widokw OpenGL.

typ metoda opisstatic void setHostFrame(*) ustawienie bazowego kontekstustatic void setComboBox(*) QComboBox zawierac bedzie teksturystatic void addTextureToObject(*) zadaje teksture obiektowistatic void addTextureToObject(*)static void addTextureToObjects(*) zadaje teksture grupie obiektwstatic void addTextureToObjectsFromCombo(*) wybr tekstury z QComboBoxstatic void deleteTextureFromObject(*) usuwa teksture elementowistatic void deleteTexturesFromObjects(*) usuwa tekstury obiektom

const Texture& getTexture(*) zwraca teksture o podanym adresiestatic int howManyTexturesLoaded() zwraca liczbe zaadowanych obrazw

static void removeUnusedTextures() usuwa nieuzywane tekstury z pamiecistatic void setAutoRemoveUnusedTextures(*) automatycznie usuwa nieuzywane

Tablica 6.5: Najwazniejsze metody klasy TextureManager (parametry oznaczone sagwiazdka).

Metoda setHostFrame( CellFrame* contextFrame ) ustawia widok z gwnym kon-tekstem OpenGL, w ktrym adowane beda tekstury. W Gwell wszystkie widoki dziela ten samkontekst, wiec nie ma znaczenia, ktre okno podamy jako parametr.Metoda ta musi zostac wywoana zanim TextureManager zostanie uzyty, jezeli nie - teksturybeda adowane do nieokreslonego obszaru pamieci, a tym samym nie beda mogy byc wyko-rzystane. Jezeli taka sytuacja wystapi, wyswietlony zostanie stosowny komunikat.

Metoda setComboBox( QComboBox* comboBox ) pozwala ustawic wskaznik na rozwi-jalna liste, w ktrej TextureManager bedzie umieszcza zaadowane obrazy i za pomoca me-tody addTextureToObjectsFromCombo() umozliwia aplikowanie elementowi wybranej tek-stury. Lista ta zawiera opis pojedynczej tekstury w postaci:

{ (miniaturka_obrazu) sciezka_do_pliku, typ_skalowania, w/wy_mipmaping }.

Miniaturka obrazu jest przechowywana w polu _preview klasy Texture.Ustawienie wskaznika do takiej listy nie jest obowiazkowe i nie ma wpywu na prace klasy

TextureManager.

6.2. ZARZADZANIE TEKSTURAMI W APLIKACJI GWELL 43

Metody: addTextureToObject() i addTextureToObjects() suza do nadawania tek-stury pojedynczemu elementowi lub ich grupie i wystepuja z rznymi typami parametrw. Po-nizej opisane sa przeciazenia tych metod.

addTextureToObject( ViElemePolyhExt *elem,QString fileName,QImage::ScaleMode scaleMode,bool mipmapEnabled,const QImage *image)

zadaje elementowi elem teksture utworzona z obrazu w pliku fileName, przeskalowanymmetoda scaleMode w postaci serii mipmap lub pojedynczej tekstury (mipmapEnabled).

Zanim TextureManager utworzy nowa teksture, sprawdza czy obraz o takich parametrachnie znajduje sie juz w pamieci. Jezeli tak to przypisuje obiektowi jej adres fizyczny i domyslneparametry (TextureParams). Parametr image jest wczesniej utworzonym obiektem klasy QI-mage zawierajacym obraz. Obiekt tego typu przewaznie tworzony jest wczesniej przy gene-rowaniu podgladu podczas otwierania pliku. Poniewaz operacja adowania obrazu z pliku dopamieci jest czasochonna (szczeglnie dla duzych obrazw), tutaj nie trzeba wykonywac jejwewnatrz ponownie.

addTextureToObject( ViElemePolyhExt *elem,TextureParams *textureParams)

zadaje elementowi elem parametry tekstury textureParams (wraz z adresem). Metoda tajest najczesciej stosowana, jezeli chcemy teksturowac dany obiekt w dokadnie taki sam sposbjak inny.

addTextureToObjects( QPtrList *objectsList,QString fileName,QImage::ScaleMode scaleMode,bool mipmapEnabled,const QImage *image)

dziaa dokadnie w taki sam sposb jak metoda addTextureToObject(), ale nadaje tek-sture grupie obiektw z listy objectsList.

Metody usuwajace teksture pojedynczemu elementowi lub grupie:

deleteTextureFromObject ( ViElemePolyhExt *elem ),deleteTexturesFromObjects ( QPtrList *selectedList )

Parametry TextureParams pozostaja niezmienione oprcz pola zawierajacego adres tekstury -po usunieciu zawiera 0.

Dostep do obiektu, reprezentujacego teksture o konkretnym adresie mozemy uzyskac zapomoca metody const Texture& getTexture( GLuint ID, bool *ok=0 ). Parametr IDjest fizycznym adresem tekstury w pamieci. Jezeli zaden obraz nie znajduje sie pod danymadresem, zwracany jest obiekt zawierajacy pusta teksture - bez nazwy pliku. Rezultat wyszu-kiwania zawiera zmienna wskazywana przez *ok.

44 ROZDZIA 6. OPIS ZREALIZOWANEGO SYSTEMU MODELOWANIA

Metoda setAutoRemoveUnusedTextures( bool yes ) okresla, czy za kazdym razemprzy zadawaniu tekstury obiektowi maja byc wyszukiwane i usuwane nieuzywane tekstury (wy-woanie removeUnusedTextures()). Jezeli nie to niewykorzystane obrazy beda cay czas wpamieci i usuwac trzeba je samodzielnie (removeUnusedTextures()). Domyslnie automa-tyczne usuwanie jest waczone.

Rozdzia 7

Interfejs aplikacji Gwell

Aplikacja Gwell jest interaktywnym systemem modelowania grafiki 3D wykorzystujacym bi-blioteke VIONA[8]. VIONA (VIrtual rObot eNvironment librAry) jest obiektowo zorientowanabiblioteka przeznaczona do modelowania bry geometrycznych wraz z uwzglednieniem powia-zan kinematycznych w postaci otwartych ancuchw o strukturze drzewiastej. Biblioteka ta niezawiera w sobie zadnych elementw wiazacych ja z jakimkolwiek systemem graficznym.

Interfejs aplikacji Gwell zosta w caosci zrealizowany przy uzyciu biblioteki Qt firmy Trol-lTech[31] (w wersji 3.2). Do trjwymiarowej wizualizacji obiektw uzyto interfejsu OpenGLfirmy Silicon Graphics[27]. Biblioteka Qt oferuje specjalne okno widoku dla OpenGL w po-staci klasy QGLWidget. Dla zwiekszenia mozliwosci i oszczedzenia dodatkowej pracy wyko-rzystano w aplikacji biblioteke libQGLViewer (wersja 1.7.3) autorstwa Gilles-a Debunne[19],bedaca znacznym rozszerzeniem klasy QGLWidget pod wzgledem interaktywnosci i funkcjo-nalnosci. Programy pakietu Gwell byy dotychczas kompilowane i testowane na platformie Li-nux i86. Uzytkownik moze pracowac z aplikacja w dowolnym jezyku (standardowo doaczonesa: polski i angielski).

Aplikacja zostaa podzielona na dwa osobne moduy: Modeler i Layout. Podzia ten, podwzgledem funkcjonalnosci, wzorowany jest na programie LightWave:

Gwell Modeler suzy do budowy obiektu zozonego z kinematycznie powiazanych ele-mentw, nadawania mu materiau i tekstury (udostepnia rwniez manipulowanie swia-tami w celu obejrzenia reakcji materiau na zmienne warunki oswietlenia),

Gwell Layout to edytor finalnej sceny budowanej z obiektw zozonych, oferuje dodat-kowo efekty mgy i cieni oraz rzne typy oswietlenia.

Interfejs obu moduw (rwniez wzorowany na aplikacji LightWave) wyglada podobnie:grne zakadki steruja panelem narzedziowym znajdujacym sie po lewej stronie gwnego oknaprogramu. Obszar roboczy, poczatkowo skadajacy sie z czterech okien edycyjnych, znajdujesie po prawej stronie panelu narzedziowego. Kazde okno edycyjne posiada wasne, ukrywalnemenu pozwalajace sterowac parametrami wyswietlania za pomoca myszy. Ponizej mamy sze-roki pasek statusu, w ktrym aplikacja na biezaco wyswietla informacje o swoim funkcjonowa-niu. Interfejs aplikacji Gwell jest bardzo elastyczny: kazde okno mozemy dowolnie skalowaclub ukrywac. Rwniez obszar roboczy moze zawierac dowolna konfiguracje okien edycyjnych.Zdefiniowane skrty klawiaturowe pozwalaja znacznie przyspieszyc prace z programem.

45

46 ROZDZIA 7. INTERFEJS APLIKACJI GWELL

7.1 Interfejs Modeler-a

Rysunek 7.1: Gwell Modeler - interfejs.

Grne zakadki steruja zawartoscia lewego panelu. Zakadki te mozemy przeaczac rwniezza pomoca klawiszy 1-7. Po prawej stronie zakadek znajduje sie globalne menu ustawiajacewasciwosci wyswietlania wszystkim widokom edycyjnym.

Rysunek 7.2: Modeler - globalne menu wasciwosci widokw.

Poszczeglne kontrolki tego menu umozliwiaja: przejscie w tryb poruszania kamera (kla-wisz C), dopasowanie widoku do rozmiarw sceny (F), wyswietlanie siatki (G, H - siatka3D), wyswietlania osi ukadw wsprzednych (Alt+A), pokazanie ksztatw swiate (Alt+L),zmiane domyslnego kierunku rzutowania (dowolny, z gry, z boku, z przodu), wybr trybuwyswietlania (w postaci siatki (Alt+W), prosty rendering (Alt+S), z teksturowaniem (Alt+T))oraz typu rzutowania (ortogonalne (O) lub perspektywiczne (P)).Kazde okno edycyjne posiada dodatkowo dwie opcje w menu: zrzut obrazu widoku do plikugraficznego (Ctrl+S) (obsugiwane formaty: JPEG, PNG, EPS, PS, XFig 3.2, RGB Bitmap(PPM), Windows BMP) oraz maksymalizacja aktualnego widoku (Ctrl+M) na cay obszar ro-boczy.

7.1. INTERFEJS MODELER-A 47

7.1.1 Okno operacji na plikach (File)Okno umozliwia otwarcie/zapis (Open/Save) bryy

Rysunek 7.3: Modeler - okno ope-racji na plikach.

zozonej z/do pliku. Obiekty zozone przechowywanesa w plikach tekstowych z rozszerzeniem .mph. Pole-cenie New za zgoda uzytkownika usuwa aktualnie edy-towany obiekt z pamieci i czysci wszystkie widoki edy-cyjne. Przycisk Exit powoduje wyjscie z programu.

7.1.2 Okno dodawania obiektw (Draw)

Rysunek 7.4: Modeler - dodawaniebry wzorcowych.

Rysunek 7.5: Modeler - dodawaniebry zozonych.

Okno za pomoca jednego klikniecia dodaje obiekt zozony lub tworzy obiekt elementarny zbryy wzorcowej i dodaje go do edytowanego obiektu zozonego. Jezeli w momencie kliknieciawybrany by jakis obiekt - nowy element automatycznie staje sie jego potomkiem (klikniecie napusty obszar zaznacza gwny edytowany obiekt zozony). Najechanie mysza na brye waczaanimacje jej obrotu, dzieki czemu mozna ja lepiej obejrzec.Poszczeglne zakadki zawieraja biblioteki bry wzorcowych adowane przy starcie aplikacji zkatalogu zdefiniowanego przez uzytkownika. Format zapisu pojedynczej biblioteki zamiesz-czony jest w rozdziale 5.1. Podobnie jak bryy wzorcowe, obiekty zozone adowane sa wmomencie uruchamiania programu.

48 ROZDZIA 7. INTERFEJS APLIKACJI GWELL

7.1.3 Okno modyfikacji parametrw obiektu (Modify)W grnej czescia okna mamy zestaw przyci-

Rysunek 7.6: Modeler - okno modyfikacjiparametrw.

skw narzedzi. Kolejno od lewej strony sa to: na-rzedzie selekcji (klawisz A), translacji (T), rotacji(R), skali (S), zmiany hierarchii kinematycznej po-przez podpinanie jednego obiektu pod drugi (L).Ostatnie dwa przyciski wybieraja narzedzia trans-lacji i rotacji wasnych ukadw wsprzednych ele-mentu. Ruch kamera w oknie edycyjnym jest za-wsze nadrzedny nad dziaaniem modyfikatora. Zebyuzywac modyfikatora w danym oknie, najpierw trzebawyaczyc w nim ruch kamery. Wyjatek stanowiwybr modyfikatora za pomoca klawisza - ruch ka-mery jest wtedy automatycznie wyaczany w da-nym oknie.

Sposb dziaanie wszystkich modyfikatorw jesttaki sam - operuja na wczesniej zaznaczonych obiek-tach, gdy przytrzymany jest lewy klawisz myszy.Wyjatek stanowi jedynie modyfikator podaczania(Link). Wybieramy element (lub grupe), ktry chcemydoaczyc do innego za pomoca narzedzia selekcji.Nastepnie wybieramy modyfikator podaczenia i kli-kamy lewym klawiszem na obiekcie, ktry ma bycrodzicem zaznaczonych elementw. W tym mo-mencie zaznaczony zostanie obiekt docelowy. Je-zeli klikniemy na pusty obszar okna - rodzicem ele-mentw bedzie gwny obiekt zozony. Programposiada zabezpieczenie przed prba podaczenia ele-mentu do obiektu bedacego aktualnie jego potom-kiem - wyswietli wtedy stosowny komunikat. Za-lecane jest, aby do tej operacji waczyc w oknieedycyjnym tryb rysowania rendering prosty. Wtrybie rysowania za pomoca siatki trudno czasamizaznaczyc obiekt ze wzgledu na wyglad kursora,a w trybie teksturowanym nie jest pokazywane za-znaczenie elementw.

Sekcja Transformation umozliwia reczne wpi-sanie wspczynnikw transformacji przesuniecia,obrotu (w stopniach lub radianach) i skali. KlawiszENTER zatwierdza wprowadzone zmiany dla da-nej transformacji.

Grupa Dimensions pozwala zadac obiektowi okre-slone wymiary finalne. Skala jest automatyczniedopasowywana do wymiarw pierwotnych bryy wzor-cowej. Klawisz ENTER zatwierdza wprowadzonewymiary.

Coords transformation zawiera pola do wprowadzania przesuniecia i obrotu wasnego ukaduwsprzednych bryy. Zmiany rwniez zatwierdzane sa klawiszem ENTER.

7.1. INTERFEJS MODELER-A 49

W sekcji Objects name mozemy wpisac wasna nazwe obiektu. Nizej, w polach Parent iPath, wyswietlane sa odpowiednio: nazwa obiektu bedacego rodzicem elementu i pena sciezkado tego elementu w strukturze drzewiastej. Przy wpisywaniu nazwy obiektu dozwolone sa tylkoznaki: [A-Z][0-9][_]. Kazdorazowo przy wpisywaniu ciagu znakw sprawdzane jest, czy obiekto takiej nazwie juz istnieje. Jezeli tak - zmiana nazwy nie jest dopuszczana. Aby zmienic nazwegwnej bryy zozonej nalezy kliknac narzedziem selekcji na pusty obszar okna edycyjnego.

W polu Primitive type wyswietlana jest nazwa bryy wzorcowej modelujacej element. Typbryy mozemy dowolnie zmieniac wybierajac go z rozwijanej listy wszystkich zaadowanychwzorcw.

7.1.4 Okno hierarchii obiektw (Objects)

Rysunek 7.7: Modeler - okno hierarchii obiek-tw.

Rysunek 7.8: Modeler - model z za-znaczonymi elementami.

Okno Objects pokazuje wszystkie obiekty potomne gwnej bryy zozonej w postaci drzewabadz sciezek (obrazuje to rwniez przykad z rozdziau 5.1). Tryb wyswietlania wybieramy zapomoca grnych przyciskw. Wewnetrzne okno podzielone jest na dwie kolumny: pierwsza(Object) zawiera nazwe obiektu i za pomoca ikony reprezentuje jego typ (brya elementarna czyzozona), druga (Pattern Polyhedron) pokazuje nazwe bryy wzorcowej dla obiektw elemen-tarnych. Ponizej tego okna znajduje sie pasek wyswietlajacy pena sciezke do zaznaczonegoobiektu.

W oknie Objects mozemy dowolnie zaznaczac obiekty mysza. Uatwiaja to klawisze: Shifti Ctrl. Wazna informacja jest, ze w obszarze tego okna nie dziaaja zadne inne klawisze (jak np.DELETE). Klikajac na nagwek kolumny mozemy posortowac nazwy obiektw i wzorcw (zciagym zachowaniem hierarchii).

Rysunek 7.7 pokazuje przykadowa hierarchie elementw w modelu robota IRB6. Na ry-sunku 7.8 pokazany jest model z zaznaczonymi elementami.

50 ROZDZIA 7. INTERFEJS APLIKACJI GWELL

7.1.5 Okno edycji oswietlenia (Lights)Aby uzyskac jakikolwiek efekt w postaci renderowa-

Rysunek 7.9: Modeler - okno edy-cji oswietlenia.

nego obrazu trzeba zdefiniowac conajmniej jedno zr-do swiata. Wszystkie operacje zwiazane z oswietle-niem wykonuje sie w oknie edycji oswietlenia. W mo-dule Modeler aplikacji Gwell parametry zrde swiatanie sa zachowywane razem z brya. Okno to suzy tylkojako pomoc w odpowiednim ustawieniu wasciwosci ma-teriaw (reakcji na rzne warunki oswietlenia).

Mozemy waczyc lub wyaczyc globalne oswietlenieza pomoca checkBox-a znajdujacego sie po lewej stro-nie etykiety okna. Dodawanie i usuwanie zrde swiatarealizuje sie za pomoca przyciskw add Light i delete Li-ght. Wiekszosc implementacji OpenGL udostepnia mak-symalnie 8 zrde oswietlenia.

W wewnetrznym oknie pokazywane sa wszystkie swia-ta (mozna im nadawac wasne nazwy) z mozliwoscia ichwaczania i wyaczania oraz zmiany typu emisji: Bulb(zarwka) - zrdo emitujace swiato we wszystkichkierunkach, Spotlight - reflektor emitujacy swiato w po-staci tzw. stozka swietlnego. Ten rodzaj zrda posiadadodatkowe parametry.

Przyciski move Light i change Direction pozwalajaza pomoca myszy zmieniac odpowiednio: pozycje swia-ta (o ile jest pozycyjne) i kierunek emisji (o ile jest typureflektor). Dla widoku edycyjnego, w ktrym modyfi-kujemy ktrys z tych parametrw automatycznie waczysie rysowanie zrde swiata.

Parametr Light is okresla czy swiato jest pozycyjne(Positional), czyli jest umiejscowione w danym punk-cie przestrzeni (np. lampa), czy jest kierunkowe (Di-rectional) - znajduje sie w nieskonczonosci (np. sonce).Nastepnie mozemy recznie ustawic wartosci pozycji Po-sition i kierunku Direction, zatwierdzajac zmiany kla-wiszem ENTER. Dla swiata kierunkowego nie moznaustawic pozycji. Natomiast kierunku emisji nie moze po-siadac zrdo typu zarwka.

Parametr Attenuation opisuje wspczynnik rozpro-szenia swiata (F). Jego poszczeglne skadniki: linear,constant i quadratic wpywaja na swiato wedug poniz-szego wzoru:

F =1

constant + linear d + quadraticd2 ,

gdzie d jest odlegoscia miedzy zrdem swiata a oswie-tlanym wierzchokiem obiektu.

Kolejne dwa parametry: Exponent i CutOff moga byc ustawiane tylko dla swiata pozycyj-nego skierowanego. Exponent okresla stopnien koncentracji snopa swiata wok gwnej osiemisji, im wieksza wartosc tego parametru tym wieksze skupienie. Domyslnie wynosi on 0,

7.1. INTERFEJS MODELER-A 51

tzn. ze swiato jest rwnomiernie emitowane w caym stozku. CutOff jest miara w stopniachokreslajaca kat rozwarcia stozka, mierzony miedzy tworzaca stozka a jego wysokoscia.

Mozemy tez okreslic czy dane zrdo swiata ma sie poruszac razem z kamera (w przeciwymprzypadku bedzie stacjonarne wzgledem sceny). Decyduje o tym pole Light moves with camera.W rzeczywistosci odpowiada to lampie zainstalowanej nad obiektywem kamery, skierowanejrwnolegle z ogniskowa obiektywu.

Na samym dole mamy trzy zakadki z oknami do edycji odpowiedniego koloru swiata:ambient, diffuse i specular. Wyjasnienie tych cech ooswietlenia i ich interakcji z obiektamizostao przedstawione w rozdziale 6.1.

52 ROZDZIA 7. INTERFEJS APLIKACJI GWELL

7.1.6 Okno edycji ustawien (Options)Ustawienia sa wsplne dla caej aplikacji Gwell. Je-

Rysunek 7.10: Modeler - okno edy-cji ustawien.

dyna rznice stanowi ustawienie jezyka komunikacji zuzytkownikiem, poniewaz musi byc osobny plik z tuma-czeniem dla Modeler-a i osobny dla Layout-a.

W sekcji Directories ustawiamy wszystkie sciezki do-stepu, z ktrych program bedzie korzysta podczas ado-wania danych przy starcie oraz w czasie pracy.

Katalog Libs zawiera biblioteki bry elementarnych(.lib). Z katalogu Objects wczytywane beda bryy zo-zone (.mph) do okna dodawania obiektw. Dodatkowo,jezeli obiekt zozony bedacy czescia innego nie zosta-nie odnaleziony w podanej sciezce, przeszukana zostaniekartoteka Objects. Katalog ten bedzie rwniez propono-wany przy zapisywaniu nowych obiektw.

Sciezka Scenes nie jest uzywana przez Modeler-a,wykorzystuje ja Layout do przechowywania gotowychscen.

Z kartoteki Materials wczytywane beda wszystkiegotowe materiay do wykorzystania w edytorze materiaui tekstury (patrz rozdziay: 7.1.9 i 7.1.10).

Katalog Images bedzie przeszukiwany w przypadkunieznalezienia obrazu w sciezce zapisanej w parametrachteksturowanego elementu. Kartoteka ta jest rwniez uzy-wana jako poczatkowa przy wybieraniu pliku graficznegodo teksturowania.

Sciezka Languages jest przegladana przy starcie pro-gramu w poszukiwaniu plikw Qt Translator-a. Sa toskompilowane pliki z tumaczeniami z rozszerzeniem .qm.Modeler wyszukuje pliki zawierajace w nazwie sowomodel, Layout - layout. Znalezione tumaczenia saumieszczane w rozwijalnej liscie wyboru Language wsekcji Other. Domyslnym jezykiem jest angielski.

Sekcja Colors zawiera ustawienia kolorw, w jakichbeda wyswietlane elementy w oknach edycyjnych: to,obiekt rysowany za pomoca linii, obiekt renderowany bezmateriau i tekstury, siatka paska i trjwymiarowa, ksztatyswiate, ramka aktywnego widoku oraz tekst informujacyo dziaaniu modyfikatorw pojawiajacy sie lewym dol-nym rogu widoku.

Ustawien jakosci renderingu dokonujemy w sekcji Render Options. GL_SHADE_MODEL okre-sla czy powierzchnie maja byc cieniowane czy nie. GL_CORRECION_HINT pozwala ustawic trybwygadzania perspektywy (najszybszy, najadniejszy, bez znaczenia).

W sekcji Other mozemy okreslic dokadnosc wyswietlani