Primena Dizajn Sablona Na Razvoj Frejmvorka Za Animiranje Pokreta

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 31

6 / V I 1 1 0 0 0 UNIVERZITET UNION RAUNARSKI FAKULTET BEOGRAD RAUNARSKE NAUKE

: :

DIPLOMSKI RAD
Kandidat: Branislav Milojkovi Broj indeksa: 38/07

Tema rada: Primena dizajn ablona na razvoj frejmvorka za animiranje pokreta

Mentor rada: prof. Branko Perii

Beograd, Septembar 2011

Sadraj
Sadraj........................................................................................................................ 2 1. Uvod....................................................................................................................... 4 1.1. Modelom upravljan razvoj................................................................................4 1.2. Dizajn abloni...................................................................................................5 1.3. Kompjuterska animacija...................................................................................5 1.3.1. Animacija 3D Modela..................................................................................5 1.3.2. Fiziki modeli..............................................................................................6 1.3.3. Proceduralni modeli....................................................................................6 1.3.4. Kljuni frejmovi...........................................................................................6 1.3.5. Direktna kinematika...................................................................................7 1.3.6. Inverzna kinematika...................................................................................8 2. Opti model frejmvorka..........................................................................................9 2.1. Zahtevi za frejmvork......................................................................................10 2.2. Razvoj modela................................................................................................12 2.2.1. Osnovni model.........................................................................................13 2.2.2. Matematiki model...................................................................................15 2.2.3. Model perzistencije...................................................................................16 2.2.4. Model transformacija................................................................................17 3. Implementacija u programskom jeziku Java.........................................................19 3.1 Opis okruenja.................................................................................................19 3.2 Struktura projekta...........................................................................................20 3.3. Prikaz implementacije ablona.......................................................................22 3.3.1. Observer...................................................................................................22

3.3.2. Template Method.....................................................................................23 3.4. Primer rada aplikacije.....................................................................................26 4. Zakljuak.............................................................................................................. 30 5. Reference.............................................................................................................31

1. Uvod
U ovom radu je prikazan razvoj frejmvorka za animiranje pokreta. Primenjeni su dobro poznati dizajn abloni iz oblasti softverskog inenjerstva, i prikazano je na koji nain dizajn abloni poboljavaju razvoj frejmvorka i daju mu fleksibilnost. Proces razvoja je detaljno opisan, od poetne ideje do konane implementacije u kodu. Prikazan je opti model reenja, kao i implementacija koja moe da se koristi u praksi. Problem koji je programski reavan je iz oblasti kompjuterske animacije. Cilj je pokazati kako se kroz objektne modele moe obezbediti podrka za potpuno animiranje pokreta, uz dodavanje elemenata slobode i proirivosti, tako da se sam proces animiranja moe naknadno dopuniti i poboljati. U prvoj sekciji rada dat je kratak opis onoga to je uraeno, kao i pregled osnovnih koncepata koji su neophodni za razumevanje ostatka rada. Dat je opis modelom upravljanog razvoja, dizajn ablona i kompjuterske animacije. Druga sekcija se bavi samim razvijenim modelom koji reava postavljen problem. Model je dat u jeziku UML. Uz modele je opisano i na koji nain su primenjeni dizajn abloni, na nivou modela. Trea sekcija se bavi konkretnom implementacijom modela u programskom jeziku Java. Dat je pregled koritenih programskih alata i biblioteka, i detaljno je opisana primena dizajn ablona. U etvrtoj sekciji je izloen zakljuak, i opisane su prednosti i mane razvijenog reenja. Peta sekcija sadri reference na literaturu i materijale koritene u toku izrade rada.

1.1. Modelom upravljan razvoj


