Morphing v 3D Studiu MAX - 3D grafika - 3Dscena.cz: 3D grafika jako na dlani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



3D grafika

Morphing v 3D Studiu MAX

24. února 2003, 00.00 | V tutoriálu se zaměříme na vysvětlení základních principů doprovázených praktickým příkladem morphingu v 3D Studiu MAX. Konkrétně se bude jednat o přeměnu sytě modré krychle do lesklé kovové koule, takže si vyzkoušíme jak morphing geometrie, tak materiálu.

{Základní polygonální morphing}

U tutoriálu předpokládáme alespoň základní znalosti 3D Studia MAX. Před započetím práce resetujte nebo restartujte 3D Studio.

Pro ty, kteří náhodou neví, co se skrývá za pojmem uvedeným v názvu tohoto tutoriálu, uvedu stručnou teorii. Ostatní, kteří už mají o morphingu jisté povědomí, bude možná tento úvod poněkud nudit, takže ho můžou směle přeskočit a začít až dalším odstavcem.
Morphing znamená podle definice změnu topologie objektu z jednoho tvaru na druhý. Jednoduše řečeno je to ekvivalent slova přeměna. Výsledkem morphingu je totiž plynulá přeměna jednoho objektu v jiný. Princip je takový, že se určí vrcholy (vertexy) objektů A a B, vypočítá se rozdíl v jejich umístění v prostoru a pak se vrcholy objektu A přesunou v určitém časovém období až na pozici vrcholů objektu B. Z toho mimo jiné vyplývá, že morfované objekty musí mít navzájem stejný počet vrcholů, jinak morphing nefunguje. To je jedno z jeho omezení, které použití této techniky v některých případech poněkud znesnadňuje. Velmi dobře jde vidět mophing například ve filmu Terminátor 2 (je to jeden z prvních filmů, ne-li první, kde byl morphing využit v plné míře). V moderních grafických softwarech podporujících morphing se též objevuje jeho vylepšená verze, obsahující tzv. váženou interpolaci. Princip je prakticky stejný, jen s tím rozdílem, že můžete navíc určovat míru vlivu určitého objektu v určitém čase na výsledný morphing. Nejvíc se toho využije při složitých animacích, například mimika obličeje. Vytvoříte obličej a pak ještě obličej s širokým úsměvem. Pokud chcete pouze mírný úsměv, tak stačí dát obličeji s širokým úsměvem menší hodnotu (váhu). Změnou hodnot si pak nadefinujete úsměv, jaký chcete. Pokud by neexistovala vážená interpolace, museli byste vytvářet pro každý výraz tváře nový model, což by bylo nesrovnatelně pracnější a komplikovanější než pouze pozměnit číselnou hodnotu. To by bylo k úvodu vše, teď se můžeme podívat, jak takový morphing vypadá v praxi.

Vytvořte základní primitivu "Box".
Length: 50
Width: 50
Height: 50
Length Segs: 20
Width Segs: 20
Height Segs: 20

Pak ji zkopírujte a posuňte kousek stranou. Na kopii použijte parametrický modifikátor "Spherify", jehož hodnotu upravte na 100. Tento modifikátor, jak název napovídá, "zakulaťuje" objekty, v našem případě vznikla přesná koule, která bude cílem morphingu.
Oba objekty teď převeďte na "Editable mesh"
Označte si původní objekt - Box01 - a aplikujte na něj modifikátor "Morpher". Objeví se rozsáhlý dialog, u kterého se trochu pozastavím, abych popsal jeho základní funkce.

Global Parameters
Use Limits, Maximum, Minimum - určuje, jaké maximální a minimální váhy mohou být při morphingu váženou interpolací použity.
Assign new material - přiřadí Morpher material na objekt, na který je aplikovaný modifikátor Morpher.

