Интернет магазин китайских планшетных компьютеров |
||||
Компьютеры - X (формат файлов)22 февраля 2011Оглавление: 1. X (формат файлов) 2. Пример экспорта квадрата из 3DS MAX 3. Анимация Формат X файла — формат файла для хранения 3D объектов, созданный компанией Microsoft. Этот формат хранит информацию о геометрии 3D объекта, текстурные координаты, описание материалов, пути и названия к текстурам, которые используются. Хранится иерархия объектов, хранится анимация, и хранятся привязки вершин к «костям» с описанием весов. В X файле может отсутствовать какая-либо информация об объекте. X файл может быть текстовым либо бинарным. Структура X ФайлаВ начале X файла идёт заголовок, затем идёт описание информации об объекте. Описание информации может быть в произвольном порядке, но заголовок всегда идёт в самом начале. Описание заголовкаЗаголовок имеет следующий вид:
Заголовок всегда в текстовом виде и обычно выглядит так: 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 имеет следующий вид:
Пример Frame со всеми полями: Frame Имя { FrameTransformMatrix {} Mesh Имя {} } Исторически сложилось, что объекты в 3DS MAX хранятся в своих локальных координатах. Хранится матрица трансформации этого объекта. Всё, что рисуется на сцене 3DS MAX, — рисуется в глобальных координатах. При экспортировании из 3DS MAX экспортёр не проводит анализа сцены и сохраняет её так, как есть. Ещё можно экспортировать только выбранный объект из всей сцены. Эти два условия и привели к рождению Frame, чтобы сохранить матрицу трансформации в FrameTransformMatrix и сохранению локальных координат объектов 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 имеет следующий вид:
Поле MeshFaceWraps редко встречается в файлах. В этом поле хранятся текстурные координаты. формат поля:
В поле MeshTextureCoords хранятся текстурные координаты. формат поля:
В поле MeshVertexColors хранится цвет вершины. Обычно поля MeshTextureCoords и MeshVertexColors являются взаимоисключаемыми, т. к. если есть текстурные координаты, то цвет точек не используется.
В поле MeshMaterialList хранится список материалов, используемых для отображения данного меша. В этом списке указываются и текстуры, в которые «одет» меш. Сама текстура не хранится в X файле.
Просмотров: 3026
|