Format SBT: Różnice pomiędzy wersjami
(→Komórka (cell)) |
(→Komórka (cell)) |
||
(Nie pokazano 31 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 26: | Linia 25: | ||
! Rozmiar i typ danych | ! Rozmiar i typ danych | ||
! Opis | ! Opis | ||
− | |- | + | |- |
− | | 3 (3x | + | | 3 (3x char) |
| Nagłówek regionu - ciąg znaków "SBT" | | Nagłówek regionu - ciąg znaków "SBT" | ||
|- | |- | ||
Linia 35: | Linia 34: | ||
| 4 (1x unsigned int) | | 4 (1x unsigned int) | ||
| Liczba sekcji w regionie | | Liczba sekcji w regionie | ||
+ | |- | ||
+ | | Zależny od ilości i rozmiaru sekcji | ||
+ | | Dane sekcji | ||
|} | |} | ||
Linia 40: | Linia 42: | ||
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. | 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" | {| class="wikitable" | ||
! Rozmiar i typ danych | ! Rozmiar i typ danych | ||
Linia 51: | Linia 52: | ||
| Rozmiar sekcji w bajtach | | Rozmiar sekcji w bajtach | ||
|- | |- | ||
− | | | + | | 12 (3x float) |
| Środek bounding boxa | | Środek bounding boxa | ||
|- | |- | ||
− | | 4 (1x | + | | 4 (1x float) |
| Promień bounding boxa | | Promień bounding boxa | ||
|- | |- | ||
| 4 (1x unsigned int) | | 4 (1x unsigned int) | ||
− | | Ilość | + | | 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) === | ||
Linia 70: | Linia 75: | ||
! Opis | ! Opis | ||
|- | |- | ||
− | | | + | | 12 (3x float) |
| Środek bounding boxa | | Środek bounding boxa | ||
|- | |- | ||
Linia 79: | Linia 84: | ||
| Ilość nieprzezroczystych geometrii w komórce | | Ilość nieprzezroczystych geometrii w komórce | ||
|- | |- | ||
− | | | + | | Zależny od rozmiaru danych geometrii |
− | | Dane geometryczne (shape) | + | | Dane geometryczne ([[Format SBT#Shape node|shape node]]) |
|- | |- | ||
| 4 (1x unsigned int) | | 4 (1x unsigned int) | ||
| Ilość przezroczystych geometrii w komórce | | Ilość przezroczystych geometrii w komórce | ||
|- | |- | ||
− | | | + | | Zależny od rozmiaru danych geometrii |
− | | Dane geometryczne (shape) | + | | Dane geometryczne ([[Format SBT#Shape node|shape node]]) |
|- | |- | ||
| 4 (1x unsigned int) | | 4 (1x unsigned int) | ||
| Ilość geometrii linii w komórce | | Ilość geometrii linii w komórce | ||
|- | |- | ||
− | | | + | | Zależny od rozmiaru danych geometrii |
− | | Dane geometryczne ( | + | | 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) |