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:
-
5. září 2024
Matrixmedia - Obsluha a tisk na velkoformátových digitálních tiskárnách
-
30. září 2024
-
4. října 2024
3D grafika
Kompletní animace v Blenderu: dokončení - část 2/2
10. ledna 2008, 00.00 | Vítám vás zpět u naší mechanické paže. V dnešním druhém dílu dokončíme animaci se vším všudy. To znamená, že se podíváme na unwrapy, materiály, nasvícení,
nastavení animačního systému a v neposlední řadě také na node editor.
Vítám vás zpět u naší mechanické paže. V dnešním druhém dílu dokončíme animaci se vším všudy. To znamená, že se podíváme na unwrapy, materiály, nasvícení, nastavení animačního systému a v neposlední řadě také na node editor. Připomínám jen pohled na model vytvořený minule:
Pozn.: Pakliže vám nebudou vycházet některé unwrapy, je možné, že máte špatně přepočítané normály. To lze napravit stiskem CTRL+N v editmodu při vybraných všech polygonech.
Unwrap
Bez váhání se můžeme pustit rovnou do práce. Prvním krokem bude vytvoření unwrapů všech objektů ve scéně - nebudeme nic zanedbávat a každému objektu nakreslíme texturu. Začneme podstavou. Nejinteligentnějším místem pro řez bude svislá hrana na odvrácené straně od kamery:
Unwrap má jedno negativum - máme na ploše spoustu volného místa. Spojíme tedy ještě s dalším objektem:
Pozn.: Nejsvrchnější válec se bude na rozdíl od zbytku otáčet kolem své vlastní osy, to ale budeme řešit vertexovými skupinami
I když je na unwrapu stále ještě nevyužité místo, pro přehlednost v 3D okně a úsporu času při renderingu již nebudeme spojovat s žádným dalším meshem:
Pozn.: Unwrap se provádí v UV image editoru zkratkou CTRL+E
V minulém díle jsem naznačil jistý postup u řezů meshů. "Hranol" na spodu stojanu necháme tak, jak jsme jej nachystali minule, malá změna ovšem proběhne u krytu. Vzhledem k ušetření polygonů i plochy, na kterou budeme kreslit texturu, odstraníme vertexy z vnitřní strany:
Po unwrapování se nám opět nelíbí spousta volného místa, takže můžeme spojit s dalším objektem, který má stejnou hodnotu subsurf. Můžeme spojit například s držáky hydrauliky. Po umístění náležitých řezů vznikne mnohem lepší unwrap, myslím, že místa řezů si domyslí každý sám:
Objekt stojanu je poněkud složitějšího charakteru, a proto budeme kombinovat metody unwrapu. Nejprve je potřeba opět umístit řezy pro unwrap:
Možná, že se někdo podiví nad tím, proč jsme umístili vodorovný řez na spodu obrázku. V tomto náhledu je síť opět přizpůsobena subsurfu a řez se tedy ve skutečnosti nachází hned pod hranou. V celém tomto prostoru bude textura se žlutočernými pruhy a my ji tímto řezem pouze oddělíme od zbytku textury. Po unwrapu nám vyjde vcelku nehezký obrázek:
Špatné rozložení bodů způsobuje jejich velká hustota a do jisté míry i samotné LSCM, resp. způsob, kterým unwrap provádí. V tomto případě bude lepší na inkriminovanou část meshe použít jinou metodu - cylinder from view, což rozloží síť válce na čtverec, popř. obdélník. Toto je třeba provést z čelního pohledu:
S využitím tohoto postupu a několika úprav v UV image editoru vypadá unwrap už mnohem lépe:
Nyní nás čeká unwrap "ulny":
Zde bude umístění řezů zřejmé, jde o kvádrovitý objekt, pozastavím se pouze nad spodní částí a hlavicí kulového kloubu. Spodek ulny bude mít řezy na vesměs stejných místech jako horní část stojanu:
Hlavice kloubu bude mít raytracový odraz, ale záměrně je spojená v jeden mesh s ulnou. Toto budeme řešit jednoduše namalováním textury, která bude určovat, na kterých místech se raytracový odraz bude projevovat. K texturám se ale dostaneme, až budou všechny objekty unwrapovány. Takto budou umístěny řezy na kloubu:
Pro úplnost unwrap:
Pokračujeme unwrapem polokoule na kloubu:
Zde ani není potřeba dělat jakýkoliv řez, LSCM si síť rozloží opravdu pěkně:
Minule jsme již umístili řez do jedné podpěry manipulační "ruky". Podpěry jsme poté zkopírovali, takže řezy zůstaly na všech. Nyní již stačí unwrapovat:
Další unwrap se bude týkat části, ve které jsou mechanické pojezdy:
A samotná síť:
Předposlední řezy provedeme na objektech pojízdných lopatek, doufám, že místa řezů napadnou každého i bez obrázku:
Unwrap vypadá sice poněkud kuriózně, nicméně postačí:
Poslední unwrap se bude týkat pístu. Pro snadnější orientaci můžeme pospojovat opět více částí, samotnou animaci budou řídit především armatury, takže nebude docházet k nežádoucím deformacím:
A pro ukázku místa vybraných řezů:
A unwrap:
Nasvícení
Nyní, když už máme unwrapovány všechny objekty ve scéně - tedy nachystané na textury - měli bychom scénu nasvítit, abychom mohli kontrolovat, jak budou textury vypadat po vyrenderování. Nejlépe se mi osvědčil způsob nasvětlení několika spoty a jedním hemi. Nepoužívám jedno univerzální nasvětlení pro každou scénu, to by potom samotné nasvětlování ztratilo kouzlo, nehledě na to, jak důležitou roli hraje při vytváření atmosféry obrázku či animace. Naše animace bude o to složitější, že jediný způsob vytváření postprocesu bude použití node editoru - nemůžeme tedy stíny dokreslit ve 2D editoru. Nasvícení je potřeba věnovat nemenší pozornost, než např. unwrapování.
V této scéně jsem použil tři světla, dva spoty a jedno hemi. Nastavení uvádět nebudu, v tomto případě je opravdu lepší, když si každý se světly pohraje podle svého, na mě bude pouze, abych uvedl několik klíčových faktů:
- kvalitu stínu určíme mimo jiné parametrem ShadowBufferSize, postačí 2 880
- parametr Soft určuje, jak budou stíny rozostřené, pro horní světlo má hodnotu 32 a má částečně napodobovat GI
(upozorňuji, že toto je velice ekonomické - výsledek možná není nejlepší, ale rendertime je rozhodně skvělý).
Tzv. fake GI se provádí se spoty naparentovanými na polokouli z icosphere,
ty směřují do středu koule a při správném nastavení tak vytváří jemné stíny z každé strany
- kvalita světla se ovlivňuje i parametrem Samples, počet samplů se ale odvíjí od parametru Soft - větší rozostření si
vyžaduje více samplů, aby se na výsledek dalo dívat
- Hemi má aktivovanou volbu NoSpecular, což zaručí, že toto světlo nebude na objektech vytvářet odlesky,
bude ovlivňovat pouze difúzní stínování
- boční Spot jsou vlastně dvě světla - první je Spot, který má energii okolo 1.8 s nastavenou volbu Only Shadow, a druhé je též Spot,
energii má okolo 0.7 a nevrhá stíny. Touto kombinací vzniká tmavý stín, který je vyvolán ne příliš ostrým světlem
- boční Spot má namodralý nádech, a je tak v lehkém kontrastu s Hemi, které má lehce nažloutlý odstín
A takto vypadá naše mechanická paže po renderu:
TEXTURY
Nyní budeme vytvářet textury pro každou z unwrapovaných částí. Parametr, nad kterým bychom se rozhodně měli pozastavit, je velikost textury. Blender exportuje texturu ve tvaru čtverce o libovolné velikosti do 16 384 pixelů. Spousta lidí zastává názor, že textury by měly být aspoň dvakrát větší než renderovaný obrázek/animace. Nevím, zda se sem řadím i já, vždy kreslím textury na ploše mezi 1 500 x 1 500 a 3 500 x 3 500, nicméně musím přiznat, že zatím jsem nerenderoval ve větším rozlišení než 1 280 x 532. Záleží samozřejmě i na výkonu počítače, ne každý (včetně mě) si může dovolit kreslit v tak obrovských rozlišeních jako 16 384 x 16 384, navíc pro "denní" potřebu postačí přibližně do 4 000 x 4 000.
Budeme chtít, aby se paže přiblížila realitě, kromě škrábanců tedy bude i na některých místech zrezivělá. K nakreslení textur je vždy lepší použít některý z "vyšších" programů (tzn. takový, který dokáže zpracovat vrstvy), já osobně střídám mezi Photoshopem a Gimpem a využívám zrovna to, co ten druhý zvládá lépe, popř. jak jsem zvyklý. Myslím ale, že je to individuální, věřím, že se najdou i takoví, kteří používají např. Corel PhotoPaint. Princip "špinění" není nijak složitý, popíšu postup jak pro Photoshop, tak pro Gimp:
Photoshop
Myslím, že leckdo z vás tuto "fintu" zná, nejde o nic jiného než režim prolínání vrstvy. Začneme tedy exportem textury do .tga formátu:
Nyní nahrajeme do Photoshopu a provedeme rutinní postup. Unwrap je černá síť na bílém podkladu, takže jej nenecháme nečinně přihlížet. Vrstvu s UV zkopírujeme a horní nastavíme režim krytí na násobení. Spodní vyplníme bílou barvou a vložíme jednu (později možná i více) vrstvu mezi ně:
Nyní vyplníme barvami:
Jako vrstvu nad těmito barvami je nejvýhodnější použít nějakou fotku zašlého plechu, železného plátu atp. Kvalitním zdrojem textur může být třeba mayang.com/textures nebo cgtextures.com, ovšem pozor! Limit pro mayang činí 16 stažených textur za den, u cgtextures je to 15 MB/den.
Tuto texturu případně ořežeme a umístíme na unwrap tak, že ji umístíme do zvláštní vrstvy pod barvou. Samozřejmě podle fantazie upravíme jas, kontrast a krytí. Nezapomeňte, že je lepší, když ve švech nebude textura příliš výrazná, k její úpravě na takovýchto místech je vhodné použít gumu s velkou plochou a nastavením krytím např. na 10 %. Nyní nastavíme volby prolnutí v okně Styl vrstvy pro naši vrstvu s barvami (okno lze vyvolat i dvojkliknutím na obrázek vrstvy v okně Vrstvy):
Tato úprava funguje na principu, že podkladová vrstva se bude prolínat na těch místech, kde stupně šedi překračují hodnotu, kterou nastavíme posuvníky. Pokud před kliknutím držíme ALT, posouváme jen jeden trojúhelníček a nastavujeme tím sílu přechodu. Po chvíli nastavování již vypadá textura celkem k světu:
Po aplikaci na model dostaneme v celku ucházející výsledek. Samozřejmě, s texturou by se dalo ještě pohrát, nastavit specifické plochy, které budou bez škrábanců, nicméně úkolem tohoto tutoriálu je podat návrh, jak kreslit texturu; do vyčerpávajících podrobností zabíhat nebudu, tyto nechť každý podrobí své vlastní fantazii. Takto vypadá prozatímní render:
Gimp
Následující postup by se dal uplatnit i ve Photoshopu, my si jej ovšem vyzkoušíme v Gimpu, protože ten, až pokud mé znalosti sahají, nemá možnost prolínání podkladové vrstvy. Budeme tedy pracovat s maskami průhlednosti. Začneme podobně jako u předchozího postupu - nahrajeme .tga soubor, vytvoříme kopii, spodní vrstvu vyplníme bílou, horní nastavíme na násobení a vložíme další, ve které určíme barvy. Poté přidáme další násobící vrstvu, do které umístíme škrábance:
Po vložení textury plechu a po chvíli hraní si s jasem a kontrastem můžeme dostat např. takovýto výsledek:
Dalším krokem bude přidání alphamapy vrstvě se škrábanci, aby se objevovaly jen na některých místech. Vzhledem k tomu, že rád experimentuji, jsem použil jako alphamapu upravenou fotografii mušlí:
Tento obrázek tedy zkopírujeme do masky vrstvy. Pro ty, kteří se s maskou vrstvy setkávají poprvé, osvětlím způsob jejího použití: maska určuje průhlednost obrázku díky černobílé škále. Černé body jsou zcela průhledné, bílé body jsou zcela neprůhledné. Pro práci s maskou se používá kombinací ALT+LMB (na obrázek masky v okně Vrstvy) - k přepnutí na editaci masky/vrstvy - a CTRL+LMB - k zapnutí/vypnutí použití masky. Po vložení obrázku vznikne poněkud kuriózní překrytí, nicméně i přesto jej můžeme aplikovat na model:
Výsledek i přes svůj kuriózní postup opět docela ujde. Kdyby ovšem maska vrstvy se škrábanci měla větší viditelnost, výsledek by to neovlivnilo nejpříznivěji.
Jeden z těchto dvou postupů použijeme i na zbytek modelů. Jediný, u kterého se pozastavím, bude stojan, který bude mít černé pruhy. Na unwrapu stojanu máme rovnou plochu, díky které budou pruhy namapovány přesně tak, jak chceme, aniž by byly viditelné švy. Kdyby měl unwrap této části modelu nepravidelný tvar, nakreslení bezešvých pruhů by bylo téměř nemožné. Po nahrání obrázku vytvoříme ve zvláštní vrstvě černý pruh, který nakloníme:
Nyní pruh uřízneme přesně hranách a zkopírujeme do této pozice:
Za pomoci nástroje Posun a držením SHIFT klávesy přesuneme vodorovně přesně na hranu - vznikl nám tak bezešvý pruh:
Spojíme pruhy do jedné vrstvy a nakopírujeme podle citu nahoru i dolů:
A výsledek je otřesný. UV koordináty výrazně rozhazuje síť s poměrně malým počtem polygonů. Jediný způsob, jak toto napravit, je horizontálně použít multicut (K - Multicut) na spodní část stojanu. Čím více řezů, tím přesnější bude mapování, já jsem použil 20. Nemusíte se obávat přetváření unwrapu, síť, kterou upravíte pouze řezáním, se updatuje sama v UV image editoru. Po aplikaci řezů je výsledek opravdu takový, jaký jsme chtěli. Dokonce i švy téměř zmizely:
Pro ostatní objekty můžeme nestydatě zkopírovat materiál spoje mezi podstavou a stojanem. Ovšem pro hydraulický píst a ulnu je musíme zkopírovat tlačítkem Single User - tlačítko s číslem vedle názvu materiálu - na nich totiž budou místa s odrazem okolí, to znamená, že budou lehce odlišné. Pojďme se podívat, jak vyřešit tento drobný oříšek.
Na unwrapy nakreslíme jednoduchou texturu sestávající pouze z bílé a černé barvy, přičemž bílá bude definovat místa, která budou odrážet okolí. Takto bude vypadat reflexní mapa pro píst:
Připomínám jen unwrap pístu:
V material editoru nastavíme RayMir, ale posuvník necháme na 0. Map To samozřejmě UV a v Map input necháme zatrhlou pouze volbu RayMir. Chceme, aby byla odrazivá část pístu viditelná i bez nějakého výraznějšího okolí, takže DVar snížíme přibližně na 0.86, aby efekt odrazu nebyl 100 %. A zde je výsledek:
Totéž provedeme s koulí na vrchu ulny, čímž dokončíme texturování.
Animování
Jediná část, která nebude přímo animována armaturami, je samotný úchopový mechanismus. Svírání lopatek bude nejlepší vyřešit Shape keys. Ve výchozím tvaru tedy budou lopatky od sebe a ve druhém u sebe.
Armatury se budou starat o co nejjednodušší systém animování, vzhledem k tomu, že jsme vytvořili mechanicky se pohybující objekt, budeme muset armatury přesně situovat do středů kloubů, což ovšem není žádný problém. Spodní část armatury zarovnáme ke středu podstavy a konec první kosti ke středu kloubu.
Pozn.: Dejte si dobrý pozor, jak kosti zarovnáte. Stalo se mi, že jsem po hodině neúspěšného zkoušení všech možných omezení zjistil, že mám jednu kost posunutou o desetinu Blender jednotky
Vršek druhé kosti zarovnáme ke středu koule a poslední článek vytáhneme prostě kousek nahoru - nemá žádné omezení. Celkově máme 8 kostí - 1 na stabilní podstavu, 3 na deformaci paže, 2 na deformaci pístu, jeden IK solver a zvláštní kost, která bude určovat směr natočení "dlaně" (vážně už mě nebaví vypisovat každý název zvlášť :) ):
Poměrně velkou péči musíme věnovat i parentování jednotlivých kostí. Spodní část pístu (pist1) bude podřízená stojanu a horní část pístu (pist2) bude podřízená ulně. Zvláštní kost ani IK solver nebudou podřízeny ničemu. Doporučuji odzkoušet funkčnost systému ještě předtím, než jej aplikujeme na paži. "Ruka" (žlutá kost) má nastavený jako IK solver kost ik a constraint Copy Rotation s těmito parametry:
Díky této Copy Rotation můžeme ovlivňovat rotaci "ruky" externí kostí - to usnadňuje ovládání. Co se týče hydrauliky - pro horní i dolní část postačí omezení Locked Track, díky kterému bude jedna kost "sledovat" druhou:
Co se týče limitů jednotlivých kostí:
- podstava má zamčenou rotaci ve všech osách
- stojan má zamklé osy X a Z
- ulna má zamklé osy X a Y, osu Z má omezenou od -115 do 0 stupňů
- "žlutá kost" má limity na X a Z rotaci, oboje od -40 do 40 stupňů
Bohužel tím, že jsme nastavili limit pro ulnu, že může rotovat pouze na část jedné strany, jsme znemožnili plné využití IK solveru. Pokud je ulna stočená dolů a my s ním pohneme za jistou hranici, ulna se narovná nahoru a i ostatní kosti nepříjemně poskočí. Tento problém můžeme v animaci řešit jedině tak, že budeme rotovat celým objektem armatury. Je možné, že tento neduh je bug, nicméně se spíš přikláním k možnosti, že jde o logickou chybu - na druhou stranu nemůžeme nechat ulnu rotovat i na druhou stranu, tím bychom odsoudili systém hydrauliky k nefunkčnosti:
Nezodpovězenou otázkou dosud zůstaly hadičky. I s nimi lze udělat krátký proces. Klíčovým faktem bude, že ani jedna hadička nebude podřízena úplně. Začneme tím, že pomocí ALT + C převedeme na mesh a vytvoříme vertexové skupiny stojan a pist1. Skupina stojan bude obsahovat všechny vertexy hadičky a pist1 jen přibližně 1/3 vertexů na konci spojeném s pístem. Přepneme se nyní do weight paint modu (CTRL + TAB nebo tlačítkem na headeru 3D okna):
Nyní nastavíme v Edit buttons na panelu Paint různé hodnoty od 0 do 1 a nakreslíme na model - 0 (modrá) nebude ovlivňovat deforaci nijak, 1 (červená) úplně:
Nyní stačí tento postup zopakovat i pro druhou hadičku a můžeme naparentovat armaturu všem objektům. Tím jsme téměř u konce:
Jak jsem již zmínil, tento animační systém nesplnil svůj úkol na 100 %, k ovládání nám totiž nestačí pouze posouvání IK solveru, ale musíme rotovat i celou armaturou. Doufám ovšem, že tento drobný problém nikoho neodradí.
Node editor
Po nachystání několika animačních klíčů si můžeme pohrát i s node editorem, já jsem se spokojil pouze s nastavením Vector Bluru:
A zde je animace na 130 framu:
Na závěr bych chtěl říct jen to, že úkolem dnešního ani minulého článku nebylo podat dokonalé konstrukční řešní takovéhoto přístroje - jsem si vědom, že bych od techniků obdržel nehezké poznámky - ale podat jakési povědomí o možnostech využití Blenderu v oblasti animace. Doufám, že byl článek přínosný, a těším se příště na shledanou.
-
14. května 2014
Jak vkládat snímky do galerií a soutěží? Stručný obrazový průvodce
-
23. dubna 2014
Konica Minolta přenesla výhody velkých zařízení do kompaktních modelů
-
12. června 2012
-
9. dubna 2014
-
29. listopadu 2013
-
6. září 2004
OKI snižuje ceny barevných laserových tiskáren C3100 a C5200n
-
13. května 2004
-
19. ledna 2004
QuarkXPress Passport 6: předvedení nové verze na konferenci Apple Forum 27.1.2004
-
6. února 2001
-
30. listopadu 2014
Nový fotoaparát α7 II: první plnoformát s pětiosou optickou stabilizací obrazu na světě
-
5. srpna 2024
Bubnový scanner na 4000dpi optické rozlišení + PC + software
-
8. září 2024
-
14. října 2024
-
5. listopadu 2024