Přehled nových funkcí v Blenderu (12. část): Částice (2/3) - Grafika.cz - vše o počítačové grafice

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

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:

Nastavení Boids fyziky

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 (Stisknutá ikona Physics Buttons). Přidejme si například krychli a udělejme z ní predátora:

Nastavení predátorské krychle

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
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:

Nastavení Boids fyziky

  • 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
Všechna tato tlačítka mají oproti těm ostatním "nastavovacím" jednu zvláštnost - lze je nastavit v rozmezí -1.000 až 2.000. Jednoduché - hodnota -1 znamená dodržovat pravidlo opačným způsobem, hodnota 0 znamená, že se pravidlo nijak neprojeví, hodnota 1 projeví pravidlo naplno a hodnota 2 nakonec pravidlo projeví "přehnaným" způsobem. Pojďme si s naší nachystanou scénou provést malý experiment. Nastavíme boidům hodnotu Avoid na 0 a spustíme animaci. Boidy krychli zcela ignorují:

Při srážce se nic nestalo

Pokud ale nastavíme hodnotu Avoid na 1, všechny částice už budou reagovat jinak:

Částice prchají

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
1. snímek animace
10. snímek animace
10. snímek
50. snímek animace
50. snímek (krychle je uvnitř icosphere)
70. snímek animace
70. snímek
100. snímek animace
100. snímek

Ve Physics panelu máme ještě další nastavení, která se týkají pohybu boidů:

Nastavení Boids fyziky

  • 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í.

Útěk po 2 osách
Se zapnutým 2D
Kopírování povrchu
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:

Naklíčovaná pozice částic

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í:

Panel klíčované fyziky

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í)
Pozn.: pokud nemáme aktivováno tlačítko First, vidíme i slider Time. V něm nastavíme, ve které části animace se částice dostanou na tento objekt (0.000 = začátek animace, 1.000 = konec), přičemž celkovou délku animace ovlivníme parametry Sta, End a Life na prvním objektu. Pokud bychom chtěli animaci "podržet" na určité pozici (např. na naší opičce), musíme daný objekt zkopírovat a nastavit jej jako další "zastávku" s tím, že nastavíme větší číslo na posuvníku Time. Částice se poté zdánlivě zastaví a budou pokračovat až v momentě, který nastavíme.

Vizualizace

Panel Visualization upřesňuje, jak se budou částice zobrazovat ve 3D okně a jak se budou renderovat:

Panel vizualizace

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
Path - používá se u statických částic (popíšeme později) nebo u klíčované fyziky - zde vytvoří "vlasy" na liniích, po kterých poletí částice
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
Billboard - místo částic se zobrazí plany, jež můžeme libovolně otexturovat a natočit. Plany jsou defaultně natočeny ke kameře. Co je důležité vědět ohledně textur je fakt, že objekt musí mít UV koordináty (být unwrapován) a textura musí být v Map Input panelu namapována jako UV. Pojďme se podívat na nastavení Billboardu:

Nastavení Billboard typu částic

  • Lock - uzamkne zarovnání částic jen pro dvě osy:

Bez stisknutého Lock
Bez uzamknutého zarovnání
Se stisknutým Lock
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))
Pojďme si ještě jednou připomenout panel vizualizace a popsat, co s jeho pomocí dokážeme:

Panel vizualizace

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
Render:
  • 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:

Panel Extras

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
Time:
  • 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)
Pravá část panelu:
  • 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:

Atributy emitování

  • 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:

Particles Attributes

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

Bouchající opice

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.

Zásobník

  • 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
Ostatní atributy animace (jako např. počet úlomků, počátek a konec animace,...) určíme nastavením v Particle System panelu (např. Amount = počet částic = počet úlomků, atp.). Aby se nám mesh rozletěl, měl by mít v physics buttons nastavené nenulové hodnoty pohybu po normále (Normal) a náhodného pohybu (Random). Zajímavé je též využití Explode modifikátoru v kombinaci s Boids nebo Keyed fyzikou.

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í:

 » Rubriky  » VSE  

 » Rubriky  » 3dscena  

 » Rubriky  » Go verze  

 » Rubriky  » 3D grafika  

Poslat článek

Nyní máte možnost poslat odkaz článku svým přátelům:

Váš e-mail:

(Není povinný)

E-mail adresáta:

Odkaz článku:

Vzkaz:

Kontrola:

Do spodního pole opište z obrázku 5 znaků:

Kód pro ověření

 

 

 

 

 

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

Uživatelské jméno:

Heslo: