Format T3D

Z MaSzyna
Wersja z dnia 16:51, 6 gru 2017 autorstwa Krzysiuup (dyskusja | edycje) (Składnia wpisu submodelu)
Skocz do: nawigacja, szukaj

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

Wspólne właściwości dla wszystkich typów

Wspólne właściwości dla wszystkich typów submodeli
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.
Selfillum Określa sposób emisji światła przez obiekt Jedno z dwóch słów kluczowych:
  • true
  • false

lub liczba z zakresu <0;1.25>

false - brak emisji światła.

true - emisja światła zawsze, niezależnie od poziomu oświetlenia scenerii

liczba - określa poziom oświetlenia scenerii, poniżej którego submodel ma emitować światło

MaxDistance Określa największą odległość, z jakiej submodel jest widoczny. Liczba [m] Aby obiekt był widoczny zawsze, niezależnie od odległości, należy podać wartość -1
MinDistance Określa minimalną odległość, z jakiej submodel jest widoczny Liczba [m]
Transform Macierz transformacji submodelu Liczby TO-DO: Napisać coś o znaczeniu konkretnych liczb

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