3dsMax textúrázás alapok

ekkor: 2013-06-14 · Kategória: 3D-s programok
×A modell elkészítéséhez a 3dsMax 2013-as verziójára lesz szükséged! Korábbi verzióval is szinte ugyanígy működik, minimális eltérések vannak csak a felhasználói felületen.

Háromdimenziós modell képének kiterítése síkba

Ebben a tutorialban megpróbálom bemutatni a 3d-s modellezéshez kapcsolódó textúrázás, vagyis mintázat “festés” alapjait. Ahhoz, hogy egy modellre saját magunk által készített textúrát készítsünk, ami pontosan illeszkedik az általunk létrehozott objektumra, először “ki kell teríteni” a térbeli testet síkba, azaz létre kell hozni annak síkbeli leképezését. Gyakorlatilag egy 2D képet fogunk kapni, ami úgy néz ki, mintha a modellünket széthajtogattuk volna, majd erre egy 2D grafikus program segítségével rá kell “festenünk” egy mintát. A cikk során egy Rubik kocka példáján mutatom be az alapokat, mert egy kocka esetében egyszerűen és jól láthatóan szemléltethető, hogy a kiterítés alatt mit is kell értenünk (ha máshol nem is, de legutóbb általános iskolában mindenki hajtogatott már össze papírból kockát… na, ez ugyanaz, csak pont fordított sorrendben mennek a dolgok 🙂 ). Most nem célunk az élethű látvány elérése, csupán az alapok megismerése.

1. lépés

Kezdés előtt a Customize > Units Setup menüpont alatt állítsuk át a Display Unit Scale paraméterét Metric-re, a mértékegységet pedig Centiméter-re:

rubik_kocka_002
Ezek után hozzunk létre egy 10 x 10 x 10 cm-es kockát:

rubik_kocka_003
Az alsó eszköztáron az X, Y és Z tengelyhez tartozó mezőkbe írjunk 0 értékeket, hogy a kockát a koordináta rendszer origójához pocicionáljuk:

rubik_kocka_005
Ezek után jobb klikk a kockára, majd a Convert To > Convert To Editable Poly paranccsal alakítsuk polygonok szerkeszthető csoportjává:

rubik_kocka_006
Ha ez megvan, akkor a jobb oldali panelmenüből alkalmazzuk a Modify fül Modifier List listájából az Unwrap UVW módosítót a kockánkra:

rubik_kocka_007

2. lépés

Ezt követően kattintsunk az Open UVW Editor (korábbi verziókban Edit) gombra a módosító paraméterei között:

rubik_kocka_008
A megjelenő Edit UVWs szerkesztő ablakban váltsunk Polygon kijelölés módba a bal alsó sarokban, majd a képeken látható módszerrel jelöljük ki a kockát alkotó összes polygont:

rubik_kocka_010 rubik_kocka_011
Most válasszuk a szerkesztőablak Mapping > Flatten mapping opcióját. A paramétereket hagyjuk alapértelmezetten:

rubik_kocka_012
Látható, hogy ezzel a leképezési módszerrel úgy került kiterítésre a kocka, hogy minden polygonja külön látszik:

rubik_kocka_014
Most nyissuk meg az “m” gyorsbillentyűvel a Material Editor ablakot és itt dupla kattintással nyissuk meg a 01 – Default nevű nyers anyagmintát:

rubik_kocka_015
A bal oldali menüből húzzuk a szerkesztő területre a CheckerPattern nevű mintát, majd a képen látható módon rendeljük hozzá (kössük oda) a minta Diffuse csatornájához:

rubik_kocka_018
Most az alábbi képeken látható módon kapcsoljuk be az anyagmintához a Material Editor felső eszköztárán a Show Shaded Material in Viewpot, illetve az Assign Material to Selection kapcsolót, hogy látható legyen a sakktábla minta a kockán:

rubik_kocka_021 rubik_kocka_022
Így néz ki a kockánk a jelenlegi textúrával. Látható, hogy jelen pillanatban szét van csúszva a minta a kockán. Figyeljük meg a fekete-fehér négyzetek elhelyezkedését. Főként az élek mentén és a csúcsoknál szembetűnő, hogy nem illeszkedik egységesen a textúra, el van csúszva:

rubik_kocka_023
Ez egy Rubik kocka textúrázása során nem okozna nagy bonyodalmat, mert mind a hat oldal különböző színű lesz, de ha például egy folytonos mintát szeretnénk ráilleszteni (mondjuk egy színátmenetet, ami az élek mentén nem kellene, hogy megtörjön), akkor már látható lenne a probléma. Emellett komplexebb modellek kiterítésekor hasznos a sakktábla minta. Segít beállítani az éleket és megmutatja, hogy bizonyos polygonok esetében kisebbre, vagy nagyobbra kell-e vennünk az alkalmazott textúra felbontását, hogy összességében ne forduljon elő az, hogy a modell egyes részein rendkívül nagy felbontású a minta, más részein pedig kisebb felbontást használtunk.

A textúra későbbi helyes illeszkedésének érdekében térjünk most vissza az Edit UVWs szerkesztőablakba és váltsunk él kijelölés módba:

rubik_kocka_024
Jelöljük ki a képen látható élet. Figyeljük meg, hogy a piros színnel kijelölt él látható a perspektívikus ablakban is, illetve a szerkesztő ablakban kék színnel látható egy másik polygon egyik éle. Ez azt jelzi, hogy a 3D-s modellen a kijelölt élnél kapcsolódik egy másik polygon, jelen esetben a kocka következő oldala:

