Формат файлов *.object (формат объектов SDK) — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
Loxotron (обсуждение | вклад) |
Loxotron (обсуждение | вклад) (→Описание формата(из кода xrFSL)) |
||
Строка 25: | Строка 25: | ||
'''EObjectChunkIDs:''' | '''EObjectChunkIDs:''' | ||
− | EOBJ_CHUNK_MAIN = 0x7777, | + | ''EOBJ_CHUNK_MAIN'' = 0x7777, |
− | EOBJ_CHUNK_VERSION = 0x0900, | + | ''EOBJ_CHUNK_VERSION'' = 0x0900, |
− | EOBJ_CHUNK_FLAGS = 0x0903, | + | ''EOBJ_CHUNK_FLAGS'' = 0x0903, |
− | EOBJ_CHUNK_SURFACES_0 = 0x0905, // old format | + | ''EOBJ_CHUNK_SURFACES_0'' = 0x0905, // old format |
− | EOBJ_CHUNK_SURFACES_1 = 0x0906, // old format | + | ''EOBJ_CHUNK_SURFACES_1'' = 0x0906, // old format |
− | EOBJ_CHUNK_SURFACES_2 = 0x0907, | + | ''EOBJ_CHUNK_SURFACES_2'' = 0x0907, |
− | EOBJ_CHUNK_MESHES = 0x0910, | + | ''EOBJ_CHUNK_MESHES'' = 0x0910, |
− | EOBJ_CHUNK_0911 | + | ''EOBJ_CHUNK_0911'' = 0x0911, // ignored by AE |
− | EOBJ_CHUNK_USERDATA = 0x0912, | + | ''EOBJ_CHUNK_USERDATA'' = 0x0912, |
− | EOBJ_CHUNK_BONES_0 = 0x0913, // old format | + | ''EOBJ_CHUNK_BONES_0'' = 0x0913, // old format |
− | EOBJ_CHUNK_MOTIONS = 0x0916, | + | ''EOBJ_CHUNK_MOTIONS'' = 0x0916, |
− | EOBJ_CHUNK_SHADERS_0 = 0x0918, // old format | + | ''EOBJ_CHUNK_SHADERS_0'' = 0x0918, // old format |
− | EOBJ_CHUNK_PARTITIONS_0 = 0x0919, // old format | + | ''EOBJ_CHUNK_PARTITIONS_0'' = 0x0919, // old format |
− | EOBJ_CHUNK_TRANSFORM = 0x0920, | + | ''EOBJ_CHUNK_TRANSFORM'' = 0x0920, |
− | EOBJ_CHUNK_BONES_1 = 0x0921, | + | ''EOBJ_CHUNK_BONES_1'' = 0x0921, |
− | EOBJ_CHUNK_REVISION = 0x0922, // file revision | + | ''EOBJ_CHUNK_REVISION'' = 0x0922, // file revision |
− | EOBJ_CHUNK_PARTITIONS_1 = 0x0923, | + | ''EOBJ_CHUNK_PARTITIONS_1'' = 0x0923, |
− | EOBJ_CHUNK_MOTION_REFS = 0x0924, | + | ''EOBJ_CHUNK_MOTION_REFS'' = 0x0924, |
− | EOBJ_CHUNK_LOD_REF = 0x0925 // LOD\Reference | + | ''EOBJ_CHUNK_LOD_REF'' = 0x0925 // LOD\Reference |
'''EObjectClipChunkIDs:''' | '''EObjectClipChunkIDs:''' | ||
− | EOBJ_CLIP_VERSION_CHUNK = 0x9000, | + | ''EOBJ_CLIP_VERSION_CHUNK'' = 0x9000, |
− | EOBJ_CLIP_DATA_CHUNK = 0x9001 | + | ''EOBJ_CLIP_DATA_CHUNK'' = 0x9001 |
'''EMeshChunkID:''' | '''EMeshChunkID:''' | ||
− | EMESH_CHUNK_VERSION = 0x1000, | + | ''EMESH_CHUNK_VERSION'' = 0x1000, |
− | EMESH_CHUNK_MESHNAME = 0x1001, | + | ''EMESH_CHUNK_MESHNAME'' = 0x1001, |
− | EMESH_CHUNK_FLAGS = 0x1002, | + | ''EMESH_CHUNK_FLAGS'' = 0x1002, |
− | EMESH_CHUNK_BBOX = 0x1004, | + | ''EMESH_CHUNK_BBOX'' = 0x1004, |
− | EMESH_CHUNK_VERTS = 0x1005, | + | ''EMESH_CHUNK_VERTS'' = 0x1005, |
− | EMESH_CHUNK_FACES = 0x1006, | + | ''EMESH_CHUNK_FACES'' = 0x1006, |
− | EMESH_CHUNK_VMAPS_0 = 0x1007, | + | ''EMESH_CHUNK_VMAPS_0'' = 0x1007, |
− | EMESH_CHUNK_VMREFS = 0x1008, | + | ''EMESH_CHUNK_VMREFS'' = 0x1008, |
− | EMESH_CHUNK_SFACE = 0x1009, | + | ''EMESH_CHUNK_SFACE'' = 0x1009, |
− | EMESH_CHUNK_OPTIONS = 0x1010, | + | ''EMESH_CHUNK_OPTIONS'' = 0x1010, |
− | EMESH_CHUNK_VMAPS_1 = 0x1011, | + | ''EMESH_CHUNK_VMAPS_1'' = 0x1011, |
− | EMESH_CHUNK_VMAPS_2 = 0x1012, | + | ''EMESH_CHUNK_VMAPS_2'' = 0x1012, |
− | EMESH_CHUNK_SG | + | ''EMESH_CHUNK_SG'' = 0x1013 |
− | '' | + | const uint16 ''BONE_VERSION_1'' = 0x1; |
− | + | const uint16 ''BONE_VERSION_2'' = 0x2; | |
+ | |||
+ | const uint16 ''BONE_VERSION'' = BONE_VERSION_2; | ||
+ | |||
+ | '''EboneChunkID:''' | ||
− | + | ''BONE_CHUNK_VERSION'' = 0x0001, | |
− | + | ''BONE_CHUNK_DEF'' = 0x0002, | |
− | + | ''BONE_CHUNK_BIND_POSE''= 0x0003, | |
− | + | ''BONE_CHUNK_MATERIAL'' = 0x0004, | |
− | + | ''BONE_CHUNK_SHAPE'' = 0x0005, | |
− | + | ''BONE_CHUNK_IK_JOINT'' = 0x0006, | |
− | + | ''BONE_CHUNK_MASS_PARAMS'' = 0x0007, | |
− | + | ''BONE_CHUNK_IK_FLAGS'' = 0x0008, | |
− | + | ''BONE_CHUNK_BREAK_PARAMS'' = 0x0009, | |
+ | ''BONE_CHUNK_FRICTION'' = 0x0010 | ||
===[[Попытка #1 от excid]]=== | ===[[Попытка #1 от excid]]=== |
Версия 13:37, 25 июня 2009
Содержание
О формате
Формат *.object используется в качестве основного формата хранения моделей на этапе редактирования (включая экспорт из Maya или 3ds Max и хранение моделей до компиляции уровня)
Описание структуры
Формат бинарный. Файл состоит из вложенных друг в друга блоков. Весь файл представляет собой единый блок.
Структура блока
Блок имеет 3 обязательные части:
Часть | Тип(размер) | Подробнее |
---|---|---|
Идентификатор типа блока | (4) | 2 байта идентификатора и 2 нулевых байта |
Размер блока | uint(4) | без учета этих частей — только то, что идет дальше |
Данные | (Размер блока) | Данные могут быть представлены вложенными блоками |
Типы данных
Особое внимание стоит обратить на то, как хранятся строки: они нуль-терминальные, то есть в конце обязательно содержат нулевой байт.
Описание формата(из кода xrFSL)
EObjectChunkIDs:
EOBJ_CHUNK_MAIN = 0x7777,
EOBJ_CHUNK_VERSION = 0x0900,
EOBJ_CHUNK_FLAGS = 0x0903,
EOBJ_CHUNK_SURFACES_0 = 0x0905, // old format
EOBJ_CHUNK_SURFACES_1 = 0x0906, // old format
EOBJ_CHUNK_SURFACES_2 = 0x0907,
EOBJ_CHUNK_MESHES = 0x0910,
EOBJ_CHUNK_0911 = 0x0911, // ignored by AE
EOBJ_CHUNK_USERDATA = 0x0912,
EOBJ_CHUNK_BONES_0 = 0x0913, // old format
EOBJ_CHUNK_MOTIONS = 0x0916,
EOBJ_CHUNK_SHADERS_0 = 0x0918, // old format
EOBJ_CHUNK_PARTITIONS_0 = 0x0919, // old format
EOBJ_CHUNK_TRANSFORM = 0x0920,
EOBJ_CHUNK_BONES_1 = 0x0921,
EOBJ_CHUNK_REVISION = 0x0922, // file revision
EOBJ_CHUNK_PARTITIONS_1 = 0x0923,
EOBJ_CHUNK_MOTION_REFS = 0x0924,
EOBJ_CHUNK_LOD_REF = 0x0925 // LOD\Reference
EObjectClipChunkIDs:
EOBJ_CLIP_VERSION_CHUNK = 0x9000,
EOBJ_CLIP_DATA_CHUNK = 0x9001
EMeshChunkID:
EMESH_CHUNK_VERSION = 0x1000,
EMESH_CHUNK_MESHNAME = 0x1001,
EMESH_CHUNK_FLAGS = 0x1002,
EMESH_CHUNK_BBOX = 0x1004,
EMESH_CHUNK_VERTS = 0x1005,
EMESH_CHUNK_FACES = 0x1006,
EMESH_CHUNK_VMAPS_0 = 0x1007,
EMESH_CHUNK_VMREFS = 0x1008,
EMESH_CHUNK_SFACE = 0x1009,
EMESH_CHUNK_OPTIONS = 0x1010,
EMESH_CHUNK_VMAPS_1 = 0x1011,
EMESH_CHUNK_VMAPS_2 = 0x1012,
EMESH_CHUNK_SG = 0x1013
const uint16 BONE_VERSION_1 = 0x1;
const uint16 BONE_VERSION_2 = 0x2;
const uint16 BONE_VERSION = BONE_VERSION_2;
EboneChunkID:
BONE_CHUNK_VERSION = 0x0001,
BONE_CHUNK_DEF = 0x0002,
BONE_CHUNK_BIND_POSE= 0x0003,
BONE_CHUNK_MATERIAL = 0x0004,
BONE_CHUNK_SHAPE = 0x0005,
BONE_CHUNK_IK_JOINT = 0x0006,
BONE_CHUNK_MASS_PARAMS = 0x0007,
BONE_CHUNK_IK_FLAGS = 0x0008,
BONE_CHUNK_BREAK_PARAMS = 0x0009,
BONE_CHUNK_FRICTION = 0x0010