Format T3D: Różnice pomiędzy wersjami

Z MaSzyna
Skocz do: nawigacja, szukaj
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.

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

Point

Text