Model kręconych schodów

Na początek zastanowimy się co dokładnie chcemy wykonać i jak powinno to wyglądać.

Otóż do wykonania mamy kręcone schody ale takie by pasowały do architektury q3 i jednocześnie wybiegały poza możliwości jakie daje nam układanie brushy. Mamy zatem dwie możliwości. Krzywe (patches, czy jak kto woli curves) lub model.

Pierwsze są raczej niewygodne w użyciu i w znaczny sposób nas ograniczają. Niemożliwe jest na przykład wykonanie nimi poręczy w kształcie helisy ułamanej w pewnym miejscu. Model daje nam natomiast możliwości ograniczone jedynie ilością face'ów jakie jest wstanie przyjąć silnik gry.

Wykonamy zatem kręcone schody pęknięte, w którymś miejscu, a zrobimy to przy pomocy 3d Studio Max.

Zaczniemy od ustawienia gęstości siatki (grid). W tym celu klikamy PPM (prawym przyciskiem myszy) na ikonę magnesu znajdującą się w górnym menu Maxa. W sekcji Home grid zmieniamy Grid spacing na 8 i tak samo postępujemy z opcją pod nim posiadającą dość długą nazwę z racji czego jej nie wymienię :). Takie ustawienie da nam odpowiednik grid 8 (4) w radiancie.

W nowym 3d Studio jest grupa Stairs gdzie od razu można takie schody otrzymać klikając parę razy i wpisując pewne wartości, ale przyjmując że dysponujemy wersją bez owego ułatwienia warto wiedzieć jak takie schody sobie wykonać.

Nasze schody będą miały 24 stopnie po 8 punktów wysokości, 16 głębokości i 160 szerokości każdy. Tworzymy boxa o Lenght 384, Width 160, Height 8 i Lenght Segs 24. Konwertujemy boxa na editable poly (PPM > Convert to: > Convert to Editable Poly), wybieramy polygony i zaznaczmy je wszystkie bez pierwszego przy użyciu ctrl + LPM .

początek przygody

Następnie extrudujemy całość z wartością 8 i odznaczamy kolejny schodek do uzyskania pełnych schodów.

po kilku ruchach myszką

Operacja ta porobi nam vertexów "w cholerę i jeszcze trochę", a tego bardzo nie chcemy. By to naprawić klikamy PPM i z polygon zmieniamy na top level, a następnie z modifer list (po prawej, pod nazwą box01) wybieramy Optimize i zaznaczamy Auto edge. Powinno nam to znacznie poprawić sytuacje. Konwertujemy znów nasz box w editable poly lub w okno z użytymi modiferami klikamy PPM i wybieramy collapse all, aby pozbyć się niepotrzebnego już modifera.

Kolejnym krokiem będzie pozbycie się nadmiernej ilości vertexów z tylniej części schodów i nadanie im pochyłego kształtu.

Wybieramy vertexy i weldujemy je przy użyciu target weld (PPM > Target Weld) klikając na vertex, a następnie na ten, z którym chcemy go scalić. Robimy tak, aż uzyskamy tylko pożądaną przez nas ilość wierzchołków (czyli 2).

weldowanie

Vertexy, które znajdują się na dole przesuwamy tak by nasze schody wyglądały w ten sposób:

tak powinny wyglądać każde schody

Naszym schodom przydały by się jakieś wykończenia co by nie wyglądały brzydko. Zaznaczamy zatem boczną ściankę(polygon) schodów (jeśli wszystko zrobiliśmy do tej pory poprawnie to powinna być tylko jedna) i wykonamy na nimbevel (PPM > Bevel > kwadracik) z Height 4 i Outline Amount 8.

Wywalamy boczną ścianę i weldujemy zbędne wierzchołki, a następnie układamy pozostałe tak, by tworzyły linię prostą.

ozdabiamy schody

Zaznaczone poniżej polygony wywalamy (raczej nam się nie przydadzą, a wprowadzają lekki zamęt w siatce).

wywalamy zbędne polygony

Powinny nam zostać dwa wysunięte vertexy: jeden na początku schodów, a drugi na ich końcu. Obydwu pozbywamy się weldując je ze znajdującymi się w dolnej części schodów.

znowu weldowanie

Zaznaczamy wertexy znajdujące się na dole schodów i przesuwamy je w prawo o 4 punkty tak by były w jednej linii z tymi górnymi.

Zaznaczamy Border (PPM > Border), a następnie zaznaczamy obramowanie (krawędź - nie wiem jak to nazwać) prawej strony i trzymając shift przesuwamy ją lekko w prawo. Spowoduje to utworzenie się nowych face'ów.

Nadajemy im jakieś normalne położenie wpisując w dolnej części Maxa, w wartości X pełną liczbę. (u mnie jest to 104). Następnie z listy modiferów wybieramy Cap Holes. Jeśli prawa strona została zamknięta facem i całość wygląda mniej więcej tak jak na obrazku poniżej to wszystko jest w porządku.

obramowanie

