Format T3D: Różnice pomiędzy wersjami
Linia 1: | Linia 1: | ||
Plik T3D jest formatem tekstowym, przechowującym informacje o modelach trójwymiarowych. Składa się z dowolnej ilości submodeli określonego typu. Można dołączyć do modelu inne modele za pomoca komendy '''include'''. | Plik T3D jest formatem tekstowym, przechowującym informacje o modelach trójwymiarowych. Składa się z dowolnej ilości submodeli określonego typu. Można dołączyć do modelu inne modele za pomoca komendy '''include'''. | ||
− | = Typy submodeli = | + | == Typy submodeli == |
* '''Mesh''' - submodel składający się z trójkątów, posiadający teksturę. | * '''Mesh''' - submodel składający się z trójkątów, posiadający teksturę. | ||
* '''FreeSpotLight''' - Punkt świetlny kierunkowy. | * '''FreeSpotLight''' - Punkt świetlny kierunkowy. | ||
Linia 9: | Linia 9: | ||
Typy '''Point''' oraz '''Text''' występują w kodzie źródłowym, ale w praktyce nie są spotykane w modelach. | Typy '''Point''' oraz '''Text''' występują w kodzie źródłowym, ale w praktyce nie są spotykane w modelach. | ||
− | = Składnia wpisu submodelu = | + | == Składnia wpisu submodelu == |
Składnia różnych typów submodeli różni się, ale istnieje kilka wspólnych właściwości. Znacząca jest kolejność, w jakiej one występują. | Składnia różnych typów submodeli różni się, ale istnieje kilka wspólnych właściwości. Znacząca jest kolejność, w jakiej one występują. | ||
− | == Wspólne właściwości == | + | === Wspólne właściwości === |
Przed właściwościami specyficznymi dla określonego typu występują 4 stałe własności: | Przed właściwościami specyficznymi dla określonego typu występują 4 stałe własności: | ||
* '''Parent''' - nazwa obiektu nadrzędnego w hierarchii rodzic-dziecko. '''none''' jeśli obiekt nie ma rodzica. | * '''Parent''' - nazwa obiektu nadrzędnego w hierarchii rodzic-dziecko. '''none''' jeśli obiekt nie ma rodzica. | ||
Linia 24: | Linia 24: | ||
* '''Transform''' - macierz transformacji. Każdy wiersz, zawierający po 4 liczby powinien znaleźć się w osobnej linii. '''Uwaga! Macierz przy eksporcie/imporcie modelu do programów do modelowania jest transponowana!''' | * '''Transform''' - macierz transformacji. Każdy wiersz, zawierający po 4 liczby powinien znaleźć się w osobnej linii. '''Uwaga! Macierz przy eksporcie/imporcie modelu do programów do modelowania jest transponowana!''' | ||
− | == Właściwości specyficzne dla typów == | + | === Właściwości specyficzne dla typów === |
− | === Mesh === | + | ==== Mesh ==== |
* '''Ambient''' - 3 liczby <0-255> (RGB) oddzielone spacją, definiujące jasność obiektu. | * '''Ambient''' - 3 liczby <0-255> (RGB) oddzielone spacją, definiujące jasność obiektu. | ||
* '''Diffuse''' - 3 liczby <0-255> (RGB) oddzielone spacją, definiujące kolor świecenia submodelu. | * '''Diffuse''' - 3 liczby <0-255> (RGB) oddzielone spacją, definiujące kolor świecenia submodelu. | ||
Linia 50: | Linia 50: | ||
Między współrzędnymi XYZ i UV można podać współrzędne wektora normalnego, aczkolwiek w żadnym z modeli nie są one jawnie zdefiniowane. | Między współrzędnymi XYZ i UV można podać współrzędne wektora normalnego, aczkolwiek w żadnym z modeli nie są one jawnie zdefiniowane. | ||
− | === FreeSpotLight === | + | ==== FreeSpotLight ==== |
* '''Diffuse''' - 3 liczby <0-255> (RGB) oddzielone spacją, definiujące kolor świecenia submodelu. | * '''Diffuse''' - 3 liczby <0-255> (RGB) oddzielone spacją, definiujące kolor świecenia submodelu. | ||
* '''SelfIllum''' - wartość logiczna '''true'''/'''false'''. Określa, czy submodel ma emitować światło. | * '''SelfIllum''' - wartość logiczna '''true'''/'''false'''. Określa, czy submodel ma emitować światło. | ||
Linia 61: | Linia 61: | ||
* '''HotspotAngle''' - wartość liczbowa. Określa kąt pełnej jasności światła. | * '''HotspotAngle''' - wartość liczbowa. Określa kąt pełnej jasności światła. | ||
− | === Stars === | + | ==== Stars ==== |
* '''Diffuse''' - 3 liczby <0-255> (RGB) oddzielone spacją, definiujące kolor świecenia submodelu. | * '''Diffuse''' - 3 liczby <0-255> (RGB) oddzielone spacją, definiujące kolor świecenia submodelu. | ||
* '''SelfIllum''' - wartość logiczna '''true'''/'''false'''. Określa, czy submodel ma emitować światło. | * '''SelfIllum''' - wartość logiczna '''true'''/'''false'''. Określa, czy submodel ma emitować światło. | ||
Linia 73: | Linia 73: | ||
* '''kolor''' - zapisana dziesiętnie liczba szesnastkowa opisująca kolor świecenia | * '''kolor''' - zapisana dziesiętnie liczba szesnastkowa opisująca kolor świecenia | ||
− | === Point === | + | ==== Point ==== |
− | === Text === | + | ==== Text ==== |
Wersja z 21:44, 29 sie 2017
Plik T3D jest formatem tekstowym, przechowującym informacje o modelach trójwymiarowych. Składa się z dowolnej ilości submodeli określonego typu. Można dołączyć do modelu inne modele za pomoca komendy include.
Spis treści
Typy submodeli
- Mesh - submodel składający się z trójkątów, posiadający teksturę.
- FreeSpotLight - Punkt świetlny kierunkowy.
- Stars - zbiór punktów świecących, z czego każdy z nich może mieć inną barwę.
- Point
- Text
Typy Point oraz Text występują w kodzie źródłowym, ale w praktyce nie są spotykane w modelach.
Składnia wpisu submodelu
Składnia różnych typów submodeli różni się, ale istnieje kilka wspólnych właściwości. Znacząca jest kolejność, w jakiej one występują.
Wspólne właściwości
Przed właściwościami specyficznymi dla określonego typu występują 4 stałe własności:
- Parent - nazwa obiektu nadrzędnego w hierarchii rodzic-dziecko. none jeśli obiekt nie ma rodzica.
- Type - typ submodelu.
- Name - nazwa submodelu, potrzebna dla ustalenia hierarchii.
- Anim - wartość logiczna true/false. Jeśli ustawiona jest na true, submodel można animować za pomocą eventów. Można też przypisać w tym miejscu jedną z predefiniowanych animacji automatycznych.
A po nich kolejne 3:
- MaxDistance - maksymalna odległość z jakiej widoczny jest obiekt [m]
- MinDistance - minimalna odległość z jakiej widoczny jest obiekt [m]
- Transform - macierz transformacji. Każdy wiersz, zawierający po 4 liczby powinien znaleźć się w osobnej linii. Uwaga! Macierz przy eksporcie/imporcie modelu do programów do modelowania jest transponowana!
Właściwości specyficzne dla typów
Mesh
- Ambient - 3 liczby <0-255> (RGB) oddzielone spacją, definiujące jasność obiektu.
- Diffuse - 3 liczby <0-255> (RGB) oddzielone spacją, definiujące kolor świecenia submodelu.
- Specular - 3 liczby <0-255> (RGB) oddzielone spacją, definiujące błyszczenie submodelu.
- SelfIllum - wartość logiczna true/false. Określa, czy submodel ma emitować światło.
- Wire - określa, czy zamiast bryły ma być rysowana siatka krawędzi.
- WireSize - grubość krawędzi siatki, jeśli Wire: true
- Opacity - przezroczystość obiektu, wartość liczbowa <0;100> (0 - całkowita przezroczystość)
- Map - ścieżka do tekstury (bez jej rozszerzenia), relatywna względem głównego folderu symulatora. Można wpisać słowo kluczowe replacableskin, wtedy zyskujemy możliwość podstawienia w to miejsce dowolnej tekstury, podanej we wpisie node... model
Oprócz tego, na samym końcu definicji submodelu należy umieścić właściwość z wartością liczbową równą ilości wierzchołków w submodelu:
NumVerts: suma_wierzchołków_wszystkich_trójkątów
A pod spodem definicje trójkątów. Ich ilość musi być równa NumVerts / 3, a definicje zaleca się oddzielić pustą linią. Wzór definicji trójkąta:
maska_wygładzania x y z u v x y z u v x y z u v
- maska_wygładzania - zapisana dziesiętnie maska bitowa. Jeśli w jednym punkcie spotykają się wierzchołki wielu trójkątów, to jeśli mają ustawione wspólne bity w masce (w notacji C++: x & y != 0) , to wektor normalny zostanie wyliczony jako średnia, co da efekt zaokrąglenia w tym wierzchołku.
- x, y, z - współrzędne wierzchołka w przestrzeni
- u, v - współrzędnie wierzchołka w układzie UV (odpowiadają za układ tekstury)
Między współrzędnymi XYZ i UV można podać współrzędne wektora normalnego, aczkolwiek w żadnym z modeli nie są one jawnie zdefiniowane.
FreeSpotLight
- Diffuse - 3 liczby <0-255> (RGB) oddzielone spacją, definiujące kolor świecenia submodelu.
- SelfIllum - wartość logiczna true/false. Określa, czy submodel ma emitować światło.
- NearAttenStart - wartość liczbowa, parametr ignorowany.
- NearAttenEnd - wartość liczbowa, parametr ignorowany.
- UseNearAtten - wartość logiczna true/false, parametr ignorowany.
- FarAttenDecayType - wartość liczbowa, parametr ignorowany.
- FarDecayRadius - wartość liczbowa, parametr ignorowany.
- FalloffAngle - wartość liczbowa. Określa kąt wygaszenia światła.
- HotspotAngle - wartość liczbowa. Określa kąt pełnej jasności światła.
Stars
- Diffuse - 3 liczby <0-255> (RGB) oddzielone spacją, definiujące kolor świecenia submodelu.
- SelfIllum - wartość logiczna true/false. Określa, czy submodel ma emitować światło.
Po właściwości Transform występuje właściwość NumVerts opisująca ilość punktów świetlnych. Poniżej tej właściwości muszą wystąpić definicje punktów świetlnych (analogicznie jak trójkąty w przypadku typu Mesh)
1 x y z kolor 0 x y z kolor 0 x y z kolor 0
- 1, 0 - tokeny ignorowane, nieistotne z punktu widzenia symulacji
- x, y, z - współrzędne punktu w przestrzeni 3D
- kolor - zapisana dziesiętnie liczba szesnastkowa opisująca kolor świecenia