ZDR#4 – 3D skybox

W tym tygodniu przedruk tutoriala jaki napisałem dla sourcesdk.pl (możecie go znaleźć tutaj). Podobno scena modderska pod Source’a upada. Ja tymczasem co chwila dostaję sygnały od ludzi, że robią jakieś fajne rzeczy, albo pytają się jak coś zrobić. Według mnie scena (także ta polska) ma się całkiem nieźle.

Ja tam się za jakiegoś specjalistę w sprawach map nie uważam. Trochę się znam na jednym edytorze, ale jeszcze więcej rzeczy jest  dla mnie czarną magią🙂 Mimo to co jakiś czas dostaję prośby i propozycje co bym to nie napisał, jakiegoś, nawet prostego poradnika, zarówno dotyczącego spraw technicznych jak i bardziej estetycznych. No cóż, od czasu, do czasu próbuję coś skrobnąć. W najbliższy czasie też postaram się wstawić kilka tego typu artykułów. Nie chce żeby to wyglądało jak jakaś prawda objawiona, a raczej jak spojrzenie na level design moimi oczami, moje potyczki z hammerem, pomysły, a także błędy🙂

—————————————————————

3D skybox

Tutorial przedstawia, w pewnym sensie, sytuację ekstremalną aby pokazać, że 3d skybox można idealnie dopasować do właściwej geometrii levelu, nawet gdy jest ona bardzo skomplikowana. W praktyce, łączenie skyboxa z właściwym levelem zawsze powinno odbywać się poza zasięgiem wzroku gracza (być odpowiednio zamaskowane).

Zademonstruję to tym prostym schematem (widok z góry):

1. Przygotowanie poziomu
Stare góralskie przysłowie mówi, że: „Skybox robi się na samym końcu tworzenia mapy, hej!”… ale warto jest zawczasu przewidzieć to i owo. Akurat na potrzeby tutka, zbuduję całą mapę z myślą o skyboxie.

Więc, powiedzmy, że tak wygląda podłoga (layout mapy). Oczywiście ja tu trochę zaszalałem, bo na potrzeby tutka wystarczy zrobić kwadrat, będzie o wiele prościej.

Teraz robimy taką dziwną rzecz, że obudowujemy nasz level dosyć grubymi klockami pokrytymi teksturą nodraw. Po co? Te klocki właśnie pozwolą nam później idealnie wpasować 3d skybox do mapy.

Następnie kopiujemy brushe z nodrawem, podnosimy je do góry, pokrywamy teksturą skybox i rozciągamy do góry (wysoookoo, wedle uznania), to są po prostu ściany graniczne naszego levelu. Potem kopiujemy podłogę, znów nakładamy teksturę skybox i mamy sufit. Mamy przestrzeń mapy.

2. Tworzymy skybox
Teraz kolejny bardzo ważny krok. Wstawiamy byt sky_camera. Wstawiamy go dokładnie w centrum siatki w hammerze (środek bytu musi pokrywać się ze środkiem siatki). Nie w centrum mapy, tylko w centrum siatki, może być to poza naszą mapą (nawet kilometr). Środek siatki jest w miejscu gdzie stykają się 3 kolorowe odcinki (czerwony, zielony i niebieski).

Dlatego też najlepiej robić mapy zaczynając na środku obszaru roboczego, będzie wygodniej.

Teraz zaznaczamy razem, wszystkie nasze bloki pokryte nodrawem oraz byt sky_camera (przytrzymując ctrl) i kopiujemy je (przesuwamy z shiftem) gdzieś obok naszego levelu.

Następnie wchodzimy do narzędzia Transformation (ctrl+M) i skalujemy wszystko (razem ze sky_camera). Ponieważ w skyboxie wszystko jest domyślnie pomniejszone 16 razy, tyle razy musimy pomniejszyć nasze zaznaczone byty. W tym celu w okienku zaznaczamy „scale” i we wszystkich 3 polach wpisujemy .0625. Tak, tam jest kropka na początku. To po prostu dziesiętny zapis 1/16.

Teraz możemy (a właściwie musimy) już usunąć pierwotny byt sky_camera (ten w samym centrum siatki).