Jeśli natomiast nie, to wracamy się do początku i myślimy co zrobiliśmy nie tak.

Konwertujemy nasz box na editable poly i zaznaczamy vertexy, które wcześniej przesunęliśmy o 4 punkty aby przesunąć je na poprzednie położenie.Następnie zaznaczamy ściany (poly) naszego wykończenia i oddzielamy je od schodów przy pomocy detach nadając mu nazwę prawy. Nazwę boxa zmieniamy na schody.

zmiana nazwy

Musimy teraz zadbać o to by nasze schody mogły się wyginać. W tym celu wybieramy top level aby odznaczyć schody (do których i tak zaraz powrócimy) i wybieramy obiekt który nazwaliśmy prawy.

W obiekcie tym wybieramy ścianę która powstałą w wyniku Cap Holes. Ścianę tą będziemy musieli tak pociąć by wygięła się tak jak pozostałe elementy. Posłuży nam do tego Quickslice (PPM > Quickslice), który jest dośc prosty w obsłudze.

szybkie cięcie

Przechodzimy teraz do schodów i zaznaczamy jej dolną ścianę poczym tniemy ją w ten sam sposób co prawy.

Musimy tez wywalić lewą ścianę schodów. Kopiujemy prawy przy pomocy Mirror. Znajduje się on w górnej części menu Maxa, po prawej stronie i wygląda jak dwa trójkąty przedzielone czerwoną kreską. W Mirror Axis wybieramy X a w Clone Selection: Copy. Nowemu obiektowi nadajemy nazwę lewy i jeśli nie znajduje się on po lewej stronie schodów to go tam kierujemy.

Teraz pora na wspomniane na początku pęknięcie. Moje schody będą się wyginać do prawej strony, a pękną po lewej. Douzyskania pęknięcia użyłem pokazanych dotychczas narzędzi i dodatkowo opcji chamfer na wertexach. Praca domowa będzie polegała na uzyskaniu mniej-więcej efektu pokazanego na screenie poniżej :D.

pęknięcie

Czas teraz na oteksturowanie całego modelu. W tym celu dolną cześć schodów jak i ściany powstałe przy robieniu pęknięcia oderwiemy (detache) od górnej i połączymy (Attache) z obiektami lewy oraz prawy, a całość nazwiemy Block.

Oddzielimy tez część wierzchnią schodów, którą nazwiemy step od części frontowej, która to z kolei nazywać się będzieBorder.

Wyeksportujemy teraz z pak0.pk3 trzy teksturki dla odpowiednich części modelu.

  • Step: textures\gothic_floor\xstepborder13
  • Border: textures\gothic_floor\xstepborder9
  • Block: textures\gothic_floor\largeblockfloor3

Stworzymy trzy materiały w Materiał editor (cztery kulki na w górnym menu Maxa), w których to diffuse map będzie bitmapą z odpowiednią teksturką, a nazwa (standardowo 01 - Default) scieżką do niej, czyli dla pierwszej tekstury nazwa brzmieć będzie: textures\gothic_floor\xstepborder13.

Materiał nakładamy na zaznaczony obiekt przy pomocy Assign Material to Selction (taka kulka ze strzałką wskazującą na sześcian).

edycja materiałów

Zaznaczamy element step i z listy modiferów wybieramy UVM Mapping. W jego opcjach V tile zmieniamy na 24. Powinno pasować jak ulał. Pozbywamy się modifera konwersją. To samo robimy z elementem border tylko, że tutaj w UVM mappingu aligment zmieniamy na Y i klikamy fit.

Gdy dodamy materiał na element block, a po nim Uvm to w opcjach Lenhgt/Width/Height wpisujemy 32 a mapowanie zmieniamy z planarnego na box. Nastepnie klikając prawym myszy w dowolnym miejscy wybieramy gizmo i obracamy je tak by teksturowanie pasowało nam do modelu.

mapowanie

Pora teraz na skręcenie schodów. Zaznaczamy wszystko i z modiferów wybieramy bend. Zmieniamy Angle na 180, Bend axis na Y i bawiąc się Gizmo (PPM > Gizmo) oraz oraz Center (PPM > Center) zmieniamy kształt modelu pamiętając o tym, by końcowe vertexy nie odbiegały za daleko od siatki.

Gdy uzyskamy odpowiedni kształt konwertujemy model na poly i uporządkowujemy najważniejsze wertexy w ten oto sposób:

skręt

Nie mogą wystąpić ułamkowe pozycje w XYZ ale oczywiście tylko w miejscach gdzie model będzie stykał się z brushami. Gdybyśmy chcieli poprawić całość to pewnie zajęło by to o wiele za dużo czasu. Gdy już wszystko skończymy eksportujemy modelik do formatu ASE i wklejamy go do Radianta.

schody w Radiancie schody w Quake'u
"Clipowanie" modelu
  1. W "misc_model" dodając klucz "spawnflags" o wartości "2"
  2. Do shadera dopisując "q3map_clipModel"
  3. Ręczne układając "clip brushe" w Radiancie.