Modelom upravljan razvoj je metodologija kod koje su svi kljuni elementi sistema opisani formalnim modelima. Bitan aspekt ove tehnike je da se zauzme holistiki pristup razvoju sistema, tj. da se formalni modeli primene kako za biznis analizu, tako i za IT analizu sistema, uz oslonac na injenicu da e ovo uiniti mapiranje iz jednog domena u drugi i lake i preciznije. Jo jedna znaajna odlika modelom upravljanog razvoja je podrka za modele na razliitim nivoima apstrakcije, od biznis modela na visokom nivou koji se bave ciljevima, ulogama i odgovornostima, sve do detaljnih sluajeva korienja i scenarija niskog nivoa za izvravanje biznis logike. Trea osobina je mogunost praenja i usavravanja odnosa izmeu modela kako se detalji dodaju sistemskoj specifikaciji pri prelaenju iz domena problema u domen reenja. Na kraju, modelom upravljan razvoj pravi jasnu razliku izmeu modela koji nisu zavisni od platforme (Platform Independent Models, PIM) i modela koji su zavisni od platforme (Platform Specific Models, PSM). PSM se mogu generisati automatski ili poluautomatski iz PIM uz podrku instrukcija koje su karakteristine za datu platformu. PIM se zapisuje jezikom UML [2] opisivanjem koncepata iz domena problema.

1.2. Dizajn abloni


U softverskom inenjerstvu, dizajn abloni su opta reenja za probleme koji se esto javljaju u dizajnu softverskih reenja. Dizajn abloni nisu konano reenje, i nisu definisani do najsitnijih detalja. Oni su samo opti principi i vodilje koji daju opisuju kako optiji problem moe da se rei u razliitim konkretnim situacijama. U projektu e se dizajn abloni biti korieni i opisivani na konkretnim problemima koji e se javiti pri realizaciji opteg modela frejmvorka.

1.3. Kompjuterska animacija


Domen kompjuterske animacije (kojim e se frejmvork mahom iskljuivo baviti) je ve solidno istraena tema. Ovde e biti prikazani oni aspekti tog domena koji su bitni za razumevanje problematike kojom se bavimo.

1.3.1. Animacija 3D Modela


U ranim poecima kinematografije, 3D animacija je postizana pomou fizikih trodimenzionalnih modela koji su bili postavljani u razliite poze kako bi se pojedinano snimio svaki frejm animacije. Klasian primer primene ove tehnike je film King Kong (1933) u kojem je model king konga bio visok samo oko pola metra.

Sl. 1. King Kong

Animacija ovog tipa se i dalje primenjuje u kinematografiji. Raunarska podrka animaciji je poela da se pojavljuje tek krajem 70ih godina prolog veka. Prvi u potpunosti raunarski animiran film je bio Toy Story (1995). Iako je u potpunosti renderovan pomou raunara, Toy Story, kao i moderni filmovi pravljeni na slian nain, mogu da budu veoma skupi kako finansijski, tako i po

pitanju uloenog vremena za izradu. U potpunosti automatska animacija jo uvek nije blizu, ali alati za razvoj animacije na raunaru su doiveli veliki razvoj. Oni oslobaaju animatora velikog dela posla i brzo obezbeuju izvanredne specijalne efekte. Osnovni pristupi su: (i) Fiziki Modeli; (ii) Proceduralni Modeli; (iii) Primena Kljunih Frejmova.

1.3.2. Fiziki modeli


Ovaj pristup je pogodan za relativno nepokretne objekte ili efekte kod kojih postoji jednostavan fiziki model. Dva primera bi bila: loptice skoice i kola na grubom terenu. U oba sluaja, pokret se jednostavno moe sraunati pomou Njutnove mehanike. U komplikovanijim sluajevima, mogu se praviti kompozitni modeli, kao to su vektori za kontrolu mase za animiranje zastava ili sistemi estica koji mogu da simuliraju vatru, dim ili vodu.

1.3.3. Proceduralni modeli


Ponaanje objekta se ne modeluje, ve se opisuje kao procedura. Opis obino uzima formu skripta. Ovaj pristup je pogodan za objekte kod kojih se celokupan pokret relativno jednostavno opisuje. Npr. irenje pukotine kroz asfalt ili staklo je veoma teko fiziki izmodelovati zbog velikog nivoa detalja u koji treba zai, kao i velikog broja varijabli koje treba uzeti u obzir. S druge strane, sama pukotina esto prati jednostavno opisiv ablon, tako da proceduralni model efikasnije uspeva da se izbori sa ovom animacijom.

1.3.4. Kljuni frejmovi


