Format SBT: Różnice pomiędzy wersjami
(→Region) |
(→Komórka (cell)) |
||
(Nie pokazano 40 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 SBT (Scenery Binary Terrain) jest plikiem binarnym zawierającym dane terenu. Dane te są | ||
− | 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 | + | 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. | 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. | ||
Linia 15: | Linia 14: | ||
! Opis | ! Opis | ||
|- | |- | ||
− | | | + | | 4 (4x char) |
| Nagłówek pliku - ciąg znaków "EU07" | | Nagłówek pliku - ciąg znaków "EU07" | ||
|} | |} | ||
=== Region === | === Region === | ||
− | + | W obecnej wersji formatu występuje tylko jeden region. | |
+ | Region grupuje sekcje. W ramach jednego regionu mieści się 500x500 sekcji. | ||
{| class="wikitable" | {| class="wikitable" | ||
! Rozmiar i typ danych | ! Rozmiar i typ danych | ||
! Opis | ! Opis | ||
− | |- | + | |- |
− | | | + | | 3 (3x char) |
| Nagłówek regionu - ciąg znaków "SBT" | | 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. | | Numer wersji formatu (wersji pliku?). Aktualnie exe na stałe wpisuje liczbę 1. | ||
|- | |- | ||
− | | | + | | 4 (1x unsigned int) |
| Liczba sekcji w regionie | | Liczba sekcji w regionie | ||
+ | |- | ||
+ | | Zależny od ilości i rozmiaru sekcji | ||
+ | | Dane sekcji | ||
|} | |} | ||
=== Sekcja (section) === | === 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 (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]] | [[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) |