X (формат файлов)

X (формат файлов)
Контейнер 3D объектов
Расширение

.x

Сигнатура

xof

Разработан

Microsoft

Тип формата

текстовый либо двоичный

Развит в

.sdkmesh

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 (формат файлов)" в других словарях:

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

  • формат файлов изображений — Реализует сжатие данных методом кодирования длины серий (RLE), при котором в файле выделяются последовательные данные, состоящие из одинаковых элементов. [http://www.morepc.ru/dict/] Тематики информационные технологии в целом EN IFFimage file… …   Справочник технического переводчика

  • Deb (формат файлов) — Пакет Debian (dpkg) Иконка deb файлов в среде GNOME Расширение файла: .deb Тип MIME: application/x deb …   Википедия

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

  • Двоичный формат файлов Microsoft Excel 97—2007 — Microsoft Excel (Windows) Microsoft Excel 2007 Тип Табличный процессор Разработчик ОС Microsoft Windows …   Википедия

  • Двоичный формат файлов Microsoft Excel 97—2000 — Microsoft Excel (Windows) Microsoft Excel 2007 Тип Табличный процессор Разработчик ОС Microsoft Windows …   Википедия

  • собственный [частный] формат файлов — Собственный формат файлов какого либо приложения. Используется для хранения документов, рисунков и т. п. Приложение преобразует в него файлы, импортируемые из других программ или имеющие общедоступные (стандартные) форматы.… …   Справочник технического переводчика

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

  • deb (формат файлов) — У этого термина существуют и другие значения, см. Deb. Пакет Debian (dpkg) Иконка d …   Википедия

  • ICO (формат файлов) — ICO, Windows icon Расширение .ico MIME image/vnd.microsoft.icon[1] Разработан Microsoft Тип формата растровая графика ICO (Windows icon)  формат хранения значков файлов в …   Википедия

  • Zoo (формат файлов) — Zoo  формат, а также программа сжатия файлов, написанная Раулем Деси (Rahul Dhesi) в середине 1980 х годов. Формат основан на известном алгоритме сжатия LZW и определяется по расширению файла .zoo. В настоящее время этот формат используется… …   Википедия


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

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