Tworzenie dynamicznych modeli


Wstęp
W gta SA można znaleźć całkiem pokaźną liczbę modeli, które można np. zniszcz. W tym trialu postaram się w miarę dokładnie wytłumaczyć jak takie modele tworzyć.

Potrzebne programy:
#3ds max 9
#Kam's Max Scripts
#0x253F2FD export(jest to skrypt do eksportowania plików binarnych)
#RWAnalyze
#Txdworkshop
#Map edytor.

Przygotowanie modelu
W 3ds max stwórz np. model ławki czyli mniej więcej coś takiego

http://img829.imageshack.us/img829/7404/37516517


Jeżeli zrobiłeś model ławki np. z kilku boksów to boksy połącz z innymi boksami. Następnie na model nałóż dowolną teksturę. Gdy to zrobisz model wyzeruj i go wyeksportuj(czyli stwórz plik dff). Model zapisz np. pod nazwą „lawka_01”. Do eksportu możesz użyć zestawu skryptów kam's script.

Tworzenie kolizji
Tworzenie kolizji w przypadku obiektów dynamicznych ma się nie co inaczej niż zwykłych obiektów. Jak zapewne zwróciłeś uwagę np. popychając lekko ławkę postacią w grze to ona się toczy po ziemi. Jest to spowodowane tym że kolizja takiego modelu posiada specjalną kolizje, która nie pozwala przenikać modelowi przez ziemie. Dlatego należy do takiego modelu dodać ten rodzaj kolizji. Oprócz tej dodatkowej kolizji niektóre modele posiadają jeszcze jeden rodzaj kolizji. Owa kolizja wydaje mi się że działa jak ten normalny rodzaj kolizji więc nie wiem di końca po co ona jest dodawana w ten sposób do takiego modelu. Ale zawsze lepiej żeby był niż żeby go nie było. Takie kolizje tworzy się w ten sposób

Jak już masz gotowy model ławki to na taką samą długość, szerokość i wysokość stwórz nowego boxa. Następnie podpis go „lawka_01”(czyli tak jak oryginalny model). Teraz stwórz model o nazwie „Sphere”(model sphere jak się go stworzy i odpowiednio ustawi to potem przy tworzeniu kolizji tworzy właśnie kolizje, które nie pozwala modelowi na przenikanie przez powierzchnie, podobnie jest z boksem) i ustaw go, na którymś końców ławki. Następnie skopiuj „Sphere” i przesuń na drugi koniec ławki. Stworzone „Sphere”(oba) nazwij również tak samo. Po wszystkiemu powinno wyjść mniej więcej coś takiego

http://img534.imageshack.us/img534/6123/65802720


Gdy to zrobisz oryginalny model ukryj żeby nie przeszkadzał przy tworzeniu kolizji(owego modelu nie usuwaj ponieważ będzie jeszcze potrzebny. Tutaj warto zaznaczyć jeszcze jedną ważną rzecz. Stworzonego boksa jak i sphere nie wolno konwertować do np. „editaple mesh”. Dlatego że gdy to się zrobi to podczas tworzenia tej specjalnej kolizji skrypt do tworzenia kolizji wyeksportował by ją jak zwykłą kolizje) Następnie zaznacz wszystkie modele i uruchom skrypt o nazwie „Collision IO”. Samą kolizję nazwij tak jak nazwałeś model ławki czyli „lawka_01”. Następnie w okienku do tworzenia kolizji kliknij na „Shadow Mesh” i następnie na zaznaczone (tym sposobem kolizja została stworzona). Na koniec kliknij na „Expoert”(nazwa tworzonej kolizji przy eksporcie może być jaka kol wiek) i zapisz kolizje najlepiej tam gdzieś zapisałeś model dff ławki. Podstawowy model jest już przygotowany i można się zabrać za „ożywianie modelu”.

„Ożywianie modelu”
Teraz należy sprawić żeby model „ożył” czyli jak się wjedzie w niego np. samochodem to on się rozwali na kawałki. Bowiem gdybyśmy dodał taki obiekt do gry to po w jechaniu w niego nic by się nie stało. Robimy to tak.
Zaznaczamy model i klikamy na http://img88.imageshack.us/img88/4556/32535009 potem wybieramy http://img853.imageshack.us/img853/4006/87661530 i zaznaczamy jakąś cześć ławki np. w ten sposób

http://img535.imageshack.us/img535/4302/61048314


Gdzieś na pasku „command panel „ powinna znajdować się sekcja o nazwie „polygon properties”. Zlokalizuj ją i przy „Set ID” wpisz ID 1(oczywiście wpisz samo 1 bez ID) i kliknij na „Select ID” albo wciskamy „enter” na klawiaturze. Na dole powinna się pojawić liczba jedn. Taki zabieg robi się po to żeby gra wiedziała jaki element ławki ma się niszczyć. Potem zaznacz drugi element i w tym samym miejscu wpisz 2. Teraz gra będzie widziała że ma zniszczyć dwa elementy z tej ławki. To samo zrób dla pozostałych elementów ławki. Czyli zaznacz trzeci element i wpisz liczbę 3 itd.(gdzie wpisać te liczby pokazuje rysunek poniżej)

