Növény növekedésének modellezése külön plug-in nélkül
A tutorialhoz ihletet egy Warcraft III-as videó adott. Ebben egy fa növesztett új gyökereket. A gyökérnövekedés szimulálására szerencsére a Maxben vannak beépített eszközök. Ráadásul nem szükséges hozzá Max6, már a Max4-ben is megtalálható (lehet, hogy még korábbi verziókban is). Ez az eszköz egy PathDeform nevű módosító.
Kezdjünk hozzá: a gyökér növekedése során az történik, hogy egy növekvő főágról kisebbek ágaznak le. Először is készítsük el a gyökér ágrajzát (ami a végső állapotot mutatja) Line (vonal) objektumokból. A főághoz és minden mellékágához külön rakjunk le egyet-egyet. A vonalakat nem kell összekapcsolni, csupán arra kell ügyelnünk, hogy a mellékágak vonalainak kezdőpontjai a fővonal közvetlen közelébe kerüljenek (1. Ábra). Az én verziómban a főághoz két mellékág tartozik, amely közül az egyik is rendelkezik mellékággal.
1. ábra
A gyökerek Cone (kúp) objektumok lesznek. Rakjunk le egyet, mégpedig olyan méretekkel, amivel a főág fog kezdetben rendelkezni (a fővonalhoz képest megfelelően rövid és nem túl vastag). A fent említett módosított adjuk az objektumhoz (*PathDeform). Először röviden írok a módosítóról, majd visszatérek a gyökerekhez:
A módosító paramétereit a 2. Ábra mutatja. Azért fontos jelen esetben a csillaggal jelölt módosítót használni, mert ez a PathDeform módosító World Space típusa, amelyen a Move to Path (objektum mozgatása az útvonalhoz) gombbal lehetőségünk lesz az adott kúpot a megfelelő helyre mozgatni (magyarul pár felesleges mozgatást és forgatást megspórolhatunk). Található még egy Pick Path nevű gomb, amivel az útvonalat jelölhetjük ki az objektum számára. A Percent értéke azt mutatja meg, hogy az objektumot a kijelölt útvonal hány százalékáig mozdítjuk el (az objektum eközben az útvonalnak megfelelően torzul is). A Stretch egy útvonal irányú torzítást eredményez; ha a Percent nulla és csak ez változik, annak eredménye lesz az, hogy az adott objektum az útvonal elején marad és „végignövi” az útvonalat. (Ezt nem sikerült igazán értelmesen leírnom, tessék kipróbálni.) A Rotation paraméter az objektumot forgatja el az útvonal kezdőpontjának irányára merőlegesen. A Twist paraméterrel az objektum mozgás vagy „növekedés” közben még csavarodik is. A Path Deform Axis résszel nem kell foglalkoznunk (alapértelmezetten Z), ha a Perspective nézőtérben rakjuk le a kúpot.
A gyökerekhez visszatérve: minden gyökérhez először rakjunk le egy kúp objektumot, a paramétereit állítsuk be a nekünk tetszőre, adjuk hozzá a *PathDeform módosítót, jelöljük ki a kúphoz tartozó vonalat (Pick Path) és végül kattintsunk a Move to Path gombra. Ha ez mindegyiknél megvan, jöhet az animáció. (3. Ábra)
3.ábra
Először a gyökér legmagasabb rendű ágát animáljuk, majd így tovább a kisebbekre (a gyökerek végül is hierarchiát alkotnak, a nagyobbakból nőnek ki a kisebbek, abból a még kisebbek és így tovább egy adott szintig). A gyökérnövekedés áll a hosszirányú megnyúlásból és a vastagodásból. A megnyúlásnál a Stretch értékét animáljuk 1.0-tól addig, amíg a gyökér végig nem növi az útvonalat. Ezután jön a gyökér vastagodása: főgyökérnél, amikor a Stretch még 1.0, a kúp átmérője tetszőleges (nem túl vastag) lehet. Amikor a Stretch eléri a maximumát, a kúp átmérője is legyen maximum. Ezt játsszuk el a mellékgyökerekre is, azzal a különbséggel, hogy ott a kezdeti átmérő legyen 0. A mellékgyökerekhez tartozó paramétereket akkor kezdjük el animálni, amikor a főgyökér oda elér (és valamivel túlmegy rajta). A Twist paraméternek adjunk meg például 360-at (a gyökér hosszától függően akármit, de animálni nem szükséges). A paraméterek animációjánál néha nem árt pontosítani (például Trackview; igaz lehet eredetileg is benne csinálni).
Az animáció már kész van, de a textúrázatlan gyökerek így nem néznek valami élethűen: a gyökerekhez készítsünk anyagokat, amelyekhez Diffuse Map-ként, Bump Map-ként és esetleg Displacement Map-ként tartozik egy kép. Itt is szükséges lehet animálni, mégpedig a bitképhez tartozó V Tiling (a textúrát egy irányban ’V Tiling’ értékszer megtöbbszörözi) értékét. Ennek a paraméternek az animációja álljon összhangban az anyaghoz tartozó kúp (gyökér) paramétereinek animációjával.
A módszert lehet bonyolultabb animációkhoz is használni, igaz ekkor érdemesebb írni hozzá egy scriptet, ami legenerálja a megfelelően kusza gyökérzetet (nem igazán értek a scripteléshez, de majd egyszer megpróbálok valami működőt összehozni). A gyökerek természetesen térben is kanyaroghatnak. Van a PathDeform-mal rokon módosító, mégpedig a SurfDeform, legközelebb ezt mutatom be.
Neuwirth István
neuwi@ffg.sulinet.hu