Format T3D

Z MaSzyna
Wersja z dnia 12:09, 20 sty 2023 autorstwa Krzysiuup (dyskusja | edycje) (Składnia)
Skocz do: nawigacja, szukaj

Plik T3D jest plikiem tekstowym, przechowującym informacje o modelach trójwymiarowych.

Model składa się submodeli.

Składnia

Przyjęło się, że definicja każdego submodelu poprzedzona jest komentarzem liniowym złożonym z 81 znaków minus (-). Umożliwia to wizualne oddzielenie definicji w pliku tekstowym i jest używane również przez style edytorów tekstowych do zawijania bloków definicji.

Submodel typu Mesh

Przykładowa definicja submodelu typu Mesh:

//---------------------------------------------------------------------------------
Parent: none
Type: Mesh
Name: obiekcik
Anim: false
Ambient: 255 255 255
Diffuse: 255 255 255
Specular: 3 3 3
SelfIllum: false
Wire: false
WireSize: 1
Opacity: 1
Map: grass
MaxDistance: -1
MinDistance: 0
Transform:
	 1 0 0 0
	 0 1 0 0
	 0 0 1 0
	 0 0 0 1
NumVerts: 3879
0
4.85 -1.0992 9.7 0.43468 0.29718
4.85 11.09921 9.9 0.56421 0.29506
4.85 11.09921 9.7 0.56421 0.29732

0
4 4.35 4.25 0.27015 0.46583
3.8 5.65 4.25 0.34553 0.47271
3.8 4.35 4.25 0.27015 0.47271
[...]
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
Anim Typ animacji submodelu. Tekst Zobacz listę dostępnych typów animacji.
Selfillum Określa sposób emisji światła przez obiekt Jedno ze słów kluczowych:
  • true
  • false

lub liczba z zakresu <-1;2>

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

false - brak emisji światła. Tej wartości odpowiada wartość liczbowa -1.

true - emisja światła zawsze, niezależnie od poziomu oświetlenia scenerii. Tej wartości odpowiada wartość liczbowa 2.

Ambient Określa jasność submodelu. 3 liczby RGB z zakresu <0-255>
Diffuse Określa kolor świecenia submodelu. 3 liczby RGB z zakresu <0-255>
Specular Określa poziom błyszczenia submodelu. 3 liczby RGB z zakresu <0-255>
Wire Określa, czy zamiast bryły należy rysować siatkę krawędzi Jedno ze słów kluczowych:
  • true
  • false
Brak funkcjonalności w exe
WireSize Określa grubość krawędzi Liczba [cm] Brak funkcjonalności w exe
Opacity Określa sposób renderowania przezroczystości Liczba 1 - renderowanie w fazie nieprzezroczystych; Alfa test

wartości mniejsze od 1 - renderowanie w fazie przezroczystych; Alfa blend

Map Materiał submodelu. Ścieżka do materiału (bez rozszerzenia) Pierwszy przebieg wyszukiwania w katalogu równorzędnym modelowi, drugi w roocie textures.

Można podać tekstury wymienne, podstawiane parametrem w node model/dynamic. Wtedy dajemy wartość replacableskin lub jeśli model używa kilku tekstur wymiennych, indeks tekstury poprzedzony minusem (-1÷-4)

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
NumVerts Suma wszystkich wierzchołków w definicjach trójkątów Liczba


Pod definicją właściwości NumVerts znajdują się definicje trójkątów (o ile obiekt nie jest tzw. bananem). Ich ilość musi być równa NumVerts / 3. Definicje trójkątów oddzielone są od siebie 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
Nazwa właściwości Znaczenie Typ wartości Uwagi
maska_wygładzania Zapisana dziesiętnie maska bitowa określająca wygładzenie trójkąta. Liczba Jeśli w jednym punkcie spotykają się wierzchołki wielu trójkątów, to jeśli mają ustawione wspólne bity w masce, 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 3 liczby [m] Symulator korzysta z prawoskrętnego układu współrzędnych!
u, v Współrzędnie wierzchołka w układzie UV 2 liczby

Między współrzędnymi XYZ i UV mogą znajdować się współrzędne IJK wektora normalnego. Maska wygładzania przyjmuje wtedy wartość -1:

    -1
    x y z i j k u v             
    x y z i j k u v
    x y z i j k u v