http://img408.imageshack.us/img408/7922/99483473


Następnie każdy z elementów ustaw np. w ten sposób (czyli poszczególne elementy ławki ustaw w taki sposób aby wyglądała ona na rozwaloną), a sam model ponownie wyzeruj.

http://img256.imageshack.us/img256/295/34752496


Teksturowanie rozwalonych elementów
Gdybyś teraz eksportował model to po rozwaleniu ławki poszczególne elementy były by białe (nie posiadała by tekstury). Żeby model posiadał tekstury robimy tak:
Mając zaznaczony model ławki wciśnij „M” na klawiaturze. W „material editor” zaznacz jakieś wolne miejsce dla tekstur

http://img444.imageshack.us/img444/6016/28989328

Następnie w tym samym okienku klikaj na poszczególne opcje, czyli tak jak jest to pokazane na rysunku po niżej

http://img819.imageshack.us/img819/6122/60287514

Po wybraniu owych opcji w „material editor” powinno pojawić się mniej więcej coś takiego(zaznaczone na obrazku po niżej, na zielono)

http://img259.imageshack.us/img259/2339/71129019

(rys.8)

Jak widać jest tam 10(standardowo) takich belek z teksturami. W tym wypadku potrzebne jest tylko 6 belek(dlatego że ławka składa się z 6 elementów). Żeby to zmienić kliknij na „Set Number”(rys.8)(1) i w okienku wpisz liczbę 6. Następnie do każdej belki przeciągnij tą samą teksturę(rys.8)(2), którą teksturowałeś ławkę tworząc plik dff. Gdy to zrobisz w polu „Name”(rys.8)(3) wpisz nazwę tekstury. W tym wypadku tekstura nazywa się „tekstura_6” więc tak nazwałem wszystkie belki. Teraz złap za tą teksturę i przeciągnij ją na model ławki(rys.9)

http://img213.imageshack.us/img213/4934/32775617

(rys.9)

Z przygotowaniem modelu to tyle. Teraz zostaje przygotować tak zwany plik binarny.

Przygotowanie pliku binarnego
Przygotowane pliku binarnego jest bardzo proste. Do tego celu będzie potrzebny skrypt o nazwie „0x253F2FD export”. Żeby stworzyć plik binarny z menu w 3ds max wybieramy „MaxScryipt>Run Script” i uruchamiamy owy skrypt(rys.9)

http://img694.imageshack.us/img694/4868/33428526

(rys.9)

W okienku ustaw wszystko tak jak jest pokazane na obrazku po niżej,

http://img18.imageshack.us/img18/4830/81159942

następnie kliknij na „export section”(pamiętaj żeby mieć zaznaczony cały czasz model ławki) i zapisz model pod dowolną nazwą. Pracy z 3ds max to tyle i można go zamknąć. Zostało jeszcze scalić plik binarny z modelem dff.
Scalanie pliku binarnego z modelem dff.
Żeby scalić pliki binarny z modelem dff otwórz program o nazwie „RW analyze” i załaduj do niego model ławki. Gdy to zrobisz przewiń okienko na duł. W sekcji „Extension” Powinieneś mieć linijkę o nazwie „Mesh Extension”.

http://img607.imageshack.us/img607/2567/46588792

Weź ją zaznacz i kliknij na ją prawym klawiszem myszy. Z menu wybierz „Import Section Data”

http://img820.imageshack.us/img820/9753/47077309

i załaduj wcześniej stworzony plik binarny. Gdy plik się załaduje zapisz zmiany w programie i zamknij program.

I oto tak właśnie zakończyłeś przygotowanie modelu. Taki model możesz już dodać do gry. Model dodajesz do gry tak jak inne modele. Jedyna różnica jest w tym że jeszcze musisz otworzyć plik o nazwie object.dat i dodać w tym pliku taką linijkę z kodem:

Kod:
lawka_01, 50.0, 100.0   0.99, 0.05, 50.0, 5.0,    1.0,    200, 0, 1, 0, 0, 0.0, 0.0, 0.0, none 115.0,  0.0,  0.0,  0.1,  0.07, 1, 0

Owa linijka powoduje że model będzie się rozwalał jak się np. wjedzie samochodem w ławkę.

Słowo na koniec
Tym sposobem można tworzyć nie tylko rozwalające się ławkę ale i np. rozwalające się drzewa czy tam jakieś nie wielkie domy. Wystarczy postępować zgodnie z tym poradnikiem. Jeżeli by były jakieś problemy mimo powyższego poradnika ze stworzeniem takiego modelu to zapraszam na forum. Jeżeli macie jakieś uwagi co do tego triala proszę pisać wyłączenie w tym temacie