Imagine 3.0Peter Macsánszky
Imaginárne kosti
Program Imagine určíte pozná každý majiteľ Amigy, ktorý sa len trochu zaujíma
o počítačovú grafiku. V nasledovnom článku Vám chceme predstaviť nový systém
modelovania pohybu v Imagine 3.0.
Bez zbytočných úvodov sa hneď dejme do práce! Objekty môžeme prinútiť k zložitým
pohybom dvoma metódami: pomocou systému skutočných kostí (ang. bones) alebo
použitím kinematického modelovania. Princíp obidvoch spočíva v tom, že sú
definované imaginárne kosti, na ktoré sú nabalené objekty ako svaly na kosti.
Pohybom kostí sa automaticky deformuje priradený objekt podobne ako v prírode:
pri pohybe svaly sledujú pohyb kostí.
Kinematické modelovanie sa javí jednoduchšie. Jeho princíp spočíva v tom, že
kosti nemusíme definovať, nakoľko sa za ne považujú spojnice objektov zviazaných
do skupín (grupa). Každý uzol sa potom javí ako kĺb pozdĺž ktorého sa deformuje
objekt. Tento spôsob modelovania je možné použiť iba na skupinu objektov.
Skutočné bones môžeme aplikovať aj na jednotlivé objekty (nielen na skupiny
objektov). Samozrejme, najprv treba definovať systém kostí tzv. kostru, ku
ktorej sa priradí objekt. Obzvlášť užitočná je, že sa môže definovať časť
objektu, ktorá sa deformuje pri pohybe kostí. Takto je zaručené, že napr. v
prípade ruky sa bude objekt ohýbať v lakti a nie v inom mieste (napr. LightWave
to nedokáže)... K realizácii animácie pomocou kostí používa Imagine animačný
systém State. Skôr, ako sa pustíme do animovania, malí by sme si o ňom niečo
povedať.
State znamená v preklade stav. Jednotlivé kľúčové polohy (stavy) objektov sa
zaznamenávajú a potom program automaticky vygeneruje medzi nimi plynulý prechod.
Tento systém práce veľmi pripomína prácu v Cycle editore. Odlišností je ale hneď
viac, napr. môžeme nastaviť, ktoré objekty skupiny ako menia svoj tvar, vzájomnú
polohu, svoje vlastnosti (atribúty) a iné.
Pre jednoduchšie pochopenie vytvorme jednoduchú state animáciu. Simulujme pohyb
kyvadla, ktoré pozostáva z valca visiaceho z vodorovnej roviny. Prácu začneme v
Detail editore, kde najprv vytvoríme potrebné objekty. Os valca umiestnime do
jeho konca. Potom objekty spojíme do skupiny tak, aby sa os valca prekrývala s
osou roviny (pozvi obrázok). Hierarchia skupiny musí byť taká, aby valec bol
napojený na rovinu. V pohľade FRONT teraz otočme valec o 45 stupňov doprava - to
bude jedna kľúčová pozícia. V móde Pick Group naklikneme rovinu, ktorá je
rodičom skupiny a potom aktivujme funkciu States z menu States (viď obrázok).
Objaví sa okienko s deviatimi voľbami. Naklikneme najprv na políčko "Create"
(vytvoriť), čím vytvoríme nový State. Objaví sa okno, do ktorého musíme zapísať
meno vytvoreného State. Program ponúkne meno "Default", ktoré potvrďme s OK
(neprepisujme na iné meno!). Hneď sa objaví ďalšie okno, v ňom názov State
(Default) a tri prepínače. Properties označuje atribúty objektu, Shape tvar a
Group pozíciu jednotlivých objektov skupiny. Nakliknutím jednotlivých prepínačov
sa uložia zodpovedajúce vlastnosti objektu do State. V našom prípade teraz stačí
nakliknúť na Groups - teda nech sa uloží vzájomná pozícia objektov.
Teraz otočme valec do ľavej krajnej polohy a hore popísaným spôsobom fixujme
jeho polohu (použitím funkcie Create State z menu State). Názov nového state si
teraz môžeme zvoliť ľubovolný. Týmto je naše animácia hotová.
Preview (ukážku) animácie si môžeme vytvoriť priamo v detail editore. K tomu
postačí zvoliť funkciu States/StateAnim/Create. Najprv sa zjaví okienku, ktoré
nás upozorňuje na pravidlá vytvárania animácie. Po odkliknutí sa vykreslí okno
"State List" s vytvorenými State z ktorého treba zvoliť jednu položku. Ďalej
treba zadať počet obrázkov, v ktorých sa bude realizovať prechod do ďalšieho
stavu (State). Samotné generovanie animácie sa začne zadaním hodnoty 0.
V praxi to znamená v našom prípade asi toľko: po odkliknutí upozornenia si
zvoľme State s názvom Default a do input okienka zadajme počet obrázkov premeny
- 10. Znova sa objaví okienko "State List", z ktorého si teraz vyberme druhý
State ("vpravo") a počet obrázkov nastavme na 10. Nakoniec si znova zvoľme
Default State ale s nulovým počtom obrázkov. Počítač sa teraz pustí do práce a
po niekoľkých sekundách si animáciu môžeme prezrieť známym spôsobom (Play Loop,
Play Once). Podobný výsledok by sme holi dosiahli aj pomocou Cycle editoru.
Samozrejme systém State dokáže omnoho viacej, vieme animovať nielen polohu
objektov v rámci skupiny, ale aj ich tvar a atribúty.
Otázne je teraz, ako použiť takýto objekt v Action editore? Najprv uložme naše
kyvadlo na disketu. V Action editore nastavme počet obrázkov na 21 a pomocou
funkcie ADD pridajme nového herca na 1. frame. Nech je to "Normal object" a ešte
k tomu naše kyvadlo. Otvorí sa známe okienko "Object File Info", v ktorom na
riadku "State name" nakliknime gadget "Browse". Objaví sa zoznam uložených State
pre daný objekt. Vyberme si prvý stav, teda "Default". Do frames 2-11 načítajme
predchádzajúci objekt, ale teraz si vyberme druhý State ("vpravo"). Celú
operáciu zopakujeme ešte pre zvyšné frames (12-21) s tým rozdielom, že si
zvolíme State "Default". Týmto je naše dielo dokončené. Teraz prejdime do Stage
editoru a spravme animačný preview z prvých 20 obrázkov. 21. obrázok
nepotrebujeme, nakoľko je zhodný s východiskovou polohou (obrázkom 1).
Pri zhotovení Stage vedľa funkcie Create bolo vidieť ešte ďalších osem, ktorých
význam je nasledovný:
Funkcia "Cancel" asi nepotrebuje žiadny komentár. "Info" vykreslí okienko s
hotovými State. Nakliknutím na požadovaný riadok dostaneme obšírnejšie
informácie. "Set to" sa javí ako veľmi užitočná funkcia. Umožňuje prepínať medzi
rôznymi už hotovými State a tak ich prezerať. Objekty vtedy preberajú vlastnosti
zaznamenané v State. Vlastnosti, ktoré nie sú uložené, sa nemenia. Napríklad ak
máme červený objekt, ktorého tvar uložíme pomocou prepínača Shape a potom
zmeníme farbu objektu na modrú, pri prepnutí na pôvodný objekt sa jeho farba
nezmení na červenú, zostane modrá.
"Delete" slúži na vymazanie State, ktorý si vyberieme z ponúknutého zoznamu. Na
zmenu nastavených vlastností máme funkciu "Update". Po zvolení požadovaného
State sa vykreslí daný stav a môžeme modifikovať niektoré parametre. Pozor, nové
vlastnosti sa pridávať nedajú, len existujúce vymazať. Napríklad ak pri
vytvorení State sme definovali Properties a Group, potom pri Update nemôžeme
pridať Shape. Pomocou "Import" sa dajú importovať State z iných objektov.
Samozrejme význam to má iba v prípade, ak objekty majú podobnú hierarchiu
výstavby. Najprv sa objaví okno so zoznamom objektov v editore. Z nich treba
zvoliť zelený, ktorého práve aktuálny State sa pre vezme. Na koniec ešte musíme
zapísať meno State.
"Clone" slúži na kopírovanie State. Názov State sa vyberá zo známeho okienka,
potom mu treba zadať nové meno. Pritom môžeme určiť, ktoré vlastnosti sa budú
kopírovať. Pomocou "Tween" sa môžeme nastaviť na niektorú fázu medzi dvoma
State. Ak sa vrátime k príkladu nášho kyvadla, potom si musíme uvedomiť, že máme
dve State - ľavá a pravá poloha kyvadla. Nech je kyvadlo práve v ľavej polohe.
Pomocou Tween zvoľme State, keď je kyvadlo v pravej polohe. Vykreslí sa okienko,
v ktorom vidieť zoznam parametrov uložených v State. Vyberme si Group. V zapätí
sa objaví ďalšie okno, kde môžeme zadať v percentách ktorý obrázok sa má
vykresliť pri prechode do ďalšieho State. Ak sa zadá hodnota 50, naše kyvadlo
bude práve v strede t.j. v zvislej polohe.
Ak už poznáme princíp práce so State, môžeme sa pustiť do kinematického
modelovania pohybu. Nebudeme zbytočne hovoru, radšej sa hneď dajme do roboty.
Vytvorme primitívny model prsta pozostávajúci zo štyroch článkov. V Detail
Editore pomocou Add Primitives vytvorme 4 rovnaké valce. Nech sú tenké a vysoké.
Teraz ich usporiadajme vedľa sebe tak aby sa voľne dotýkali k sebe podstavou
(viď. obrázok). Na koniec posledného valca pridajme Axis tak, aby bol oproti osi
voľte, ale na druhom konci. Teraz musíme objekty zviazať (Group) tak, aby ľavý
valec bol prarodičom. Jeho potomkom je valec vedľa v pravo, ktorého potomkom je
ďalší valec v pravo atď. rad uzaviera Axis. Takto vytvorená grupa sa pri ďalších
transformáciách bude správať oko zložený objekt, ktorého kostru predstavuje
spojnice jednotlivých valcov. Axis slúži oko úchytný bod.
A teraz celok dajme do pohybu. Najprv nakliknime prarodič v móde Pick Object.
Potom zvoľme funkciu Freeze z menu State, výsledkom ktorého je okienko s
"dotazníkom" o možných pohyboch celku. Pomocou neho vieme zabezpečiť, aby sa
skupina pohybovala a rotovala len želaným smerom. Zapnime všetky tri prepínače v
riadku "Translation Local", následkom čoho sa os kostry nebude môcť premiestniť,
iba rotovať. Týmto je objekt pripravený na pohyb. Zo základného stavu spravme
State. Teraz zapnime funkciu State/Constarin, čo znamená nútený pohyb. V móde
Pick Object uchopme Axis a pohybujme s ním. Tento bude "ťahať" za sebou ostatné
voľte, oko keby skutočne bolí spojené pomocou kostí. Samozrejme, pohybovať sa dá
s ľubovoľným objektom skupiny. Dôležité je, aby počas núteného pohybu bol editor
v móde Pick Object. Ak polohu skupiny teraz zaznamenáme do State a spravíme
animačný preview, uvidíme aké možnosti ukrýva v sebe metóda kinematického
modelovania.
A teraz sa venujme systému skutočných kosti (bones). Prvá skutočnosť, ktorú si
musíme uvedomiť je, že skutočné kosti (kostra) sa viažu vždy iba k jednému
objektu a nie skupine objektov (Group). Samotná kostra pozostáva z viacerých osí
(Axis), ktoré sú navzájom zviazané. Jednotlivé osi predstavujú kĺby a spojnice
medzi nimi potom kosti. Pri manipulácii s kostrou sa samozrejme patrične
deformuje priradený objekt. Tvar deformovaného objektu sa ukladá do State pre
neskoršie použitie.
Toľko z teórie, ktorú nech teraz nesleduje praktická ukážka. Našou úlohou bude
zostrojiť ďalší model prsta, ktorý potom zahneme. Keďže hlavný dôraz je na
objasnení princípu práce a nie na detailnom vypracovaní objektu, náš prst kvôli
jednoduchostí nahradíme valcom zloženého z 10 vodorovných segmentov. Body
jednotlivých segmentov preusporiadajme podľa obrázku (pre začiatočníkov stručný
postup: Detail editor, F5, Tube - 50, 400, 24, 10, F1, Amiga+T, Rotate Y=90,
menu Mode/Pick Points, menu Mode/Pic Method/Drog Box, stlačiť Shift a myšou
orámčekovať zľava druhý segment, Move -X a myšou presunúť, podobne presunúť aj
ostatné segmenty). Asi ste sa už dovtípili, že pri zhustených segmentoch budú
kĺby. Týmto je objekt hotový, teraz vytvorme kostru. Do každého kĺbu pridajme
jeden Axis a navyše ešte aj na konce objektu. Prvý bude reprezentovať "koreň"
ruky, t.j. bod kde sa pripája k zápästiu a druhý bude slúžiť na uchopenie špičky
prsta.
Rozmiestené osi musíme spojiť pomocou funkcie Group tak, aby Axis zo strany
zápästia ruky (vpravo) bol prarodičom. Jeho potomkom je Axis vľavo, ktorého
potomkom je ďalší Axis vľavo, atď. Takto vytvorená skupina osí sa pri
transformáciách bude správať oko zložený objekt, kde osi predstavujú kĺby a ich
spojnice kosti.
Vytvorenú kostru teraz treba priradiť objektu. Podobne oko v predchádzajúcom
prípade, znova sa použije funkcia Group. Najprv sa zvolí objekt ako prarodič,
ktorého bezprostredným následníkom bude Axis kostry (zo strany zápästia). V
ďalšom kroku Je nutné definovať, ktoré kĺby aké častí objektu deformujú. K tomu
musíme patričné prvky (Faces = trojuholníky) objektu rozdeliť do dvoch skupín.
Prvú skupinu (označovaná aj oko veľká podskupina) tvoria všetky Faces, na ktoré
daný kĺb vplýva druhú skupinu (malá podskupina) tvoria Faces, ktoré sa
nedeformujú - iba sa pohybujú (prakticky je to podmnožina (času prvej skupiny).
Rozdiel týchto dvoch skupín určuje kĺbovú časť, ktorá sa bude deformovať.
Pre lepšie pochopenie sa pozrite na svoju ruku. Ohnite prst. Do našej prvej
skupiny bude patriť prst od jeho špičky až po kĺb včítane kĺbu. Druhú skupinu
bude tvoriť znova prst od jeho špičky ale teraz len po kĺb. Rozdiel týchto dvoch
skupín dáva okolie kĺbu, ktoré sa účinkom pohybu deformuje.
Teraz to vykonajme aj v praxi! Najprv musíme zvoliť objekt potom prejst do módu
Pick Faces. Axis (kĺb) vpravo manipuluje s celým objektom, preto musíme zvoliť
všetky Faces (najľahšie v režime Pick Drag Box). Z vyznačených Faces vytvorme
podskupinu (Subgroup) pomocou funkcie Functions/Make/Make Subgroups a dajme mu
meno "All". Nakoľko ide o kĺb, kde sa pripája prst k zápästiu, druhú skupinu
netreba definovať, pretože v tomto bode sa náš prst ešte nedeformuje. Prvým
skutočným kĺbom bude vlastne druhý Axis. Prvú skupinu Faces budú tvoriť
prakticky všetky body od druhého segmentu až po ľavý koniec (špičku prsta, pozri
obrázok 6). Vytvorme z nich Subgroup pod menom napr. 1-1 (prvé číslo teraz
označuje kĺb, druhé skupinu). Druhú skupinu budú tvoriť Faces, ktoré sa
nedeformujú vplyvom kĺbu, iba sa pohybujú, t.j. Faces od štvrtého segmentu až po
koniec prsta (pozri obrázok 7). Vytvorenému Subgroupu dojme meno 1-2. Podobným
spôsobom sa určia Faces aj pre ďalšie kĺby. Posledný Axis nie je kĺbom, slúži
iba na uchytenie špičky prsta počas manipulácie s objektom.
Ak sme definovali všetky podskupiny pre kĺby, môžeme prejsť k priradeniu
jednotlivých podskupín ku konkrétnym kĺbom. V režime Pick Object zvoľme prvý
Axis zo strany zápästia ruky. Z menu State zvoľme funkciu "Bones Subgroups". Na
obrazovke sa objaví ďalšie okienko (obr. 8) v ktorom sú dve vstupné polia: Big
Subgroups (veľká podskupina) a Small Subgroups (malá podskupina). Výber názvu
skupiny uľahčujú gadgety Browse. Nakoľko prvý Axis je výnimočný (nedeformuje
objekt) do obidvoch vstupných políčok napíšeme "All" alebo použijeme gadgety
Browse, kde z ponúknutého zoznamu podskupín si myšou zvolíme ten patričný.
Druhému kĺbu musíme priradiť podskupiny 1-1 a 1-2 a atď. Poslednému kĺbu sa
nepriraďuje žiadna podskupina, pretože ide o špičku prsta a ako už vieme, slúži
iba na uchytenie a manipuláciu s objektom.
Teraz v režime Pick Groups zvoľme objekt a spravme z neho State s názvom
"default" (postup sme si už minule popísali). V State treba uchovať informáciu o
tvare objektu, to znamená, že treba zapnúť voľbu "Shape" .
A týmto sme s objektom hotový! Deformovanie objektu sa vykoná podobne, oko je to
popísané vyššie pri kinematickom modelovaní pohybu. Nezabudnite zapnúť voľbu
State/Constrain! V režime Pick Object uchopme Axis na špičke prsta a ohnime prst
podľa želania. Nezabudnite, že pohyb jednotlivých kĺbov je možné koordinovať
pomocou funkcie State/Freeze. Pozor, pohyb kostí nemá za následok automatické
deformovanie objekt! To sa vykoná iba po zvolení funkcie States/Bones Update. Ak
sa podaril objekt zdeformovať na požadovaný tvar, potom sa môže z neho vytvoriť
ďalší State. Použitie takto vytvoreného objektu v animáciách sme popísali už
minule.
Veríme, že týmto príspevkom sme vo Vás prebudili ďalšiu vášeň modelovania v
Imagine a prispeli ku vzniku ešte nádhernejších animácií. Vytlačiť článok
Pozn.: články boli naskenované ako text a preto obsahujú aj zopár chýb. Taktiež neručíme za zdrojové kódy (Asm, C, Arexx, AmigaGuide, Html) a odkazy na web. Dúfame, že napriek tomu vám táto databáza dobre poslúži.
Žiadna časť nesmie byť reprodukovaná alebo inak šírená bez písomného povolenia vydavatela © ATLANTIDA Publishing
none
|