Skeletalna animacija

Skeletalna animacija je tehnika računalne animacije u kojoj je model koji se animira predstavljen u dva glavna dijela:

            1) površina koja ocrtava lik – koža (eng. skin, mesh)

            2) hijerarhijski skup povezanih kostiju – kostur (eng. skeleton, rig)

Ova tehnika najčešće se koristi za animiranje modela kralježnjaka kao što su ljudi, životinje, roboti i sl., ali se može koristiti i za kontrolu deformacije bilo kojeg drugog objekta. Ona olakšava često vrlo složene procese animiranja ljudskih i životinjskih likova pružajući korisniku pojednostavljeno korisničko sučelje i time zaobilazi složene algoritme i matematičke transformacije. Svaka kost vezana je za određeni dio kože, tj. mreže vrhova (eng. vertex) i svojom trodimenzionalnom transformacijom (položaj, mjerilo, orijentacija) utječe na položaje vrhova, a time i izgled mreže. Dodatno, svaka kost može imati pridruženu roditeljsku kost. Takav skup kostiju je hijerarhijski uređen i kao takav pojednostavljuje postupke animiranja. Mijenjanjem položaja roditeljske kosti, primjerice nadlaktice, mijenjat će se i položaj kostiju djece, u ovom slučaju kosti podlaktice i šake.

Kosti modelu pridruženog kostura su međusobno povezane zglobovima. Zglob općenito može imati do tri translacijska i tri rotacijska stupnja slobode (eng. degree of freedom, DOF): rotacija oko X, Y i Z osi, te translacija po X, Y i Z osi. U ljudskom tijelu većina zglobova ima jedan ili dva rotacijska stupnja slobode, dok translacijskih zglobova nema. Iznimka je korijenski zglob, kojim se translatira i rotira čitavi kostur.

Vrlo zahtjevan dio skeletalne animacije je sama priprema modela, a pritom se prvenstveno misli na povezivanje kože (mreže) s kosturom. Ovaj postupak poznat je pod nazivom skinning. Često korisnik sam povezuje  vrhove mreže s odgovarajućim kostima, ali danas su dostupni, u sklopu većine alata za 3D modeliranje, heuristički algoritmi koji automatski izvršavaju skinning, nakon čega korisnik ručno radi korekcije.

Prednosti skeletalne animacije je mnogo, a neke od njih su jednostavno korisničko sučelje za ostvarivanje pokreta, neovisnost kostiju, te mogućnost ostvarivanja velikih i kompliciranih pokreta bez razmišljanja o složenoj matematičkoj teoriji koja stoji iza njih. Glavna mana skeletalne animacije je nerealističan pokret mišića i kože. Ovaj problem moguće je riješiti dodavanjem posebnih kontrolora mišića na odgovarajuće kosti.


 

Kinematika

Kinematika je grana mehanike koja se bavi proučavanjem gibanja tijela ali ne uzimajući u obzir sile pod čijim se utjecajem to gibanje odvija. To područje proučava druga grana klasične mehanike – dinamika. Da bi pojednostavili, reći ćemo da se kinematika bavi formalnim opisivanjem kretanja. Kretnje se najčešće opisuju grafičkim modelima čijim stvaranjem postavljamo ograničenja i ovisnosti pokreta pojedinih dijelova tijela.

Kinematika je najveću primjenu našla u robotici, a u novije vrijeme znanja iz robotike primjenjuju se i u računalnoj animaciji. Najjednostavniji pristup u animaciji zasniva se na modelu kinematičkih lanaca. Radi se o hijerarhijskom modelu stablaste strukture sastavljenom od krutih segmenata – kostiju, te pokretnih grana – zglobova koji su ograničeni stupnjem slobode kretanja (DOF). Ovakav model se najčešće koristi u metodama skeletalne računalne animacije.

Klasična mehanika razlikuje dvije vrste kinematike: unaprijednu i inverznu. Više o njima u nastavku.

Unaprijedna kinematika

Metode koje se zasnivaju na unaprijednoj kinematici danas se rijetko koriste u animaciji, jer zahtijevaju velik broj ulaznih podataka, a često kao rezultat daju neprirodne pokrete. Da bi opisali osnovni princip rada unaprijedne kinematike koristit ćemo termin manipulator koji je preuzet iz robotike, a predstavlja model koji se sastoji od nepomičnog zgloba – baze, te skupa povezanih pomičnih zglobova. Unaprijedna kinematika za manipulator zadaje položaje i kutove svih zglobova, te na osnovu njih izračunava položaj krajnje točke manipulatora. Dakle, unaprijedna kinematika bavi se problemom pretvorbe iz prostora manipulatora u prostor kartezijevih koordinata. Ako skeletalna animacija koristi unaprijednu kinematiku, najčešće se koriste modeli sa slijednim manipulatorima kod kojih se računanje položaja krajnje točke svodi na množenje matrica svih transformacija među susjednim segmentima. Sljedeća slika prikazuje lanac kostiju noge kao primjer manipulatora. Da bi krajnja točka manipulatora (u ovom slučaju stopalo) dohvatila određenu točku u prostoru potrebno je odrediti niz transformacijskih matrica kojima se redom transformiraju segmenati u kinematičkom lancu. No ukoliko želimo transformirati roditeljske segmente u lancu pomicanjem zadnjeg segmenta lanca, koristit ćemo inverznu kinematiku.

Inverzna kinematika

Inverzna kinematika za zadanu točku prostora pronalazi položaje i kutove svih zglobova manipulatora takvih da njegova krajnja točka bude u zadanoj točki ako je ona dohvatljiva, ili što bliže zadanoj točki u slučaju da nije dohvatljiva. Ovo je puno složeniji problem nego onaj kojim se bavi unaprijedna kinematika, te kao takav često može biti riješen s beskonačno mnogo rješenja. Sljedeća slika prikazuje nekoliko problema koje rješava inverzna kinematika. U prvom slučaju cilj nije dohvatljiv, pa tako ne postoji rješenje koje dovodi krajnju točku manipulatora do ciljne točke u prostoru. Drugi slučaj predstavljen je ciljem koji se od baze manipulatora nalazi na udaljenosti koja je jednaka zbroju duljina svih njegovih segmenata. Ovaj slučaj ima jedno rješenje koje dovodi krajnju točku manipulatora do cilja. Ostala dva slučaja imaju više mogućih rješenja. Treći slučaj ima 2 rješenja, a četvrti njih nekoliko.

Prethodni primjer nas navodi na razmišljanje o upotrebljivosti inverzne kinematike. Ona se danas najčešće koristi u robotici i računalnoj animaciji, te je istisnula iz upotrebe unaprijednu kinematiku. Prilikom animiranja modela puno nam je jednostavnije postaviti krajnje točke manipulatora na temelju kojih će se izračunati odgovarajući položaji i kutovi zglobova manipulatora, nego zadavati čitav niz slijednih transformacija zglobova da bi dohvatili neku točku.