Формат X файла

Формат X файла

Формат X файла

Формат X файла — формат файла для хранения 3D объектов, созданный компанией Microsoft.

Этот формат хранит информацию о геометрии 3D объекта (координаты вершин и координаты нормалей), текстурные координаты, описание материалов, пути и названия к текстурам, которые используются. Хранится иерархия объектов, хранится анимация, и хранятся привязки вершин к «костям» с описанием весов. В X файле может отсутствовать какая-либо информация об объекте (например в X файле могут содержаться только координаты вершин).

X файл может быть текстовым либо бинарным.

Содержание

Структура X Файла

В начале X файла идёт заголовок, затем идёт описание информации об объекте. Описание информации может быть в произвольном порядке, но заголовок всегда идёт в самом начале.

Описание заголовка

Заголовок имеет следующий вид:

Тип Подтип Размер Содержит Пояснение
Магическое слово 4 байта "xof "
Номер версии формата основной номер 2 байта 03 Основной номер версии формата — 3
дополнительный номер 2 байта 02 Дополнительный номер версии формата — 2
Тип формата 4 байта "txt " Текстовый формат
"bin " Бинарный формат
"com " Сжатый формат
Тип сжатия (нужен, если формат "com ") 4 байта "lzw "
"zip "
«и т. д.»
Размер в битах дробного числа 4 байта 0064 64 битное число
0032 32 битное число

Заголовок всегда в текстовом виде и обычно выглядит так: xof 0303txt 0032

Далее, обычно, идёт описание Templates. Это своеобразная подсказка, чтобы лучше понять какие данные и в каком виде представлены.

Вообще порядок описания данных в X файле может быть произвольным. Ниже следует описание в таком порядке, в котором X файл генерируют популярные экспортёры.

После описания Templates обычно следует описание самого объекта (может следовать и анимация). Сам объект может быть простым или составным. Для того чтобы хранить сложные составные объекты разработали иерархию связей, через которую можно понять, какой объект с каким связан или от какого зависим. Эти данные используются например в скелетной анимации. Если двигать «кость» плеча, то должны двигаться и все зависимые от неё «кости» (объекты) — это вся рука. В иерархии связь так и хранится в явном виде. На вершине находится плечо, затем предплечье, затем кисть, далее от кости идёт несколько пальцев, которые друг от друга независимы, но зависимы от кисти, и далее следуют фаланги пальца.

В X-файле иерархия описана через ключевое слово Frame. За ключевым словом следует имя данного узла иерархии и фигурные скобки.

Пример:

Frame TopBone { }

Все узлы, вложенные в фигурные скобки TopBone { }, будут зависимы от этого узла. Вложенность может быть неограничено глубокой. Узлы, не вложенные в TopBone { }, будут независимыми друг от друга.

Пример вложенных узлов иерархии:

Frame TopBone {
 
Frame Bone2 {}
 
}

Здесь Bone2 зависим от TopBone и изменения, которые происходят с TopBone, влияют и на Bone2. Изменения с Bone2 не влияют на TopBone.

Пример независимых узлов:

Frame TopBone {}
 
Frame Bone2 {}

Вообще в X файле может и не быть иерархии. Экспортёр от Microsoft в вершину иерархии всегда ставит узел SCENE_ROOT или DXCC_ROOT независимо от того, есть в этом необходимость или нет.

Поле Frame имеет следующий вид:

Название поля (TeamPlate) UUID
Frame <3D82AB46-62DA-11cf-AB39-0020AF71E433>
Названия членов поля Тип размер данных Дополнительные сведения
FrameTransformMatrix
Примечание Если это поле отсутствует внутри Frame,
то не нужно производить никаких локальных трансформаций
Mesh
Примечание Количество Mesh может быть любым внутри Frame

Пример Frame со всеми полями:

Frame Имя {

FrameTransformMatrix {}

Mesh Имя {}

}

Исторически сложилось, что объекты в 3DS MAX хранятся в своих локальных координатах. Хранится матрица трансформации этого объекта. Всё, что рисуется на сцене 3DS MAX, — рисуется в глобальных координатах. При экспортировании из 3DS MAX экспортёр не проводит анализа сцены и сохраняет её так, как есть. Ещё можно экспортировать только выбранный объект из всей сцены. Эти два условия и привели к рождению Frame, чтобы сохранить матрицу трансформации в FrameTransformMatrix (FrameTransformMatrix не может существовать обособленно от Frame) и сохранению локальных координат объектов 3D объекта, а не глобальных.

Если требуется, можно сохранить и глобальные координаты без Frame и FrameTransformMatrix, но стандартный экспортёр от Microsoft этого не делает.

Матрица трансформации FrameTransformMatrix представляет собой матрицу аффинных преобразований в однородных координатах. Пример матрицы трансформации:

FrameTransformMatrix {
 
1.000000,0.000000,0.000000,0.000000,
 
0.000000,1.000000,0.000000,0.000000,
 
0.000000,0.000000,1.000000,0.000000,
 
0.000000,0.000000,0.000000,1.000000;;}