Sam 3D skybox tak samo jak właściwy level musi być otoczony solid brushami (również pokrytymi teksturą „skybox”). Ich wielkość jest sprawą dowolną. Im większa tym efekt będzie bardziej naturalny, ale to też zależy od charakteru mapy. Jeśli mapa otoczona jest wysokimi budynkami, to skybox nie musi być duży, bo i tak to co będzie daleko, będzie zasłonięte.

Ponieważ ja chcę mieć w 3D skyboxie displacementy, więc muszę trochę przygotować podłoże. Ponieważ granice mojego levelu nie tworzyły kwadratu, muszę odpowiednio dobudować brushe, aby displacementy się potem ładnie łączyły.

Następnie rozciągam brushe aż do końca skyboxa. Robię to we wszystkich kierunkach.

Potem nakładam teksturę, w tym przypadku trawy, skaluję ją w dół (żeby ładniej wyglądała z levelu), zaznaczam „treat as one” i wyrównuje np: do dołu i do lewej. W ten sposób mam jednolicie pokrytą powierzchnię.

Teraz zaznaczam górne powierzchnie i tworzę displacementy o największej dostępnej sile, czyli 4. Pamiętajmy, ze z poziomu mapy wszystko będzie 16 razy większe, więc liczy się detal.

Następnie maluję geometrię, alphę (jeśli korzystam z tektury blend) oraz dodaję modele.

Przed kompilacją pamiętajmy aby dodać chociaż te 2 podstawowe byty: light_environment i info_player_start. Wystarczy jeden byt light_environment, umieszczony na głównej mapie.

I to wszystko. jak widać, w grze, 3D skybox idealnie styka się z właściwym levelem. Jeśli odpowiednio przeskalujemy teksturę w skyboxie oraz użyjemy takiej samej na mapie, to możemy stworzyć prawie niezauważalne, ciągłe przejście.

Aby dodać realizmu (albo odrealnić), można dodać mgłę. Wystarczy wpisać odpowiednie wartości w polach bytu sky_camera. Mgła ta działa tylko w skyboxie.

Jedna uwaga dotycząca powyższych screenów. Jak widać we właściwym levelu również użyłem displacementów, żeby namalować ścieżkę. Jednak aby to zrobić, skopiowałem podłogę mapy (tą białą) i opuściłem w dół, a tą pierwotną zamieniłem na displacement. Równocześnie dolną kopię, która tworzy teraz granicę mapy, pokryłem teksturą nodraw. W przeciwnym razie, poprzez skybox widać by było dziwne błędy (przykład).

Uwagi:
1. Byt sky_camera (w skyboxie) nie może znajdować się w solid brushu. Będzie to powodowało błędy i mapa się nawet nie skompiluje.
2. Mgła nie jest widoczna na tle samego nieba, jest ucinana. Widać ją tylko na tle geometrii i bytów. Jednak jak sobie radzić z tym problemem, to już materiał na inny tutorial.
3. Te żółte cyfry w rogach okien Hammera, to Fraps, którego zapomniałem wyłączyć na czas robienia zdjęć.

5 Responses to “ZDR#4 – 3D skybox”


  1. 1 Farum 22 Luty, 2012 o 08:58

    „[…]domyślnie pomniejszone 16 razy […]”, a nie przypadkiem powiększone? Eniłej – świetny poradnik, w końcu może zrobię 3D skyboxa,a nie ten płaski.

    • 2 zwieracz 23 Luty, 2012 o 19:00

      No w sensie, że trzeba wszystko pomniejszyć 16 razy, żeby potem było wyświetlone w 16-krotnym powiększeniu ^^

  2. 3 mrkarrmel 22 Luty, 2012 o 16:13

    Myśl o tworzeniu Skybox’a w taki sposób napawa mnie strachem, ale mimo wszystko fajny tutorial😛 .

    • 4 zwieracz 23 Luty, 2012 o 18:59

      No jak teraz patrze, to może za bardzo zaszalałem z tym tutkiem.

  3. 5 4funtv 2 Lipiec, 2012 o 14:10

    Jestem teraz krok dalej do zostania oficjalnym mapperem. Na razie wciąż bawię się w eksperymentalne mapy i scenki npc. Jakby Valve nie mogło zrobić tego kur** prościej.


Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s




Kalendarz wpisów

Luty 2012
Pon T Śr T Pt S S
« Sty   Mar »
 12345
6789101112
13141516171819
20212223242526
272829  

Archiwum


%d bloggers like this: