Format T3D: Różnice pomiędzy wersjami

Z MaSzyna
Skocz do: nawigacja, szukaj
(Składnia wpisu submodelu)
(Wspólne właściwości)
Linia 36: Linia 36:
 
|-
 
|-
 
| Name
 
| Name
 +
| Unikalna nazwa submodelu
 +
| Tekst
 +
| Pewne nazwy są zarezerwowane i służą do definiowania dodatkowych funkcjonalności w submodelu. Zobacz listę nazw specjalnych.
 +
|-
 +
| Anim
 +
| Typ animacji submodelu.
 +
| Tekst
 +
| Zobacz listę dostępnych typów animacji.
 +
|}
 +
 +
Po właściwościach specyficznych dla typu, występują jeszcze ostatnie 3 wspólne właściwości.
 +
 +
{| class="wikitable"
 +
|+ Druga grupa wspólnych właściwości
 +
! Nazwa właściwości
 +
! Znaczenie
 +
! Typ wartości
 +
! Uwagi
 +
|-
 +
| Parent
 +
| Przypisuje submodel nadrzędny (rodzica).
 
| Nazwa submodelu
 
| Nazwa submodelu
 +
| Jeśli obiekt nie ma rodzica, należy wpisać słowo kluczowe '''none'''
 +
|-
 +
| Type
 +
| Definiuje typ submodelu.
 +
| Jedno ze słów kluczowych:
 +
* Mesh,
 +
* FreeSpotLight,
 +
* Stars
 +
|
 +
|-
 +
| Name
 +
| Unikalna nazwa submodelu
 
| Tekst
 
| Tekst
| Musi być unikalna w zakresie pliku!
+
| Pewne nazwy są zarezerwowane i służą do definiowania dodatkowych funkcjonalności w submodelu. Zobacz listę nazw specjalnych.
 
|-
 
|-
| specular
+
| Anim
| ?
+
| Typ animacji submodelu.
| 3 liczby z zakresu <0;1> (RGB)
+
| Tekst
 +
| Zobacz listę dostępnych typów animacji.
 
|}
 
|}
  
* '''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 [http://rainsted.com/pl/Symulator/MaSzyna/Animacje_modeli animacji automatycznych].
 
  
 
A po nich kolejne 3:
 
A po nich kolejne 3:

Wersja z 16:40, 6 gru 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, może być pokryty teksturą.
  • FreeSpotLight - Obiekt świecący kierunkowo.
  • 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:

Pierwsza grupa wspólnych właściwości
Nazwa właściwości Znaczenie Typ wartości Uwagi
Parent Przypisuje submodel nadrzędny (rodzica). Nazwa submodelu
Type Definiuje typ submodelu. Jedno ze słów kluczowych:
  • Mesh,
  • FreeSpotLight,
  • Stars
Name Unikalna nazwa submodelu Tekst Pewne nazwy są zarezerwowane i służą do definiowania dodatkowych funkcjonalności w submodelu. Zobacz listę nazw specjalnych.
Anim Typ animacji submodelu. Tekst Zobacz listę dostępnych typów animacji.

Po właściwościach specyficznych dla typu, występują jeszcze ostatnie 3 wspólne właściwości.

Druga grupa wspólnych właściwości
Nazwa właściwości Znaczenie Typ wartości Uwagi
Parent Przypisuje submodel nadrzędny (rodzica). Nazwa submodelu Jeśli obiekt nie ma rodzica, należy wpisać słowo kluczowe none
Type Definiuje typ submodelu. Jedno ze słów kluczowych:
  • Mesh,
  • FreeSpotLight,
  • Stars
Name Unikalna nazwa submodelu Tekst Pewne nazwy są zarezerwowane i służą do definiowania dodatkowych funkcjonalności w submodelu. Zobacz listę nazw specjalnych.
Anim Typ animacji submodelu. Tekst Zobacz listę dostępnych typów animacji.


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 - parametr nieznaczący (?)
  • 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 BGR.

Point

Text