DFF
Материал из GTAModding.ru
Версия от 07:53, 30 апреля 2013; DK22 (обсуждение | вклад)
Эта статья требует полного или частичного перевода. Часть этой статьи написана на иностранном языке. Если вы знаете его, пожалуйста, помогите с ее переводом на русский язык. |
DFF – формат, использующийся Rockstar Games для хранения трёхмерных игровых моделей в таких играх как GTA 3, GTA: Vice City, GTA: San Andreas. Является кроссплатформенным форматом.
Содержание |
Основные данные
Все трёхмерные модели в GTA третьей серии закодированы в виде бинарных потоков - RenderWare binary stream file, специализированных для движка RenderWare, используемого в игре. Все бинарные потоки с моделями имеют расширение DFF (для коллекции разнообразных моделей - генерика, персонажей, оружия, автомобилей и т.д.) или BSP (для хранения одного игрового уровня). Для просмотра и редактирования иерархии потоков DFF и BSP существует программа RW Analyze от Steve M. Для импорта/экспорта DFF в 3D Studio MAX пользуются GTA Tools (скрипты КАМа) или SA Tools (скрипты Дениски). Импорт/экспорт DFF в Zanoza Modeler присутствует в версиях начиная с 1.06.
Структура
В узлах иерархии бинарных потоков DFF расположены секции, в которых закодированы различные данные трёхмерных объектов - основные и дополнительные. В DFF можно найти секции, специфичные для RenderWare и не специфичные, написанные программистами RockStar Games специально под определённую игру и расширяющие её возможности по сравнению со стандартным RenderWare (Pipeline Set, Specular Material, 2dfx, Night Vertex Colors, Collision Model, Reflection Material, Mesh Extension, Frame).
Каждая секция имеет заголовок, по которой можно её идентифицировать:
* (Заголовок секции) 4 bytes - int - Идентификатор секции 4 bytes - int - Размер секции 4 bytes - hex - Версия DFF * (Данные секции) [Размер секции] bytes - data - данные внутри секции
Идентификатор секции определяет, как данные должны быть обработаны. Например если идентификатор секции = rwDATA, rwSTRING, rwFRAME или rwMATERIALSPLIT, то для анализа секции нужно спуститься на один уровень вниз по иерархии - в данные, где расположены другие секции, как например здесь:
*(Заголовок секции) 4 bytes - int - rwCLUMP 4 bytes - int - 48 2 bytes - int - Unknown 2 bytes - int - 4099 *(Данные секции) (Заголовок секции) 4 bytes - int - rwDATA 4 bytes - int - 8 2 bytes - int - Unknown 2 bytes - int - 4099 (Данные секции) 4 bytes - int - Some Number 4 bytes - int - Some Number
(Заголовок секции) 4 bytes - int - rwSTRING 4 bytes - int - 16 2 bytes - int - Unknown 2 bytes - int - 4099 (Данные секции) 16 bytes - string - Data
Список таких идентификаторов, определяющих иерархию компонентов DFF:
1 = rwDATA 2 = rwSTRING 3 = rwEXTENSION 6 = rwTEXTURE 7 = rwMATERIAL 8 = rwMATERIALLIST 14 = rwFRAMELIST 15 = rwGEOMETRY 16 = rwCLUMP 20 = rwATOMIC 26 = rwGEOMETRYLIST 1294 = rwMATERIALSPLIT 39056126 = rwFRAME
Полный список идентификаторов можно найти в отдельной статье: list of RW section IDs
По имени секции можно догадаться, что в ней хранится (например rwGEOMETRY -> rwDATA содержит все вершины, нормали трёхмерных объектов, в то время как rwGEOMETRYLIST -> rwDATA содержит число и имена геометрических объектов).
Версии DFF
В заголовке секции можно найти закодированные номера версий RenderWare, под которую скомпелирован DFF:
3.0.0.0 - 0x00000310 - только для мульти-dff и генерика, остатки от ранних версий GTA III. 3.2.0.0 - 0x0800FFFF - GTA III PS2 и PC версий 3.3.0.2 - 0x0C02FFFF - GTA VC 3.4.0.3 - 0x1003FFFF - GTA III и GTA VC X-BOX версий 3.5.0.0 - 0x1400FFFF - GTA III Android версий 3.6.0.3 - 0x1803FFFF - GTA SA
Содержимое DFF
- Clump
- Struct
- Frame List
- Geometry List
- Struct
- Geometry *
- Struct
- Material List
- Struct
- Material *
- Struct
- Texture - optional
- Extension
- Material Effects PLG - optional
- Reflection Material - optional
- Specular Material - optional
- UV Animation PLG - optional
- Extension
- Bin Mesh PLG
- Native Data PLG (Xbox и PS2)
- Skin PLG
- Mesh Extension - optional
- Night Vertex Colors - optional
- Morph PLG
- 2dfx - optional
- Atomic *
- Struct
- Extension
- Right To Render - optional
- Particles PLG - optional
- Material Effects PLG - optional
- Pipeline Set - optional
- Extension
- Collision Model (Только для транспорта)
* Эти разделы (и их дочерние разделы) могут повторятся несколько раз.