Suvremena računalna grafika u 3D aplikacijama
Sažetak
U ovome radu dan je kratki prikaz problematike kardanskog bloka u mehanici strojeva i u 3D grafičkim aplikacijama. Rješenje tog problema korisno je u poznavati u grafičkoj tehnologiji, primjerice kod simulacije proizvodnih procesa, ili ergonomskih analiza. Sami tiskarski strojevi uglavnom vrše ravninsko gibanje, pa kod njih postoji mala šansa da do takvog rotacijskog problema dođe, ali ipak postoji. Navedena su neka moguća rješenja, iako taj problem još uvijek nije u potpunosti riješen, u smislu da do kardanskog bloka uopće ne dolazi a da je rješenje lako i savršeno izvedivo.
Suvremena 3D grafika koristi se raznim metodama modeliranja realnog svijeta. Osim same izrade modela, uobičajeno je korištenje mehaničkih simulacija temeljenih na zakonima mehanike čime animirani pokret objekta dobiva realističan prikaz. S druge strane, računalo preuzima ulogu vođenja simulacije te uz zadane parametre bitno olakšava posao animatora. Suvremene računalne aplikacije uz pravilno parametriranje rezultiraju vjernom slikom stvarnoga svijeta, a potvrdu teze moguće je pronaći u zaista širokim primjenama tzv. virtualnih okružanja, kao što su film i TV, igre, dizajn i projektiranje, simulacije, vizualizacije, predstave, događaji i marketing, itd. U simulacije spadaju i ergonomske simulacije, kako u svakoj industriji, tako i u grafičkoj industriji, pogotovo u procesima dorade, skladištenja, transporta. U simuliranu scenu stvarnog procesa postavljaju se virtualni ljudi s mjerama prema statističkom modelu populacije i ustanovljava se hoće li većina populacije moći ergonomski koristiti određeni stroj ili kakva su tjelesna oštećenja moguća prilikom pojedinih pokreta. Zato je jako bitno simulirati što složenije pokrete, s najviše mogućih stupnjeva slobode gibanja i rotacija, jer su oni najkritičniji.
2. Kardanski blok u mehanici
Da bi se omogućila matematička
formulacija gibanja živih sustava, uvedene su slijedeće temeljne postavke:
A. živi sustav smatra se mehanizmom
sastavljenim od članova (kostiju) koji su povezani u kinematičke
lance, te od mišićnog sustava kao pogonskog dijela tog mehanizma;
B. kosti se zbog svoje čvrstoće
smatraju u u 1. aproksimaciji krutim tijelima;
C. zglobovi su svrstani u 3 skupine: s
jednim, 2 i 3 stupnja slobode gibanja; posebno se razmatraju zglobovi s
promjenjivim brojem stupnjeva slobode (npr. koljenski zglob, koji tijekom
ekstenzije ima samo 1, a tijekom savijanja 2 stupnja s.g.). Na osnovi tih
temeljnih postavki moguće je postaviti strukturnu shemu ljudskog kostura
kao kinematičkog lanca. Ljudski kostur može se smatrati skupom od 6
kinematičkih lanaca, od kojih je 1 zatvoren (kralježnica s grudnim košem),
a 5 su otvoreni (glava, ruke i noge).
Normalni ljudski kostur ima ~250 s.s.g., 95
zglobova s jednim, 80 s dva, i 75 s tri s.s.g. Od toga ruka s ramenom ima 28
s.s.g, a noga 25 s.s.g. Prema tome, udovi imaju 106 s.s.g, odnosno ~40% od
ukupnog broja s.s.g. Kralježnica ima 54 s.s.g ili ~20% od ukupnog broja s.s.g.
Ostalih 40% odnosi se na zglobove prsnog koša, vrata i glave.
Za neke kinematičke analize i simulacije nije potrebno razmatrati sve zglobove i sve s.s.g., ali i tada ih se mora obuhvatiti relativno puno.
Sl.
Mehanika kao znanost podložna je svojim zakonitostima. S obzirom da se upravo mehanika koristi kao temelj 3D simulacije pokreta, za očekivati je da će se poznati problemi koji postoje u mehanici kao znanosti preslikati i u domenu 3D animacije. U pojedinim će situacijama ova povezanost potvrđivati realističnost same animacije, dok će u nekim drugim slučajevima problem uzrokovati nedostatke u pokretu ili čak u potpunosti izmijeniti očekivani rezultat.
Logično je da u 3D prostoru objekti posjeduju do tri stupnja slobode. Upravo su ta tri stupnja slobode dovoljna za obavljanje vrlo složenih pokreta u prostoru koji uključuju tri osnovne promjene položaja objekta u prostoru (roll-ljuljanje-rotacija x-osi, pitch-poniranje- rotacija y-osi, jaw-zanošenje- rotacija z-osi).
Međutim, dogodi li se složeno gibanje u prostoru po sve tri osi, moguć je slučaj međusobnog poklapanja osi što u konačnici može rezultirati ozbiljnim posljedicama gubitka jednog ili čak dva stupnja slobode. U jednostavnijim će slučajevima pokreti dobivati neprirodan izgled, međutim, u složenim će primjenama ovaj problem prouzročiti ozbiljne posljedice: jedan od ilustrativnih primjera je računalno navođenje svemirskog broda Apollo kod kojeg je upravo takvim navođenjem svemirski brod doveden u položaj u kojem je ostao bez jednog stupnja slobode pa računalo nije moglo nastaviti navođenje broda u željenom pravcu. Spretnost posade u ručnom vođenju, ponajprije zahvaljujući poznavanju problema, spriječila je moguću katastrofu zbog gubitka kursa.
Sustav koji posjeduje tri stupnja slobode najlakše je opisati na primjeru tri mehanička kardanska prstena jedan unutar drugog. Unutarnji prsten ima os koja je ovješena na onaj sljedeći, ali tako da se osi svakog od prstena nalaze poravnate s jednom od koordinatnih osi. Nakon što se promotri kako se ponaša opisani mehanički sustav bit i će ga vrlo lako preslikati na gore spomenuti primjer svemirskog broda koji, doduše, nema mehanički ni na koji način spregnute koordinatne osi, međutim, njegov pogon riješen je upravo tako da se retroraketama smještenim u tri koordinatne osi dobiva upravo identičan mehanički efekt.
|
|
|
|
Sl.3.a Normalna situacija: 3 prstena su
nezavisna
|
Sl.3.b Gimbal lock: 2 od 3 prstena su u istoj ravnini, 1 stupanj slobode je izgubljen |
Položaj objekta u prostoru s tri stupnja slobode u Eulerovom se prostoru definira pomoću 3 kuta, svaki određuje položaj tijela u odnosu na jednu koordinatnu os. Na potpuno isti način računalne aplikacije određuju položaje objekata koji se animiraju. Kretanje (rotacija) animiranih objekata odvijat će se upravo po tri kuta te se ponovo može promatrati gore spomenuti sustav tri mehanička kardanska prstena.
Svaki od prstenova može se zakretati oko svoje osi. Zakretanje jednog prstena rezultira rotacijom samo oko jedne osi (jedan stupanj slobode). Zakreće li se istovremeno dva redu prstena, jasno je da će nastati složeno gibanje nastalo iz dvije nezavisne rotacije, a položaj je određen u ravnini koju određuju osi rotacije (dvodimenzionalno). Rotiranjem trećeg prstena objekt može poprimiti bilo koji položaj u trodimenzionalnom (Eulerovom) prostoru.
Cijeli sustav ponaša se 'pristojno' ukoliko su spomenuta gibanja sama sebi svrha te nemaju međusobnih korelacija u smislu da se složenim gibanjem pod određenim kutom treba zauzeti točno određeni položaj te iz njega nastaviti gibanje u nekoj drugoj složenoj rotaciji.
Primjer se u praksi može vrlo lako pronaći: može se raditi o složenoj kretnji rukom s nekim teretom koju izvodi radnik u u nekom procesu u grafičkoj industriji. Pretpostavimo da u takvom pokretu sudjeluje rame, lakat i zglob, a putanja tereta može doista imati rotaciju u svim smjerovima. I dok kod radnika ne treba očekivati poteškoće u pokretu zbog odgovarajuće uvježbanosti, animator može učiniti pogrešku kod koje će uvježbano oko uočiti neodgovarajući pokret ruke modela.
Problem je
poznat kao blokada jednog od stupnjeva slobode kardanskog sustava uslijed
međusobnog poravnanja rotacijskih osi (blokada kardana, engl. gimbal lock). Zakrene li se jedan
od prstena tako da se njegova os rotacije poravna s jednom od osi rotacije
preostalih prstenova jasno je da sustav gubi jednu od osi slobode. Nastave li
se dalje oba prstena kretati jednakom kutnom brzinom, rezultantno gibanje više
ne može biti složeno, već se i dalje odvija u istoj ravnini.
Matematičko objašnjenje problema može biti vrlo jednostavno ukoliko se
uzme primjer u kojem se jedna os poklapa s drugom pod kutom od 90ş (što je uobičajeno). U tom
slučaju se položaj u Eulerovom prostoru definira kao kvocijent kosinusa
kuta koji kod navedenih 90ş iznosi 0, te bi rezultat trebao biti
beskonačan (odnosno, dijeljenje s nulom nije definirano). Dakle, fizikalno
objašnjenje je gubitak jedne dimenzije.
Na koji se način može riješiti opisani
problem? U primjeru radnika problem je riješila sama priroda ne dozvolivši
zglobovima dovoljno slobode pokreta. U matematičkom smislu, pojedini se
pokreti ne mogu dovesti do kuta od 90ş te samim time ne postoji problem
dijeljenja s nulom (cos 90ş). Na žalost, uvijek nije moguće izbjeći
takvu situaciju. Najjednostavniji primjer je let (aviona ili svemirskog broda).
Jedino moguće rješenje u tom je
slučaju dodavanje četvrtog, vanjskog kardanskog prstena koji se
pokreće posebnim pogonom (motorom) te se njime kontrolira cijeli sustav
kardana na način da se sustav zadržava izvan područja u kojem može
doći do gubitka stupnja slobode, odnosno dimenzije uslijed poravnavanja
dviju osi kardana. Četvrti je prsten redundantni jer ne pridonosi
povećanju stupnjeva slobode. Matematički, sustav se opisuje
kvaternionom, a predstavlja vektor u četverodimenzionalnom prostoru:
q = w + xi + yj + zk,
gdje su i, j i k drugi
korjeni iz –1.
|
|
| Sl.4. Dodavanje četvrte rotacijske osi može riješiti problem kardanskog bloka , ali zahtijeva da vanjski prsten ima aktivni vanjski pogon takav da ostaje 90° izvan poravnanja s najunutarnjijom osi (vratilo zamašnjaka). Bez aktivnog pogona vanjskog prstena, mogu se poravnati sve 4 osi u ravnini kao što je prikazano na sl., ponovno dovodeći do kardanskog bloka i nesposobnosti ROLL |
3. Kardanski blok u 3D grafičkim aplikacijama
Kako riješiti problem u 3D grafičkoj
simulaciji? Ako je riječ o gotovim programskim paketima, neke aplikacije
referiraju se samo na Eulerov prostor i koriste simulaciju u sustavu kardana s
3 prstena. Na animatoru je da vodi računa o eventualnom mogućem
poravnavanju osi stupnjeva slobode, dovijajući se na razne načine,
neke čak i vrlo duhovite (duhovita koncepcija potpune promjene izvedbe
scene). Na You Tube-u mogu se naći zgodna
rješenja animatora-amatera.
Naprednije aplikacije simuliraju
četvrti kardanski prsten kvaternionom. Jedna od takvih aplikacija je
3DsMAX gdje su kvaternioni po definiciji (defaultna)
rotacijska metoda, koja također ima mane osim složenosti – rotacije
nisu tako glatke kao kod Eulerovih rotacija. Osnovna razlika je što Eulerove
rotacije u MAX-u daje pristup funkcijskim krivuljama. Korištenjem tih krivulja,
moguće je definirati gotovo savršeno glatko rotacijsko gibanje objekta.
Mnogi animatori nalaze kvaternione teškima
za razumijevanje i upotrebu, pa se drže Eulerovih rotacija i paze na
potencijalne probleme. U MAX-u, opcija Track
View ima uslužni program (utility) koji pomaže kod rada s Eulerovim
rotacijama. Eulerov filter analizira tekući raspon animacijskih
sličica i korigira bilo koji kardanski blok koji detektira. Izbor tog
uslužnog programa u Track View Utilities
dijaloškom okviru otvara jednostavan dijaloški okvir u kojemu se može postaviti
raspon sličica za analizu. Također postoji opcija Add Keys if Needed (dodaj ključne
sličice ako je potrebno). Osim toga, pojava kardanskog bloka može se
minimizirati tako da se os koja rotira najmanje postavi kao srednja os.
Teorija kvaterniona u matematici je poznata
odavno (Sir William Hamilton postavio ju je 1843.), ali tek je 1985. započelo
njihovo korištenje u računalnoj grafici, kada je Ken Shoemake otkrio
njihova izuzetno povoljna svojstva za prikaz rotacija. Jedna od najjačih
strana kvaterniona kao prikaza rotacije je mogućnost dobre interpolacije
izmeđuv dviju orijentacija. Najpoželjnija interpolacija za animaciju
obično je interpolacija po najkraćem luku konstantnom brzinom. Bez
obzira na jednostavnost koncepta, izvedba ovakve interpolacije općenito
nije jednostavna, osim kada su obje orijentacije izražene kvaternionima, ovakva
interpolacija dobiva se relativno jednostavno upotrebom sferne linearne
interpolacije (engl. spherical linear
interpolation- SLERP).
Naravno, ne moraju se koristiti gotovi
programski paketi za izradu simulacija. Sve to vješti programeri mogu sami isprogramirati,
koristeći dane formule i algoritme, i gotove modele i scene napravljene u
nekom programskom paketu.
Koliko pristup s kvaternionima predstavlja
ozbiljniji izazov za programera demonstrirat će se na primjeru svemirskog
programa Apollo spomenutog na početku.
Prije razmatranja same problematike,
nekoliko činjenica vezano za svemirske programe američke svemirske
agencije NASA (National Aeronautics and Space Administration). NASA je
vodila nekoliko svemirskih programa, opći program za dvoje pilota
vođen je pod imenom «Gemini», a program čiji cilj je bio uspješno
spuštanje čovjeka na Mjesec i njegov povratak na Zemlju prije 1970. godine
bio je Apollo. Ključno za problem upravo je vremenska definicija.
Upravljanje letjelicama vodila su
računala upravo na način na koje danas rečunalne igre simuliraju
identične događaje. Jedina je razlika u činjenici da su
računala u svemirskim letjelicama podatke o letu dobivali s ugrađenih
inercijalnih instrumenata (IMU – inertial measurement unit). Program
Gemini vođen je brižno kako na početku ne bi došlo do neuspjeha tako
da su navigacijski instrumenti bili opremljeni s redundantnim (četvrtim)
kardanskim prstenom. Zbog vremenskog tjesnaca i želje da se prije 1970. godine
čovjek spusti na Mjesec, program Apollo 'ostao' je bez redundantnog
kardanskog prstena, uglavnom na inzistiranje administracije i donekle
uvjeravanjem stručnjaka s MIT-a, a cjelokupnu problematiku opisao je David
Hoag još u travnju 1963. godine. MIT je zagovarao Eulerov prostor
pravdajući ga jednostavnošću, manjom težinom i prostorom (vrlo bitno
za letjelicu), ali i mogućnošću pravovremenog slanja misije na
Mjesec. Inercijalni sustav bio je opremljen računalom koje je na 70ş
davalo alarm mogućeg gubitka dimenzije, a na 85ş automatski sustav više
nije bio u funkciji. Ručno, jedino se zakretanjem cijelog svemirskog broda
oko osi stabilizirati rad instrumenta. Okretanje broda oko osi zapravo je bilo
identično korištenju cijelog broda kao redundantnog prstena. Spomenuta
činjenica posebno je imala utjecaja pri specifičnom smjeru leta kod
samog spuštanja na Mjesec jer je sustav bio prilagođen Mjesečevom
koordinatnom sustavu. Time je let vertikalno na Mjesečevu površinu imao
velike šanse preklopiti dvije osi za slučaj potrebe rotacije broda oko
vertikalne osi.
Bez ulaska u detaljniju analizu, na prvom
letu u orbiti oko Mjeseca mjesečevim modulom (Apollo 10) čija zadaća nije bila spustiti se
na Mjesec već samo uspješno odvojiti mjesečev modul od servisnog, u
određenom trenutku leta simulacije spuštanja na Mjesečevo tlo,
astronauti su pogrešno ostavili računalo u automatskom režimu rada te je u
jednom trenutku IMU ušao u nedopušteno stanje te se brod našao u nepovoljnom
položaju. Iako je reakcija astronauta uslijedila vrlo brzo, mjesečev se
modul našao na neplanirano velikoj udaljenosti od servisnog modula, na
sreću, još uvijek u području u kojem je bio omogućen nesmetan
povratak uz dodatno manevriranje. Postoji i zapis u kojem je Stafford, kapetan
mjesečevog modula Snoopy Apolla 10 glasno povikao kontroli leta da je brod
izgubio dimenziju nakon što je cijelih 10 minuta prije predviđenog vremena
doveo mjesečev modul u poziciju za spajanje sa servisnim modulom. Nakon
toga je uslijedilo spretno ručno upravljanje tako da su se sami astronauti
začudili kako je brod ostao u korektnoj putanji (operabilnost inercijalnog
sustava bila je moguća jedino okretanjem cijelog broda koji je u ovom
slučaju na neki način predstavljao četvrti redundantni kardanski
prsten).
Kasnije se na misiji Apolla 11 ponovila
slična priča s time što je u njegovom letu došlo do pogrešnog alarma
zbog razgođenja inercijalnog sustava, i ovdje je korekcija napravljenja
ručnim upravljanjem, odnosno ugađanjem sustava, a pošalica Collinsa,
kapetana servisnog modula bilo je pitanje žele li kao poklon za Božić
četvrti prsten – Collins je u svojim prethodnim misijama letio na programu
Gemini koji je bio opremljen ovim uređajem.
Dva opisana primjera, doduše, ne spadaju u
područje računalne grafike, međutim, sve operacije koje su se
odvijale u potpunosti je moguće ponoviti izradom računalne animacije
te vjerno simulirati upravo događaje koji su se doista zbili. Time se može
i praktično pokazati velika povezanost stvarnog događaja i njegove
simulacije uzevši u obzir sve moguće probleme koji su prisutni u oba
slučaja.
5. Zaključak
Vrlo je zanimljivo da je puno ljudi upoznato s problemom kardanskog bloka, ali ne zna njegov naziv. Najzanimljivije je da im nikada ne pada na pamet da taj mehanički problem ima matematičko apstraktno značenje i da se može riješiti kvaternionima. To, kao i mnoge druge pojave u znanosti, dovodi do logičnog zaključka da postoji samo jedna znanost, opća i univerzalna, koja se može klasificirati u razna iterdisciplinarna područja, ali uvijek na neki način povezana.
6. Literatura
2. Muftić, O.: Mehanika I (Statika), Tehnička knjiga, Zagreb,
1989.
3. Jecić, S.: Mehanika II (Kinematika i dinamika), Tehnička
knjiga, Zagreb, 1989.
4. Cogner, D.: Physics Modelling for Game Programmers, Thomson Course
Technology, Boston, 2004.
5. Perše, S.: Osnove strojarstva, Fakultet prometnih znanosti
Sveučilišta u Zagrebu, Zagreb, 1996.
6. Muftić, O.: Mehanika živih sustava, Tehnička enciklopedija,
Svezak 8, Zagreb, Školska knjiga, 1989.
7. David Hoag (1963). "Apollo Guidance and Navigation -
Considerations of Apollo IMU Gimbal Lock - MIT Instrumentation Laboratory
Document E-1344". http://www.hq.nasa.gov/alsj/e-1344.htm.
8. Eric M. Jones and Paul Fjeld (2006). "Gimbal Angles, Gimbal
Lock, and a Fourth Gimbal for Christmas". http://www.hq.nasa.gov/alsj/gimbals.html.
9. Jonathan Strickland (2008). "What is a gimbal -- and what does
it have to do with NASA?". http://science.howstuffworks.com/gimbal.htm.
10. Gimbal Lock – explained, http://www.youtube.com/watch?v=rrUCBOlJdt4
11. Euler angles and gimbal lock (video) Part 1, Part 2 ,
http://guerrillacg.org/home/3d-rigging/the-rotation-problem,
http://guerrillacg.org/home/3d-rigging/euler-rotations-explained