Cieniowanie Phonga
dAde, Pią, 2005-04-08 20:15 Quake 3 Arena | Tutoriale | RadiantNa samym początku - co to jest phong shading? To metoda oświetlenia / cieniowania obiektów (brushy), mająca na celu (w dużym uproszczeniu) wywołanie efektu "zwiększenia poziomu (ilości) szczegółów", podczas gdy brushy nie jest tak naprawdę więcej. Trochę zagmatwałem, więc najlepiej będzie, jeśli to zilustruje: tak wygląda normalny zestaw brushy:

A tak po zastosowaniu "cieniowania phongiem":
Widać różnicę, prawda? :] Przejdźmy więc do konkretów. W poradniku oprócz rzecz jasna Quake'a 3 i samego Radianta przydadzą nam się dwie teksturki. Jedna to zwykła tekstura skał, która będzie się pojawiała w grze, druga to ta sama textura, ale z napisem np. "phong", która będzie się pojawiała w Radiancie dla naszej wygody i lepszego "rozeznania". Tą zwykłą nazwiemy "rock01", a tą z napisem "rock01_phong" i obie mogą być w formacie ".jpg". Mamy więc dwie textury:

Poza tym będziemy potrzebowali odpowiedniego shadera, oto przykładowy schemat takowego:
textures/phong/rock01
{
q3map_nonplanar
q3map_shadeangle 60
qer_editorimage
textures/phong/rock01_phong.tga
{
map $lightmap
rgbGen identity
}
{
map textures/phong/rock01.tga
blendFunc filter
}
}
Nazywamy sobie shader dowolnie i oczywiście dopisujemy jego nazwę do pliku "shaderlist.txt". Następnie odpalamy Radianta i bawimy się teksturą.
Zróbmy sobie przykładową ściankę z brushy (nierówności powinny być raczej delikatne, "system" może sobie nie poradzić z bardzo wystającymi elementami) i pokryjmy ją teksturą "rock01" (w edytorze z napisem "Phong"). Całość otoczmy jakimś niebem i wrzućmy podłogę. Po skompilowaniu "mapki" powinno to wyglądać na przykład tak:

Jeśli nie jesteśmy zadowoleni z efektu pomocna może być manipulacja wartością parametru q3map_shadeangle w pokazanym wyżej shaderze - im wyższa wartość tym większy jest dopuszczalny kąt między brushami, które mają być cieniowane "phongiem". Najrozsądniej używać wartości poniżej 90o stopnii. Rozwiązaniem może być też dopisanie do kompilatora (w fazie odpowiadającej za oświetlenie mapy) parametru -shadeangle XX) gdzie XX to wspomniany wcześniej kąt. Używanie jednocześnie shadera i parametru -shadeangle może zakończyć się niepożądanymi efektami ubocznymi, dlatego początkującym maporobom nie poleca się takich eksperymentów.




