Что такое файл 3DS?
Файл с расширением .3ds представляет формат файла сетки 3D Sudio (DOS), используемый Autodesk 3D Studio. Autodesk 3D Studio существует на рынке форматов 3D-файлов с 1990-х годов и теперь превратилась в 3D Studio MAX для работы с 3D-моделированием, анимацией и визуализацией. Файл 3DS содержит данные для трехмерного представления сцен и изображений и является одним из популярных форматов файлов для импорта и экспорта трехмерных данных. Он учитывает такую информацию, как расположение камер, данные сетки, информацию об освещении, конфигурации области просмотра, данные группы сглаживания, ссылки на растровые изображения и атрибуты для создания вершин и полигонов для рендеринга сцены.
Формат файла 3DS — дополнительная информация
По своей сути 3DS представляет собой двоичный формат файла и следует предопределенной структуре для хранения и извлечения данных. Двоичный формат файла позволяет формату файла 3DS быстрее уменьшаться по сравнению с текстовыми форматами файлов. Данные внутри файла 3DS хранятся в виде фрагментов.
3DS Чанк
Каждый фрагмент в файле 3DS представляет собой блок данных, который содержит идентификатор, длину блока для расположения следующего блока и сами данные. Идентификатор фрагмента позволяет программам чтения файлов формата 3DS пропускать блоки, которые они не распознают. Это также помогает в расширяемости формата. Каждый фрагмент хранит информацию, связанную с формами, освещением и информацией о просмотре, которые вместе отображают сцену. Фрагменты расположены в иерархической структуре в файле 3DS и напоминают дерево объектов XML-документа в представлении.
Идентификатор фрагмента: Первые два байта фрагмента представляют собой идентификатор фрагмента, который позволяет программе чтения файла решить, учитывать ли его во время чтения или пропустить.
Длина чанка: За идентификатором чанка следует 4-байтовое целое число (с прямым порядком байтов), обозначающее длину чанка. Эта длина также включает длину данных, длину их подблоков и 6-байтовый заголовок.
Полезная нагрузка: За длиной фрагмента следуют фактические байты данных для фрагмента, за которыми следуют его подблоки в той же иерархической структуре, которая может быть расширена до нескольких уровней в глубину.
Структура чанка
Иерархическая структура простого чанка показана ниже:
Кусок
начало | конец | размер | имя |
---|---|---|---|
0 | 1 | 2 | Идентификатор чанка |
2 | 5 | 4 | Следующий фрагмент |
Чанки имеют наложенную на них иерархию, которая идентифицируется ее идентификатором. Файл 3ds имеет идентификатор основного фрагмента 4D4Dh. Это всегда первая часть файла. В первичном чанке находятся основные чанки.
Основные фрагменты
id | Описание |
---|---|
3D3D | Начало данных объектной сетки. |
B000 | Начало данных ключевого кадра. |
Указатель Next Chunk после блока ID указывает на следующий основной фрагмент. Сразу после основного фрагмента находится еще один фрагмент. Это может быть любой другой тип фрагмента, допустимый в рамках его основного объема. Для описания сетки (3D3D) они могут быть любыми кратными.
Подфрагменты 3D3D — Mesh Block
id | Описание |
---|---|
1100 | неизвестно |
1200 | Цвет фона. |
1201 | неизвестно |
1300 | неизвестно |
1400 | неизвестно |
1420 | неизвестно |
1450 | неизвестно |
1500 | неизвестно |
2100 | Блок окружающего цвета |
2200 | туман? |
2201 | туман? |
2210 | туман? |
2300 | неизвестно |
3000 | неизвестно |
4000 | Блок объектов |
7001 | неизвестно |
AFFF | неизвестно |
Подблоки из 4000 — Блок описания объекта Первый элемент Subchunk 4000 представляет собой ASCIIZ-строку имени объекта. Помните, что объект может быть сеткой, источником света или камерой.
id | Описание |
---|---|
4010 | неизвестно |
4012 | тень? |
4100 | Треугольный полигональный объект |
4600 | Легкий |
4700 | Камера |