LIGHTWAVE 3D OBJECT FILE FORMAT by Allen Hastings revised 11/10/93 (no wîasnie, do LW 3.5) tîumaczenie c0manch3 / aMn35tY Wstëp Obiekty LW sâ zapisane jako pliki IFF których FORM jest okreôlony jako LWOB. Obecnie FORM LWOB musi zawieraê chunki PNTS, SRFS oraz POLS (w takiej kolejnoôci). Moûe po nich wystepowaê zero lub wiecej chunków SURF. Chunk PNTS Ten chunk zawiera listë wspóîrzëdnych X,Y i Z wszystkich punktów w obiekcie. Kaûda wspóîrzëdna jest zapisana jako czterobajtowa liczba zmiennoprzecinkowa w formacie IEEE. Dlatego teû liczba punktów w obiekcie jest ograniczona przez podzielenie dîugosci w bajtach chunka PNTS przez liczbë 12 (z tego co wiem LW nie przyjmuje obiektow ktore majâ wiecej niz 65536 punktow(!)). Kierunek +X to prawo lub wschód, +Y to góra, +Z to naprzód lub póînoc. Dla modeli ôwiata rzeczywistego jednostkâ jest metr. Wspóîrzëdne sâ wzgledne wobec punktu obrotu obiektu (pivot point) . Chunk SRFS Ten chunk zawiera listë nazw wszystkich powierzchni w obiekcie (sîowo "powierzchnia" w LW oznacza zespóî atrybutów opisujacych kolor i rodzaj cienowania (takûe tekstury) grupy polygonow). Kaûda nazwa powierzchnia wystëpuje jako ciâg znaków zakoïczonych zerem. Jeôli dîugoôê ciâgu (wîâczajac zero) jest nieparzysta, dodaje sië dodatkowy bajt zerowy. Nazwy powierzchni powinny byê czytane z pliku póki zostanie odczytana iloôê bajtów, która jest okreôlona w chunksize. Chunk POLS Ten chunk zawiera listë wszystkich polygonów w obiekcie. Kaûda pozycja zawiera liczbë caîkowita mówiaca o iloôci wierzchoîków, nastëpnie wystëpuje wlaônie taka liczba liczb calkowitych :) mówiacych o samych wierzchoîkach (odwoîanie do listy punktów), potem mamy liczby calkowite mówiace o numerze uûytej powierzchni (jako indeks do list powierzchni). Liczba wierzchoîków w polygonie moze sie wachac od jednego do 200. Lista wierzcholkow dla kazdego polygonu powinna sië zaczynaê od wierzchoîka wypukîego i iôê zgodnie z ruchem wskazówek patrzac od widocznej strony polygonu (polygony w LW sa jednostronne oprócz tych, których powierzchnie majâ wîâczonâ flagë 'double-sided'). Lista punktów w chunku PNTS jest numerowana poczynajâc od zera, a lista powierzchni w chunku SRFS jest numerowana poczynajâc od jedynki (wiëc numery powierzchni moga byc zanegowne aby zawiadomic o istnieniu szczegóîowych (detail) polygonow, o czym poniûej). Polygony powinny byc odczytywane z pliku dopóki nie zostanie przeczytane tyle bajtów ile ma chunk (zapisane w chunksize) Ujemny numer powierzchni polygonu sygnalizuje ûe polygon ma polygony szczegóîowe (detail) (ktore sâ rysowane na gîównym polygonie i mogâ byê z nim na wspóîpîaszczyúnie. W tym wypadku, nastëpna liczba w pliku to liczba caîkowita opisujaca iloôê polygonow dokîadnych naleûacych do owego polygonu. Nastepnie jest lista polygonów dokîadnych, w której kaûda pozycja jest w formacie opisanym powyûej dla zwykîych polygonów (za wyjâtkiem - polygony dokîadne nie mogâ posiadaê juû innych polygonow dokladnych). Lista zwykîych polygonow konczy sie na tym. Aby sprawdziê której powierzchni uûywa polygon z negatywnym numerem powierzchni, odcztujemy jego wartoôê absolutnâ. Chunk SURF Kazdy chunk SURF opisuje atrybuty pojedynczej powierzchni. Chunki te rozpoczynaja sie nazwa powierzchni. Nazwa jest zapisana jako ciag znaków zakonczonych jednym lub dwoma zerami (tak jak to byîo w przypadku chunka SRFS). Po nazwie wystëpuje seria pod-chunkow, które sâ takie jak chunki IFF, z tym, ûe ich rozmiary sâ okreôlone poprzez liczby caîkowite 'krótkie' (short) zamiast 'dîugich' (long). Oczywiste, ûe liczba tych pod-chunków wzroônie jeôli zostanâ dodane nowe atrybuty w programie (nowsze wersje), a wszystkie nieznane rodzaje chunków zostanâ pominëte w spoôob charakterystyczny dla IFF. Pod-chunki powinny byê czytane z pliku tak dîugo jak jest to okreôlone w chunksize. Pod-chunk COLR Ten pod-chunk zawiera trzy bajty opisujâce czerwonâ, zielonâ i niebieskâ skîadowâ koloru obecnej powierzchni, nastepnie jest bajt, który ignorujemy (powinien mieê wartoôê zero). Powierzchnia moûe miec wiec 24 bity koloru. Pod-chunk FLAG Ten pod-chunk zawiera krótkâ caîkowitâ której bity opisujâ róûne opcje dla bieûâcej powierzchni. Obecnie jedynie 9 mniej znaczacych bitów jest wykorzystanych. Opcje które ustawiajâ bity mówiâ o (rozpoczynajâc od najmniej znaczâcego): Luminacji (swieceniu), Outlinie (obwodce), Smoothingu, Color Highlights (rozbîyskach w kolorze powierzchni), Color Filter (kolor filtrowania dla przezroczystoôci), niprzezroczystoôci krawëdzi, (Opaque Edge) Transparent Edge (przezroczysta krawëdú),Sharp Terminator, Double-Sided (powierzchnia dwustronna) i Additive. Dwa bity krawëdzi (Opaque i Transparent) nie powinny byê ustawione jednoczeônie. Pod-chunki LUMI, DIFF, SPEC, REFL, i TRAN Kaûdy z tych chuków zawiera krótka liczbë caîkowitâ opisujâcâ nast. parametry powierzchni: ôwiecenie (luminosity), rozproszenie ôwiatîa (diffuse), poîysk (specular), odbicia (reflection) lub ustawienia przezroczystoôci (pod-chunk LUMI jest nowy dla LW 3.0 i zastëpuje bit Luminancji w pod-chunku FLAG). Wartoôê 256 odzwierciedla 100% danego parametru (w panelu kontrolnym LW). Jesli te pod-chunki nie wystepuja w chunku powierzchni, domyslnym ustawieniem jest zero. Pod-chunk GLOS Ten pod-chunk zawiera krótkâ liczbë caîkowitâ opisujâcâ wielkoôê poîysku obecnej powierzchni, i jest potrzebny tylko wtedy gdy wartoôê ustawiona w pod-chunku SPEC jest niezerowa. Róûnym poziomom rozbîysku odpowiadaja wartoôci: 16 - niska (low), 64 - srednia (medium), 256 - wysoka (high), a 1024 jest wartosciâ maksymalnâ (maximum) (nowe w LW 3.0). Ten parametr jest zwiâzany z "wyraûeniem bîysku" uûywanym w wielu modelach oôwietlenia. Pod-chunk RIMG Ten pod-chunk zawiera nazwë pliku (wîâczajâc caîâ ôcieûkë zdefiniowanâ przez uûytkownika) obrazka, który bëdzie uûyty jako mapa odbiê (reflection map) dla bieûâcej powierzchni. Znów, jeôli dîugoôê ciâgu znakow jest nieparzysta (îâcznie z zerem koïcowym), dodajemy jeszcze jedno zero. Jeôli ostatniâ czëôcia ciâgu jest "sequence", wtedy pierwsza czëôê ciâgu definiuje prefix (pierwszâ czëôê) nazwy sekwencji (wtedy, aktualna nazwa obrazka jest generowana poprzez dodanie trzycyfrowej liczby klatek do prefix'u gdy wczytywany jest obrazek lub sekwencja). Jeôli ustawienie odbiê w pod-chunku REFL jest niezerowe, ale sub-chunk RIMG nie wystëouje, wtedy powierzchnia odbija backdrop nieba i ziemi (backdrop nie jest obiektem, dziala jak enviorment -c0m) , takze gdy uzywamy peînego ray-tracingu LW. Pod-chunk RSAN Ten pod-chunk zawiera czterobajtowâ liczbë zmiennoprzecinkowâ, która opisuje kât nachylenia spojenia mapy odbiê. Pod-chunk RIND Ten pod-chunk zawiera czterobajtowâ liczbë zmiennoprzecinkowâ (w formacie IEEE) która opisuje stopieï refrakcji, który jest stosunkiem prëdkoôci ôwiatîa w próûni do predkoôci ôwiatîa w przezroczystym materiale. Dlatego, ûe ôwiatîo najszybsze jest w próûni, wartoôê ta powinna byê wiëksza lub równa 1.0. Pod-chunk EDGE Ten pod-chunk zawiera czterobajtowâ liczbë zmiennoprzecinkowâ (IEEE) która opisuje przezroczystoôê krawëdzi obecnej powierzchni. Wartoôê ta powinna sië zawieraê pomiëdzy 0.0 a 1.0. Pod-chunk SMAN Ten pod-chunk zawiera czterobajtowâ liczbe zmiennoprzecinkowâ (IEEE) opisujâcâ maksymalny kât pomiëdzy dwoma polygonami (zîâczonymi krawëdziâ) przy którym mogâ zostaê one wygîadzone (phong? -c0m) (wyraûone w stopniach). Polygony o wiëkszym kâcie pomiedzy nimi bëdâ 'zaostrzone' (czyt. niewygîadzone :). Pod-chunki CTEX, DTEX, STEX, RTEX, TTEX, i BTEX Obecnoôê jednego z tych pod-chunków informuje, ûe obecna powierzchnia ma kolor, rozproszenie, odbîyski, odbicia, przezroczystoôê lu teksturë bumpingu. Zawartoôciâ pod-chunka jest ciâg znaków (jak zwylke zakoïczony jednym lub dwoma zerami) opisujâcy typ tekstury tak jak w panelu Surfaces LightWave'a. Jeôli jeden z tych pod-chunków bëdzie w ôrodku chunka SUFR, wszystkie podrzëdne, zwiâzane z teksturami pod-chunki (opisane poniûej) nawiâzujâ do obecnej tekstury, doputy, dopóki wystâpi nastëpny CTEX, DTEX, STEX, RTEX, TTEX lub BTEX. Obecnie moûe byê zero lub jeden z tych pod-chunkow (do szeôciu tekstur - kaûda dla innego parametru) w kaûdym chunku SURF (z tego co wiem (bo korzystam) w LW 5.0 moûe byê wiëcej niû jedna tekstura dla jednego parametru (np. dla przezroczystoôci); dodatkowo moûna je wîaczaê w negatywie i nakîadaê teksturë jako kanaî alpha - ôciâgnë z Newteka nowszâ specyfikacjë). Pod-chunk TIMG Ten pod-chunk opisuje nazwë pliku z obrazkiem (lub prefix sekwencji) który bëdzie uûyty jako tekstura do mapowania. Patrz dokîadny opis pod-chunka RIMG. Pod-chunk TFLG Ten pod-chunk zawiera krótkâ liczbë caîkowitâ, której bity wîâczajâ róûne opcje dla obecnej tekstury. Obecnie (dla LW 3 blah) jest uûyte siedem mniej znaczâcych bitów. Opcjami tych bitów sâ (zaczynajâc od najmniej znaczâcego): - mapowanie w osi X, - mapowanie w osi Y, - mapowanie w osi Z, - koordynaty ogólne (World Coords), - negatyw tekstury, - rozmycie pikseli (np. przy bardzo duûym zbliûeniu tekstur o maîej rozdzielczoôci), - antyaliasing tekstury. Tylko jeden z trzech bitow mapowania (X,Y,Z) moze byê wîâczony. Pod-chunki TSIZ, TCTR, TFAL, i TVEL Te pod-chunki zawierajâ trzy liczby zmiennoprzecinkowe (4 bajty, IEEE) które opisujâ parametry (obecnej powierzchni) X,Y i Z dla ôrodka tekstury (TCTR), rozmiaru (TSIZ), zanikania (TFAL) lub jej prëdkoôci (TVEL). Pod-chunki TCTR, TFAL, TVEL sâ potrzebne tylko wtedy, gdy zwiâzane z nimi parametry sâ niezerowe. Pod-chunki TCLR Ten pod-chunk zawiera cztery bajty opisujâce kolor tekstury dla danej tekstury (masîo maôlane), który bedzie modyfikowaî  teksturë (innymi sîowy, powinien wystâpiê wczeôniej pod-chunk CTEX). Bajty opisujâ kolor tak jak w pod-chunku COLR. Pod-chunk TVAL Ten pod-chunk zawiera krótkâ liczbe rzeczywistâ opisujâcâ wartoôc parametrów tekstury takich jak: rozproszenie, rozbîyski, odbicie lub przezroczystoôê, powinien wystâpic gdzieô po DTEX, STEX, RTEX lub TTEX. Wartoôê 256 odpowiada 100% w LW. Pod-chunk TAMP Ten pod-chunk zawiera IEEE opisujâcâ amplitudë obecnej tekstury bumpingu, powinien wystâpiê wiëc gdzieô po pod-chunku BTEX. Wartoôê 1.0 odpowiada 100% w LW. Pod-chunk TFRQ Ten pod-chunk zawiera krótkâ liczbë caîkowitâ opisujâcâ liczbë úródeî fal lub zakîóceï (np. dla Fractal Noise) uûywanych przez obecnâ teksturë. Pod-chunk TSP0, TSP1, i TSP2 Te pod-chunki zawierajâ IEEE (kaûdy po jednej) opisujâce jeden ze specjalnych parametrów (tak jak kontrast, turbulencje, dîugoôê fali). Kolejnoôê tych parametrów jest taka jak kolejnoôê ich wystëpowania na panelu w programie (ale, kurwa, pomysî). W przyszîoôci (teraz? LW5?) moûe ich byê wiëcej dla danej tekstury. Przykîad pliku z obiektem Prosty obiekt (z cokolwiek skomplikowanymi powierzchniami) jest pokazany poniûej aby przedstawiê pewne moûliwoôci FORM LWOB. Obiekt jest teksturowanym, bumpowanym, kwadratowym polygonem w rzucie XY z bîyszczâcym, przezroczystm, ûóîtym trójkâtem, który jest polygonem szczegóîowym (detail). Kaûda linia listingu przedstawia 16 bajtów w heksie :), a obok odpowiedniki w ASCII (qrva, instrukcja jak dla mîotków). Notatki pod kaûdâ liniâ powinny byê czytane raczej z lewej do prawej, aniûeli z góry na dóî. 464F524D 0000019C 4C574F42 504E5453 00000054 3F800000 3F800000 00000000 ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ FORM....LWOBPNTS ...T?...?....... Wspóîrzëdne X,Y i Z punktu numer 0 sâ 1.0,1.0,0.0 (format IEEE) ^^^^ Jest 84 bajty w chunku PNTS, wiec jest siedem punktów w obiekcie (84 / 12 = 7) BF800000 3F800000 00000000 3F800000 BF800000 00000000 BF800000 BF800000 00000000 3F000000 BF000000 00000000 00000000 3F000000 00000000 BF000000 BF000000 00000000 53524653 00000012 53717561 72650000 54726961 6E676C65 ^^^^ ....?.......?... ................ ....?........... ....?........... ........SRFS.... Square..Triangle Nazwa powierzczni "Square" jest zakoïczona dwoma zerami aby liczba bajtów ciâgu byîa parzysta. 0000504F 4C530000 00180004 00010000 ^^^^ ..POLS.......... Pierwszy polygon ma trzy wierzchoîki (które sâ punktami 1, 0, 2 i 3). 00020003 FFFF0001 00030005 00040006 ^^^^ ................ Polygon szczegóîowy ma trzy wierzchoîki (które sâ punktami 5, 4 i 6). ^^^^ Wystëpuje jeden polygon dokîadny ^^^^ Kodem powierzchni pierwszego polygonu jest jeden wiëc uûywa on powierzchni numer jeden ("square") i posiada polygony dokîadne. 00025355 52460000 00AE5371 75617265 ^^^^ ^^^^ ..SURF....Square To zaczyna opis powierzchni nazwanej "square". ^^^^ Polygon dokîadny uûywa powierzchni numer 2. 0000434F 4C520004 C8C8C800 464C4147 00020000 44494646 00020100 43544558 ^^^^^^^^ ..COLR......FLAG ....DIFF....CTEX Nastëpny zestaw pod-chunków zwiâzazanych z kolorem tekstury powierzchni. ^^^^ Rozproszenie powierzchni "square" jest ustawione na 100 %. 0012506C 616E6172 20496D61 6765204D ^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ..Planar Image M Kolorem tekstury jest planarne mapowanie obrazka w pliku ram:Laura 61700000 54494D47 000A5241 4D3A4C61 75726100 54464C47 00020004 5453495A ^^^^ ap..TIMG..RAM:La ura.TFLG....TSIZ Flaga bitów wskazuje ûe obrazek jest mapowany wzglëdem osi Z. 000C4000 00003FC0 00003F80 00005443 ^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^ ..@...?...?...TC Rozmiary X,Y,Z tekstury to 2.0, 1.5 i 1.0 4C520004 00000000 42544558 000E4672 ^^^^^^^^ LR......BTEX..Fr Nastëpny zestaw pod-chunków naleûâcych do tekstury bumpingu powierzchni "Square" 61637461 6C204275 6D707300 54464C47 0002000A 5453495A 000C3DCC CCCD3DCC ^^^^ actal Bumps.TFLG ....TSIZ..=...=. Flaga bitów wskazuje na aktywacjë wspóîrzëdnych globalnych. CCCD3DCC CCCD5441 4D500004 3FC00000 ^^^^^^^^ ..=...TAMP..?... Amplituda bumpingu wynosi 150% (1.5 w IEEE) 54465251 00020001 53555246 00000044 ^^^^^^^^ TFRQ....SURF...D To jest poczâtek opisu powierzchni nazwanej "Triangle" ^^^^ Tekstura bumpingu ma jednâ czëstotliwoôê zakîóceï. (np.Fractal Noise) 54726961 6E676C65 0000434F 4C520004 F0B40000 464C4147 00020000 44494646 ^^^^^^^^ Triangle..COLR.. ....FLAG....DIFF Kolor powierzchni "Triangle" jest ûóîty (240 czerwony, 180 zielony i 0 niebieski). 0002009A 53504543 000200CD 474C4F53 ^^^^ ....SPEC....GLOS Poîysk materiaîu jest ustawiony na 80% (205 z 256) 00020100 5245464C 00020033 5452414E ^^^^ ....REFL...3TRAN Mapa odbiê powierzchni wynosi 20% (51 z 256) lecz nie wystëpuje pod-chunk RIMG, wiëc powierzchnia odbija tîo (enviorment :). ^^^^ Powierzchnia ma wysoki (high) poîysk (256). 00020066 ...f ^^^^ Powierzchnia jest w 40% przezroczysta. Powierzchnia "Triangle" nie posiada tekstur, nie wystëpujâ inne powierzchnie wiëc obiekt koïczy sie tutaj. Comanche/Amnesty & aGOny