Primena kljunih frejmova je tradicionalna tehnika kod koje je iskusniji animator crtao samo bitne frejmove sa razmakom od oko sekunde, tako da se jasno mogao videti pokret, izraz lica itd., dok su sve frejmove izmeu crtali mlai animatori. U prethodnim decenijama su razvijeni raunarski sistemi koji mogu da raunaju ove meu-pozicije, i da naprave gladak prelaz iz jednog kljunog frejma u drugi. Jedan nain da se ovo izvede je da se definie kriva koja predstavlja putanju kretanja objekta od jednog kljunog frejma do drugog. Ipak, ako elimo da ostvarimo iole uverljiv pokret, ova tehnika moe biti naporna i neprecizna. Da bi se postigla uverljivost, fiziki zakoni se moraju uzeti u obzir. Jedan metod ograniavanja ljudskih ili ivotinjskih pokreta je primena modela sa zglobovima i kostima. Skelet se sastoji od skupa dui. Svaka kost u lancu je kruta, i pokret je ogranien stepenom slobode u zglobu te kosti. Skelet se onda moe proizvoljno obaviti telom da bi se dobila figura u pokretu. Jedan od najranijih primera primene skeleta je Luxo Jr. (1987) kojeg je stvorio Pixar [4]. Ovaj film je velian kao prvi 3D raunarski animiran film koji moe da parira kvalitetu rukom crtanih animiranih filmova. Ipak, jo uvek je trebalo mnogo ljudske intervencije da bi se postigao prihvatljiv pokret. Razlog za to je to ljudski i ivotinjski pokreti prate veoma kompleksna pravila koja nisu laka za opisivanje.

Sl. 2. Konj u galopu - Eadweard Muybridge (1878)

Kompleksnost pokreta je prvu opazio Eadweard Muybridge pomou vie sinhrnoizovanih kamera koje su hvatale frejmova u veoma malim vremenskih razmacima. Cilj mu je bio da stvori animirane fotografije, tako da je njegov rad pretea modernog filma. Najpoznatiji set njegovih fotografija predstavlja konja u galopu (pokazujui po prvi put, takoe, da su u jednom trenutku sve etiri noge podignute sa zemlje) na kojima se jasno vidi koliko je pokret zapravo kompleksan. Kompleksnost prirodnog pokreta je ono to ga ini tekim za izvoenje raunarskom animacijom. Zato je efikasnije koristiti motion capture tehnike. Ideja je snimiti glumca kako izvodi pokrete, tako da se kljune take na njegovom telu mogu pratiti i kasnije uneti u raunar.

1.3.5. Direktna kinematika


Iako je motion capture efektivan metod za skupljanje detaljnih informacija o pokretu, jo uvek zahteva puno uloenog vremena i moe da bude skupo. Stoga, jo uvek postoji solidan interes u istraivanju pokreta skeleta. Isti posao se moe primeniti i na pokrete fizikih robota, i naziva se kinematika. Direktna kinematika se koristi kod kontrole robota. Zadaju se Ojlerovi uglovi za svaki zglob ili polugu, a potom se na osnovu njih rauna krajnji poloaj. Ovo je

jednostavan problem koji se moe reiti transformacijama matrica, i ve je esto vien u upotrebi. [5][6]

1.3.6. Inverzna kinematika


Jedan od interesantnijih problema u izuavanju kinematike je inverzna kinematika. Kod inverzne kinematike je cilj da se na osnovu jedne instrukcije za jednu kost (npr. pokret stopala) rekonstruie pokret svih ostalih kostiju, pod izvesnim ogranienjima, postavljenim tako da se minimizuje pokret celine. Tipino, za kosti se pretpostavlja da su krute, a da su zglobovi definisani kroz stepene slobode. Dakle, inverzna kinematika je obrnut proces od direktne kinematike. Navodi se putanja za krajnju taku, a rauna se relativan poloaj svih ostalih kostiju. Postoje lanci za koje ovako postavljen problem moe da ima beskonano mnogo reenja. Zato je bitno dobro postaviti ogranienja i za cilj imati minimizaciju pokreta zglobova.

2. Opti model frejmvorka


