############################################### ##### ##### ##### CoLoBoT model file (*.mod) ##### ##### Unofficial documentation ##### ##### ##### ##### Nieoficjalna dokumentacja ##### ##### pliku modelu (*.mod) w CoLoBocie ##### ##### ##### ##### Based on the english text available ##### ##### on the official Colobot forum: ##### http://www.deagol.net/colobot/viewtopic.php?p=1787#1787 ##### ##### ############################################### UWAGA! Nie ponoszę odpowiedzialności za jakiekolwiek skutki wykorzystywania tego tekstu, nie gwarantuję także że informacje tutaj zawarte są poprawne. UWAGA: Możesz nie rozumieć pojęć takich jak "UV", "światło rozproszone" czy też "wektor normalny". W takim przypadku odsyłam do jakiejś książki o teorii grafiki 3D i/lub o OpenGL lub DirectX. Możesz też poszukać PDFów o tym. ============================ === SKĄD WZIĄĆ PLIKI MOD === ============================ Pliki mod można rozpakować z pliku colobot2.dat za pomocą programu do ściągnięcia: http://www.colobot.yoyo.pl/forum/viewthread.php?forum_id=29&thread_id=122&getfile=1146 Więcej informacji na temat posługiwania się plikami dat znajdziesz na tej stronie: http://colobot.adiblol.cba.pl/wiki/index.php?title=Kurs:Pliki_DAT =================== === TYPY DANYCH === =================== *** float *** Liczba wymierna Liczba zmiennoprzecinkowa zajmująca 4 bajty. UWAGA: W Pascalu nie występuje typ float. Jego odpowiednikiem w tym przypadku jest Single. *** DWORD *** Liczba naturalna 4-bajtowa liczba całkowita bez znaku. Wartość może być od 0 do 4 294 967 295 (2^32-1) *** NTS *** Null Terminated String - ciąg znaków. Bajt o wartości 0 oznacza koniec ciągu. Kod dla Pascala konwertujący 16-bajtowy NTS na string: type TChar16 = array[0..15] of char; function Char16toStr(c:TChar16):string; var i:byte; r:string; begin r := ''; for i := 0 to 15 do if c[i]=#0 then break else r := r+c[i]; Result := r; end; =================== === REKORDY === =================== *** Nagłówek pliku *** (to występuje na początku pliku, dalej są już trójkąty) Offset Typ Opis ---------------------------------------------------------- 00h DWORD Główna wersja pliku (przed kropką) 04h DWORD Podrzędna wersja pliku (po kropce) 08h DWORD Liczba trójkątów w pliku 0Ch DWORD Nieznane - zawsze 0 10h DWORD Nieznane - zawsze 0 14h DWORD Nieznane - zawsze 0 18h DWORD Nieznane - zawsze 0 1Ch DWORD Nieznane - zawsze 0 20h DWORD Nieznane - zawsze 0 24h DWORD Nieznane - zawsze 0 28h DWORD Nieznane - zawsze 0 2Ch DWORD Nieznane - zawsze 0 30h DWORD Nieznane - zawsze 0 *** Point3D *** Punkt w przestrzeni trójwymiarowej. UWAGA: W przeciwieństwie do układu współrzędnych w Colobocie (x,y na boki, z góra/dół) tutaj współrzędne x i z są na boki, a y w górę (czyli zgodnie z trójwymiarowym układem współrzędnych znanym np. z programów do modelowania 3D) Offset Typ Opis ---------------------------------------------------------- 00h float X 04h float Y 08h float Z *** PointUV *** Punkt na teksturze. Współrzędna U to X na obrazie, V to Y na obrazie. Obie wartości są między 0.00 a 1.00. Czyli aby obliczyć współrzędne punktu na obrazie należy pomnożyć wartość przez 255 (tekstury w Colobocie mają rozmiar 256x256). Offset Typ Opis ---------------------------------------------------------- 00h float U 04h float V *** Vertex *** Wierzchołek trójkąta. Offset Typ Opis ---------------------------------------------------------- 00h Point3D Pozycja 0Ch Point3D Wektor normalny (używany do obliczania koloru i widoczności trójkąta) 18h PointUV Współrzędne UV głównej tekstury 20h PointUV Współrzędne UV tekstury brudu *** ColorRGBA *** Kolor złożony z wartości RGB. Wartości są z przedziału od 0.00 do 1.00. Offset Typ Opis ---------------------------------------------------------- 00h float R 04h float G 08h float B 0Ch float Alpha (widoczność) (nieużywane) *** Material *** Materiał trójkąta. Offset Typ Opis ---------------------------------------------------------- 00h ColorRGBA Światło rozproszone 10h ColorRGBA Światło otaczające 20h ColorRGBA Światło odblasków (nieużywane) 30h ColorRGBA Światło emisyjne (?) 40h float Siła odblasków (nieużywane) *** Triangle *** Opisuje trójkąt - figurę używaną do modelowania grafiki 3D. Offset Typ Opis ---------------------------------------------------------- 000h DWORD Widoczność - jeśli 0 to nie będzie wyświetlany 004h Vertex Wierzchołek 1 02Ch Vertex Wierzchołek 2 054h Vertex Wierzchołek 3 07Ch Material Materiał powierzchni 0C0h NTS [10h] Nazwa pliku z teksturą. UWAGA! Rozszerzenie zawsze będzie TGA nawet jeśli tutaj jest BMP. 0D0h DWORD/float Nieznane 0D4h float Zakres widoczności * 0D8h float Nieznane: 1000000 dla większości obiektów; 100 dla kryształów 0DCh DWORD/float Nieznane 0E0h DWORD Tekstura brudu: 0: brak brudu, 1: określona w pliku misji (SecondTexture rank=...), Inne: Z pliku "Dirtyxx.tga" (przy czym xx to wartość przekonwertowana na dwucyfrowy ciąg znaków, np. dla wartości 3 nazwa pliku będzie "dirty03.tga") 0E4h DWORD/float Nieznane NOTA: Możesz zmienić plik MOD i spakować colobot2.dat gdy gra jest uruchomiona a zmiana będzie widoczna na każdym nowym obiekcie który używa tego pliku MOD. ================ === Przypisy === ================ *) Zakres widoczności to zakres odległości w których będzie widzialny trójkąt. Służy do obniżenia liczby trójkątów w scenie i tym samym przyspieszenia działania gry. Mianowicie dla dalszych zakresów widoczności daje się mniej trójkątów ponieważ nie są one konieczne gdyż oddalony obiekt jest słabo widoczny. Przypuśćmy że mamy w pliku następujące wartości: 0, 100, 200, 300 Wartość 0 oznacza widoczność przy oddaleniu do 100m, Wartość 100: od 100m do 200m Wartość 200: od 200m do 300m Wartość 300: od 300m do nieskończoności. =================== === ZAKOŃCZENIE === =================== Więcej informacji na temat Colobota, jego modeli itp. znajdziesz na stronach poświęconych Colobotowi, np.: - http://colobot.adiblol.cba.pl/ - http://www.colobot.yoyo.pl/ Jeśli chcesz sobie przekonwertować pliki MOD na pliki OBJ+MTL i otworzyć je np. w Blenderze, skorzystaj z mojego konwertera, którego możesz ściągnąć stąd: http://www.colobot.yoyo.pl/forum/viewthread.php?forum_id=33&thread_id=66&getfile=1143 Jego instrukcję obsługi znajdziesz tutaj: http://www.colobot.yoyo.pl/forum/viewthread.php?forum_id=33&thread_id=66 Coming soon: Konwerter OBJ+MTL na MOD !!! Jeśli masz mi coś do przekazania, napisz e-mail: adiblol@interia.pl Copyright (C) 2008 by adiblol Ten plik może być rozpowszechniany bez ograniczeń, ale modyfikowanie i wykorzystywanie fragmentów wymaga podania źródła.