rubik_kocka_026
Kattintsunk jobb egérrel, majd válasszuk a Stitch Selected parancsot az előugró menüből:

rubik_kocka_027
Ez a képen látható módon azt eredményezi, hogy a modell kiterített képén is egymáshoz csatoltuk a szóban forgó él mentén a két polygont, vagyis a textúra erre a két polygonra úgy fog rákerülni, mintha egyről lenne szó és nem külön-külön. Ez látható a nézetablakban a sakkmintán is. Az él mentén folyamatos a textúra, “rásimul” a kockára:

rubik_kocka_028
Az előbb ismertetett módszerrel folytassuk a kiterített polygonok összekapcsolását  képen látható él mentén:

rubik_kocka_030
Haladjunk most tovább az alább látható éllel:

rubik_kocka_031
Majd a képen látható következik:

rubik_kocka_033
És végül a kocka utolsó oldalát is kapcsoljuk a kiterített képhez, a képen látható él mentén:

rubik_kocka_035
Váltsunk polygon kijelölés módba és jelöljük ki a kocka összes oldalát. Figyeljük meg, hogy az egész kiterített kép nagyobb méretű, mint a szerkesztő ablakban látható, sötétszürke vonalakkal határolt négyzet, melyben elhelyezkedik a sakktábla minta:

rubik_kocka_037
Méretezzük át a kijelölésünket pont akkorára, hogy beleférjen az előbb említett négyzetbe a képen látható módon. Fontos, hogy minden textúrázás alkalmával ebbe a négyzetbe poziciónáljuk és méretezzük be a modell kiterített képét, mert a későbbiek során ez a terület kerül exportálásra és ezen a négyzeten belül elhelyezkedő polygonokra alkalmazza a program a textúrát:

rubik_kocka_039
Válasszuk most a Tool > Render UVW Template menüpontot:

rubik_kocka_040
A felugró párbeszédablakban a Fill csoportban található színhez állítsunk be fehéret:

rubik_kocka_041
A Show Overlapped Polygons checkboxot kapcsoljuk ki, a kiterített kép felbontását állítsuk 1024×1024 px-re, majd kattintsunk a Render UV Template gombra:

rubik_kocka_043
A kiterített mintát mentsük le a render ablak bal felső sarkában lévő lemez ikonnal egy JPG fájlba. Megjegyzés: Ne zavarjon meg, a esetleg a render ablakban nem látszik az összes vonal és úgy tűnik, mintha hiányos lenne a kép, ott vannak azok a vonalak, majd látni fogjuk később. Meggyőződhetünk erről egyébként úgy is, ha egér görgővel ráközelítünk a kirenderelt képre:

rubik_kocka_044

3. lépés

Kezdjük meg a textúra ráfestését a modell kiterített képére. Ehhez valamilyen 2D grafikus programot kell használnunk. Én a Photoshop-pal dolgoztam, de bármilyen szerkesztő megfelel. (Mazochisták használhatnak akár Paint-et is 😀 ) Ebben a lépésben nem célom, hogy ismertessem, hogyan hozzuk létre a mintát PS-ban, vagy bármely más szerkesztőben, csupán a főbb állomásokat szeretném bemutatni.

Először is így néz ki a kocka kiterített képe (ott vannak azok a vonalak, amik esetleg nem látszottak):

rubik_kocka_048
Az egyes oldalakat színezzük ki a képen látható színekkel:

rubik_kocka_053
Készítsünk egy rácsot a képen látható módon, hogy a kocka minden oldala 3×3 kis négyzetből épüljön fel, majd vegyük ki a kész textúra mögül a kiterített hálót:

rubik_kocka_054
Mentsük a kész textúránkat egy JPG fájlba, ami valahogy így fog kinézni:

rubik_kocka_054_2

4. lépés

A kész textúrát most húzzuk rá a modellre. Lépjünk vissza Max-ba és nyissuk meg a Material Editor ablakot “m”-mel, majd válasszuk a nyers anyagminták közül a 2 – Default-ot dupla kattintással:

rubik_kocka_057
Megint dupla klikk a minta nevére, majd a jobb oldali panelról a Diffuse melletti kis négyzetet nyomjuk meg:

rubik_kocka_058
A felugró lehetőségek közül válasszuk a Bitmap-et, majd nyissuk meg az előzőek folyamán lementett textúránkat:

rubik_kocka_059
Most a felső eszköztáron kapcsoljuk be a Show Shade Material in Viewport kapcsolót, majd az Assign Material to Selection gommbal alkalmazzuk a textúrát a kockára:

rubik_kocka_073 rubik_kocka_074

Látható, hogy az elkészített textúra megfelelően illeszkedik a kockára:

rubik_kocka_064
Hogy lássuk, mire is jó még ez az egész, lépjünk vissza a képszerkesztőbe és módosítsunk valamit a textúrán (én ráírtam, hogy Rubik kocka) és mentsünk rá a fájlra:

rubik_kocka_076
Ha visszalépünk 3dsMax-ba, akkor láthatjuk, hogy a textúra frissült a modellen és már a módosítottat láthatjuk. A kockánál bonyolultabb modellek esetében (gyakorlatilag a kockánál minden bonyolultabb 😀 ) érdemes a textúrázást már így kezdeni, vagyis rátenni az üres térképet és figyelni, hogy a textúra festés közben hogyan változik a modell:

rubik_kocka_077