Формат файлов *.object (формат объектов SDK) — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

Формат файлов *.object (формат объектов SDK) — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
(Описание формата(из кода 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 = 0x0911, // ignored by AE
+
''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 = 0x1013
+
''EMESH_CHUNK_SG'' = 0x1013
  
'''EboneChunkID:'''
+
const uint16 ''BONE_VERSION_1'' = 0x1;
  
BONE_CHUNK_VERSION = 0x0001,
+
const uint16 ''BONE_VERSION_2'' = 0x2;
 +
 
 +
const uint16 ''BONE_VERSION'' = BONE_VERSION_2;
 +
 
 +
'''EboneChunkID:'''
  
BONE_CHUNK_DEF = 0x0002,
+
''BONE_CHUNK_VERSION'' = 0x0001,
  
BONE_CHUNK_BIND_POSE = 0x0003,
+
''BONE_CHUNK_DEF'' = 0x0002,
  
BONE_CHUNK_MATERIAL = 0x0004,
+
''BONE_CHUNK_BIND_POSE''= 0x0003,
  
BONE_CHUNK_SHAPE = 0x0005,
+
''BONE_CHUNK_MATERIAL'' = 0x0004,
  
BONE_CHUNK_IK_JOINT = 0x0006,
+
''BONE_CHUNK_SHAPE'' = 0x0005,
  
BONE_CHUNK_MASS_PARAMS = 0x0007,
+
''BONE_CHUNK_IK_JOINT'' = 0x0006,
  
BONE_CHUNK_IK_FLAGS = 0x0008,
+
''BONE_CHUNK_MASS_PARAMS'' = 0x0007,
  
BONE_CHUNK_BREAK_PARAMS = 0x0009,
+
''BONE_CHUNK_IK_FLAGS'' = 0x0008,
  
BONE_CHUNK_FRICTION = 0x0010
+
''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

Попытка #1 от excid

Другие места
LANGUAGE