Skip to content

Instantly share code, notes, and snippets.

@wernsey
Created October 22, 2024 17:20
Show Gist options
  • Save wernsey/9f18df8b928566a2a7296a29ab545072 to your computer and use it in GitHub Desktop.
Save wernsey/9f18df8b928566a2a7296a29ab545072 to your computer and use it in GitHub Desktop.
3D Studio File Format Information (3dsinfo.txt) by Jochen Wilhelmy
3D Studio File Format Information (3dsinfo.txt)
-----------------------------------------------
by
Jochen Wilhelmy
a.k.a.
digisnap
[email protected]
06.08.1997
Introduction
============
The information contained in this file is only collected by me. The credits
go to the following people (in alphabetical order):
Christophe Chabanois (Wolverine / Apocalypse)
Jim Pitts
Niklas Beisert (Pascal / 4711)
I think some more people did a good job in discovering unknown chunks, but
I don't know them all. The layout is based on 3dsffo10.txt from Christophe
Chabanois. I did not include any source code from this info, because it was
of no use to me. I used only the standard character set for compatibility
with other operating systems.
My own extensions and corrections are:
- Corrected the hierarchy levels of some chunks, especially the material
editor chunk and the spotlight sub-chunks are at the wrong place in
some docs
- Documented some spotlight and material sub-chunks
- Documented most tracks
- Made a consistent layout for all chunk descriptions
My reader is written in object oriented C++ and can read the chunks only if
they are in the right hierarchy position. It keeps the structure of the 3DS
file in memory and does not jam all vertices into one big array. It also
can write this structure back to a 3DS file. This gave me the possibility
to convert the data of my world-editor into a 3DS file to see where to
place the animated objects. If you want to convert a mesh object into a 3DS
file, you just need this chunk structure:
0x4D4D Main chunk
0x3D3D 3D editor chunk
0x4000 Object block (with name of your object)
0x4100 Triangular mesh
0x4110 Your vertices
0x4120 Your faces
The internal reader of 3DS sets all other things to their defaults. The
"auto edge" function is good if you dont't want to set the face flags.
Index
=====
1. Fast reference : The chunk tree
----------------------------------
This will help you to find rapidly a chunk number and its description.
2. A chunk - What's that ?
--------------------------
This will explain what a chunk is and help programmers understand the
general concept of the 3DS file format.
3. Data types
-------------
This short section will describe all data types used.
4. Chunks description
---------------------
This is the most important part of the document. It describes the chunks.
1. Fast reference : The chunk tree
==================================
Color chunks
------------
0x0010 : Rgb (float)
0x0011 : Rgb (byte)
0x0012 : Rgb (byte) gamma corrected
0x0013 : Rgb (float) gamma corrected
Percent chunks
--------------
0x0030 : percent (int)
0x0031 : percent (float)
0x4D4D : Main chunk
-------------------
0x0002 : 3DS-Version
0x3D3D : 3D editor chunk
------------------------
0x0100 : One unit
0x1100 : Background bitmap
0x1101 : Use background bitmap
0x1200 : Background color
0x1201 : Use background color
0x1300 : Gradient colors
0x1301 : Use gradient
0x1400 : Shadow map bias
0x1420 : Shadow map size
0x1450 : Shadow map sample range
0x1460 : Raytrace bias
0x1470 : Raytrace on
0x2100 : Ambient color
0x2200 : Fog
0x2210 : fog background
0x2201 : Use fog
0x2210 : Fog background
0x2300 : Distance queue
0x2310 : Dim background
0x2301 : Use distance queue
0x2302 : Layered fog options
0x2303 : Use layered fog
0x3D3E : Mesh version
0x4000 : Object block
---------------------
0x4010 : Object hidden
0x4012 : Object doesn't cast
0x4013 : Matte object
0x4015 : External process on
0x4017 : Object doesn't receive shadows
0x4100 : Triangular mesh
0x4110 : Vertices list
0x4120 : Faces description
0x4130 : Faces material list
0x4140 : Mapping coordinates list
0x4150 : Smoothing group list
0x4160 : Local coordinate system
0x4165 : Object color in editor
0x4181 : External process name
0x4182 : External process parameters
0x4600 : Light
0x4610 : Spotlight
0x4627 : Spot raytrace
0x4630 : Light shadowed
0x4641 : Spot shadow map
0x4650 : Spot show cone
0x4651 : Spot is rectangular
0x4652 : Spot overshoot
0x4653 : Spot map
0x4656 : Spot roll
0x4658 : Spot ray trace bias
0x4620 : Light off
0x4625 : Attenuation on
0x4659 : Range start
0x465A : Range end
0x465B : Multiplier
0x4700 : Camera
0x7001 : Window settings
0x7011 : Window description #2 ...
0x7012 : Window description #1 ...
0x7020 : Mesh windows ...
0xAFFF : Material block
-----------------------
0xA000 : Material name
0xA010 : Ambient color
0xA020 : Diffuse color
0xA030 : Specular color
0xA040 : Shininess percent
0xA041 : Shininess strength percent
0xA050 : Transparency percent
0xA052 : Transparency falloff percent
0xA053 : Reflection blur percent
0xA081 : 2 sided
0xA083 : Add trans
0xA084 : Self illum
0xA085 : Wire frame on
0xA087 : Wire thickness
0xA088 : Face map
0xA08A : In tranc
0xA08C : Soften
0xA08E : Wire in units
0xA100 : Render type
0xA240 : Transparency falloff percent present
0xA250 : Reflection blur percent present
0xA252 : Bump map present (true percent)
0xA200 : Texture map 1
0xA33A : Texture map 2
0xA210 : Opacity map
0xA230 : Bump map
0xA33C : Shininess map
0xA204 : Specular map
0xA33D : Self illum. map
0xA220 : Reflection map
0xA33E : Mask for texture map 1
0xA340 : Mask for texture map 2
0xA342 : Mask for opacity map
0xA344 : Mask for bump map
0xA346 : Mask for shininess map
0xA348 : Mask for specular map
0xA34A : Mask for self illum. map
0xA34C : Mask for reflection map
Sub-chunks for all maps:
0xA300 : Mapping filename
0xA351 : Mapping parameters
0xA353 : Blur percent
0xA354 : V scale
0xA356 : U scale
0xA358 : U offset
0xA35A : V offset
0xA35C : Rotation angle
0xA360 : RGB Luma/Alpha tint 1
0xA362 : RGB Luma/Alpha tint 2
0xA364 : RGB tint R
0xA366 : RGB tint G
0xA368 : RGB tint B
0xB000 : Keyframer chunk
------------------------
0xB001 : Ambient light information block
0xB002 : Mesh information block
0xB003 : Camera information block
0xB004 : Camera target information block
0xB005 : Omni light information block
0xB006 : Spot light target information block
0xB007 : Spot light information block
0xB008 : Frames (Start and End)
0xB010 : Object name, parameters and hierarchy father
0xB013 : Object pivot point
0xB015 : Object morph angle
0xB020 : Position track
0xB021 : Rotation track
0xB022 : Scale track
0xB023 : FOV track
0xB024 : Roll track
0xB025 : Color track
0xB026 : Morph track
0xB027 : Hotspot track
0xB028 : Falloff track
0xB029 : Hide track
0xB030 : Hierarchy position
2. A chunk - What's that ?
==========================
1 - What is a chunk ?
--------------------
The 3D studio file format is compounded of several "chunks". What is a
"chunk" ? Well, that's quite simple.
Each chunk contains information : for example, it can contain colors,
images ... All tools which use the "chunk" method make file formats like
this:
1st chunk
2nd chunk
3rd chunk
...
nth chunk
2 - What is a "sub-chunk" ?
---------------------------
But, there are several problems with this format :
- The data are all at same level (an image is as important as the name of
an object ...)
- A general concept can't group several things.
This is why there are "sub-chunks".
In fact, each chunk can contain several sub-chunks :
1st chunk
1st sub-chunk
2nd sub-chunk
2nd chunk
3rd chunk
1st sub-chunk
1st sub-sub-chunk
...
Nth chunk
3 - How to read chunks ?
------------------------
This is the representation of a chunk :
Offset Length Name
0 2 Chunk-ID
2 4 Chunk-length = 6+n+m
6 n Data
6+n m Sub-chunks
So don't forget to read or skip the sub-chunks if the header and data size
is less than the chunk-length (6+n < chunk-length).
3. Data types
=============
Name Description
word 2 byte
dword 4 byte
float 4 byte floating point number
strz zero terminated string (C-string)
vector 3 floats (X,Y,Z)
BOOLEAN a BOOLEAN chunk acts as a flag and contains no data or sub-chunks
degree angle from 0 to 360 degree
rad angle from 0 to 2*pi
Note: If X and Y are the horizontal plane and Z is the height in your
world, you don't have to exchange Y and Z. Some other infos say that you
have to exchange Y and Z only in the keyframer chunk, but you have to treat
all vectors the same way.
4. Chunks description
=====================
-----------------------------------------------------------------------------
Color chunks
------------
These chunks are used several times in the format, they are "global
chunks".
-----------------------------------------------------------------------------
Chunk # : 0x0010
Name : Rgb color (float format)
Level : global chunk
Size : 12
Format :
float red
float green
float blue
This chunk contains 3 floats : the red, green and blue components of a
color. The values range from 0.0 to 1.0 (full intensity).
-----------------------------------------------------------------------------
Chunk # : 0x0011
Name : Rgb color (byte format)
Level : global chunk
Size : 3
Format :
byte red
byte green
byte blue
This chunk contains 3 bytes : the red, green and blue components of a
color. The values range from 0 to 255 (full intensity).
-----------------------------------------------------------------------------
Chunk # : 0x0012
Name : Rgb color gamma corrected (byte format)
Level : global chunk
Size : 3
Format :
byte red
byte green
byte blue
This chunk contains 3 bytes : the red, green and blue components of a gamma
corrected color. The values range from 0 to 255 (full intensity).
-----------------------------------------------------------------------------
Chunk # : 0x0013
Name : Rgb color gamma corrected (float format)
Level : global chunk
Size : 12
Format :
float red
float green
float blue
This chunk contains 3 floats : the red, green and blue components of a
gamma corrected color. The values range from 0.0 to 1.0 (full intensity).
-----------------------------------------------------------------------------
Percent chunks
--------------
-----------------------------------------------------------------------------
Chunk # : 0x0030
Name : percent (int format)
Level : global chunk
Size : 2
Format :
word percent
This chunk contains a word. The values range from 0 to 100.
-----------------------------------------------------------------------------
Chunk # : 0x0031
Name : percent (float format)
Level : global chunk
Size : 4
Format :
float percent
This chunk contains a float. The values range from 0 to 100.
=============================================================================
M A I N C H U N K
==================
=============================================================================
Chunk # : 0x4D4D
Name : Main chunk
Level : 0
Size : 0 + sub-chunks
Father : none
Format :
-----------------------------------------------------------------------------
Chunk # : 0x0002
Name : 3DS-Version
Level : 1
Size : 4
Father : 0x4D4D (Main chunk)
Format :
dword Version
This dword specifies the number of your 3DS-Version.
=============================================================================
3 D E D I T O R C H U N K
===========================
=============================================================================
Chunk # : 0x3D3D
Name : 3D Editor chunk
Level : 1
Size : 0 + sub-chunks
Father : 0x4D4D (Main chunk)
Format :
-----------------------------------------------------------------------------
Chunk # : 0x0100
Name : One unit
Level : 2
Size : 4
Father : 3D Editor chunk
Format :
float One unit
-----------------------------------------------------------------------------
Chunk # : 0x1100
Name : Background bitmap
Level : 2
Size : varying
Father : 3D Editor chunk
Format :
strz Name
This chunk contains the name of the background bitmap choosen in 3DS even
if not used (i.e. you have selected a bitmap but you choose another thing).
-----------------------------------------------------------------------------
Chunk # : 0x1101
Name : Use background bitmap
Level : 2
Size : 0
Father : 3D Editor chunk
Format : BOOLEAN
This chunk is a flag indicating that the background bitmap (see chunk
0x1100) is used. When this chunk is not present, the background bitmap is
not used.
-----------------------------------------------------------------------------
Chunk # : 0x1200
Name : Background color
Level : 2
Size : 0 + sub-chunks
Father : 3D Editor chunk
Format :
This chunk contains the color of the background even if not used. You must
read the color sub-chunks. Generaly, the format is :
- Background color chunk (0x1200)
- RGB float color chunk (0x0010)
- RGB float gamma corected color chunk (0x0013)
-----------------------------------------------------------------------------
Chunk # : 0x1201
Name : Use background color
Level : 2
Size : 0
Father : 3D Editor chunk
Format : BOOLEAN
This chunk is a flag indicating that the background color (see chunk
0x1200) is used. When this chunk is not present, the background color is
not used.
-----------------------------------------------------------------------------
Chunk # : 0x1300
Name : Background gradient colors
Level : 2
Size : 4 + sub-chunks
Father : 3D Editor chunk
Format :
float Gradient position
color chunk RGBF1
color chunk RGBFG1
color chunk RGBF2
color chunk RGBFG2
color chunk RGBF3
color chunk RGBFG3
RGBF = RGB float color CHUNK
RGBFG = RGB gamma corrected float color CHUNK
So, if hexa you have something like that
00 13 76 00 00 00 21 CE 4A 3F 10 00 12 00 00 00 .....
* 00 13 is the chunk ID (0x1300) and 76 00 00 00 is the length of this chunk.
* 21 CE 4A 3F are values which contain the "position" of the three gradient
colors. It's a float (from 0.0 to 1.0) indicating the position of the
middle color.
* 10 00 is the chunk ID (0x0010) of a rgb float color and 12 00 00 00 is the
length of this sub-chunk.
-----------------------------------------------------------------------------
Chunk # : 0x1301
Name : Use background gradient colors
Level : 2
Size : 0
Father : 3D Editor chunk
Format : BOOLEAN
This chunk is a flag indicating that the background gradient colors (see
chunk 0x1300) are used. When this chunk is not present, the gradient
colors are not used.
-----------------------------------------------------------------------------
Chunk # : 0x1400
Name : Shadow map bias
Level : 2
Size : 4
Father : 3D Editor chunk
Format :
float Shadow map bias
-----------------------------------------------------------------------------
Chunk # : 0x1420
Name : Shadow map size
Level : 2
Size : 2
Father : 3D Editor chunk
Format :
word Shadow map size
-----------------------------------------------------------------------------
Chunk # : 0x1450
Name : Shadow map sample range
Level : 2
Size : 4
Father : 3D Editor chunk
Format :
float Shadow map sample range
-----------------------------------------------------------------------------
Chunk # : 0x1460
Name : Raytrace bias
Level : 2
Size : 4
Father : 3D Editor chunk
Format :
float Raytrace bias
-----------------------------------------------------------------------------
Chunk # : 0x1470
Name : Use raytrace
Level : 2
Size : 0
Father : 3D Editor chunk
Format : BOOLEAN
This chunk is a flag indicating that raytrace (see chunk 0x1460) is used.
When this chunk is not present, the raytrace is not used.
-----------------------------------------------------------------------------
Chunk # : 0x2100
Name : Ambient color
Level : 2
Size : 0 + sub-chunk
Father : 3D Editor chunk
Format :
This chunk contains a color chunk (in general RGB float)
-----------------------------------------------------------------------------
0x4000 : OBJECT BLOCK
---------------------
-----------------------------------------------------------------------------
Chunk # : 0x4000
Name : OBJECT BLOCK
Level : 2
Size : varying + sub-chunks
Father : 0x3D3D (3D Editor chunk)
Format :
strz Object name
-----------------------------------------------------------------------------
Chunk # : 0x4010
Name : Object hidden
Level : 3
Size : 0
Father : 0x4000 (Object block)
Format : BOOLEAN
-----------------------------------------------------------------------------
Chunk # : 0x4012
Name : Object doesn't cast
Level : 3
Size : 0
Father : 0x4000 (Object block)
Format : BOOLEAN
-----------------------------------------------------------------------------
Chunk # : 0x4013
Name : Matte object
Level : 3
Size : 0
Father : 0x4000 (Object block)
Format : BOOLEAN
-----------------------------------------------------------------------------
Chunk # : 0x4015
Name : External process on
Level : 3
Size : 0
Father : 0x4000 (Object block)
Format : BOOLEAN
-----------------------------------------------------------------------------
Chunk # : 0x4017
Name : Object doesn't receive shadows
Level : 3
Size : 0
Father : 0x4000 (Object block)
Format : BOOLEAN
-----------------------------------------------------------------------------
0x4100 : Triangular mesh
------------------------
-----------------------------------------------------------------------------
Chunk # : 0x4100
Name : Triangular Mesh
Level : 3
Size : 0 + sub-chunks
Father : 0x4000 (Object block)
Format :
-----------------------------------------------------------------------------
Chunk # : 0x4110
Name : Vertices list
Level : 4
Size : varying
Father : 0x4100 (Triangular mesh)
Format :
word Number of vertices
Then, for each vertex
vector Position
-----------------------------------------------------------------------------
Chunk # : 0x4120
Name : Faces description
Level : 4
Size : varying + sub-chunks
Father : 0x4100 (Triangular mesh)
Format :
word Number of faces
Then, for each face:
word Vertex for corner A (number reference)
word Vertex for corner B (number reference)
word Vertex for corner C (number reference)
word Face flag
* bit 0 : CA visible
* bit 1 : BC visible
* bit 2 : AB visible
After datas, parse sub-chunks (0x4130, 0x4150).
-----------------------------------------------------------------------------
Chunk # : 0x4130
Name : Faces material list
Level : 5
Size : varying
Father : 0x4120 (Faces description)
Format :
strz Material name
word Number of entries
Then, for each entry:
word Face assigned to this material (number reference)
I think the faces of one object can have different materials. Therefore,
this chunk can be present more than once.
-----------------------------------------------------------------------------
Chunk # : 0x4140
Name : Mapping coordinates list for each vertex
Level : 4
Size : varying
Father : 0x4100 (Triangular mesh)
Format :
word Number of vertices
Then, for each vertex
float U coordinate
float V coordinate
-----------------------------------------------------------------------------
Chunk # : 0x4150
Name : Smoothing groups list
Level : 5
Size :
Father : 0x4120 (Faces description)
Format :
-----------------------------------------------------------------------------
Chunk # : 0x4160
Name : Local coordinate system
Level : 4
Size : 48
Father : 0x4100 (Triangular mesh)
Format :
vector X1
vector X2
vector X3
vector O
X1, X2 and X3 represent the axes, O the origin.
-----------------------------------------------------------------------------
Chunk # : 0x4165
Name : Object color in 3D Editor
Level : 4
Size : 1
Father : 0x4100 (Triangular mesh)
Format :
byte Color
-----------------------------------------------------------------------------
Chunk # : 0x4600
Name : Light
Level : 3
Size : 12 + sub-chunks
Father : 0x4000 (Object block)
Format :
vector Position
-----------------------------------------------------------------------------
Chunk # : 0x4610
Name : Spotlight
Level : 4
Size : 20 + sub-chunks
Father : 0x4600 (Light)
Format :
vector Target
float HotSpot
float FallOff
If this chunk is found, the light is a spot light and not an omni
directional light.
-----------------------------------------------------------------------------
Chunk # : 0x4651
Name : Spot is rectangular
Level : 5
Size : 0
Father : 0x4610 (Spotlight)
Format : BOOLEAN
-----------------------------------------------------------------------------
Chunk # : 0x4653
Name : Spot map
Level : 5
Size : varying
Father : 0x4610 (Spotlight)
Format :
strz Filename
-----------------------------------------------------------------------------
Chunk # : 0x4656
Name : Spot roll
Level : 5
Size : 4
Father : 0x4610 (Spotlight)
Format :
float Roll (degree)
-----------------------------------------------------------------------------
Chunk # : 0x4700
Name : CAMERA
Level : 3
Size : 32
Father : 0x4000 (Object block)
Format :
vector Position
vector Target
float Bank (degree)
float Lens
-----------------------------------------------------------------------------
Chunk # : 0x7001
Name : Window settings
Level : 2
Size : varying
Father : 0x3D3D (3D editor chunk)
Format :
-----------------------------------------------------------------------------
Chunk # : 0x3D3E
Name : Mesh version
Level : 2
Size : 4
Father : 0x3D3D (3D editor chunk)
Format :
dword Version
-----------------------------------------------------------------------------
0xAFFF : Material block
-----------------------
-----------------------------------------------------------------------------
Chunk # : 0xAFFF
Name : Material editor chunk
Level : 2
Size : 0 + sub-chunks
Father : 0x3D3D (3D editor chunk)
Format :
-----------------------------------------------------------------------------
Chunk # : 0xA000
Name : Material name
Level : 3
Size : varying
Father : 0xAFFF (Material block)
Format :
strz Material name
-----------------------------------------------------------------------------
Chunk # : 0xA010
Name : Material ambient color
Level : 3
Size : 0 + sub-chunks
Father : 0xAFFF (Material block)
Format :
This chunk contains color chunks (in gen. rgb byte & rgb byte gamma)
-----------------------------------------------------------------------------
Chunk # : 0xA020
Name : Material diffuse color
Level : 3
Size : 0 + sub-chunks
Father : 0xAFFF (Material block)
Format :
This chunk contains color chunks (in gen. rgb byte & rgb byte gamma)
-----------------------------------------------------------------------------
Chunk # : 0xA030
Name : Material specular color
Level : 3
Size : 0 + sub-chunks
Father : 0xAFFF (Material block)
Format :
This chunk contains color chunks (in gen. rgb byte & rgb byte gamma)
-----------------------------------------------------------------------------
Chunk # : 0xA040
Name : Material shininess percent
Level : 3
Size : 0 + sub-chunk
Father : 0xAFFF (Material block)
Format :
This chunk contains a percent chunk (in gen. int format)
-----------------------------------------------------------------------------
Chunk # : 0xA041
Name : Material shininess strength percent
Level : 3
Size : 0 + sub-chunk
Father : 0xAFFF (Material block)
Format :
This chunk contains a percent chunk (in gen. int format)
-----------------------------------------------------------------------------
Chunk # : 0xA200 - 0xA34C
Name : Map
Level : 3
Size : 0 + sub-chunk
Father : 0xAFFF (Material block)
Format :
These chunks define the different maps (see chunk tree). They contain the
sub-chunks for all maps, such as mapping filename name or U/V scale.
-----------------------------------------------------------------------------
Chunk # : 0xA300
Name : Mapping filename
Level : 4
Size : varying
Father : 0xA200 - 0xA34C (Map)
Format :
strz Filename
-----------------------------------------------------------------------------
Chunk # : 0xA354
Name : V scale
Level : 4
Size : 4
Father : 0xA200 - 0xA34C (Map)
Format :
float V scale
-----------------------------------------------------------------------------
Chunk # : 0xA356
Name : U scale
Level : 4
Size : 4
Father : 0xA200 - 0xA34C (Map)
Format :
float U scale
-----------------------------------------------------------------------------
Chunk # : 0xA358
Name : U offst
Level : 4
Size : 4
Father : 0xA200 - 0xA34C (Map)
Format :
float U offset
-----------------------------------------------------------------------------
Chunk # : 0xA35A
Name : V offst
Level : 4
Size : 4
Father : 0xA200 - 0xA34C (Map)
Format :
float V offset
-----------------------------------------------------------------------------
Chunk # : 0xA35A
Name : Rotation angle
Level : 4
Size : 4
Father : 0xA200 - 0xA34C (Map)
Format :
float Rotation angle
-----------------------------------------------------------------------------
K E Y F R A M E R C H U N K
------------------------------
-----------------------------------------------------------------------------
Chunk # : 0xB000
Name : Keyframer
Level : 1
Size : 0 + sub-chunks
Father : 0x4D4D (Main chunk)
Format :
The goal of the keyframer datas is to describe the move of
- The objects in the scene (like a cube ...)
- The lights (ambient, omni or spot)
- The cameras
-----------------------------------------------------------------------------
Chunk # : 0xB001..0xB007
Name : Information block
Level : 2
Size : 0 + sub-chunks
Father : 0xB000 (Keyframer chunk)
Format :
The information block is a chunk constituted of sub-chunks describing the
move of a particular object, or camera:
0xB001 : Ambient light information block
0xB002 : Mesh information block
0xB003 : Camera information block
0xB004 : Camera target information block
0xB005 : Omni light information block
0xB006 : Spot light target information block
0xB007 : Spot light information block
-----------------------------------------------------------------------------
Chunk # : 0xB008
Name : Frames (Start and End)
Level : 2
Size : 8
Father : 0xB000 (Keyframer chunk)
Format :
dword Start
dword End
-----------------------------------------------------------------------------
Chunk # : 0xB010
Name : Object name, parameters and hierarchy father
Level : 3
Size : varying
Father : 0xB001..0xB007 Information block
Format :
strz Object Name
word Flag1
* Bit 11 : Hidden
word Flag2
* Bit 0 : Show path
* Bit 1 : Animate smoothing
* Bit 4 : Object motion blur
* Bit 6 : Morph materials
word Hierarchy father, link to the parent object (-1 for none)
-----------------------------------------------------------------------------
Chunk # : 0xB013
Name : Object pivot point
Level : 3
Size : 12
Father : 0xB001..0xB007 Information block
Format :
vector Pivot point
-----------------------------------------------------------------------------
Chunk # : 0xB020..0xB029
Name : Track
Level : 3
Size : varying
Father : 0xB001..0xB007 Information block
Format :
word Flag
* Bits 0-1 : 0 = single
2 = repeat
3 = loop
* Bit 3 : lock X
* Bit 4 : lock Y
* Bit 5 : lock Z
* Bit 7 : unlink X
* Bit 8 : unlink Y
* Bit 9 : unlink Z
8 byte Unknown
dword Number of keys in this track
Then, for each key:
dword Key number (position in track)
word Acceleration data present (flag) Range:
* Bit 0 : Tension follows [-1.0, 1.0]
* Bit 1 : Continuity follows [-1.0, 1.0]
* Bit 2 : Bias follows [-1.0, 1.0]
* Bit 3 : Ease to follows [ 0.0, 1.0]
* Bit 4 : Ease from follows [ 0.0, 1.0]
n floats Acceleration data
? Track specific data
Track specific data is:
0xB020 : Position track : 1 vector Position
0xB021 : Rotation track : 1 float Angle (rad)
1 vector Axis
0xB022 : Scale track : 3 floats Size
0xB023 : FOV track : 1 float Angle (degree)
0xB024 : Roll track : 1 float Angle (degree)
0xB025 : Color track :
0xB026 : Morph track : 1 strz Object name
0xB027 : Hotspot track : 1 float Angle (degree)
0xB028 : Falloff track : 1 float Angle (degree)
0xB029 : Hide track : nothing
-----------------------------------------------------------------------------
Chunk # : 0xB030
Name : Hierarchy position
Level : 3
Size : 2
Father : 0xB001..0xB007 Information block
Format :
word Hierarchy
This word contains a unique value for the object and is used for the
hierarchy tree links.
-----------------------------------------------------------------------------
<end>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment