PORADNIK - Budowa map z wykorzystaniem modeli 3D

Zaglądnij tutaj, jeśli masz pytania lub uwagi dotyczące różnorodnych aspektów tworzenia misji w edytorze Darkmod, jak też związanego z nimi oprogramowania i sprzętu.

Moderatorzy: peter_spy, timon

Awatar użytkownika
Juliusz
Złodziej
Posty: 2774
Rejestracja: 04 stycznia 2004, 11:28
Lokalizacja: Dublin
Kontakt:

PORADNIK - Budowa map z wykorzystaniem modeli 3D

Post autor: Juliusz »

Budowa map z wykorzystaniem modeli 3D

Poniższy poradnik będzie garścią informacji na temat jak budować geometrię map z wykorzystaniem modeli zrobionych w programach 3D, typu 3DS Max, Lightwave, Maya itp.

Informacje na temat, jak zaimportować model do Dark Moda znajdziesz tutaj.

Poniższy model galeona oraz przykładowa mapa (być może także jako prefab), jest dostępny wraz z głównym modem.

Tak wygląda model:
Obrazek

1. Naszym celem jest uczynienie go miejscem grywalnym, tzn. takim, po którym będzie mógł chodzić gracz oraz strażnicy. Mało tego - chcemy, aby miał wnętrze, które tak jak normalne budynki w grze, będzie odseparowane visportalami, w celach optymalizacyjnych mapy.

Wpierw jednak trochę teorii na temat kompilacji mapy.
Silnik Dooma, po wydaniu komendy dmap naszamapa.map tworzy trzy (lub więcej) dodatkowe pliki:
- naszamapa.proc - zawiera informacje o cieniach - t.j. które polygony rzucają cień przez które światło. W tym procesie uczestniczą zarówno brushe, patche jak i func_static (czyli nasze modele 3D).

- naszamapa.cm - zawiera informację o powierzchniach kolizji (collision mesh). Collision mesh jest tworzony z brushy, patchy i modeli, chyba że mają ustawione właściwości materiału lub obiektu na nonsolid.

- naszamapa.aas32 (.aas48, aas96 itp. itd) - jest to plik z informacjami o ścieżkach dla AI. Dla każdej wielkości AI (a więc i gęstości siatki ścieżek) jest tworzony osobny plik. Generalnie brane pod uwagę są tylko brushe z przypisanymi materiałami nieprzezroczystymi, teksturą typu CAULK bądź teksturami typu CLIP (monster clip, player clip itd.). Patche oraz modele domyślnie nie są uwzględniane przy obliczeniach. (Gwoli ścisłości dodam, że da się je wykorzystać, ale ze względu na ich stopień skomplikowania, jest to niepraktyczne i nie stosuje się).

Ponadto, podczas kompilacji, silnik dzieli mapę na obszary za pomocą visportali. Możemy do tego użyć jedynie brushy. Ani patche ani też nasze modele nie "łatają" świata chroniąc go przed wyciekami.

2. Wniosek z powyższego wywodu jest taki, iż jeśli chcemy wykorzystać modele 3D do budowy mapy, musimy dodatkowo zbudować konstrukcję z brushy, pokrytą specjalnymi funkcyjnymi teksturami. A więc, ładujemy do Dark Radianta nasz model, umiejscawiamy go tam, gdzie ma stać i zaczynamy budowę:

- żeby nauczyć AI, które przeszkody ma omijać, a po jakich powierzchniach może chodzić, kładziemy brushe z teksturą MONSTER CLIP (textures/common/monster_clip)
Obrazek

- konstrukcję wokół ścian naszego modelu budujemy z brushy oteksturowanych CAULK'iem. (textures/common/caulk) Jest to typ tekstury nierenderowanej, ale łatającej świat, tzn. zamykającej obszary oddzielone visportalami.
Obrazek


Nie będę się rozwodził, które brushe postawić wpierw, albo w ogóle jak się buduje z brushy, bo to osobne tematy.


3. Widok ogólny statku - zrzut z Dark Radianta.

(dla przejrzystości wywodu, wyłączyłem wyświetlanie powierzchni typu Collision oraz Shadow, jako że nie mają wpływu na kwestię tutaj poruszaną.)