Channel List
Toto je nejdůležitější záložka modifikátoru Morpher. Obsahuje kanály a nejdůležitější parametry morphingu.
Seznam kanálů - obsahuje 100 morfovacích kanálů, to znamená, že pro jednu animaci může být použito až 100 objektů, které budou zapojeny do morphingu. Napravo je u každého kanálu pole pro vepsání váhy morphingu v procentech, nalevo se zobrazují barevné obdélníky, které značí stav daného kanálu:
Šedá - dosud nepoužitý kanál
Oranžová - kanál byl nějakým způsobem pozměněn, ale neobsahuje žádná data
Zelená - kanál je aktivně používán a má přiřazen cílový objekt
Modrá - kanál má přiřazen cílový objekt, ale ten ve scéně neexistuje (např. byl smazán)
Tmavě šedá - kanál je zakázaný, nebude použit při morphingu
Pokud na nějaký kanál klepnete pravým tlačítkem myši, můžete vykonat následující akce:
Pick from Scene - přiřadí kanálu objekt, který zvolíte
Delete Channel - smaže obsah kanálu
Reload Target - znova načte obsah kanálu (například pokud jste mezi tím zvolený objekt nějak změnili)
Load Multiple Targets - načte do prázdných kanálů více objektů najednou, které zvolíte z dialogu
Reload All Morph Targets - znova načte všechny kanály
Zero Active Channel Values - všechny aktivní kanály nastaví v daném snímku na nulu (pokud chcete, aby v určitém momentě měly všechny kanály nulovou váhu)
Automatically reload targets - pokud je aktivní, budou se všechny cíle automaticky updatovat pokaždé, když je budete editovat

Channel Parameters
Číslo kanálu - po kliknutí na tlačítko můžete daný kanál přesunout v hierarchii nahoru nebo dolů (Move to...), zaměnit jeho místo s jiným kanálem (Swap) nebo se rychle přepnout na nějaký jiný kanál (Used Channels).
Channel is Active - tímto přepínačem můžete daný kanál zakázat
Pick Object from Scene - tímto tlačítkem přiřadíte cílový objekt ze scény aktivnímu kanálu
Capture Current Sate - abych pravdu řekl, význam tohoto tlačítka jsem příliš nepochopil, ale mělo by se jednat o to, že prázdný kanál bude v podstatě aktivní, ikdyž nebude mít přiřazen žádný cílový objekt.
Use Limits, Maximum, Minimum - určuje, jaké maximální a minimální váhy mohou být při morphingu váženou interpolací použity.
Use Vertex Selection - při aktivaci se bude morphing daného kanálu vztahovat pouze na vybrané vertexy
Záložka Progressive Morph - tuto záložku jsem nikdy příliš nezkoumal, ale jedná se o částečně dynamický morphing. Tuto funkci ale myslím při běžné práci nikdy nepoužijete.

Takže teď, když už známe interface dialogu Morpher, můžeme zase pracovat na nějakém viditelném výsledku našeho snažení. Nyní máme vytvořený základní objekt, kterým je Box01, na který jsme aplikovali modifikátor Morpher a dále se ve scéně nachází kopie tohoto objektu s modifikátorem Spherify (pod názvem Box02). Začneme tedy polygonálním morphingem, v jehož výsledku se přemění základní krychle na kouli. Přejděte do módu Modify a z nabídky vyberte, že chcete pracovat s modifikátorem Morpher. V jeho dialogu přejděte na záložku Channel Parametrs, kde klepněte na tlačítko Pick Object from Scene a hned potom vyberte objekt Box02 normálně jako byste ho chtěli označit ve scéně (stejného cíle dosáhnete i klepnutím RMB na prázdné pole kanálu a vybráním možnosti Pick from Scene). Pokud se nyní posunete výše do záložky Channel List, uvidíte, že první pole je obsazeno objektem Box02 a vlevo je zelený obdélník, který signalizuje, že kanál je aktivní (stejně jako na druhém obrázku). Teď chceme, aby přeměna trvala třeba 100 snímků. Aktivujte tedy animaci (ve verzích 1.x až 4.x je to tlačítko Animate, ve verzích 5.x klepněte na tlačítko Auto Key, které se nachází na spodní liště) a přesuňte se na snímek 100. Poté vepiště do pole v pravo od názvu cílového objektu hodnotu 100 (to znamená, že na snímku 100 bude mít morphing tohoto kanálu 100% váhu). Krychle by se měla okamžitě změnit na cílový obejkt (kouli). Teď už můžete vypnout animaci. Po vykonání tohoto kroku už můžete ve Wiewportech sledovat průběh animace, kde se krychle plynule zmorphuje do koule.

