Format SBT: Różnice pomiędzy wersjami
(→Komórka (cell)) |
|||
(Nie pokazano 63 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 1: | Linia 1: | ||
− | + | Plik SBT (Scenery Binary Terrain) jest plikiem binarnym zawierającym dane terenu. Dane te są partycjonowane geograficznie, 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 [[Obiekt node::triangles|trójkąty terenu]] oraz [[Obiekt node::lines|linie]] z [[Plik scenerii|plików tekstowych (SCN, SCM, INC)]] są w ramach sekcji i komórek łą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 z powodu braku konieczności kosztownego łączenia siatek i umieszczania ich w sektorach. | |
− | + | 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 | |
− | |||
− | |||
− | + | == Format pliku == | |
− | + | Na początku pliku znajduje się nagłówek pliku. | |
+ | {| class="wikitable" | ||
+ | ! 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. | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! 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 | ||
+ | |- | ||
+ | | Zależny od ilości i rozmiaru sekcji | ||
+ | | 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. | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! 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ść danych geometrycznych w sekcji | ||
+ | |- | ||
+ | | Zależny od rozmiaru danych geometrii | ||
+ | | Dane geometryczne ([[Format SBT#Shape node|shape node]]) | ||
+ | |- | ||
+ | | Zależny od rozmiaru danych komórek | ||
+ | | 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. | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! 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 | ||
+ | |- | ||
+ | | Zależny od rozmiaru danych geometrii | ||
+ | | Dane geometryczne ([[Format SBT#Shape node|shape node]]) | ||
+ | |- | ||
+ | | 4 (1x unsigned int) | ||
+ | | Ilość przezroczystych geometrii w komórce | ||
+ | |- | ||
+ | | Zależny od rozmiaru danych geometrii | ||
+ | | Dane geometryczne ([[Format SBT#Shape node|shape node]]) | ||
+ | |- | ||
+ | | 4 (1x unsigned int) | ||
+ | | Ilość geometrii linii w komórce | ||
+ | |- | ||
+ | | Zależny od rozmiaru danych geometrii | ||
+ | | Dane geometryczne ([[Format SBT#Lines node|lines node]]) | ||
+ | |} | ||
+ | |||
+ | === Dane geometryczne === | ||
+ | ==== Shape node ==== | ||
+ | Geometria w postaci trójkątów terenu. | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! 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 ==== | ||
+ | Geometria w postaci linii. | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! 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) | ||
+ | |} | ||
+ | |||
+ | [[Kategoria:Scenerie]] | ||
+ | [[Category:Formaty plików symulatora]] |
Aktualna wersja na dzień 19:49, 9 paź 2022
Plik SBT (Scenery Binary Terrain) jest plikiem binarnym zawierającym dane terenu. Dane te są partycjonowane geograficznie, 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 i komórek łą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 z powodu braku konieczności kosztownego łączenia siatek i umieszczania ich w sektorach.
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 |
Zależny od ilości i rozmiaru sekcji | 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ść danych geometrycznych w sekcji |
Zależny od rozmiaru danych geometrii | Dane geometryczne (shape node) |
Zależny od rozmiaru danych komórek | 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 |
Zależny od rozmiaru danych geometrii | Dane geometryczne (shape node) |
4 (1x unsigned int) | Ilość przezroczystych geometrii w komórce |
Zależny od rozmiaru danych geometrii | Dane geometryczne (shape node) |
4 (1x unsigned int) | Ilość geometrii linii w komórce |
Zależny od rozmiaru danych geometrii | Dane geometryczne (lines node) |
Dane geometryczne
Shape node
Geometria w postaci trójkątów terenu.
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
Geometria w postaci linii.
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) |