Obrazek


Widok samej struktury brushy. Jak widać, obudowane zostały pomieszczenia ponadpokładowe oraz jeden podpokład. Nic nie stałoby na przeszkodzie, żeby dobudować jeszcze pokład niższy - zasada jest taka sama.
Obrazek

I jeszcze widok boczny na model statku oraz strukturę brushy.
Obrazek


Jak widać, brushe nie przylegają idealnie do modelu. Wystarczy, że z grubsza go będą otaczały.
Części nadpokładowe typu schodki, kolumny, maszt, poręcze zostały otoczone teksturą monster clip - ona nie łata świata, a jedynie informuje AI, gdzie istnieją przeszkody oraz powierzchnie do chodzenia.

Części otaczające wnętrze pokryte są teksturą CAULK, gdyż chcemy, aby wnętrza nie renderowały się, gdy są niewidoczne. Na dobrą sprawę, można by użyć jakiegokolwiek materiału np. tekstury drewna, jednak musielibyśmy się starać, żeby owa tekstura nie wystawała poza model, co byłoby uciążliwe, jeśli w ogóle wykonalne przy cienkich ściankach.


Zbliżenie na pokład:
Obrazek

Obrazek

Okrągłość drzwi jest bardzo uproszczona - owa kanciasta krawędź i tak chowa się w modelu, a więc w grze tego nie widać.
Przestrzeń pod schodami (widać ją na widoku siatki) została również zablokowana monsterclipem. O tyle o ile gracz tam się wślizgnie (kucając), o tyle AI już nie, a więc dla uproszczenia obliczeń, możemy ją zabudować.
Nachylenie płaszczyzny wzdłuż stopni jest nieco inne niż faktyczny kąt, pod którym te stopnie idą. Krzywizna schodków okazała się pierwotnie za stroma dla AI, więc ją złagodziłem, jednak w grze jest to nieodczuwalne, bowiem AI dopasowują położenie nóg do terenu (ściślej - do collision mesha mapy).

Drzwi i klapa w pokładzie mają wejście odgrodzone visportalem - będzie blokowało renderowanie wnętrz, gdy będą niewidoczne. Sam model galeona jednak będzie renderowany w całości tak długo, jak jego gabaryty będą mieściły się lub zahaczały o widok gracza.


Jeszcze raz pokład:
Obrazek

Obrazek

Ten czerwony prostokącik przy maszcie to zwój liny. Musi też być otoczony monsterclipem (jak każdy model zresztą), gdyż nawet na takich małych obiektach AI może się zaciąć. (Ścieżka będzie szła przez ten model, ale AI wykryje kolizje i utknie...)


Tylni taras:
Obrazek

Obrazek

Ta część wymaga tylko monsterclipa, ponieważ jest na zewnątrz, a więc nie zamyka wnętrza.


I teraz najfajniejsze, czyli przekrój podłużny:
Obrazek

Obrazek

Wnętrze statku jest już wymodelowane i oteksturowane normalnie z brushy, jak wnętrze każdego budynku.




To by było na tyle - po tak przygotowanym statku, nasze mądre AI potrafi się poruszać i nas gonić, a drzwi zamykają i otwierają visportale.
Ostatnio zmieniony 29 sierpnia 2008, 01:01 przez Juliusz, łącznie zmieniany 1 raz.
Awatar użytkownika
Bukary
Homo Rhetoricus
Posty: 5569
Rejestracja: 12 sierpnia 2002, 18:15
Lokalizacja: Gildia Topielników (przy tawernie Pod Rozszalałym Wichrem)

Re: PORADNIK - Budowa map z wykorzystaniem modeli 3D

Post autor: Bukary »

Juliuszu, jesteś wielki! Dzięki!

Jeśli mogę coś dodać, byłoby wspaniale, gdybyś do modelu statku dołączył całą tę konstrukcję (jako prefab?). Oszczędziłbyś wszystkim mnóstwo roboty, którą już wykonałeś.
Thief Antologia PL: od 20 X 2006 w sklepach!
Zagraj w FM Old Comrades, Old Debts i zobacz moje zrzuty.
ODPOWIEDZ