[Patrz też: 3DS Loader]
Opis formatu pliku 3DS i ASC
Oczywiście można pokusić się o napisanie programu wczytującego scenę 3D z pliku zapisanego w formacie 3D Studio np. *.ASC lub *.3DS., ale tu najlepiej posłużyć się gotowym przykładem który dołączam do kursu. Jego zadaniem jest wczytywanie i wyświetlenie zawartości pliku *.3DS. Program ten odczytuje zarówno dane o wierzchołkach, ich połączeniach, teksturach jak i zapisanych danych o animacji. Tu można podać krótkie informacje o budowie plików 3D Studio:
*.ASC - plik tekstowy w którym nie można zapisać informacji o animacji. Zbudowany jest on z trzech podstawowych sekcji: informacji ogólnych o pliku, spisu wierzchołków, opisu ich połączeń. Opis niektórych liń które mogą się w nim pojawić:
np.
Ambient light color: Red=0.039216 Green=0.039216 Blue=0.039216
Określa kolor obiektu tj. intesywność składowej czerwonej(RED), niebieskie(BLUE), zielonej(GREEN).
np.
Named object: "Object01"
Określa nazwę obiektu, tu obiekt nazywa się Object01(standardowe nazewnictwo 3D Studio)
np.
Tri-mesh, Vertices: 8 Faces: 12
Określa typ obiektu jako Tri-mesh, informuje że w pliku są zapisane dane o 8 wierzchołkach i 12 opisów ich połączeń
np.
Vertex list:
Pole oznaczające początek bloku zawierającego dane o wierzchołkach obiektu.
np.
Vertex 0: X: 16.028574 Y: -49.432884 Z: 32.237526
Definiuje wierzchołek o numerze 0, posiadający odpowiednie(jak wyżej) współrzędne X,Y,Z
...(Powyższe pole powtarzane tyle razy ile wierzchołków)
UWAGA: Jeśli plik zawiera także definicje współrzędnych S i T dla tekstur to powyższa linia może wyglądać np. tak:
Vertex 0: X:-207.612457 Y:-129.695084 Z:-122.260666 U:-0.538062 V:-0.111303
Co oznacza, że wierzchołkowi nr. 0 odpowiadają współrzędne tekstury S:-0.538062 i T:-0.111303
np.
Face list:
Pole oznaczające początek opisu połączeń wierzchołków(definicji wielokątów).
np.
Face 0: A:0 B:1 C:2 AB:1 BC:1 CA:0
Definiuje połączenia nr. 0 gdzie:
A:0 - przypisanie znakowi A wierzchołka o numerze 0
B:1 - przypisanie znakowi B wierzchołka o numerze 1
C:2 - przypisanie znakowi C wierzchołka o numerze 2
AB:1 - informuje, że wierzchołki A i B należy połączyć. W tym wypadku A to wierzchołek 0 a B to wierzchołek 1(patrz wyżej). Wiec w tym wypadku "AB:1" oznacza, że należy połączyć wierzchołki o numerze 0 i o numerze 1.
Analogicznie BC:1, natomiast CA:0 oznacza że wierzchołki C(numer 2) i A(numer 0 )są połączone ze sobą, ale nie widać tego połączenia.
Powyższa linia definicji połączeń wierzchołków powtarzana tyle razy ile podano na początku pliku.
Jeśli plik zawiera informacje o teksturach to każda definicja połączeń wirzchołków może posiadać jeszcze linie takie jak np.
Material:"YELLOWMETAL"
Smoothing: 3
Które przypisują wcześniej okreslonemu trójkątowi teksturę "YELLOWMETAL"
[Patrz też przykład 3DS2.RAR w przykładach]
[Patrz też opis tegoż przykładu]
*.3DS. - binarny plik zawierający sceny 3D z możliwością zapisu animacji. Ma budowę blokową. Każdy blok rozpoczyna się nagłówkiem zawierającym identyfikator typu bloku oraz adresem kolejnego bloku. Budowa takiego nagłówka jest następująca:
Co: Długość:
Identyfikator 2 bajty
Adres następnego bloku 4 bajty
Identyfikator określa typ bloku. I tak cały plik *.3DS. rozpoczyna się blokiem o identyfikatorze: 4D4D. Należy zauważyć, że bloki mogą być zawarte w innych blokach. Najważniejszym chyba blokiem jest blok o identyfikatorze 3D3D - dane o obiekcie. Jego podbloki mogą mieć następujące identyfikatory:
Identyfikator Co to?
2. Kolor tła
3. Kolor obiektu
4000 Definicja obiektu
Z kolei blok o identyfikatorze 4000 może mieć następujące podbloki(uwaga pierwszym polem bloku 4000 jest ciąg ASCIZ[zakończony bajtem o kodzie ASCII 0] zawierający nazwę obiektu):
Identyfikator Co to ?
4. Cień
5. Obiekt zbudowany z trójkątów
6. Światło
4700 Kamera
Blok 4100 może zawierać podbloki:
Identyfikator Co to ?
7. Lista wierzchołków
8. Lista pojedynczych punktów
4160 Macierz translacji
Budowa bloku 4110:
Wielkość Opis
2bajty short int Całkowita liczba wierzchołków
4bajty float X wartość
4bajty float Y wartość
4bajty float Z vwartość
.. .. . .. ..
.. .. . .. ..
Powyższe trzy linie powtarzają się tyle razy ile wskazuje na to pole: "Całkowita liczba wierzchołków", czyli tyle razy ile jest wirzchołków.
Powyższy opis pliku *.3DS. podobnie jak *.ASC jest niekompletny, ale jego celem jest jedynie zobrazowanie zasady budowy tych plików. Najlepiej do obsługi *.3DS. użyć gotowych już programów lub bibliotek. Jednocześnie bez problemu samemu możemy stworzyć własny format dla sceny. Tu chcę zauważyć iż w praktyce stosuje się tylko pliki typu *.3DS. bowiem przy bardzo złożonych obiektach pliki *.ASC mają bardzo duże rozmiary co może powodować długi czas ich wczytywania w porównaniu do plików *.3DS.
[Patrz też przykład 3DSRDR.RAR w przykładach]
Wyszukiwarka
Podobne podstrony:
UAS 13 zaoer4p2 5 13Budownictwo Ogolne II zaoczne wyklad 13 ppozch04 (13)model ekonometryczny zatrudnienie (13 stron)Logistyka (13 stron)Stereochemia 13kol zal sem2 EiT 13 2014EZNiOS Log 13 w7 zasobywięcej podobnych podstron