Tworzenie własnego modelu - md3

Jak stworzyć własny model w formacie akceptowalnym przez "Quake'a 3".

1.Wstępne Informacje

Temat często poruszany na forach - widać sprawia problemy, a wykonanie własnego modelu jest naprawdę bardzo proste! Nawet takiego który składa się z wielu elementów, kilku shaderów i sam świeci i rzuca cienie.

1.1 Niezbędne elementy - 3DSMAX w wersji 6 lub 5; Plugin do Maxa do eksportu siatki w formacie *.md3 - do pobrania z tej strony; Photoshop lub coś podobnego do edycji tekstur - ważne, by było można edytować kanał alpha.

1.2 Porządek, czyli jak się w tym nie pogubić - Polecam założenie osobnego folderu o nazwie naszego modelu, np. dla modelu GARG1: "models/mapobjects/GARG1 - w tym katalogu wyląduje nasz plik md3, finalne tekstury, wygodnie też umieścić plik z Maxa w tym samym miejscu. W katalogu "scripts" tworzymy shadery: garg1.shader (dopisujemy jego nazwę do shaderlist.txt) oraz garg1f (skrypt dla modelu płomienia, jego nazwę również dopisujemy doshaderlist.txt)

Plugin umieszczamy w katalogu "Plugins" w Maxie, jeżeli wersja będzie nieodpowiednia to program powiadomi nas o tym fakcie podczas ładowania pluginów (przy starcie). Ja pracuję na wersji 6.0 i taki plugin akurat posiadam.

2.No to jazda!

W moim przypadku będzie to model rzygacza (po angielsku gargoyle) do umieszczenia na krawędzi gotyckiego dachu, z jego paszczy będzie buchał płomień.

2.1 Siatka - Niestety nie będę opisywał modelowania w 3dStudio - zakładam że potraficie to robić, poruszę tylko kilka istotnych czynności.

Naszemu modelowi możemy wstępnie przypisać jakieś mapowanie. W Maxie jest ich kilka rodzajów: planar, em>cylinder, em>box, em>sphere... - zależy jaki model ma kształt wybieramy takie, by dało się oteksturować jak najmnieszą teksturą cały model. Ja wybrałem planar i mapuję od lewej do prawej - w ten sposób potrzebna mi będzie tylko połowa tekstury - druga połowa modelu będzie oteksturowana symetrycznie (nie zawsze jest to porządane). Siatkę płomienia wykonujemy trochę inaczej - zaczynam od cylindra który sam w sobie ma mapowanie cylindryczne, konwertuję go na "editable mesh", a następnie wyginam modyfikatorem "bend" i ręcznie koryguję kształt. Mapowanie jest zawarte w siatce przed wygięciem cylindra, więc jeśli zastosujemy w shaderze płomienia "scroll" to finalnie uzyskamy efekt tekstury deformującej się i poruszącej się po łuki.

2.2 - Materiał - W edytorze materiałów zakładamy materiał dla modelu. Uwaga! Nasz plugin do eksportu będzie pobierał lokalizację modelu i definicję shadera z nazwy materiału. Nasz materiał powinien się zatem nazywać modelsmapobjectsgarg1garg1 - dla modelu rzygacza i modelsmapobjectsgarg1garg1f - dla modelu płomienia

Tworzymy sobie tekstury do materiałów w dowolnym formacie - jeśli przewidujemy efekty typu alphashadows to najlepiej .tga. Ja stworzyłem to: garg1.jpg dla rzygacza i garg1f.tga dla płomienia - zapisujemy je w katalogu models/mapobjects/garg1/. W Maxie, w edytorze materiałów przypisujemy je jako "diffuse color" - ja zazwyczaj robię takie kolorowe szachownice, żeby zobaczyć jak się tekstura rozkłada na modelu. Na razie to powinno wyglądać tak:

W zasadzie "płomień" mamy z głowy - falowanie powierzchni i przesuwanie tekstury powstanie w shaderze. Niestety sam rzygacz ma mało detali tam gdzie powinien mieć go najwięcej, czyli na paszczy.Zaznaczamy gargoyle'a, ukrywamy płomień, z listy modyfikacji wybieramy "Unwrap UVW"

2.3 "Unwrap UVW"

Klikamy przycisk Edit, otwiera się nowe okno, w którym możemy zobaczyć i zmienić położenie poszczególnych ścianek względem tekstury, edytować możemy ścianki (face), krawędzie, jak i wierzchołki:

Większość dostępnych opcji widać na obrazku powyżej. Dodatkowe są pod prawym klawiszem myszy, np. jeśli edytujemy wiwrzchołki możemy je scalać, ścianki - grupować i odłączać od grupy itd. Polecam też włączenie opcji Constant Update - jeśli macie duży monitor (lub dwa) i wszystko Wam się zmieści to będziecie mogli na bierząco oceniać efekt waszej pracy w okne 3d. Bardzo pomocne są narzędzia w menu Mapping > Normal mapping i tu trzeba trochę poeksperymentować by rozrzucić ścianki tak by dało się je edytować, np. po wybraniu "Box mapping" otrzymamy coś takiego:

Jak widać mamy dwa "boki" rzygacza, ścianki które widać z góry i od spodu, oraz kilka grup face'ów, które się nie łączą się w całość z pozostałymi. Możemy na tym poprzestać i na tej siatce namalować teksturę modelu w PH. Możemy też zaoszczędzić trochę miejsca i zmodyfikować siatkę tak by model był symetrycznie oteksturowany. Odnajdujemy pary face'ów identycznych po lewej i prawej stronie modelu, jedną z nich mirrorujemy, nakładamy na drugą i scalamy wierzchołki. Jeśli nie wiemy gdzie w przestrzeni jest dana ścianka zaznaczamy ją - w oknie 3d zrobi się czerwona. Edytując resztę doprowdziłem do takiej sytuacji:

Na biało są wyświetlane krawędzie mające wspólny smoofing, zielona linia oznacza przerwę lub wolną krawędź. Krawędzie scalamy "weldując" wierzchołki. Robimy sobie Print Screen z ekranu, otwieramy teksturkę modelu w Photoshopie i nakładamy jedno na drugie, dorabimy na nowej warstwie detale i fakturę mając w podglądzie siatkę:

Na modelu to wygląda teraz tak:

3. Eksport

Uff, mam nadzieję że przebrnęliście aż dotąd, Unwrapowanie jest naprawdę super funkcją, warto się jej nauczyć, można też skorzystać z programów takich jak 4DPaint - gdzie malujemy w trójwymiarze na obmapowanym modelu - jak zwykle możliwości jest wiele.

Mamy model z teksturowaniem, czas na eksport do qwaka. Z menu wybieramy File > Export > Quake III.md3

The following frames - wpisujemy 0 (zero) - jeśli model jest statyczny. Jeśli nie wiecie czym są "tagi" to lepiej by wasz model był po środku układu współrzędnych w Maxie, reszta tak jak widać. Jako lokalizację pliku sugeruję models/mapobjects/twójmodel/twójmodel.md3. Wciskamy Export now - i jeśli program nie zgłosi błędów to jest OK!

Model w qwaku :-)