Синтаксис должен быть именно таким, как показано в данном примере.

Далее, если требуется, следует описание геометрии после ключевого слова Mesh.

Cинтаксис следующий:

Mesh Имя_Меша {}

Если производится экспорт из 3DS MAX, то Имя_Меша совпадает с именем узла иерархии. И из 3DS MAX данные не экспортируются так, чтобы на один Frame приходилось несколько Mesh, хоть стандарт файла этого и не запрещает.

Поле Mesh имеет следующий вид:

Название поля (TeamPlate) UUID
Mesh <3D82AB44-62DA-11cf-AB39-0020AF71E433>
Названия членов поля Тип размер данных Дополнительные сведения
nVertices DWORD Любой
vertices массив Vector nVertices
nFaces DWORD
faces массив MeshFace nFaces
Примечание Это поле (Mesh) определяет базовую геометрию меша. Первый массив - это перечень координат вершин,второй - определяет фейсы. Три числа фейса - это индексы первого массива.
Поля, которые могут быть внутри поля Mesh
MeshFaceWraps Если этого поля нет, то wrapping for both u and v defaults to false.
MeshTextureCoords Если этого поля нет, то нет и текстурных координат
MeshVertexColors Если этого поля нет, то цвет определён белым
MeshMaterialList Если этого поля нет, то материал - белый

Поле MeshFaceWraps редко встречается в файлах. В этом поле хранятся текстурные координаты[источник?- Microsoft DirectX File Format Specification Version 1.13. Переписал 1 в 1. Перевод понимаю как: MeshFaceWraps хранит сразу и u и v координату. Нигде не нашёл применения на практике].

формат поля:

Название поля (TeamPlate) UUID
MeshFaceWraps <4885AE62-78E8-11cf-8F52-0040333594A3>
Названия членов поля Тип размер данных Дополнительные сведения
nFaceWrapValues DWORD нет
faceWrapValues Boolean2d
Примечание This template is used to define the texture topology of each face in a wrap. nFaceWrapValues should be equal to the number of faces in a mesh.

В поле MeshTextureCoords хранятся текстурные координаты. формат поля:

Название поля (TeamPlate) UUID
MeshTextureCoords <F6F23F40-7686-11cf-8F52-0040333594A3>
Названия членов поля Тип размер данных Дополнительные сведения
nTextureCoords DWORD нет
textureCoords массив Coords2d nTextureCoords
Примечание Это поле определяет текстурные координаты меша

В поле MeshVertexColors хранится цвет вершины. Обычно поля MeshTextureCoords и MeshVertexColors являются взаимоисключаемыми, т. к. если есть текстурные координаты (собственно сама текстура), то цвет точек не используется.

Название поля (TeamPlate) UUID
MeshVertexColors <1630B821-7842-11cf-8F52-0040333594A3>
Названия членов поля Тип размер данных Дополнительные сведения
nVertexColors DWORD нет
vertexColors массив IndexedColor nVertexColors
Примечание Это поле определяет цвет меша

В поле MeshMaterialList хранится список материалов, используемых для отображения данного меша. В этом списке указываются и текстуры (файловые пути), в которые «одет» меш. Сама текстура не хранится в X файле.

Название поля (TeamPlate) UUID
MeshMaterialList <F6F23F42-7686-11cf-8F52-0040333594A3>
Названия членов поля Тип Размер данных Дополнительные сведения
nMaterials DWORD Материал
nFaceIndexes DWORD
FaceIndexes массив DWORD nFaceIndexes
vertexColors массив IndexedColor nVertexColors
Примечание
Это поле предназначенно для того, чтобы показать на каком фейсе меша какой материал используется. nMaterials показывает сколько материалов в данном меше.

Пример экспорта квадрата из 3DS MAX

Изображение квадрата в 3DS MAX, который будет экспортирован в X файл

В текстовом X файле допускаются комментарии. После символов // разрешается писать любую поясняющую информацию, которая будет проигнорирована при загрузке меша. Данный комментарий действует до конца строки.

Ниже приведён полученный X файл:

xof 0303txt 0032
 
// это заголовок X файла
 
// указано, что это текстовый x файл версии 3.3 с 32 битным форматом дробного числа
 
// далее идет поясняющая информация об используемых полях template 
 
// пара пояснений, т. к. они занимают много места
 
template Frame {
 
<3d82ab46-62da-11cf-ab39-0020af71e433>
 
[...]
 
}
 
template Matrix4x4 {
 
<f6f23f45-7686-11cf-8f52-0040333594a3>
 
array FLOAT matrix[16];
 
}
 
// тот самый верхний узел иерархии
 