[-more-]{Morphing materiálu}

Základní polygonální morphing bychom tedy měli za sebou, teď pro úplnost zbývá ještě názorně předvést morphing materiálu, který bude morphovat souběžně s polygonálním morphingem. Vyberte tedy objekt Box01 a v editačním dialogu modifikátoru Morpher rozbalte záložku Global Parameters. Tam klepněte na tlačítko Assign New Material a krychle zšedne. Právě jste totiž objektu Box01 přiřadili základní morphovací materiál, jehož standardní barva je šedá (proto se změnila i barva krychle). Dále otevřte Material Editor a klepněte na tlačítko Pick Material From Object, který se nachází vedle kolonky s názvem materiálu. Poté vyberte objekt, na který jste aplikovali modifikátor Morpher, tedy Box01. Materiál se automaticky převede na Morph material a zobrazí se jeho dialog s rozbalenou záložkou Morpher Basic Parameters, se kterou se teď trochu blíže seznámíme a pak budeme pokračovat v práci.

Choose Morph Object - zde je uveden objekt, na který se materiál vzatuje (v našem případě Box01), pomocí přiřezeného tlačítka lze cílový objekt libovolně měnit.
Refresh - jak název napovídá, po aktivaci tohoto tlačítka se znova načtou všechny data obsažená v kanálech
Base Material - v této kategorii je obsažen jeden materiál, který slouží jako základní (počáteční) a od kterého se odvíjí pozdější morphing.
Kanály materiálů 1 až 100 - stejně jako u modifikátoru Morpher, tak i zde jsou morfovací kanály, jenže do nich nazavádíte objekty, ale definujete v nich samostatné materiály
Mixing Calculation Options - pokud máte velmi složitý Morph material, může to velmi zpomalit práci. Proto je zde několik přepínačů, které umožňují optimalizovat efektivnost a rychlost práce s morphingem materiálů.
Always - morphing se bude počítat jak při renderingu, tak i realtimově při přehrávání animace ve wiewportech.
When Rendering - morphing se bude počítat pouze při renderingu
Never - na morphing nebude brána zřetel ani při renderingu ani v material editoru. Tuto možnost zřejmě nejvíc použijete, pokud budete dělat zkušební rendery, při kterých nepotřebujete pracovat s materiály, ale pouze s geometrií a morphing materiálu by zabral příliš mnoho času.





Teď, když jsem vás stručně obeznámil s interfacem Morph materialu, budeme pokračovat v práci. V políčku vedle tlačítka Choose Morph Object byste tedy měli mít přiřazen objekt Box01. Klepněte na tlačítko v kolonce Base Material, abyste mohli nadefinovat vlastnosti základního materiálu. Postupujte podle následujících parametrů. Základní krychli uděláme třeba modrou, takže nastavte barvy takto:
Ambient RGB = 0;0;0;
Diffuse RGB = 0;0;255;
Specular RGB = 255;255;255


Pak se přesuňte zpět o úroveň výše. Klepněte na slot pro první materiál (Mat 1:) a jeho typ zvolte jako Standard. Konečnou kouli chci kovovou, takže podle toho taky nastavíme parametry:
Ambient RGB =57;57;57
Diffuse RGB =171;189;199
Specular RGB =255;255;255
Specular Level =140
Glossiness = 25
Bump Map = 100
(typ Bitmap, Copper02.jpg z přiloženého souboru)
Reflection Map = 50 (typ Bitmap, Lakerem.jpg z přiloženého souboru)