Frejmvork na kojem e se raditi treba da slui kao podrka animiranju pokreta. Dakle, u pitanju je programski paket koji treba da omogui sve to je neophodno da se izvede razvoj korisnike aplikacije koja bi u okviru svog rada imala animiranje pokreta nekog proizvoljnog tela. Pod pojmom animiranje pokreta podrazumeva se vektorska transformacija u vremenu i prostoru nad unapred zadatom konstrukcijom, uz ogranienja koja se mogu menjati u letu, koja treba da obezbede da konani dobijeni pokret moe da se konfigurie na razliite naine. Frejmvork emo razvijati kao UML model, a konana implementacija e biti izvrena u programskom jeziku Java, mada e jedan od zahteva za UML model biti da implementacija moe da se izvri u bilo kom objektnom programskom jeziku. Tipian scenario korienja frejmvorka bi bio: 1) Aplikacija inicijalizuje model kostiju 2) Aplikacija inicijalizuje model tela 3) Aplikacija podeava atribute pojedinanih kostiju prema korisnikovim uputstvima 4) Aplikacija definie jednu ili vie animacija 5) Aplikacija reprodukuje animaciju na ekranu koristei parametre koje dobija od frejmvorka za svaki pojedinani frejm 6) Aplikacija perzistira dobijen modifikovan skelet i definisane animacije na disku

2.1. Zahtevi za frejmvork


Pre nego to zaponemo razvoj frejmvorka, moramo precizno da navedemo zahteve koje frejmvork mora da ispuni. Kada su svi zahtevi ispunjeni, moemo da smatramo da je projekat kompletan. R. br. 1. 2. Naziv zahteva Definisanje skeleta Trivijalan skelet Opis zahteva Frejmvork mora da obezbedi definisanje prozivoljnog skeleta, sa proizvoljnim brojem kostiju, u 3 dimenzije. Frejmvork mora da ima u okviru sebe definisan trivijalan skelet ljudskog tela koji e se koristiti kao podrazumevani, ako korisnik frejmvorka ne navede svoj skelet. Frejmvork mora da obezbedi definisanje proizvoljnog 3D modela kao skupa poligona, uz povezivanje sa proizvoljnim skeletom. Frejmvork mora da ima u okviru sebe definisan trivijalan 3D model koji se moe vezati za trivijalan skelet. Frejmvork mora da za proizvoljan skup kostiju omogui definisanje proizvoljnog pokreta u trodimenzionalnom prostoru. Pokret mora da bude kompozitna struktura, tj. pokret mora da moe da bude skup manjih pokreta. Brzina pokreta, tj. vremenska komponenta mora da bude deo definicije trivijalnog (ne-kompozitnog) pokreta. Svi pokreti moraju da podravaju rad sa ogranienjima koja e sluiti da se pokret priblii prirodnom ljudskom pokretu. Primeri ogranienja bi bili istegljivost ili snaga miia. Frejmvork ne sme da bude rigidan sa stanovita odabira kinematike. Frejmvork mora da obezbedi korisniku da sam odlui na koji nain e slagati transformacije, tj. kojim redosledom e transformacije biti primenjivane na elemente modela. Korisnik frejmvorka mora da ima mogunost da sam definie svoje transformacije nad skeletom u prostoru i vremenu.

3.

Definisanje 3D modela Trivijalan model

4.

5.

Definisanje pokreta

6.

Definisanje ogranienja

7.

Definisanje kinematike

8.

Definisanje transformacija

9.

Perzistencija

Frejmvork mora da obezbedi mehanizam za perzistiranje skeleta, 3D modela i pokreta na proizvoljan medijum (dakle, uz mogunost dodavanja novih medijuma od strane korisnika).

2.2. Razvoj modela


Za razvoj modela frejmvorka e se koristiti jezik UML [2]. U ovom odeljku e biti opisana etiri programska paketa koja e initi kompletan model frejmvorka. To su: Osnovni model: polazna taka frejmvorka. U osnovnom modelu su definisani svi interfejsi koji su neophodni za pristup frejmvorku, kao i osnovni entiteti. Matematiki model: paket sadri sve matematike transformacije koje su neophodne za rad sa frejmvorkom. U njemu se definiu sve prostorne primitive i operacije nad njima. Model perzistencije: definie mehanizme za zapisivanje objekata na perzistentnim medijumima. Podrava rad sa proizvoljnim objektima u memoriji i omoguava proirivanje na rad sa proizvoljnim medijumom. Model transformacija: u modelu transformacija se nalazi sve to je neophodno za animiranje objekata u vremenu i trodimenzionalnom prostoru. U odeljku 1.2. je ukratko opisan koncept dizajn abloni. U ovom odeljku emo detaljno prolaziti kroz primenu dizajn ablona na naem modelu. Neki abloni e biti primenjeni u svom cookbook obliku, a neki modifikovani po potrebi. Detaljno e biti opisana motivacija za primenu ablona, kao i nain na koji se pojedinani abloni uklapaju u reavanje problema modela. Na kraju, bie dati dijagrami klasa koji ilustruju konkretnu implementaciju ablona.