Opcjonalną formą zapisu geometrii jest użycie chmury punków oraz listy indeksów. Chmura punktów definiuje wierzchołki o unikatowych właściwościach. W liście indeksów każde kolejne 3 liczby określają, których wierzchołków użyć do stworzenia trójkąta.

    NumIndices: ilosc_indeksow
     indeks1 indeks2 indeks3 // etc
    NumVerts: ilosc_wierzcholkow
     Px Py Pz Nx Ny Nz Ux Uy Tx Ty Tz Tw // pozycja, wektor normalny, koordynaty UV, tangent
     Px Py Pz Nx Ny Nz Ux Uy Tx Ty Tz Tw // etc

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 ze słów kluczowych:
  • true
  • false

lub liczba z zakresu <-1;2>

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

false - brak emisji światła. Tej wartości odpowiada wartość liczbowa -1.

true - emisja światła zawsze, niezależnie od poziomu oświetlenia scenerii. Tej wartości odpowiada wartość liczbowa 2.

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

Właściwości specyficzne dla typu Mesh

Właściwości specyficzne dla typu FreeSpotLight

Nazwa właściwości Znaczenie Typ wartości Uwagi
Diffuse Definiuje kolor świecenia submodelu 3 liczby RGB z zakresu <0-255>
NearAttenStart Liczba Brak funkcjonalności w exe
NearAttenEnd Liczba Brak funkcjonalności w exe
UseNearAtten Jedno ze słów kluczowych:
  • false
  • true
Brak funkcjonalności w exe
FarAttenDecayType Typ zaniku natężenia światła Liczba
  • 0 - brak zaniku
  • 1, 2 - potęga 1/R?
FarDecayRadius Liczba Brak funkcjonalności w exe
FalloffAngle Określa kąt wygaszenia światła. Liczba [deg] w zakresie (1;180> lub cosinus połowy tego kąta
HotspotAngle Określa kąt pełnej jasności światła. Liczba [deg] w zakresie (1;180> lub cosinus połowy tego kąta

Właściwości specyficzne dla typu Stars

Nazwa właściwości Znaczenie Typ wartości Uwagi
Diffuse  ? 3 liczby RGB z zakresu <0-255> Parametr nieznaczący w kontekście tego submodelu
NumVerts Określa ilość punktów świetlnych zawartych w tym submodelu Liczba

Pod definicją właściwości NumVerts muszą znaleźć się definicje grup punktów świetlnych. W jednej grupie mogą znaleźć się maksymalnie 3 punkty świetlne.

    1
    x y z kolor 0
    x y z kolor 0
    x y z kolor 0
Nazwa właściwości Znaczenie Typ wartości Uwagi
1, 0 Tokeny ignorowane. Liczby Zwyczajowo zawsze podaje się 1 i 0.
x, y, z Współrzędne punktu w przestrzeni 3 liczby [m]
kolor Kolor świecenia punktu Liczba Zapisana dziesiętnie liczba szesnastkowa opisująca kolor świecenia BGR.

Nazwy specjalne

Dostępne typy animacji

Wartość Znaczenie Uwagi
false Brak animacji.
true Możliwość animowania za pomocą eventów
sky Animacja nocnego nieba
wind Kołysanie się obiektu pod wpływem wiatru.
billboard Obracanie się obiektu w kierunku kamery.
digiclk Animacja zegara cyfrowego
seconds Sekundy płynnie (60s/360°, pełny obrót w minutę)
seconds_jump Sekundy z przeskokiem co 6°
minutes Minuty płynnie (1h/360°, pełny obrót w godzinę)
minutes_jump Minuty z przeskokiem co 6°
hours Godziny płynnie (12h/360°)
hours_jump Godziny z przeskokiem co 30°
hours24 Godziny płynnie (24h/360°)
hours24_jump Godziny z przeskokiem co 15°
ik IK: zadający brak funkcjonalności w exe
ik11 IK: kierunkowany brak funkcjonalności w exe
ik21 IK: kierunkowany brak funkcjonalności w exe
ik22 IK: kierunkowany brak funkcjonalności w exe