Frame DXCC_ROOT {
 
 
FrameTransformMatrix {
 
1.000000,0.000000,0.000000,0.000000,
 
0.000000,1.000000,0.000000,0.000000,
 
0.000000,0.000000,1.000000,0.000000,
 
0.000000,0.000000,0.000000,1.000000;;
 
}
 
Frame Quad {
 
 
FrameTransformMatrix {
 
1.000000,0.000000,0.000000,0.000000,
 
0.000000,-0.000000,-1.000000,0.000000,
 
0.000000,1.000000,0.000000,0.000000,
 
-10.067115,43.624161,-0.000002,1.000000;;
 
}
 
Mesh Quad {
 
6;
 
15.067116;0.000002;-38.624161;,
 
5.067116;-0.000001;-48.624161;,
 
5.067116;0.000002;-38.624161;,
 
5.067116;-0.000001;-48.624161;,
 
15.067116;0.000002;-38.624161;,
 
15.067116;-0.000002;-48.624161;;
 
2;
 
3;0,1,2;,
 
3;3,4,5;;
 
MeshNormals {
 
6;
 
-0.000000;-0.000000;-1.000000;,
 
-0.000000;-0.000000;-1.000000;,
 
-0.000000;-0.000000;-1.000000;,
 
0.000000;-0.000000;-1.000000;,
 
0.000000;-0.000000;-1.000000;,
 
0.000000;-0.000000;-1.000000;;
 
2;
 
3;0,1,2;,
 
3;3,4,5;;
 
}
 
MeshTextureCoords {
 
6;
 
0.999501;-0.999500;,
 
0.000499;-0.000500;,
 
0.000500;-0.999501;,
 
0.000499;-0.000500;,
 
0.999501;-0.999500;,
 
0.999500;-0.000500;;
 
}
 
 
MeshMaterialList {
 
1;
 
2;
 
0,
 
0;
 
Material {
 
0.588235;0.588235;0.588235;1.000000;;
 
0.100000;
 
0.900000;0.900000;0.900000;;
 
0.000000;0.000000;0.000000;;
 
TextureFilename {
 
"E:\\\\3dsmax7\\\\images\\\\terrain1.bmp";
 
}
 
}
 
}
 
VertexDuplicationIndices {
 
6;
 
4;
 
0,
 
1,
 
2,
 
1,
 
0,
 
5;
 
}
 
}
 
}
 
}

Анимация

Анимация может быть сохранена как в виде скелетной анимации, так и в виде трансформации вершин.

Источники


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Полезное


Смотреть что такое "Формат X файла" в других словарях:

  • Формат файла — Формат спецификация структуры данных, записанных в компьютерном файле. Формат файла обычно указывается в его имени, как часть, отделённая точкой (обычно эту часть называют расширением имени файла, хотя, строго говоря, это неверно). Например,… …   Википедия

  • Формат — Формат: размер книги, листа, карточки и т. п.[1] (пример: формат бумаги); определённая структура информационного объекта[2] (пример: формат файла); способ построения и подачи, форма проведения какого либо события, мероприятия (напр.:… …   Википедия

  • формат файла архива — архивировать в tar архив От англ. tape archive. Формат битового потока или файла архива, а также название традиционной для Unix программы для работы с такими архивами. Первоначально программа tar использовалась для создания архивов на магнитной… …   Справочник технического переводчика

  • формат файла — файловый формат Кодированный поток и дополнительные данные и информация, не явно требуемые для декодирования кодированного потока. Примерами таких данных являются поля текста с титрами, информация о защите и предыстории; данные о размещении… …   Справочник технического переводчика

  • формат MP3 — (третий вариант первого стандарта MPEG) Лицензируемый формат файла для хранения аудио информации. Один из наиболее распространенных форматов цифрового кодирования звуковой информации. Разработан MPEG (англ. Motion Pictures Expert Group —… …   Справочник технического переводчика

  • формат файла для аудио-видео данных со сжатием фирмы Microsoft — Формат AVI (от англ. Audio Video Interleave) является основным для хранения видеофайлов в ОС Windows. AVI позволяет сочетать различные виды компрессии (особой популярностью пользуется пара: DivX для видео и WMA для аудио).… …   Справочник технического переводчика

  • формат файла MPEG-4 — (МСЭ Т J.124). [http://www.iks media.ru/glossary/index.html?glossid=2400324] Тематики электросвязь, основные понятия EN MPEG 4 file formatMP4 …   Справочник технического переводчика

  • формат с табулятором в качестве разделителя — Формат файла в коде ASCII, в котором табулятор используется в качестве разделителя между значениями столбцов в пределах строки, а каждая строка завершается символом возврата каретки. Файлы в формате с табулятором имеют расширение .TXT и… …   Справочник технического переводчика

  • формат файлов (взаимодействия ресурсов) — Содержит семейство форматов, включающих форматы аудиофайлов (WAVE, RDIB, RMID), файлов изображений (DIB, WMF, РAL), мультимедиа (МММ), текстовых файлов (RTF). Файл RIFF содержит специальный заголовок, определяющий формат данных и идентифицирующий …   Справочник технического переводчика

  • формат фрактального изображения — Формат файла для хранения графических изображений, сильно сжатых с помощью фракталов. [http://www.morepc.ru/dict/] Тематики информационные технологии в целом EN FIFfractal image format …   Справочник технического переводчика


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»