Format SBT: Różnice pomiędzy wersjami
(→Komórka (cell)) |
(→Komórka (cell)) |
||
(Nie pokazano 18 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ą | + | 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 łą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 25: | Linia 25: | ||
! Rozmiar i typ danych | ! Rozmiar i typ danych | ||
! Opis | ! Opis | ||
− | |- char) | + | |- |
+ | | 3 (3x char) | ||
| Nagłówek regionu - ciąg znaków "SBT" | | Nagłówek regionu - ciąg znaków "SBT" | ||
|- | |- | ||
Linia 34: | Linia 35: | ||
| Liczba sekcji w regionie | | Liczba sekcji w regionie | ||
|- | |- | ||
− | | | + | | Zależny od ilości i rozmiaru sekcji |
| Dane sekcji | | Dane sekcji | ||
|} | |} | ||
Linia 58: | Linia 59: | ||
|- | |- | ||
| 4 (1x unsigned int) | | 4 (1x unsigned int) | ||
− | | Ilość | + | | Ilość danych geometrycznych w sekcji |
|- | |- | ||
− | | | + | | Zależny od rozmiaru danych geometrii |
− | | Dane geometryczne (shape node) | + | | Dane geometryczne ([[Format SBT#Shape node|shape node]]) |
|- | |- | ||
− | | | + | | Zależny od rozmiaru danych komórek |
| Dane komórek | | Dane komórek | ||
|} | |} | ||
Linia 83: | Linia 84: | ||
| Ilość nieprzezroczystych geometrii w komórce | | Ilość nieprzezroczystych geometrii w komórce | ||
|- | |- | ||
− | | | + | | Zależny od rozmiaru danych geometrii |
− | | Dane geometryczne (shape node) | + | | 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 node) | + | | 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 (lines node) | + | | Dane geometryczne ([[Format SBT#Lines node|lines node]]) |
|} | |} | ||
=== Dane geometryczne === | === Dane geometryczne === | ||
==== Shape node ==== | ==== Shape node ==== | ||
+ | Geometria w postaci trójkątów terenu. | ||
+ | |||
{| class="wikitable" | {| class="wikitable" | ||
! Rozmiar i typ danych | ! Rozmiar i typ danych | ||
! Opis | ! Opis | ||
|- | |- | ||
− | | | + | | zmienny (null-terminated string) |
− | | Nazwa | + | | Nazwa obiektu |
|- | |- | ||
− | | | + | | 12 (3x float) |
| Środek bounding boxa | | Środek bounding boxa | ||
|- | |- | ||
Linia 126: | Linia 129: | ||
| Określa czy geometria jest przezroczysta. | | Określa czy geometria jest przezroczysta. | ||
|- | |- | ||
− | | | + | | zmienny (null-terminated string) |
| Nazwa materiału | | Nazwa materiału | ||
|- | |- | ||
− | | | + | | 16 (4x float) |
| Składowa światła diffuse | | Składowa światła diffuse | ||
|- | |- | ||
− | | | + | | 16 (4x float) |
| Składowa światła ambient | | Składowa światła ambient | ||
|- | |- | ||
− | | | + | | 16 (4x float) |
| Składowa światła specular | | 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 ==== | ==== 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]] | [[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) |