2.2.1. Osnovni model


Osnovni model se bavi optom problematikom frejmvorka. U njemu su definisani elementarni entiteti za rad sa frejmvorkom, kao i pristup fasadama drugih paketa, interfejsi itd. Centralni entitet ovog paketa je telo (Body), koji opisuje telo koje treba animirati. Telo je opisano kao objekat u tri dimenzije (3DObject). Ono se sastoji od kostiju (Bone) i zglobova (Joint). Kosti i zglobovi spadaju u klasu opisivih (Describable) entiteta. Ovime obezbeujemo da kosti i zglobovi mogu da nose proizvoljne atribute koji e kasnije moi da se koriste pri animiranju. Kosti i zglobovi su spregnuti u strukturu slinu stablu: zglob sadri vie kostiju, dok jedna kost zna koji zglob joj je roditelj, i na drugom (donjem) svom kraju moe da ima drugi zglob. Transformacije nad telom se vre pomou fasade iz paketa transformacija (BodyManipulationFacade), a za iteraciju nad kostima tela se koristi iterator (BodyIterator). Ovde dolazimo do prvog primenjenog dizajn ablona.

Sl. 3. Osnovni model

Iterator: dizajn ablon koji opisuje mehanizam za prolaenje kroz proizvoljnu strukturu. Definie se interfejs koji ima metode za kretanje kroz strukturu i pravi se asocijacija ka tom interfejsu od strukture kroz koju treba iterirati. Kada treba izvriti iteraciju, konstruie se konkretan iterator koji po unapred zadatom mehanizmu prolazi kroz strukturu. U naem sluaju, trebae nam dva iteratora jedan za prolazak kroz zglobove i drugi za prolazak kroz kosti. Da je frejmvork rigidniji, mogli bismo da se ograniimo samo na jedan od ta dva i itav ablon nam moda ne bi ni trebao. Ovako omoguavamo programeru da prolazi kroz strukturu kako eli, ili ak da napravi svoj mehanizam za iteriranje kroz telo. Dodatno, da bismo obezbedili mogunost prolaska kroz telo razliitim putanjama (ovo je bitno da bi bila mogua i direktna i inverzna kinematika), primeniemo dodatni Strategy ablon. Strategy: Omoguava delegiranje izvravanja nekog posla objektu koji poznaje posebnu strategiju obavljanja posla. Definie se interfejs koji zahteva implementaciju metode za obavljanje posla koji se delegira. U objektu koji je inicijelno trebalo da obavi funkciju se ostavlja asocijacija ka ovom interfejsu, i po potrebi se poziva konkretna implementacija interfejsa. U naem sluaju, elimo da se itererianje moe vriti i uz i niz stablo tela, kao i da kada se ide niz stablo, da se moe prolaziti kroz kosti DFS i BFS putanjom. Ovo je ilustrovano kroz IterationStrategy interfejs i implementacije BFSIteration, DFSIteration i AncestorIteration.

2.2.2. Matematiki model


U matematikom modelu je opisano sve neophodno za matematiku manipulaciju nad objektima, uglavnom vezano za opis entiteta u prostoru i transformacije. Kljuni entitet ovog paketa je objekat u trodimenzionalnom prostoru (3DObject). Za njega moraju biti zagarantovane operacije translacije (Translatable), rotacije (Rotatable) i prikazivanja (Displayable), kako bi mogle da se vre sve osnovne operacije u prostoru, kao i mogunost upisivanja na perzistentan medijum (Serializable). Primeri trodimenzionalnih objekata bi bili: taka (Point), du (Line), poligon (Poly) i skup poligona (Mesh).