Tím by byl jednoduchý kovový materiál a vlastně i celý morphing hotový. Teď si můžete celou animaci vyrenderovat a pak si ještě okrajově zkusíme jednoduchou ukázku vážené interpolace. A abych nezapomněl - ještě než začnete renderovat animaci, zvolte objekt Box02 a zakažte jeho rendering, který je nažádoucí, protože ve scéně slouží vlastně pouze jako referenční objekt. Pokud nevíte jak na to, tak vězte, že rendering lze zakázat v dialogu Properties, který vyvoláte kliknutím RMB na zvolený objekt a vybráním položky Properties z nabídky.

Pokud jste si tedy již vyrenderovali svou animaci a chcete si ještě zkusit, jak funguje vážená interpolace, tak Vás asi budou zajímat následující řádky.
Do stávající scény vytvořte základní primitivu Box, která bude referenčním objektem pro další fázi morphingu. Nezapomeňte, že musí mít stejný počet vrcholů (vertexů) a konkrétně pro náš záměr taky stejnou velikost jako ostatní objekty morphingu, takže nastavte její parametry takto:
Length: 50
Width: 50
Height: 50
Length Segs: 20
Width Segs: 20
Height Segs: 20


Box03 přidejte do druhého kanálu v Channel Listu modifikátoru Morpher. Na vzniklý objekt aplikujte modifikátor Displace, který umožňuje deformovat geometrii objektu podle zvolené bitmapy nebo procedurální mapy. My zvolíme druhou možnost a pro tento účel si vytvoříme procedurální texturu typu Noise. Otevřte si tedy Material Editor a editujte Mat 2 materiálu Morpher. Vytvořte Diffuse map typu Noise. Parametry budou vypadat následujícně:
Noise Type = Fractal
Size = 10
Noise Threshold: High = 0,6; Low = 0,4
Color 1 RGB = 255;0;0
Color 2 RGB = 0;0;0


Jako Bump map tohoto materiálu vytvořte opět Noise mapu, tentokrát však s těmito parametry:
Noise Type = Fractal
Size = 10
Noise Threshold: High = 0,8; Low = 0,2


Když máme dokončený materiál pro nový objekt Box03, vrátíme se zpět k dialogu modifikátoru Displace. V sekci Image klepněte na tlačítko, které náleží k položce Map a z nabídky vyberte materiál, který jste právě vytvořili. Pokud by Vám to snad dělalo potíže, tak musíte na levé liště okna Material/Map Browser, v sekci Browse From zvolit jako aktivní přepínač Mtl Editor. Zobrazí se pouze materiály obsažené v Material Editoru právě aktivní scény, odkud zvolte Diffuse Map, kterou jste tvořili pro tento objekt. Poté ještě v dislogu modifikátoru Displacement upravte hodnotu Strength = 10, Map type = Spherical. Povrch krychle by se měl viditelně zdeformovat. Teď ho převeďte na Editable Mesh. Pak budeme objekt morphovat v nepravidelných intervalech. Přepněte se do editačního dialogu modifikátoru Morph a aktivujte animační mód (tlačítka Animate nebo Auto Key). Přesuňte se na snímek 10 a do políčka pro váhu (vpravo od názvu objektu) vepiště hodnotu 15. Na snímku 14 to bude hodnota 3; na snímku 25 hodnota 45 a konečně ke snímku 50 přiřaďte hodnotu 100. Nyní už můžete vypnout animační mód. Doporučuji animační křivku ještě dále upravit bezierobými křivkami v editoru Track View podle obrázku níže (aby byla animace plynulá a nevyskytovaly se v ní žádné "krkolomnosti").


Klilkněte pro zvětšení

Tím by byl celý tento tutoriál u konce, pokud nyní animaci vyrenderujete (nebo si ji aspoň pustíte ve viewportu), velmi dobře uvidíte efekt vážené interpolace. Uvedené příklady a postupy byly pro názornost z těch nejjednodušších, ale s tímto mocným nástrojem 3D Studia se dají vytvářet skutečné divy (a nutno podotknout, že relativně jednoduše). Přeji hodně štěstí při experimentování!

Tématické zařazení:

 » 3D grafika  

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: