W tym tutorialu opiszę, jak można w prosty i szybki sposób podrasować wygląd gotowego modelu. Jak wiadomo silnik Source nie ogranicza się do samego bump mappingu. Warto używać takich rzeczy jak environment map, phong shading czy rim lighting. Może to za dużo nie mówi, dlatego opiszę każdy efekt z osobna.
Environment map
Najstarszy efekt. Służy do generowania odbicia na podstawie env_cubemap (obrazek). Najlepiej sprawdza się więc do tekstury metalu. Jego wadą jest to, że mapa musi mieć rozstawione byty env_cubemap i skompilowane komendą buildcubemaps (tutorial, od punktu 15). Aby uaktywnić efekt na swoim modelu (działa także z teksturami) należy otworzyć plik *.vmt z informacją o ścieżce tekstury i wpisać to:
A tak to będzie wyglądać na odwłoku Advisora w Model Viewerze:
No cóż, nie jest pięknie, ale zaraz to zmienimy. Dopisz jeszcze dwie linijki:
"$envmapcontrast" 1
"$envmapsaturation" .5
Envmapcontrast służy do zwiększania kontrastu odbicia (im większa cyfra, tym mocniejszy kontrast), a envmapsaturation do osłabiania/wzmacniania kolorów odbicia. .5 oznacza oczywiście 1/2, a więc kolory będą o połowę słabsze. Teraz wygląda to tak:
Znacznie lepiej, prawda? Niestety odbicie wciąż jest zbyt mocne. Aby to zmienić wystarczy dopisać jeszcze to:
"$envmaptint" "[.5 .5 .5]"
Envmaptint służy do zwiększania/osłabiania siły odbicia. Czyli tutaj odbicie będzie o połowę mniejsze. Można oczywiście stosować przeróżne kombinacje, np. 0.03 0.03 0.03; 7.36 7.36 7.36 itp.
I gotowe, teraz odwłok Advisora będzie lekko błyszczał. No dobra, ale teraz pytanie co zrobić, jeśli na teksturze jest element, który ma się błyszczeć, a reszta nie (jak, np. tu)? Są na to aż trzy sposoby.
Pierwszy polega na dopisaniu do vmt takie coś:
"$basealphaenvmapmask" 1
i zrobieniu kanału alfa w teksturze, w którym biały kolor to maksymalna siła efektu, a czarny to brak. Czyli dla Stalkera będzie wyglądać tak:
Drugi na dopisaniu:
"$normalmapalphaenvmapmask" 1
Z tą różnicą, że kanał alfa ma być w normal mapie, a nie teksturze.
Zaś trzeci na dopisaniu:
"$envmapmask" "[sciezka]_ref"
Gdzie zamiast robienia kanału alfa, zapisuje się oddzielną czarno-białą teksturę.
Uff, to tyle co do Environment map. Naprawdę ! Jeśli mimo wszystko czegoś nie rozumiesz, radzę się wrócić i przeczytać jeszcze raz oraz samemu, metodą prób i błędów, testować wszystko w Model Viewerze. Resztę tego typu rzeczy robi się mniej więcej tak samo, więc podstawy trzeba znać.
Phong shading
Efekt udoskonalany z każdą wersją Source'a. W HL2 jeszcze go nie było, istnieje dopiero od wersji silnika z HL2: EP1. Generuje odbicia tylko i wyłącznie od źródeł światła i jest w pełni dynamiczny, nie trzeba więc niczego wstawiać na mapę ani kompilować. Ma jednak dwie wady. Można go uzyskać tylko na modelach oraz żeby działał tekstura musi mieć bump mapping! Oczywiście, jeśli go nie ma można dodać pustą normal mapę, ale bez wątpienia to jest minus phong shaderów.
Efekt na naszym ulubionym odwłoku Advisora wygląda tak:
Bumpmap służy oczywiście do określenia ścieżki normal mapy, jeśli takowej nie ma wystarczy zrobić teksturę w rozdzielczości 2x2 o kolorze RGB - 128, 128, 255.
Phong służy do niczego . Po prostu musi być, aby był włączony (aby wyłączyć zmień parametr na 0).
Phongexponent określa jak duże ma być odbicie. Zazwyczaj przedział 5-15 jest idealny, ale czasami trzeba go zwiększyć. Na powyższym screenie ma parametr 5, zaś tak wygląda z 15, a tak z 60.
Phongboost oznacza oczywiście siłę phonga. Im większy parametr tym silniejsze odbicie (jak zwykle można używać ułamków, np. 0.7; 0.09 itp.).
Phongfresnelranges służy do określenia siły phonga pod różnymi kątami. Lepiej nie umiem tego wytłumaczyć, może lepiej pokazać to na screenach.
Załóżmy, że chcemy aby patrząc od przodu odbicie było nie widoczne, pod lekkim kątem już trochę widoczne, a pod bardzo dużym kątem bardzo silne. Wtedy parametr phongfresnelranges wpisujemy, np. taki - [0 4 30], efekt będzie wyglądać tak. Widać więc (mam nadzieję?), że pierwsza cyfra oznacza siłę phonga od przodu, druga pod lekkim kątem, a trzecia pod dużym. Warto tutaj trochę się pobawić parametrami samemu, żeby dobrze zrozumieć jak to działa.
A co jeśli chcemy aby w jednym miejscu tekstury był efekt phong, a w drugim nie (tak jak z wcześniej przytoczonym Stalkerem)? Robi się kanał alfa w normal mapie (na takiej samej zasadzie co Environment map, czyli biały to widoczny efekt, a czarny niewidoczny), ale tym razem nie trzeba nic dopisywać do vmt. Jest też drugi sposób, ale dostępny tylko dla wersji silnika z Orange Boxa lub nowszej. A mianowicie dopisać do vmt:
"$basemapalphaphongmask" "1"
Wtedy kanał alfa będzie "pobierany" nie z normal mapy, tylko z tekstury. Ten sposób jednak ma wadę taką, że Model Viewer go nie uwzględnia (użycie kanału będzie widoczne dopiero w grze).
A teraz kolejne pytanie - co jeśli chcemy mieć odbicie w konkretnych kolorach? Wystarczy dopisać do vmt to:
"$phongwarptexture" "[sciezka]_phongwarp"
I zrobić oczywiście odpowiednią teksturę. Moja wygląda tak:
A oto porównanie "łapek" Advisora z i bez phongwarpa:
Podobny efekt można zobaczyć w HL2:EP2 na Hunterach.
Uwaga! Włączenie phong shadingu na modelu powoduje pewne ograniczenia co do Environment map. Na silniku z Orange Boxa envmapcontrast i envmapsaturation przestaje działać, a na silniku z HL2:EP1 w ogóle nie można uzyskać obu efektów naraz. Dlatego niestety trzeba dokonać wyboru co jest lepsze .
Rim lighting
Efekt, który pojawił się wraz z premierą Orange Boxa. Bardzo często używany w TF2. Ma jedną wadę - działa tylko na modelach z phongiem.
Na szczęście nie jest zbyt skomplikowany. Wystarczy dodać do vmt:
Wszystkie parametry działają dokładnie tak samo jak w phongu. Pierwszy parametr służy więc do uruchomienia rima, drugi do jego wielkości, a trzeci do siły.
Detail
Ostatnio coraz popularniejsza sztuczka - nakładanie na zwykłą teksturę drugą, znacznie mniejszą prezentującą detale. Działa więc nie tylko na modelach, ale (przede wszystkim!) na zwykłych teksturach. Oto jaka jest różnica z i bez efektu - link.
Aby uruchomić należy do vmt dopisać, np. to:
Gdzie [material] to materiał, np. rock, metal lub plaster. W zasadzie nie ma tu nic do rozumienia, bo do różnych materiałów są różne gotowe parametry. Listę można zobaczyć (i skopiować) tutaj. Może i liczba materiałów nie jest imponująca, ale rozszerzy się wraz z premierą SDK do L4D (tam jest ich znacznie więcej).
I to póki co tyle. Są jeszcze dudv mapy, efekt refract czy parametry wody, ale to już znacznie wyższa szkoła jazdy. Póki co polecam pobawienie się tym co opisałem w tym tutorialu, czasami można uzyskać naprawdę wspaniałe wizualnie modele. A na koniec jeszcze daję kod "super" vmt ze wszystkimi elementami tego tutorialu. Wystarczy gdzieś go skopiować i wklejać ścieżki do poszczególnych tekstur/kasować niepotrzebne elementy itp. . Bardzo przydatna sprawa .
// -- From here down is new stuff which will only be applied if $phong is set to 1 --
"$phong" "1"
"$phongexponent" "5"
"$phongboost" "1"
"$phongfresnelranges" "[1 3 5]"
"$phongwarptexture" "[sciezka]_phongwarp"
// "$phongexponenttexture" "[sciezka]_exponent"
// "$basemapalphaphongmask" "1"
Tylko tutaj jest chyba mały błąd. Chodzi o teksturę z kanałem alpha, sposób trzeci. Z opisu na VDC wynika, że osobna tekstura $envmapmask nie jest do kanału alpha, tylko jako specular (odbijanie światła).
No to przecież te trzy metody opisują jak można regulować siłę speculara na teksturze. Używanie oddzielnej tekstury zamiast kanału alpha to tylko jeden z tych sposobów, przydatny, gdy używamy już kanału alpha do np. przezroczystości.
No tak tak, racja. Przepraszam, zwracam honor. BTW bawiłem się tym właśnie ostatnio, i WAŻNE wyczytałem, że gdy chcemy użyć mapy specular, osobny plik vtf speculara nie działa, gdy korzystamy także z bumpmapy. (tutaj poczytaj Warning). A sam zauważyłem, że z wykorzystaniem specular mapy w kanale alpha tekstury podstawowej stwarza pewne problemy (u mnie nie działa), za to świetnie działa gdy specular mapa jest w kanale alpha tekstury bump.
To prawda, zawsze najlepiej korzystać z normal mapy. Nawet jeśli tekstura jej nie ma i tak robię pustą, żeby potem mieć specular/phong bez żadnych problemów.
Elektryk: Macie jedno kliknięcie ode mnie, aznajcie moją łaskę.
NaVarion: leżę ;D
Dabu: Przyśpiesz i Wyczyść Komp? Super! Gry karciane w internecie? Biorę! Fotografia szkolna? O tak!
CREWE: *ręczna deinstalacja
CREWE: Do napisania tak prostej rzeczy doprowadzili mnie ludzie pytaniami jak odinstalowac program po reisntalacji systemu windows. :P Nie sądziłem, że ręczna instalacja jeszcze może sprawiać problemy. Link
raven22: To ja tylko dodam, że nie wolno tworzyć sztucznych klików i klikać w reklamy, którymi nie jesteśmy zainteresowani :)
Tracha: Już widze, całe SMC w reklamy klika i tylko administracja z kilofami bije nie klikających :D
zwieracz: Klikać w reklamy, a nie gadać! ^^
Dabu: Jakoś nie mam ochoty, zieeeew.
Tracha: Wątpisz w Syna Marnortawnego?! On powrócił, zrespawnował się!