Format SBT: Różnice pomiędzy wersjami
(→Shape node) |
|||
Linia 146: | Linia 146: | ||
|- | |- | ||
| 44 (3x double, 5x float) * ilość wierzchołków | | 44 (3x double, 5x float) * ilość wierzchołków | ||
− | | Dane wierzchołków | + | | Dane wierzchołków. Kolejno pozycja, normal, mapowanie |
|} | |} | ||
Wersja z 10:21, 31 maj 2022
Plik SBT (Scenery Binary Terrain) jest plikiem binarnym zawierającym dane terenu. Dane te są podzielone na sekcje, co w zamyśle ma umożliwić szybsze wczytywanie scenerii i jej dynamiczne ładowanie bez potrzeby wczytywania całej scenerii do pamięci, jak to ma miejsce w przypadku plików tekstowych.
Plik tworzony jest podczas wczytywania scenariusza. Wszystkie trójkąty terenu oraz linie z plików tekstowych (SCN, SCM, INC) są w ramach sekcji łączone w większe grupy siatek i w tej formie zapisywane do pliku SBT. Późniejsze ładowanie tego samego scenariusza będzie już używało danych z pliku SBT, a co za tym idzie - wczytywanie będzie dużo szybsze.
Ponieważ nie istnieje sposób na rozpoznanie, które scenariusze korzystają z takiego samego terenu i otoczenia, plik SBT tworzony jest osobno dla każdego scenariusza.
Generowanie plików SBT można wyłączyć wpisem w eu07.ini
file.binary.terrain no
Spis treści
Format pliku
Na początku pliku znajduje się nagłówek pliku.
Rozmiar i typ danych | Opis |
---|---|
4 (4x char) | Nagłówek pliku - ciąg znaków "EU07" |
Region
W obecnej wersji formatu występuje tylko jeden region. Region grupuje sekcje. W ramach jednego regionu mieści się 500x500 sekcji.
Rozmiar i typ danych | Opis |
---|---|
3 (3x char) | Nagłówek regionu - ciąg znaków "SBT" |
4 (1x unsigned int) | Numer wersji formatu (wersji pliku?). Aktualnie exe na stałe wpisuje liczbę 1. |
4 (1x unsigned int) | Liczba sekcji w regionie |
nieznany | Dane sekcji |
Sekcja (section)
Sekcje są podstawową jednostką podziału scenerii na fragmenty. Sekcja jest kwadratem o długości boku równej 1000m i jest podzielna na komórki.
Rozmiar i typ danych | Opis |
---|---|
4 (1x unsigned int) | Indeks sekcji |
4 (1x unsigned int) | Rozmiar sekcji w bajtach |
12 (3x float) | Środek bounding boxa |
4 (1x float) | Promień bounding boxa |
4 (1x unsigned int) | Ilość shape'ów w sekcji |
nieznany | Dane geometryczne (shape node) |
nieznany | Dane komórek |
Komórka (cell)
Komórka jest kwadratowym obszarem o długości boku równej 250m, dzielącym sekcję na 16 mniejszych elementów.
Rozmiar i typ danych | Opis |
---|---|
12 (3x float) | Środek bounding boxa |
4 (1x float) | Promień bounding boxa |
4 (1x unsigned int) | Ilość nieprzezroczystych geometrii w komórce |
nieznany | Dane geometryczne (shape node). |
4 (1x unsigned int) | Ilość przezroczystych geometrii w komórce |
nieznany | Dane geometryczne (shape node). |
4 (1x unsigned int) | Ilość geometrii linii w komórce |
nieznany | Dane geometryczne (lines node). |
Dane geometryczne
Shape node
Rozmiar i typ danych | Opis |
---|---|
zmienny (null-terminated string) | Nazwa obiektu |
12 (3x float) | Środek bounding boxa |
4 (1x float) | Promień bounding boxa |
8 (1x double) | Minimalna odległość renderowania |
8 (1x double) | Maksymalna odległość renderowania |
4 (1x bool) | Stan widoczności obiektu |
4 (1x bool) | Określa czy geometria jest przezroczysta. |
zmienny (null-terminated string) | Nazwa materiału |
16 (4x float) | Składowa światła diffuse |
16 (4x float) | Składowa światła ambient |
16 (4x float) | Składowa światła specular |
12 (3x float) | Origin geometrii |
4 (1x unsigned int) | Ilość wierzchołków w geometrii |
44 (3x double, 5x float) * ilość wierzchołków | Dane wierzchołków. Kolejno pozycja, normal, mapowanie |
Lines node
Rozmiar i typ danych | Opis |
---|---|
zmienny (null-terminated string) | Nazwa obiektu |
12 (3x float) | Środek bounding boxa |
4 (1x float) | Promień bounding boxa |
8 (1x double) | Minimalna odległość renderowania |
8 (1x double) | Maksymalna odległość renderowania |
4 (1x bool) | Stan widoczności obiektu |
4 (1x float) | Grubość linii |
16 (4x float) | Składowa światła diffuse |
16 (4x float) | Składowa światła ambient |
16 (4x float) | Składowa światła specular |
12 (3x float) | Origin linii |
4 (1x unsigned int) | Ilość wierzchołków w linii |
44 (3x double, 5x float) * ilość wierzchołków | Dane wierzchołków, kolejno pozycja, normal, mapowanie (znaczenie ma tylko pozycja) |