Sl. 4. Matematiki model Builder: Builder ablon se primenjuje kada se jedan objekat moe konstruisati na razliite naine, zavisno od situacije. U naem sluaju, skup poligona moe da predstavlja razliite smislene objekte, sve zavisno od toga za ta e frejmvork biti primenjen. Mesh se moe oblikovati kao ravan, lopta, ivotinja, itd. Flyweight: Poto e skup poligona potencijalno nositi veoma velik broj poligona u sebi, javlja se potreba za primenom Flyweight ablona, koji e minimizirati memorijsku zahtevnost objekata koji su komplikovano konstruisani. Flyweight reorganizuje strukturu objekta tako da umesto da se instancira veliki broj gradivnih delova (u naem sluaju poligona), instancira se samo jedan, a pored njega se pamte pravila za rekonfiguraciju umesto da se prave kopije. Ova pravila se

primenjuju po potrebi, npr. prilikom primene transformacija ili pri iscrtavanju objekta.

2.2.3. Model perzistencije


Paket perzistencije ima za svrhu da obezbedi uvanje proizvoljnih objekata koji e biti korieni u radu sa modelom na nekom perzistentni medijumu. U tu svrhu se primenjuje Bridge ablon.

Sl. 5. Model perzistencije Bridge: Cilj je da se obezbedi da objekti koji jo uvek nisu definisani mogu da se sauvaju na proizvoljnom medijumu koji prihvata niz bajtova. Definitemo interfejs za opis objekta koji moe da se upie (Serializable) i preputamo nekom proirivom pisau (ObjectWriter) da izvri sam upis na neki medijum. Za primer su navdena dva pisaa u datoteku na hard disku (FileWriter) i u bazu podataka (DBWriter).

2.2.4. Model transformacija


Model transformacija u sebi nosi svu logiku koja je neophodna za vrenje animiranja nad inae statinim objektima u trodimenzionalnom prostoru. Mehanizam transformacija mora da poseduje svojstvo kompozicije, tj. da se transformacija moe sastojati od podtransformacija (trivijalan primer: nekoliko manjih pokreta ruke mogu da ine pokret rukovanja itd.). Takoe je neophodno da korisnik frejmvorka moe da definie svoje transformacije, kao i da modifikuje postojee uvoenjem novih parametara za kosti i zglobove, i tretiranjem tih parametara na razliite naine (animacija e drugaije tei nad zglobovima koji su flexibilniji itd.).

Sl. 6. Model transformacija Composite: Strukturni ablon koji opisuje strukturu koja sadri samu sebe. Dakle composite nam omoguava da objekat kao celina bude sastavljen od manjih instanci istog tog objekta. Ovo, naravno, nije nuno sluaj, tako da postoje trivijalne (atomine) instance objekata od kojih se grade vee kompleksnije instance. U naem sluaju, transformacije e moi da se grade na ovaj nain. Poto transformacija takoe implementira Serializable interfejs, ovo otvara mogunosti za pravljenje biblioteke pokreta.

Facade: Za pristup raznovrsnim mogunostima transformacija, definisaemo fasadu. Fasada slui da pojednostavi pristup inae kompleksnom delu koda. Ovo takoe ograniava fleksibilnost, tako da e frejmvork pored toga to prua fasadu takoe ostaviti dovoljno javnih elemenata ovog paketa da se fasada u potpunosti moe zaobii, i po potrebi direktno raditi sa gradivnim elementima transformacije. Template Method: Transformacije e biti brojne, i poeljno je da budu proirive. Zato definiemo apstraktnu transformaciju i ostavljamo mogunost dodavanja novih kroz reimplementiranje odgovarajue metode. Observer: Observer ablon omoguava da proizvoljan posmatra (metod prikaza) moe da dobije sve informacije o transformaciji, u toku rekonstrukcije kompletnog pokreta. Observer takoe obezbeuje da, po potrebi, bude mogue da vie razliitih prikaza istovremeno mogu da prate izmene modela.

3. Implementacija u programskom jeziku Java


Implementacija modela je vrena u programskom jeziku Java. Java je pogodan jezik za implementaciju opisanog modela jer je u pitanju ist objektno orijentisan jezik. Dodatno, Java ima svoju biblioteku za prikaz trodimenzionalne grafike, to olakava razvoj (nema potrebe za uvoenjem nezavisno razvijenih biblioteka, ve jezik podrava svu neophodnu funkcionalnost). Treba napomenuti, da je model mogue implementirati u bilo kom objektno orijentisanom jeziku.

