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
Přehled nových funkcí v Blenderu (12. část): Částice (2/3)
1. října 2008, 00.00 | V minulém díle jsme si popsali základní orientaci v novém částicovém systému a některé jeho speciality. Dnes si projdeme Boids a Keyed fyziku, typy zobrazení a v neposlední řadě také kolize.
Boids physics
Co je Boids fyzika vůbec zač? Jde o jednoduchou umělou inteligenci, kdy mají částice (podle nastavení) tendence vyhýbat se ostatním částicím, "utíkat" před "predátory" atp. Lze tak např. simulovat hejno ryb či ptáků, které se bude vyhýbat překážkám či predátorům. Každá z částic přitom bude respektovat jistá nastavitelná pravidla. Ta se nacházejí v panelu Physics:
Predátorem může být objekt nastavený jako záporné sférické silové pole. To můžeme nastavit v Object buttons v Physics buttons (). Přidejme si například krychli a udělejme z ní predátora:
Důležitá je pro nás informace, že jde o záporné pole. Naklíčujme nyní animaci krychle, která vletí do naší icosphere z minula, na niž jsou naparentovány hranaté objekty. Například můžeme udělat animaci na 500 framů s tím, že na 50. framu bude krychle zhruba uprostřed icosphere, na 100. pak zhruba stejně daleko jako na začátku, ale na druhou stranu.
Letící krychle na 50. framu
Máme nachystanou malou scénu, nyní se pojďme podívat na nastavení Boids fyziky. Každý z údajů představuje nějaké pravidlo, které bude částice dodržovat. Šipky vlevo nám umožňují přesouvat jednotlivá pravidla nahoru nebo dolů, čímž se mění jejich priorita:
- Collision - vyhnout se deflektním objektům
- Avoid - vyhnout se predátorům
- Crowd - vyhnout se ostatním částicím (resp. boidům)
- Center - držet se centra hejna
- AvVel - udržovat průměrnou rychlost
- Velocity - udržovat rychlost blízkých okolních boidů
- Goal - vyhledávání úkolu (tzn. objektu, jež budou boidy následovat)
- Level - dodržovat Z-souřadnice
Pokud ale nastavíme hodnotu Avoid na 1, všechny částice už budou reagovat jinak:
V závislosti na tom, jestli nastavíme např. Avoid na 2 nebo stáhneme posuvník u nastavení síly silového pole krychle se částice budou chovat ještě silněji podle tohoto pravidla. Pokud nastavíme velké hodnoty, částice se celkem "organizovaně" rozutečou:
1. snímek animace
10. snímek
50. snímek (krychle je uvnitř icosphere)
70. snímek
100. snímek
Ve Physics panelu máme ještě další nastavení, která se týkají pohybu boidů:
- 2D - určuje, zda se budou částice pohybovat v celém prostoru, nebo jen po dvou osách:
- GroundZ - udává výšku (Z-hodnotu), v níž se budou částice držet
- OB - do této kolonky můžeme vepsat jméno objektu, jehož povrch budou částice kopírovat. GroundZ bohužel ale neovlivňuje výškový rozdíl mezi částicí a povrchem. Proto, pokud chceme, aby částice letěla nad (nebo pod) povrchem, musíme nejprve animaci zapéct a poté přesunout mesh, jehož povrch částice kopírují.
Se zapnutým 2D
Kopírování povrchu
- MaxVelocity - maximální ryclost
- AvVelocity - průměrná procentuální hodnota maximální rychlosti, např. pokud MaxVelocity má hodnotu 10.000 a AvVelocity 5.000, průměrná hodnota rychlosti částic bude 5.000
- LatAcc - určuje, jak rychle se boid bude moct otočit
- TanAcc - určuje, jak moc může částice naráz zrychlit, aby vyhověla některému pravidlu
- Banking - "škubání" boidů při otočce
- MaxBank - jak moc může boid škubnout během jednoho vypočteného kroku
- N - určí, kolik sousedů bude ovlivňovat parametry, u nichž na počtu sousedů záleží (viz např. AvVel nebo Center)
Keyed physics
Klíčovaná fyzika nám bude principielně dobře známá. Stejně jako můžeme naklíčovat do animace jakoukoli informaci o objektu (velikost, polohu, barvu, ...), můžeme také naklíčovat jednotlivé pozice částic. Ty nám tak mohou např. vytvářet různé nápisy, měnit se ve zvířata atp. Takto např. může - s použitím 5 000 částic z našeho kladivovitého objektu - vypadat Suzanne po zasazení do klíčované animace:
A jak na to? V prvé řadě musíme nastavit Keyed fyziku. Objeví se nám nastavení ne nepodobná těm předchozím, je zde ale pár podstatných odlišností:
Tlačítko First nám říká, že na tomto meshi animace začíná a z tohoto meshe budou částice doopravdy emitovány (z ostatních meshů se nic neemituje - všechna nastavení ovlivňují pouze pozici animovaných částic). Dále nás bude zajímat spodní část (Keyed Target). Do kolonky OB vepíšeme název objektu, na nějž se mají částice přesunout. Vlevo od kolonky OB pak určíme cílový částicový systém, jehož parametry upřesní rozmístění animovaných částic.
Na čem všem závisí poloha animovaných částic na následujícím objektu? Rozhodují tyto údaje:
- Počet částic - pokud je na cílovém objektu např. jen 30 částic a první objekt jich emituje více, částice se překryjí, aby nezaplnily více než 30 pozic na cílovém meshi (pokud nenastavíme Random)
- Rozmezí Sta a End - pokud se všechny částice vyemitují řekněme mezi 2 snímky, budou držet tvar každého meshe, kterým projdou. Pokud bude emitování trvat déle, tvary meshů možná nebudou příliš dobře rozpoznatelné
- Emit from u cílového meshe - pokud nastavíme, že se částice cílového systému budou emitovat např. jen z vertexů (množství částic bude stejné jako počet vertexů v meshi), animované částice se rozmístí tak, aby překryly všechny vertexy cílového meshe. Pokud nastavíme náhodné emitování ze všech faců, pak se animované částice přesunou kamkoli na síť (viz Suzanne nahoře). Obdobným způsobem výsledné rozmístění ovlivní i nastavení emitování z celého objemu meshe (Volume)
- Rotation (Physics panel) - pokud je na částicích vidět změna rotace, veškeré úpravy můžeme provést zde (např. nastavit jinou počáteční rotaci nebo náhodné natočení)
Vizualizace
Panel Visualization upřesňuje, jak se budou částice zobrazovat ve 3D okně a jak se budou renderovat:
V roletkovém menu si můžeme vybrat z několika způsobů vyobrazení:
None zaručí, že se částice nezobrazí ani ve viewportu, ani na renderu, pokud ale mají silové pole, to se bude projevovat i nadále.
Point (bod), Circle (kolečko), Cross (kříž) a Axis (osový kříž XYZ) - tyto typy slouží k odlišení
jednotlivých částicových systémů, nastavení mají shodná.
Line - zobrazí částice jako čáry.
- Speed - vynásobí velikost čáry rychlostí částice
- Back - délka částice od centra v protisměru pohybu
- Front - délka částice od centra ve směru pohybu
Object - místo částic se bude zobrazovat libovolný objekt, jehož jméno vepíšeme do kolonky OB: (vyzkoušeli jsme např. s našimi kladivovitými objekty)
Group - obdobně jako u Object, zde se ale budou vykreslovat místo částic rovnou celé skupiny objektů
- Pick Random - vybírá objekty ve skupině v náhodném pořadí (zobrazí místo částice vždy jen 1 objekt)
- Dupli Group - použije namísto jednoho objektu celou skupinu
- Lock - uzamkne zarovnání částic jen pro dvě osy:
Bez uzamknutého zarovnání
S uzamknutým zarovnáním
- Roletkové menu Align to - určuje, podle které osy budou plany zarovnány (vše vychází z objektu, na nějž jsou plany natočeny), na výběr máme osu X, Y, Z, vektor rychlosti a vektor rotace cílového objektu (View)
- Tilt - určuje natočení planů
- Rand - náhodná variace natočení planů
- UV Split - určí, na kolik řádků/sloupců se rozřeže namapovaná textura (1 = žádné řezání, 2 = rozčtvrcení atp.). Na každý plane se poté namapuje jiná část rozřezané textury. Aby se ale změny v praxi doopravdy projevily, musíme v nejspodnějším roletkovém menu vybrat Split a do kolonky napsat jméno UV vrstvy (defaultně "UVTex")
- Roletkové menu Animate - určuje, jak se bude s časem animovat textura na jednotlivých billboardech:
- None - žádná animace
- Time - jednotlivé části textury se postupně objevují na každém plane
- Angle - zobrazí jinou část textury v závislosti na natočení kolem osy, k níž jsme plany zarovnali, pokud použijeme k zarovnání vektor natočení cílového objektu, animace se bude odvíjet od parametru Tilt
- Offset - určuje, podle čeho se vybere první část rozřezané textury
- None - animace začne pro každou částici od první části textury
- Linear - na první částici začne animace první částí textury, na poslední částici začne animace poslední částí textury. Části textury na částicích mezi těmito dvěma budou dopočítány lineárně
- Random - vybere náhodnou část
- OffsetX - horizontální posun billboardu (vzhledem k centru částice)
- OffsetY - to stejné, ale ve vertikálním směru
- OB: - objekt, na nějž mají být billboardy natočeny (jak jsme uvedli výše, defaultně je to aktivní kamera)
- Roletkové menu UV Channel - jediným možným způsobem, jak přesně kontrolovat způsob mapování textury na billboardy jsou falešné UV kanály, které můžeme určit právě v tomto roletkovém menu
- Normal - koordináty jsou u všech objektů stejné
- Time-Index (X-Y) - každý billboard dostane přidělenou barvu. Podle čeho se tato barva vybírá? Vybere se jeden pixel z textury, přičemž souřadnici X určuje čas animace a souřadnici Y určuje index částice (= její pořadové číslo => později vyemitovaná částice = vyšší hodnota souřadnice Y)
- Split - tuto volbu využijeme pokud budeme chtít každému billboardu nastavit jinou část rozřezané textury
- UV - do této kolonky vepíšeme jméno UV vrstvy, která se použije na částice (pokud byste si nebyli jistí, kde tento název hledat, stačí se podívat do Mesh panelu v Editing buttons (F9))
Draw:
- Vel - zobrazí vektor rychlosti částice
- Size - zobrazí kruhovou oblast kolem každé částice
- Num - zobrazí číslo částice
- Draw Size - velikost částice v pixelech
- Disp - procentuální množství částic zobrazených ve viewportu
- Material - číslo materiálu, jenž se má pro systém použít (různě očíslované materiály lze upravit v Material buttons)
- Col - mělo by zobrazit částice ve viewportu stejnou barvou jakou má materiál, možná by se ale daly vést debaty o funkčnosti tohoto tlačítka
- Emitter - určí, zda se na renderu zobrazí i emitor částic
- Parents - pokud máme aktivovány potomky částic, toto tlačítko vykreslí i rodičovské částice
- Unborn - zobrazí částice ještě předtím, než jsou emitovány
- Died - zobrazí částice, které již zahynuly (budou nehybně na místě, kde měly zmizet)
Extras
V tomto panelu se nacházejí některé "extra" vymoženosti nového částicového systému. Pojďme se na tento panel podívat:
Effectors:
- GR: - sem můžeme vepsat název skupiny, která jediná se bude projevovat jako efektor. To znamená, že pokud budeme mít ve scéně, řekněme, 4 deflektní plany a 2 z toho budou ve skupině, jejíž název je vepsán do tohoto políčka, ty zbylé 2 naši animaci nijak neovlivní
- Size Deflect - při výpočtu bude brána v potaz celá velikost částice (ona kruhová oblast, o níž jsme mluvili dříve), nikoli jen jeden bod
- Die on hit - pokud je aktivní, částice při kontaktu s kolizním objektem zmizí
- Sticky - určí, jestli se částice přilepí na kolizní objekt či nikoli
- Global - nastaví všechny ipo křivky ovlivňující částice na globální čas (pokud budeme mít na částicích animovaný materiál a zatrhneme toto tlačítko, pro každou částici se animace materiálu bude vykonávat zvlášť (začne v momentě narození částice))
- Absolute - nastaví všechny ipo křivky ovlivňující částice na absolutní či relativní čas (využívá se ve stejném případě jako Global, ale zde proběhne animace pro všechny částice zároveň (tedy bez ohledu na to, na kterém snímku vznikly))
- Loop - opakuje emitování; pokud je aktivováno a některá částice zahyne, z emitoru hned vyletí nová
- Tweak - zrychlení či zpomalení animace (0.000 = žádný pohyb, 10.000 = 10x zrychlený pohyb)
- Seed - každé číslo zde vyústí v jiné náhodné číslo, které využívají částicové systémy - toho můžeme využít např. pokud máme 2 systémy se shodným nastavením - rozdíl mezi nimi (např. v místě emitování částic) bude patrný při změně tohoto čísla
- Size - velikost částice (viz tlačítko Size ve Visualization panelu)
- Rand - náhodná variace velikosti částic
- Mass from size - vynásobí hmotnost částice její velikostí velikostí
- Mass - hmotnost částice použitá pro fyzikální výpočty
Vertex Group:
Vertexové skupiny mohou různými způsoby ovlivňovat emitování částic. Stejně tak mohou být tyto efekty inverzně obrácené. Které to jsou se dozvíme v roletkovém menu na spodu Extras panelu:
- Density - bude emitovat částice podle váhy (weight paint mode; části meshe s větší vahou budou emitovat více částic)
- Velocity - částice emitované z části meshe s největší vahou budou mít největší rychlost
- Length - váha ovlivní délku částic-potomků (u vlasů)
- Clump - váha ovlivní rozbíhání se částic-potomků od částic-rodičů
- Kink - váha ovlivní vlnění potomků podél rodičů
- Rough1, Rough2, RoughE - váha ovlivňuje nepravidelnosti částic-potomků, podrobněji si je popíšeme u částic typu Hair
- Size - váha ovlivní velikost částice
- TanVel - váha ovlivní rychlost částice ve směru rovnoběžném s povrchem meshe
- TanRot - váha ovlivní rotaci směru rovnoběžného s povrchem meshe
- Effector - váha změní vliv efektoru na částice typu Hair
Textury mohou také ovlivňovat některé parametry emitování částic. V Map To panelu můžeme najít volbu PAttr, která nám zobrazí texturou ovlivnitelné atributy:
Jak vidno, textura může ovlivnit čas emise (Time), délku života částic (Life), hustotu rozmístění (Density), počáteční rychlost částic (IVel), nepravidelnosti částic-potomků (Rough), velikost (Size), vlnění (Kink), délku částic-potomků (Length) nebo rozbíhavost potomků (Clump).
Explode modifier
Poslední, co si dnes popíšeme bude nový modifikátor využívající právě fyziky částic. Jde o Explode modifikátor, díky němuž můžeme - jak je již podle názvu patrné - nechat mesh explodovat. Aby nám mesh explodoval, musí splňovat 2 podmínky: 1) musí mít nastavený částicový systém a 2) musí mít Explode modifikátor v zásobníku modifikátorů až pod částicovým systémem.
- Roletkové menu Vertex Group - za pomoci vertexové skupiny můžeme určit, které části meshe se rozletí
- Refresh - přepočítá facy, které byly přiřazeny jednotlivým částicím
- Split Edges - rozřeže hrany, aby nebyly jednotlivé úlomky příliš hranaté
- Unborn, Alive, Dead - určuje zda se mají zobrazit nenarozené, živé a mrtvé částice
A to je pro dnešek vše. Už nás čeká jen jeden díl zabývající se částicemi - v něm si rozebereme částice typu Hair, jejich ovládání a zvláštnosti a nakonec poodhalíme tajemství kolizí. Těším se příště na shledanou,
Tématické zařazení:
-
23. dubna 2014
Konica Minolta přenesla výhody velkých zařízení do kompaktních modelů
-
11. května 2014
-
23. května 2014
Epson na konferenci Droidcon Berlin ukázal nové možnosti čekající na vývojáře OS Android
-
24. listopadu 2014
-
13. května 2014
Samsung NX3000: retro styl, špičkový výkon a snadná konektivita v jednom přístroji
-
30. listopadu 2014
Nový fotoaparát α7 II: první plnoformát s pětiosou optickou stabilizací obrazu na světě
-
15. prosince 2014
Konica Minolta pomůže živnostenským úřadům s digitalizací dokumentů
-
11. května 2014
-
26. listopadu 2014
Canon Junior Awards již posedmé ocení mladé fotografy v rámci Czech Press Photo
-
21. srpna 2014