A3D
Материал из GTAModding.ru
A3D - многокомпонентный формат, являющийся исходником к IDE-, IPL- и COL-файлам GTA третьей эры. Игрой формат не используется, т.к. является промежуточным на стадии компиляции.
Структура
Представляет собой описание неоткомпилированных данных на языке, близком к MaxScript, дополняющее игровую модель в DFF-файле. Для удобства чтения (с подсветкой синтаксиса) A3D можно открыть 3D Studio MAX в качестве скрипта.
В начале файла расположен комментарий разработчиков, а именно:
- Filename - путь к A3D-файлу и его имя в исходниках GTA III;
- Max file - путь к MAX-файлу и его имя в исходниках GTA III;
- Written by - имя автора, создавшего A3D-файл;
- Date & Time - дата и время компиляции файла (в GTA III равно времени последней компиляции PC-версии игры).
Далее идёт структура, которая разделяется на компоненты; компоненты делятся на составляющие:
Component { Name name_l0 //Внутреннее имя DFF-модели. Parent ROOT //Родитель (всегда ROOT). Sibling name_next_L0 //Имя 3D-модели следующего компонента. Child NULL //Наследник (всегда NULL). XForm { //Исходник IPL-файла. Position PosX, PosY, PosZ //Позиция объекта на игровой карте. Quaternion RotX, RotY, RotZ, RotW //Угол вращения объекта. Scale 1, 1, 1 //Масштаб объекта. } BoundBox { //Параметры ограничивающей коробки (Bounding Box). Position PosX, PosY, PosZ //Координаты центра коробки. Size SizeX, SizeY, SizeZ //Размеры коробки. } BoundSphere { //Параметры ограничивающей сферы (Bounding Sphere). Position PosX, PosY, PosZ //Координаты центра сферы. Radius BoundingSphereRadius //Значение радиуса сферы. } Attributes { //Атрибуты объекта. ClassName "Gta Object" //Название класса (графическая либо физическая модлеь). bool "Is time object" 0 //Логическая переменная, отвечает за время отображения объекта. int "Time on" 0 //Целое число, от него зависит время начала рендеринга. int "Time off" 23 //Целое число, от него зависит время окончания рендеринга. float "LOD distance" 300.000000 //Дистанция прорисовки. bool "Normal cull" 0 //Логическая переменная, смотрите раздел "Флаги объектов" статьи об IDE-файлах. string TXD TexDictName //Имя TXD-папки, хранящей текстуры объекта. bool "Do not fade" 0 //Логическая переменная, смотрите раздел "Флаги объектов" статьи об IDE-файлах. bool "Draw last" 0 //Логическая переменная, смотрите раздел "Флаги объектов" статьи об IDE-файлах. bool Additive 0 //Логическая переменная, смотрите раздел "Флаги объектов" статьи об IDE-файлах. bool "Is Subway" 0 //Логическая переменная, смотрите раздел "Флаги объектов" статьи об IDE-файлах. bool "Ignore Lighting" 0 //Логическая переменная, смотрите раздел "Флаги объектов" статьи об IDE-файлах. bool "No Zbuffer write" 0 //Логическая переменная, смотрите раздел "Флаги объектов" статьи об IDE-файлах. } ColMesh { //Исходник физической 3D-модели. Name Collision_Mesh //Имя пустышки в DFF-файле, к которой крепится меш. Position PosX, PosY, PosZ //Координаты центра меша в коллизии. VertexArray { //Массив вершин меша. Number i //Количество вершин в меше. Vertex PosX, PosY, PosZ //Координаты 1 вершины относительно центра меша. ... } FaceArray { //Массив фейсов. Number j //Количество фейсов в меше. Face 0, 1, 2 //Номера вершин, из которых формируется фейс. ... } Attributes { //Атрибуты меша. ClassName "Gta Collision" //Название класса (графическая либо физическая модель). int "Surface Type" 11 //Тип поверхности меша (трава, песок и т. д.). int "Piece Type" 0 //Неизвестный параметр. } } } ColBox { //Исходник бокса в COL-файле. Name colbox //Имя пустышки в DFF-файле, к которой крепится бокс. Position PosX, PosY, PosZ //Координаты центра бокса в коллизии. Size SizeX, SizeY, SizeZ //Размеры бокса. Attributes { //Атрибуты бокса. ClassName "Gta Collision" //Название класса (графическая либо физическая модель). int "Surface Type" 11 //Тип поверхности бокса (трава, песок и т. д.). int "Piece Type" 0 //Неизвестный параметр. } } } ColSphere { //Исходник сферы в COL-файле. Name "ColSph" //Имя пустышки в DFF-файле, к которой крепится сфера. Position PosX, PosY, PosZ //Координаты центра сферы в физической модели. Radius SphereRadius //Значение радиуса сферы в коллизии. Attributes { //Атрибуты сферы. ClassName "Gta Collision" //Название класса (графическая либо физическая модель). int "Surface Type" 11 //Тип поверхности сферы (трава, песок и т. д.). int "Piece Type" 0 //Неизвестный параметр. } } }
Автор статьи: XEPOMAHT007, правил НикИТОС. Мы не работаем в Rockstar Games, поэтому не несём ответственности за содержимое статьи.