Jestem w trakcie rozpracowania plików .T3D. Niestety nie ma do nich żadnej dokumentacji (przynajmniej ja nie znalazłem).
Wiem, że mają strukturę hierarchiczną (typu drzewo). Każdy element ma najpierw parametry opisowe, potem macierz transformacji i na końcu listę trójkątów. Hierarchię, macierz transformacji i trójkąty rozpracowałem na tyle, że udało mi się je wyeksportować do pliku .3DS.
Natomiast zagadką są dla mnie pozostałe parametry opisowe. W pliku
EU07.EXE są znalazłem następujące ciągi:
- type: - możliwe wartości: mesh, point, freespotlight. Mesh to siatka trójkątów. Freespotlight to punkt świetlny (rodzaj reflektora). Ale czym jest point?
- anim: - chyba zawsze jest false, może mieć inne wartości?
- nearattenstart: - niby początek zanikania światła w zbliżeniu, ale czy to działa?
- map: - nazwa pliku tekstury albo słowo replacableskin, jeśli teksturę można podmienić.
Ponadto nie ma ciągów (chyba?), ale są rozpoznawane:
- Parent: - nazwa obiektu wyżej w hierarchii (słowo none dla głównego elementu).
- Name: - nazwa elementu, może być użyta do animacji w event ... animation. Jeśli nazwa jest postaci Light_On## albo Light_Off##, element może być pokazywany i chowany za pomocą event ... lights (uwzględniana hierarchia). W modelach pojazdów są jeszcze inne nazwy specjalne (np. HeadLamp12_on), podobnie w kabinach.
- Diffuse: - kolor świecenia elementu (RGB, trzy liczby 0..255).
- SelfIllum: - świecenie elementu: true albo false.
- MaxDistance: - maksymalna odległość, z jakiej widać element (hierarchia ignorowana).
- MinDistance: - minimalna odległość, z jakiej widać element (j.w.).
- Transform: - początek macierzy transformacji.
- NumVerts: - ilość wierzchołków i definicje trójkątów.
Nie jest mi znane działanie następujących parametrów (nie chodzi o ogólne znaczenie, bo to można znaleźć w instrukcji 3D Studio Max, tylko o zastosowanie w Symulatorze):
- Ambient: (RGB, trzy liczby 0..255)
- Specular: (RGB, trzy liczby 0..255)
- Wire: false
- WireSize: 1.0
- Opacity: 100.0
- NearAttenStart: 0.0
- NearAttenEnd: 80.0
- UseNearAtten: true
- FarAttenDecayType: 2
- FarDecayRadius: 80.0
- FalloffAngle: 45.0
- HotspotAngle: 10.0
Nie są mi też znane okoliczności pojawienia się komunikatu
Degenerated triangle found. Domyślam się, że może się pojawić w sytuacji, gdy wierzchołki trójkąta się pokrywają, ewentuallnie są na jednej prostej.
To tyle, co ja wiem. Ktoś wie coś więcej?