3.1 Opis okruenja


Tokom implementacije, korieni su sledei alati i softverski paketi: Eclipse IDE for Java Developers, Helios edition (http://eclipse.org/) Java SE 1.6.0.25 (http://www.oracle.com/technetwork/java/javase/overview/index.html) Java 3D (http://www.oracle.com/technetwork/java/javase/java3d-features135510.html)

Java 3D je biblioteka koja omoguava rad sa objektima u trodimenzionalnom prostoru i njihovo prikazivanje na ekranu. Java 3D je kao paket razvijena uz Javu, ali ne isporuuje se sa standardnim Java SE instalacijama. Neophodno je uvesti je kao zasebnu biblioteku u projekat.

3.2 Struktura projekta


Uveden je novi paket, view, koji sadri sve vezano za grafiki korisniki interfejs.

Sl. 7. Struktura projekta Svi prethodno opisani modeli su rasporeeni u zasebne pakete. Kljune klase su u svim paketima oznaene kao public, dok su ostale na nivou vidljivosti paketa. Sam view paket je podeljen u etiri celine: j3d_adapters: Sadri klase iz Java 3D biblioteke koje treba adaptirati. Adaptacija je vrena radi obezbeivanja funkcionalnosti serijalizacije. listeners: logiki obuhvat raznih hendlera za dogaaje na grafikom korisnikom interfejsu. Unutar ovog paketa, klase su rasporeene po podpaketima kojima su imena davana po formama koje opsluuju. painters: iscrtavanje objekata se delegira na odgovarajue paintere. Ovako moemo da budemo sigurni da logika iscrtavanja objekata ostaje odvojena od modela.

ui: sadri grafike komponente koje se koriste u aplikaciji. Prozori, dijalozi, paneli i sl.

3.3. Prikaz implementacije ablona


U ovom odeljku je prikazano nekoliko primera konkretne implementacije ablona diskutovanih u sekciji 2.2.

3.3.1. Observer
Observer ablon je korien u okviru modela transformacija, da obezbedi da proizvoljni agent koji prikazuje transformaciju moe da u toku raunanja transformacije izvri proizvoljno detaljan prikaz. Evo implementacije: 1) Definie se sluaoc za dogaaj

package transfo
2) U klasi AbstractTransformation odrava se lista sluaoca:

public abstract public interfac SerializableAbs void step ... } private L

public Ab

U pitanju je klasina implementacija observer ablona, sa jednim izuzetkom. Treba uzeti u obzir da e sluaoci na ove dogaaje biti objekti koji eventualno nisu pod kontrolom razvojnog ininjera. Zbog toga treba oekivati da sluaoci nee moi da se serijalizuju. Poto je bitno da transformacija kao takva moe da se serijalizuje, primenjuje se dodatna mera predostronosti, i, uz proveru, ponovo inicijalizuje lista sluaoca pri dodavanju novog sluaoca. U veini implementacija observer ablona, ovaj korak ne bi bio neophodan.

3.3.2. Template Method


Template method je takoe korien u okviru modela transformacija. Ovaj ablon omoguava da apstraktna roditelj klasa zapone i zavri opti i nepromenljivi deo nekog posla, dok se sam specifian algoritam koji ini sr posla ostavlja klasi koja nasleuje. U implementaciji, to se odnosi na sam postupak animacije. 1) Apstraktna transformacija puta animaciju za svu decu animacije, tj. animacije od kojih je ona sama sainjena, ako postoje. 2) Apstraktna transformacija treba da na poetku reprodukcije animacije upamti trenutno stanje scene. 3) Potom naslednik klasa (konkretna animacija, npr. translacija, rotacija itd) treba da odradi animiranje. 4) Roditelj klasa javlja sluaocima da se desio jedan korak animacije. 5) Koraci 2 i 3 se ponavljaju do kraja animacije. 6) Roditelj vraa poetno stanje. Template method ostavlja mogunost da se naslednik klasa ukljui u bilo kom delu procesa koji obavlja naslednik klasa, ili da ih preskoi. 1) U abstraktnoj klasi AbstractTransformation definiu se opisane metode: applyTransformation zapoinje animaciju, dok finalizeTransformation zavrava.

