A3D

Материал из GTAModding.ru
Версия от 15:57, 18 июня 2012; XEPOMAHT007 (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

.a3d - многокомпонентный формат, являющийся исходником к ide, ipl и col файлам GTA третьей эры. Игрой формат не используется, т.к. является промежуточным на стадии компиляции.

Структура

Представляет собой описание неоткомпилированных данных на языке близкого к MaxScript, дополняющих игровую модель в dff-файле. Для удобства чтения, с подсветкой синтаксиса, a3d можно открыть 3D Studio MAX в качестве скрипта (опция MaxScript->Открыть скрипт).

В начале файла традиционно расположен комментарий разработчиков, а именно:

  • Filename - путь к a3d-файлу и его имя в исходниках GTA3;
  • Max file - путь к max-файлу и его имя в исходниках GTA3, к которому относится a3d-файл;
  • Written by - имя автора, создавшего a3d-файл (в данном случае один из сотрудников DMA Designe);
  • Date & Time - дата и время компиляции файла (в GTA3 равно времени последней компиляции PC-версии игры).

Комментарий соответственно закомментирован (начинается с символа решётки), поэтому игнорируется при дальнейшей компиляции из него ide, ipl и col файлов.

Далее, идёт собственно структура, которая разделяется на компоненты, компоненты ветвятся на составляющие:

Component {
    Name	name_l0                        //внутреннее имя модели в dff
    Parent	ROOT                           //родитель (всегда ROOT)
    Sibling	name_next_L0                   //имя внутренней модели следующего компонента
    Child	NULL                           //наследник (всегда NULL)
    XForm {                                    //исходник [[ipl]]
        Position	PosX, PosY, PosZ       //параметры "PosX, PosY, PosZ" из описания к [[ipl]]
        Quaternion	RotX, RotY, RotZ, RotW //параметры "RotX, RotY, RotZ, RotW" из описания к [[ipl]]
        Scale	1, 1, 1                        //параметры "1, 1, 1"  из описания к [[ipl]]
    }
    BoundBox {                                 //параметры ограничивающей коробки объекта (Bounding Box'а)
        Position	PosX, PosY, PosZ       //координаты центра коробки (Bounding Box'а)
        Size	SizeX, SizeY, SizeZ            //координаты размеров коробки (Bounding Box'а)
    }
    BoundSphere {                              //параметры ограничивающей сферы (Bounding Sphere)
        Position	PosX, PosY, PosZ       //координаты центра ограничивающей сферы (Bounding Sphere)
        Radius	BoundingSphereRadius           //значение радиуса ограничивающей сферы (Bounding Sphere)
    }
    Attributes {                               //атрибуты объекта
        ClassName	"Gta Object"           //название класса (объект либо коллизия)
        bool	"Is time object"	0      //логическая переменная, 0 - объект не принадлежит секции tobj в ide
        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 {                                  //исходник меша в [[col]]
        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              //а хрень какая-то
        }
    }
}

Примечание: комментарии к структуре (как и сама статья в целом) написаны Херомантом007, поэтому что-то может не совпадать с правильным оригинальным описанием в технической документации к GTA3.

п · о · р
GTA III Grand Theft Auto III
Форматы файлов.b.a3d.anm.col.cfg.dff.dat.gxt.ide.ifp.img/.dir.ipl.raw/.sdt.rep.sc.scm.set.txd.zon
Документацияcarcols.datCHASE.DATCULLZONE.DATcuts.imgdefault.datfistfite.datflight.datgta3.exegta3.dat
gta3.imggta3.zonhandling.cfgmain.scmmap.datmap.zonobject.datparticle.cfgped.datpedgrp.dat
pedstats.datsfx.rawsurface.datTimeCyc.DATtracks.dattrain.datwater.datwaterpro.datweapon.dat
ИнструментыCLEOClump ViewerCol-IO‎Collision File Editor IIData toolDFF Viewerdffxbox2pcG-ToolsGTA Garage Mod Manager
GXT EditorGTA3 Limit AdjusterGTA3 Mission BuilderGTA3 PatcherIMG ToolKam's Max ScriptsMap Editor
Mod GeneratorMod InstallerMoo MapperPS2 TXD ModPS2 TXD ViewerResourse HackerRotation Calculator
RW AnalyzeViceTXDWater EditorSanny BuilderTXD ToolTXD WorkshopYAIEZModeler
Туториалыраздел в разработке
Классические МодыGPS RadarBye-Bye BikiniUltimate Stunt ParkThe SphereMiss LibertyIllandoIntercity HighwayShoreside Bridge
Rockstar HeightsLighthouse BridgeBlade FunparkOrbital CityLakeside IslandLiberty PenitentiaryJEM Island
Illando HelixCliff Climbing Mountain
Глобальные МодыReal GTA3Twenty TenSnow CityFrosted WinterUltimateBeta modX-box modBad BusinessGTA3 HDUltra mod
OpenTunnelsBack to the Future
МультиплеерMulti Theft AutoLiberty Unleashed
Исходники4x48ballambulanceasukaasusbcameracar_gencatcopcardebugdemodiablofiretruckfrankgates
genstufhealthhjhoodimportintrojoeykenjiloveluigimayhemmeatpickupsrampagerayrcswitch
taxitoniusjwantedyard