Что такое файл 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 | Камера |