@Override public vo Ite getSubTransform

whi

2) Definie se apstraktna metoda za korak animacije:

3) U klasi koja nasleuje, TranslationTransformation, implementira se metoda za korak:

protected @Override protected get }

3.4. Primer rada aplikacije

Sl. 8. Aplikacija nakon inicijelnog pokretanja Po startovanju, aplikacija inicijalizuje Java 3D scenu (crni prostor) i model tela. Model tela je u poetku prazan, i prvo to treba uraditi jeste dodati neke kosti.

Sl. 9. Dijalog za dodavanje kostiju Na ovom dijalogu moemo povezati kost sa ve postojeom kosti kao roditeljem. Od roditelja zavisi poetna taka nove kosti, i zbog toga ta polja ostaju zasivljena. Korisnik sam unosi krajnje take. Kao to je diskutovano u prvom i drugom odeljku, kost e biti ono to e se animirati. Sada treba dodati na scenu neke slobodne dui, koje e biti vezane za kost, i koje e je pratiti u animaciji.

Sl. 10. Dijalog za dodavanje dui

Korisnik moe dodati proizvoljno mnogo dui, kao i kostiju na scenu. Kada je scena postavljena, moe da se zapone rad na opisu same animacije.

Sl. 11. Povezivanje kostiju sa duima Nakon to su kosti i dui povezane, treba dati definiciju animacije u prostoru i vremenu.

Sl. 12. Definisanje animacije Pri definisanju animacije, neophodno je navesti za koju kost se vezuje animacija, kao i da li postoji neka roditelj transformacija. (Napomena: ako se jedna transformacija sastoji iz vie manjih transformacija, to znai da e se pri putanju

roditeljske animacije prvo pustiti sve animacije naslednici). Poto je korisnik izabrao translaciju kao vrstu transformacije, dijalog mu nudi parametre koji su relevantni za translaciju.

Sl. 13. Konani izgled scene Kosti su u aplikaciji prikazane istom belom bojom, dok su dui prikazane sivom bojom. Dugme Save scene omoguava snimanje itavog podeavanja u datoteku na hard disku. Dugme Open scene uitava scenu iz proizvoljnog, prethodno snimljenog, fajla na disku. Animacija se moe pustiti pritiskom na dugme Play.

4. Zakljuak
U ovom radu opisano je kako se moe razviti frejmvork za animiranje pokreta. Pokazana je primenjena dizajn ablona, kako na nivou opteg modela, tako i u konkretnoj implementaciji u programskom jeziku. Pokazano je kako primena ovih ablona poveava fleksibilnost reenja. Pokazano je kako moe da izgleda jednostavna implementacija po modelu, i neke specifinosti same implementacije. Diskutovani su problemi animiranja. Dobijeno je fleksibilno, opte programsko reenje za problem animiranja pokreta. Prilikom implementacije, uoeni su i izvesni problemi koji se mogu reavati u daljem radu. Implementacija prikaza pomou biblioteke Java 3D funkcionie, ali nije optimalna. Opisan model pretpostavlja da e razvojni inenjer sam implementirati svu logiku animiranja, a ona se u nekim sluajevima moe optimalnije izvriti unutar grafike biblioteke kao to je Java 3D, u direktnoj sprezi sa grafikim procesorom i prikazom rezultata animiranja. Model ne prua nikakvu podrku za rad sa teksturama, ili obinim bitmapiranim slikama. U bilo kojoj realnoj primeni 3D animacije, ne bi se mogao napraviti zavren projekat bez ove funkcionalnosti.

5. Reference
[1] http://www.omg.org/mda/mda_files/SSSummit_nordmoen_OMG.pdf [2] http://www.uml.org/ [3] http://sourcemaking.com/design_patterns [4] http://www.pixar.com/shorts/ljr/theater/short_320.html [5] http://www.eng.utah.edu/~cs5310/chapter4.pdf [6] http://www.siggraph.org/education/materials/HyperGraph/animation/rick_parent/for wardAnimation.html [7] http://www.doc.ic.ac.uk/~dfg/graphics/GraphicsLecture18.pdf

You might also like