Komentarze: (0)
Oceny:
Autor: Oxej
Dodane przez:: Oxej   Data: 19-07-2011 00:02
 
Przypomniało mi się, że miałem napisać tutka dot. 'loading orderu', czyli zawiłej czynności wczytywania tekstur, która po załapaniu, o co chodzi staje się banalna.

Do rzeczy:
Loading order to nic innego, jak kolejność wczytywania tekstur przez grę. Polega to na tym, że gra (czy tam raczej jej silnik) dostaje model (dajmy na to chassis), odczytuje w rpk, jakie tekstury ma na niego narzucić i robi to, dzięki czemu my możemy podziwiać w grze piękną karoserię w teksturkami wnętrza, podwozia, czy liczników. Ni mniej, ni więcej.

Skąd biorą się problemy z loading orderem?
Otóż każdy wrzucany do gry model ma nieco inną 'konstrukcję' - konfigurację, ustawienie, kolejność nałożenia tekstur. Nie są one (z tego, co mi wiadomo) w żaden sposób przy eksporcie do scx zapisywane, przez co musimy je przypisać do tego modelu jakoś sami. Daje nam to pewne ciekawe możliwości, ponieważ nie jesteśmy zmuszeni do przypisywania do modelu dokładnie tych tekstur, które nałożyliśmy na niego w maxie

Przypisać? Niby jak?
Poprzez edycję wpisu typeof 14, zwanego także renderem. Znajduje się on w pliku rdb/rpk. Wygląda mniej-więcej tak:


<FILE 00000246.res >
typeof	14
superid	0x00000005
typeid	0x000000F9
alias	hood_2
isparentcompatible	1.00
</FILE>
<FILE 00000246.rsd >
mesh 0x000000F8
flags 8.000
lod_amp 3.000
shd_center 0.000 0.000 0.000
shd_diru 0.000 0.000 0.000
shd_dirv 0.000 0.000 0.000
shd_vbase 0.000 0.000 0.000
shd_vup 0.000 0.000 0.000
texture 0x00020025
texture 0x00000045
texture 0x00000000
texture 0x00000C45
</FILE>

Loading order to te cztery linijki (w tym wypadku, nic nie stoi na przeszkodzie, żeby zmienić ich ilość) na końcu, zaczynające się od texture, linijka mesh określa, na który model scx nakładamy te tekstury.

No dobra, ale skąd wziąć te tekstury?
Sprawa jest prosta - przy eksporcie do scx pojawia się także plik .tex. Otwieramy go notatnikiem (bądź jakimkolwiek innym edytorem tekstu) i patrzymy, jak wygląda w jego przypadku loading order (kolejność tekstur). W przypadku wspomnianej wcześniej maski, hood_2.tex wyglądał tak:

Nissan_Silvia_S110_hood.dds
default_cyan.png
general_env_map.dds
S110_Signs.bmp

WTF?
Wprawne oko zapewne zauważy, że kolejność tekstur z .tex nie do końca pokrywa się z typeof 14, dla tych mniej spostrzegawczych:

Nissan_Silvia_S110_hood.dds   >/> texture 0x00020025
default_cyan.png              >/> texture 0x00000045
general_env_map.dds           >>> texture 0x00000000
S110_Signs.bmp                >>> texture 0x00000C45

Różnica polega na tym, że dwie linijki - 0x000200XX (lakier) oraz - w tym wypadku - 0x00000045 - *.dds są zamienione miejscami.
Dlaczego tak jest? Przy ustawianiu tekstur należy zamienić miejscami teksturę lakieru (w tym wypadku - texture 0x00020025) oraz teksturę z alpha channelem (w tym wypadku - texture 0x00000045).

Czemu tak jest?
Nie wiem, jednak w przypadku niezastosowania się do tego, część da się malować, ale nie da naklejać naklejek, więc należy uznać to po prostu za dogmat i stosować.



a o tym, czym jest alpha channel i jak go tworzyć - w kolejnym odcinku