Annak érdekében, hogy koncentrálhassunk az új funkciókkal való munkára, előkészítettem az anyagok csomagjában egy projektállományt: PSD_R21_VektorVolumen_start.c4d. Tartalmaz egy parametrikus Gömb-objektet és két Részecske-Emittert, amelyek fentről illetve lentről irányulnak a gömbre. Ennek a tutorialnak a célja az lesz, hogy a kibocsátott részecskék a gömbre érjenek és ott minden irányba szétterjedjenek.
Nézzük meg röviden a jelenet összetevőit. Mindkét Részecske-Emitter azonos beállításokkal rendelkezik: 500 részecskét bocsátanak ki a 300. képig, a részecskék Élettartama 1000 képfolyamig tart, ami az animáció hosszának a végéig terjed.
Egy kattintás az indítógombra megmutatja, hogy mindkét emitter részecskéi jelenleg észrevétlenül haladnak át a gömbön. Ezt most meg fogjuk változtatni.
Az első vektormező felépítése
Elkezdjük azzal, hogy a Gömb geometriájából egy első vektormezőt generálunk. Ez a célja, hogy a becsapódó részecskéket véletlenszerű mintával irányítsa a gömb körül.
Ehhez először hozzunk létre egy Térelőállítót a Tér menüből.
Ezután húzzuk a Gömb-objektumot és ejtsük a Belsőobjektum-kezelőbe a Térelőállítónál. Jelenleg azonban még a Tértípus elnevezésű mezőben a Távolságtér van megadva, ezért a térelőállító jelenleg még a gömböt vokszekkel építi fel.
A gömböt váltani akarjuk egy vektormezővé, egyszerűen módosítsuk a Tértípust a hozzá tartozó menüben a Vektor típusra.
A vektormező még kicsit durva tagolású, ezt most megváltoztatjuk a Voxelméreten keresztül. Egy 5 cm-es érték teljesen elegendő a céljainkhoz.
A korábbi Gömb-objektumunkból most egy tünetlemezter lévő mezőjévé vált a Volumenmeshernek köszönhetően.
Ha közelebbről megnézzük a vektormezőt, akkor láthatjuk az egyedi vektorokat, amelyek mindegyike merőleges az adott pozícióra a gömb felszínén. Ennek eredményeként származó erők tehát mindegyike a gömbünktől távolra mutatnak. Ez nem igazán az, amire a részecskék átirányításához a gömb körül szükségünk van.
Két dologról kell tehát gondoskodnunk: A vektoroknak a gömb felszínével párhuzamosnak kell lenniük, és ráadásul véletlenszerű mintázatúnak kell lenniük, hogy a részecskéket a felszínen különböző irányokba irányítsák.
Egy Véletlenmező gondoskodik a véletlenszerű mintázatról, amit a Generálás>Mező menüből hozzunk a jelenetbe.
Tegyük a Véletlenmezőt húzzuk és ejtsük a Belsőobject-kezelőbe a Térelőállítónál. A v térelőállító beállításai ablakban a Véletlenmező ezután a gömb alatt listázva lesz látható.
Egy pillantás a 3D-nézetre mutatja, hogy a két vektorpólót még nem olyan módon működik, ahogy szükségünk van rá. A Véletlenmezőnek végül is a felsorolt vektor-gömbre kell hatnia.
Ez elérhető azáltal, hogy kiválasztjuk a Véletlenmezőt az objektumok listájában a Térelőállítónál és a Véletlenmező beállításainál beállítjuk az Elhelyezési téret előző objektumokra.
Most a Véletlenmező a várt módon hat minden a gömb által biztosított Vektorokra. Csak meg kell még biztosítanunk, hogy a kaotikusan elfordított vektorok a gömbfelszín mentén mutassanak.
A Véletlenmezőnek és a Gömbnek a megfelelő kiértékelési módja úgy tűnik, még nem illeszkedik teljesen össze. Az objekt-listában válasszuk ki a Mód-menüt a Véletlenmezőnél a keresztté. Ez a módszer erre van kialakítva, hogy a két egymással összefüggő vektor merőlegességét keresztmetszet keresztmetszetén keresztül határozza meg.
Amint a 3D nézetünk mutatja, a vektorok ennek a lépésnek köszönhetően tangenciálisan haladnak a gömb körül, ahogyan azt szeretnénk.
Erőtér használata
Első lépésként felkészítettük a vektor mezőt a részecskék útjára a gömb körül, azonban sajnos a részecskék mindeddig nem veszik észre a vektorainkat.
Annak érdekében, hogy az általunk létrehozott mező vektorai erőként hatni tudjanak, szükségünk van egy ún. Erőtér-objektumra. Megtaláljuk a Parancsok>Szimuláció>-Erők menüben.
Azért hogy a mi vektor-terünk erőtérként működhessen, megnyitjuk az Erőtér beállítási ablakát, és az Elem generátor-t Drag-and-drop módon behúzzuk a Objektum-kezelőbe az Erőtér-objektum Objektum-mezőjébe.
A böngészőben elengedéskor egy kis kiválasztási menüvel találkozunk majd, ahol azt kérdezik, hogy az Elem generátor legyen-e Pont- vagy Térelem objektum. Persze ebben az esetben a Térelem objektum lehetőséget választjuk.
Ezután a mi általunk definiált Elem generátor vektor-térelem már a Erőtér listán szerepel. Ahogyan láthatjuk, az Erőtér is rétegek és számolási módszerek segítségével működik, amelyek új lehetőségeket nyitnak meg az Erőtér-objektum használatával.
Ha elindítjuk az animációt a lejátszás gomb segítségével, láthatjuk, hogy a részecskéket már befolyásolja a vektor mezőnk.
Az eredmény még nem az igazi. Jelenleg az Erőtér-objektum beállításaiban az Által sebesség típusát adjuk a sebességhez aktív, azaz a részecskék csak kicsit lendületesebbek lesznek. Azonban azt szeretnénk, hogy a részecskék irányukat a vektoroknak megfelelően változtassák, amit a Sebesség típusa menüpontban választhatunk ki.
Ezután már sokkal jobban néz ki az animáció. Sok részecske már azon dolgozik, hogy megtalálja az útját a gömb felszínén, néhány másikat azonban a gömbtől távolítunk el. Ráadásul ezeknek a távolított részecskéknek nagyon furcsa útvonalakon mozogtak.
Utóbbi problémát nagyon egyszerűen orvosolhatjuk azzal, hogy az Erőtér-objektum beállításainál az Elem generátor-t kiválasztjuk az Objektum-listában, majd az Elemek oldalon az Ugrás módja beállítást Következő helyett Linire módosítjuk. Ekkor nem csak a következő voxelhez kapcsolódunk vagy ív alakúra alakítunk, hanem egy egyenes középértéket használunk.
Ezt a változtatást követően a gömbtől távolított részecskék már sokkal szabadabban mozognak. Most gondoskodunk róla, hogy ezek a részecskék is a gömb felszínén maradjanak.
Annak érdekében, hogy a gömbfelszínen futó részecskék pályái ne legyenek túl finomak, növeljük a Zaj alatt álló Méret-et a Zajmező beállításaiban. Természetesen mindenki szabadon kísérletezhet a Zajmező beállításaival tovább.
Ha kiválasztjuk a Zajmező-objektumot, akkor a Méretet paramétert interaktívan változtathatjuk a 3D nézetben egy saját kapó segítségével. Én például 300%-os Méretet választottam, hogy jól látható legyen a Zaj a vektoroknál.
A második vektor mező felépítése
Amint a „Belső gömb” objektum neve is sugallja, az egyik vektor mezőt már létrehoztuk belső gömbhöz, most létrehozunk egy második vektor mezőt egy külső gömbhöz is. Ennek a második, kissé nagyobb gömbnek azt a célt kell szolgálnia, hogy az esetlegesen visszaverődött részecskéket visszavigye a belső gömb felszínére.
Duplikáljuk ehhez a gömb objektumot a Ctrl billentyű lenyomása mellett a Objekt kezelőben, hagyjuk őket a Elem generátor alatt való alárendelésüket, és nevezzük el őket "kívül" kiegészítéssel, hogy meg lehessen különböztetni a két gömböt. Az külső gömbnek egyébként 2 cm-rel nagyobb Sugara van, hogy legyen hely a részecskék számára.
A térfogateredményző a külső, második gömbből az ehhez tartozó vektormezőt is generálta és hozzáadta az már meglévő objektumokhoz.
A térfogateredményző beállítási ablakának objektumlistájában a külső gömb most a legfelső helyen szerepel, és utolsóként kerül feldolgozásra. De mi azt szeretnénk, hogy ezt először a részecskék átjussák, majd a részecskék utána már ne tudjanak kijutni.
Rendet teremtünk az Objektum-listában. Először az "külső gömb" elemet helyezzük az objektumlista aljára. Mivel a Véletlenmező hat a mögött lévő "belső gömbre", de közvetlenül az "külső gömb" után kell feldolgozni, egyszerűen létrehozunk egy mappát, amelybe áthelyezhetjük a Véletlenmezőt és a belső gömböt. Ehhez kattintsunk a Mappa-gombra az objektumlista alatt.
Ezután húzzuk át a Véletlenmezőt és a belső gömböt a térfogateredményző objektumlistájából ebbe az új mappába.
Mivel a külső gömb vektorai merőlegesen állnak a gömb felszínére, elsőként hatnak, és az érkező részecskéket jelenleg teljesen visszaverik. Hogy megfordítsuk a külső gömb vektorainak mezőjét, használunk egy Térfogatszűrőt, amelyek közül néhány rendelkezésre áll a vektorokkal való munkához. A Térfogatszűrő-menüt megtaláljuk az objektumlista alatt, és kiválasztjuk a Vektor Invertálás-Szűrőt.
Mivel szeretnénk, hogy a Térfogatszűrő kizárólag a külső gömb vektoraira hatással legyen, egyszerűen ráhúzzuk a "külső gömb" elé a célszerűség kedvéért.
Most már minden a kívánt módon kell működjön. A lejátszásgomb megnyomásakor látható, hogy az összes vektor-mező korrektül van beállítva. A részecskék érintik a gömböt és véletlenszerűen eloszlanak a felszínen.
Térjünk még egy kicsit vissza életbe az animált Véletlenmező zajmintájával.
Ehhez nyissuk meg a Véletlenmező beállítási ablakát, és állítsunk be egy Kezdősebességt, az én példámban 50%-ot.
A részecsketörések most az animált Véletlenmező mintázatánál rövidebbek lesznek, és több helyen szétnyílnak.
Részecskék átalakítása sín-mezővé
Mivel részecskéként most természetesen bármely - lehetőleg kis - objektumot elindíthatjuk az úton a gömbfelszín mentén. Egy másik lehetőség, hogy automatikusan lekövessük a részecskék utait és átalakítsuk azokat sínutakká. Ehhez szükségünk van a Távolkövető-objektumra a MoGraph menüből.
Azért, hogy mindkét Emitter részecsketöréseit sínutakká alakítsuk, húzzuk át a két Emitter-objektumot a Távolkövető Kötés mezőbe a Távolkövető-objektum beállítások ablakában.
Mert az Emitterek idővel elég sok részecskét bocsátanak ki, korlátozzuk a Távolkövető által létrehozott sínutak hosszát. A Távolkövető-objektum beállításainál válasszuk ki a Korlátt a Vég…
… és állítsuk be a Képek paraméteren keresztül a sínutak hosszát. Én 100 képre döntöttem. Az alacsonyabb értékek ennek megfelelően rövidebb sínutakat eredményeznek.
Egy lejátszás gombra kattintva most megfigyelhetjük, hogy a Távolkövető által generált sínutak hogyan rajzolódnak animált módon a gömbfelszín mentén.
Az oktatófotó elkészítéséhez létrehoztam egy kis kör objektum duplikátumát, és piros anyaggal elláttam. A Távolkövető-objekten kívül az összes többi objektum láthatóságát ki lehet kapcsolni az Objekt-kezelőben.
A Követő-objekt által generált spline-pályákból 3D objektumok létrehozásához például az Követő-objektumot össze lehet rendelni egy Kör-objektummal egy Húzás-objekthez. Ebben az esetben azonban figyeljetek a részecskék számára és élettartamára, mivel egyébként a számítógép nagyon gyorsan lelassul…