diff options
author | Aki <please@ignore.pl> | 2024-08-28 22:51:28 +0200 |
---|---|---|
committer | Aki <please@ignore.pl> | 2024-08-28 22:51:28 +0200 |
commit | 37e11f04be93bca703889c7c8553aa9d944c1e45 (patch) | |
tree | 8043b09f738f3ed99c0c959a8b850c2217c92950 /Doc/3DS File Format.txt | |
parent | fe5684ec04ae2ff4dd59d1fdeec2db4dbc903bfe (diff) | |
download | starshatter-37e11f04be93bca703889c7c8553aa9d944c1e45.zip starshatter-37e11f04be93bca703889c7c8553aa9d944c1e45.tar.gz starshatter-37e11f04be93bca703889c7c8553aa9d944c1e45.tar.bz2 |
Cleaned-up Doc/ directory a bit
Renames, re-capitalization, removed selected very outdated or not
interesting files.
Diffstat (limited to 'Doc/3DS File Format.txt')
-rw-r--r-- | Doc/3DS File Format.txt | 3111 |
1 files changed, 1554 insertions, 1557 deletions
diff --git a/Doc/3DS File Format.txt b/Doc/3DS File Format.txt index 64cd23a..5304879 100644 --- a/Doc/3DS File Format.txt +++ b/Doc/3DS File Format.txt @@ -1,1557 +1,1554 @@ -
-
---------------------------------------------------------------------------------
-
-
-The Unofficial 3DStudio 3DS File Format v1.0
-
-By Jeff Lewis (werewolf@worldgate.com)
-
-Notice
-
-This document is an attempt to document the AutoDesk 3DS file format. This was
-made difficult in that I don't own or have access to a copy of the program, only
-to sample files. Fortunately, someone used AutoDesk's own 3DS file development
-kit to create a program which dumps the contents of a 3DS file into a human
-readable form - albeit somewhat inaccurately. The codes listed and their names
-come from that program and have been confirmed by testing.
-
-It should be known that the 3DS format is, as far as I know, a proprietary
-format of AutoDesk and that the format details are not widely known or are
-protected by AutoDesk.
-
-It is not my intent to infringe on AutoDesk's rights, but simply to make a
-large collection of 3D image files accessable to people who do not use 3D
-Studio - or cannot use it because AutoDesk has not chosen to provide a version
-of 3D Studio for the computer they use (ie: The Macintosh in my case).
-
-Warning
-
-This document is not intended to be a definitive definition of the 3DS format
-and is not authorised by AutoDesk. While every effort has been made to ensure
-its accuracy, or at least warn you when there's doubt about its accuracy, no
-guarantee of accuracy in any of it can be given. Use this document at your own
-risk.
-
-
-Document layout and format information
-
-In the following document, chunk names which are in bold mean the chunk format
-has been determined with certainty. Chunk names which are not bold but have
-a struct following means that this is a guess but is not substantiated. All
-others are unknown.
-
-A short is always a two byte integer.
-A long is always a four byte integer.
-A float is always a four byte IEEE floating point number.
-A cstr is a zero byte terminated ASCII string without a length.
-A char is a single byte integer.
-
-
-3DS File Format
-
-A 3DS file consists of blocks of data called chunks. Every chunk starts the
-same way:
-
- short chunk_id;
- long chunk_len;
-
-The chunk_id is a unique code which identifies the type of data in this chunk
-and also may indicate the existence of subordinate chunks. The chunk_len
-indicates the length of following data to be associated with this chunk. Note,
-this may contain more data than just this chunk. If the length of data is
-greater than that needed to fill in the information for the chunk, additional
-subordinate chunks are attached to this chunk immediately following any data
-needed for this chunk, and should be parsed out. These subordinate chunks may
-themselves contain subordinate chunks.
-
-Unfortunately, there is no indication of the length of data which is owned by
-the current chunk, only the total length of data attached to the chunk, which
-means that the only way to parse out subordinate chunks is to know the exact
-format of the owning chunk. On the other hand, if a chunk is unknown, the
-parsing program canskip the entire chunk and subordinate chunks in one jump.
-
-In the following list, I try when possible to indicate that a chunk is likely to
-have subordinate chunks and what kinds of subordinate chunks I've seen attached
-to it.
-
-Another problem lies in cstr names. I've seen cases where the space used by a
-name is riddled with fragments of old names. It seems that the space reserved
-for a name is not cleared if a smaller name replaces it. If the name is removed,
-you'll get a zero byte indicating an immediate end of string, followed by an
-undetermined number of characters and nulls. This seems to happen only when the
-cstr is at the end of a block of data and so you can assume that the length of
-the chunk contains no other subchunks. See viewport_data for an example of this.
-
-
-0xxxH Group
-
- 0000H
- NULL_CHUNK
- 0001H
- Unknown chunk
- float ???
- 0002H
- M3D_VERSION
- short version;
- 0005H
- M3D_KFVERSION
- 0010H
- COLOR_F
- float red, grn, blu;
- 0011H
- COLOR_24
- char red, grn, blu;
- 0012H
- LIN_COLOR_24
- char red, grn, blu;
- 0013H
- LIN_COLOR_F
- float red, grn, blu;
- 0030H
- INT_PERCENTAGE
- short percentage;
- 0031H
- FLOAT_PERCENTAGE
- float percentage;
- 0100H
- MASTER_SCALE
- float scale;
- 0995H
- ChunkType
- 0996H
- ChunkUnique
- 0997H
- NotChunk
- 0998H
- Container
- 0999H
- IsChunk
- 0c3cH
- C_SXP_SELFI_MASKDATA
-
-
-
-1xxxH Group
-
- 1100H
- BIT_MAP
- cstr filename;
- 1101H
- USE_BIT_MAP
- 1200H
- SOLID_BGND; followed by color_f
- 1201H
- USE_SOLID_BGND
- 1300H
- V_GRADIENT; followed by three color_f: start, mid, end
- float midpoint;
- 1301H
- USE_V_GRADIENT
- 1400H
- LO_SHADOW_BIAS
- float bias;
- 1410H
- HI_SHADOW_BIAS
- 1420H
- SHADOW_MAP_SIZE
- short size;
- 1430H
- SHADOW_SAMPLES
- 1440H
- SHADOW_RANGE
- 1450H
- SHADOW_FILTER
- float filter;
- 1460H
- RAY_BIAS
- float bias;
- 1500H
- O_CONSTS
- float plane_x, plane_y, plane_z;
-
-
-
-2xxxH Group
-
- 2100H
- AMBIENT_LIGHT
- 2200H
- FOG; followed by color_f, fog_bgnd
- float near_plane, near_density;
- float far_plane, far_density;
- 2201H
- USE_FOG
- 2210H
- FOG_BGND
- 2300H
- DISTANCE_CUE followed by dcue_bgnd
- float near_plane, near_density;
- float far_plane, far_density;
- 2301H
- USE_DISTANCE_CUE
- 2302H
- LAYER_FOG
- float fog_z_from, fog_z_to;
- float fog_density;
- short fog_type;
- 2303H
- USE_LAYER_FOG
- 2310H
- DCUE_BGND
- 2d2dH
- SMAGIC
- 2d3dH
- LMAGIC
-
-
-
-3xxxH Group
-
- 3000H
- DEFAULT_VIEW
- 3010H
- VIEW_TOP
- float targe_x, target_y, target_z;
- float view_width;
- 3020H
- VIEW_BOTTOM
- float targe_x, target_y, target_z;
- float view_width;
- 3030H
- VIEW_LEFT
- float targe_x, target_y, target_z;
- float view_width;
- 3040H
- VIEW_RIGHT
- float targe_x, target_y, target_z;
- float view_width;
- 3050H
- VIEW_FRONT
- float targe_x, target_y, target_z;
- float view_width;
- 3060H
- VIEW_BACK
- float targe_x, target_y, target_z;
- float view_width;
- 3070H
- VIEW_USER
- float targe_x, target_y, target_z;
- float view_width;
- 3080H
- VIEW_CAMERA
- cstr camera_name;
- 3090H
- VIEW_WINDOW
- 3d3dH
- MDATA; Mesh Data Magic Number (.3DS files sub of 4d4d)
- 3d3eH
- MESH_VERSION
- 3daaH
- MLIBMAGIC; Material Library Magic Number (.MLI files)
- 3dc2H
- PRJMAGIC; 3dS Project Magic Number (.PRJ files)
- 3dffH
- MATMAGIC; Material File Magic Number (.MAT files)
-
-
-
-4xxxH Group
-
- 4000H
- NAMED_OBJECT
- cstr name;
- 4010H
- OBJ_HIDDEN
- 4011H
- OBJ_VIS_LOFTER
- 4012H
- OBJ_DOESNT_CAST
- 4013H
- OBJ_MATTE
- 4014H
- OBJ_FAST
- 4015H
- OBJ_PROCEDURAL
- 4016H
- OBJ_FROZEN
- 4017H
- OBJ_DONT_RCVSHADOW
- 4100H
- N_TRI_OBJECT
- named triangle object
- followed by point_array, point_flag_array, mesh_matrix,
- face_array
- 4110H
- POINT_ARRAY
- short npoints;
- struct {
- float x, y, z;
- } points[npoints];
- 4111H
- POINT_FLAG_ARRAY
- short nflags;
- short flags[nflags];
- 4120H
- FACE_ARRAY may be followed by smooth_group
- short nfaces;
- struct {
- short vertex1, vertex2, vertex3;
- short flags;
- } facearray[nfaces];
- 4130H
- MSH_MAT_GROUP mesh_material_group
- cstr material_name;
- short nfaces;
- short facenum[nfaces];
- 4131H
- OLD_MAT_GROUP
- 4140H
- TEX_VERTS
- short nverts;
- struct {
- float x, y;
- } vertices[nverts];
- 4150H
- SMOOTH_GROUP
- short grouplist[n]; determined by length, seems to be 4 per face
- 4160H
- MESH_MATRIX
- float matrix[4][3];
- 4165H
- MESH_COLOR
- short color_index;
- 4170H
- MESH_TEXTURE_INFO
- short map_type;
- float x_tiling, y_tiling;
- float icon_x, icon_y, icon_z;
- float matrix[4][3];
- float scaling, plan_icon_w, plan_icon_h, cyl_icon_h;
- 4181H
- PROC_NAME
- 4182H
- PROC_DATA
- 4190H
- MSH_BOXMAP
- 4400H
- N_D_L_OLD
- 4500H
- N_CAM_OLD
- 4600H
- N_DIRECT_LIGHT; followed by color_f
- float x, y, z;
- 4610H
- DL_SPOTLIGHT
- float target_x, target_y, target_z;
- float hotspot_ang;
- float falloff_ang;
- 4620H
- DL_OFF
- 4625H
- DL_ATTENUATE
- 4627H
- DL_RAYSHAD
- 4630H
- DL_SHADOWED
- 4640H
- DL_LOCAL_SHADOW
- 4641H
- DL_LOCAL_SHADOW2
- 4650H
- DL_SEE_CONE
- 4651H
- DL_SPOT_RECTANGULAR
- 4652H
- DL_SPOT_OVERSHOOT
- 4653H
- DL_SPOT_PROJECTOR
- 4654H
- DL_EXCLUDE
- 4655H
- DL_RANGE
- 4656H
- DL_SPOT_ROLL
- float roll_ang;
- 4657H
- DL_SPOT_ASPECT
- 4658H
- DL_RAY_BIAS
- float bias;
- 4659H
- DL_INNER_RANGE
- float range;
- 465aH
- DL_OUTER_RANGE
- float range;
- 465bH
- DL_MULTIPLIER
- float multiple;
- 4680H
- N_AMBIENT_LIGHT
- 4700H
- N_CAMERA
- float camera_x, camera_y, camera_z;
- float target_x, target_y, target_z;
- float bank_angle;
- float focus;
- 4710H
- CAM_SEE_CONE
- 4720H
- CAM_RANGES
- float near_range, far_range;
- 4d4dH
- M3DMAGIC; 3DS Magic Number (.3DS file)
- 4f00H
- HIERARCHY
- 4f10H
- PARENT_OBJECT
- 4f20H
- PIVOT_OBJECT
- 4f30H
- PIVOT_LIMITS
- 4f40H
- PIVOT_ORDER
- 4f50H
- XLATE_RANGE
-
-
-
-5xxxH Group
-
- 5000H
- POLY_2D
- 5010H
- SHAPE_OK
- 5011H
- SHAPE_NOT_OK
- 5020H
- SHAPE_HOOK
-
-
-
-6xxxH Group
-
- 6000H
- PATH_3D
- 6005H
- PATH_MATRIX
- 6010H
- SHAPE_2D
- 6020H
- M_SCALE
- 6030H
- M_TWIST
- 6040H
- M_TEETER
- 6050H
- M_FIT
- 6060H
- M_BEVEL
- 6070H
- XZ_CURVE
- 6080H
- YZ_CURVE
- 6090H
- INTERPCT
- 60a0H
- DEFORM_LIMIT
- 6100H
- USE_CONTOUR
- 6110H
- USE_TWEEN
- 6120H
- USE_SCALE
- 6130H
- USE_TWIST
- 6140H
- USE_TEETER
- 6150H
- USE_FIT
- 6160H
- USE_BEVEL
-
-
-
-7xxxH Group
-
- 7000H
- VIEWPORT_LAYOUT_OLD
- 7001H
- VIEWPORT_LAYOUT; followed by viewport_size, viewport_data
- short form, top, ready, wstate, swapws, swapport, swapcur;
- 7010H
- VIEWPORT_DATA_OLD
- 7011H
- VIEWPORT_DATA
- short flags, axis_lockout;
- short win_x, win_y, win_w, winh_, win_view;
- float zoom;
- float worldcenter_x, worldcenter_y, worldcenter_z;
- float horiz_ang, vert_ang;
- cstr camera_name;
- 7012H
- VIEWPORT_DATA_3
- short flags, axis_lockout;
- short win_x, win_y, win_w, winh_, win_view;
- float zoom;
- float worldcenter_x, worldcenter_y, worldcenter_z;
- float horiz_ang, vert_ang;
- cstr camera_name;
- 7020H
- VIEWPORT_SIZE
- short x, y, w, h;
- 7030H
- NETWORK_VIEW
-
-
-
-8xxxH Group
-
- 8000H
- XDATA_SECTION
- 8001H
- XDATA_ENTRY
- 8002H
- XDATA_APPNAME
- 8003H
- XDATA_STRING
- 8004H
- XDATA_FLOAT
- 8005H
- XDATA_DOUBLE
- 8006H
- XDATA_SHORT
- 8007H
- XDATA_LONG
- 8008H
- XDATA_VOID
- 8009H
- XDATA_GROUP
- 800aH
- XDATA_RFU6
- 800bH
- XDATA_RFU5
- 800cH
- XDATA_RFU4
- 800dH
- XDATA_RFU3
- 800eH
- XDATA_RFU2
- 800fH
- XDATA_RFU1
- 80f0H
- PARENT_NAME
-
-
-
-AxxxH Group
-
- a000H
- MAT_NAME
- cstr material_name;
- a010H
- MAT_AMBIENT; followed by color chunk
- a020H
- MAT_DIFFUSE; followed by color chunk
- a030H
- MAT_SPECULAR; followed by color chunk
- a040H
- MAT_SHININESS; followed by percentage chunk
- a041H
- MAT_SHIN2PCT; followed by percentage chunk
- a042H
- MAT_SHIN3PCT; followed by percentage chunk
- a050H
- MAT_TRANSPARENCY; followed by percentage chunk
- a052H
- MAT_XPFALL; followed by percentage chunk
- a053H
- MAT_REFBLUR; followed by percentage chunk
- a080H
- MAT_SELF_ILLUM
- a081H
- MAT_TWO_SIDE
- a082H
- MAT_DECAL
- a083H
- MAT_ADDITIVE
- a084H
- MAT_SELF_ILPCT; followed by percentage chunk
- a085H
- MAT_WIRE
- a086H
- MAT_SUPERSMP
- a087H
- MAT_WIRESIZE
- float wire_size;
- a088H
- MAT_FACEMAP
- a08aH
- MAT_XPFALLIN
- a08cH
- MAT_PHONGSOFT
- a08eH
- MAT_WIREABS
- a100H
- MAT_SHADING
- short shading_value;
- a200H
- MAT_TEXMAP; followed by percentage chunk, mat_mapname,
- mat_map_tiling, mat_map_texblur...
- a204H
- MAT_SPECMAP; followed by percentage_chunk, mat_mapname
- a210H
- MAT_OPACMAP; followed by percentage_chunk, mat_mapname
- a220H
- MAT_REFLMAP; followed by percentage_chunk, mat_mapname
- a230H
- MAT_BUMPMAP; followed by percentage_chunk, mat_mapname
- a240H
- MAT_USE_XPFALL
- a250H
- MAT_USE_REFBLUR
- a252H
- MAT_BUMP_PERCENT
- a300H
- MAT_MAPNAME
- cstr filename;
- a310H
- MAT_ACUBIC
- a320H
- MAT_SXP_TEXT_DATA
- a321H
- MAT_SXP_TEXT2_DATA
- a322H
- MAT_SXP_OPAC_DATA
- a324H
- MAT_SXP_BUMP_DATA
- a325H
- MAT_SXP_SPEC_DATA
- a326H
- MAT_SXP_SHIN_DATA
- a328H
- MAT_SXP_SELFI_DATA
- a32aH
- MAT_SXP_TEXT_MASKDATA
- a32cH
- MAT_SXP_TEXT2_MASKDATA
- a32eH
- MAT_SXP_OPAC_MASKDATA
- a330H
- MAT_SXP_BUMP_MASKDATA
- a332H
- MAT_SXP_SPEC_MASKDATA
- a334H
- MAT_SXP_SHIN_MASKDATA
- a336H
- MAT_SXP_SELFI_MASKDATA
- a338H
- MAT_SXP_REFL_MASKDATA
- a33aH
- MAT_TEX2MAP
- a33cH
- MAT_SHINMAP
- a33dH
- MAT_SELFIMAP
- a33eH
- MAT_TEXMASK
- a340H
- MAT_TEX2MASK
- a342H
- MAT_OPACMASK
- a344H
- MAT_BUMPMASK
- a346H
- MAT_SHINMASK
- a348H
- MAT_SPECMASK
- a34aH
- MAT_SELFIMASK
- a34cH
- MAT_REFLMASK
- a350H
- MAT_MAP_TILINGOLD
- a351H
- MAT_MAP_TILING
- short flags;
- a352H
- MAT_MAP_TEXBLUR_OLD
- a353H
- MAT_MAP_TEXBLUR
- float blurring;
- a354H
- MAT_MAP_USCALE
- a356H
- MAT_MAP_VSCALE
- a358H
- MAT_MAP_UOFFSET
- a35aH
- MAT_MAP_VOFFSET
- a35cH
- MAT_MAP_ANG
- a360H
- MAT_MAP_COL1
- a362H
- MAT_MAP_COL2
- a364H
- MAT_MAP_RCOL
- a366H
- MAT_MAP_GCOL
- a368H
- MAT_MAP_BCOL
- afffH
- MAT_ENTRY
-
-
-
-BxxxH Group
-
- b000H
- KFDATA; followed by kfhdr
- b001H
- AMBIENT_NODE_TAG
- b002H
- OBJECT_NODE_TAG; followed by node_hdr, pivot, pos_track_tag,
- rot_track_tag, scl_track_tag, morph_smooth...
- b003H
- CAMERA_NODE_TAG; followed by node_hdr, pos_track_tag, fov_track_tag,
- roll_track_tag...
- b004H
- TARGET_NODE_TAG; followed by node_hdr, pos_track_tag...
- b005H
- LIGHT_NODE_TAG; followed by node_hdr, pos_track_tag, col_track_tag...
- b006H
- L_TARGET_NODE_TAG; followed by node_id, node_hdr, pos_track_tag
- b007H
- SPOTLIGHT_NODE_TAG; followed by node_id, node_hdr, pos_track_tag,
- hot_track_tag, fall_track_tag, roll_track_tag, col_track_tag...
- b008H
- KFSEG
- short start, end;
- b009H
- KFCURTIME
- short curframe;
- b00aH
- KFHDR followed by viewport_layout, kfseg, kfcurtime, object_node_tag,
- light_node_tag, target_node_tag, camera_node_tag, l_target_node_tag,
- spotlight_node_tag, ambient_node_tag...
- short revision;
- cstr filename;
- short animlen;
- b010H
- NODE_HDR
- cstr objname;
- short flags1;
- short flags2;
- short heirarchy; ?
- b011H
- INSTANCE_NAME
- b012H
- PRESCALE
- b013H
- PIVOT
- float pivot_x, pivot_y, pivot_z;
- b014H
- BOUNDBOX
- b015H
- MORPH_SMOOTH
- float morph_smoothing_angle_rad;
- b020H
- POS_TRACK_TAG
- short flags;
- short unknown[4];
- short keys;
- short unknown;
- struct {
- short framenum;
- long unknown;
- float pos_x, pos_y, pos_z;
- } pos[keys];
- b021H
- ROT_TRACK_TAG
- short flags;
- short unknown[4];
- short keys;
- short unknown;
- struct {
- short framenum;
- long unknown;
- float rotation_rad;
- float axis_x, axis_y, axis_z;
- } rot[keys];
- b022H
- SCL_TRACK_TAG
- short flags;
- short unknown[4];
- short keys;
- short unknown;
- struct {
- short framenum;
- long unknown;
- float scale_x, scale_y, scale_z;
- } scale[keys];
- b023H
- FOV_TRACK_TAG
- short flags;
- short unknown[4];
- short keys;
- short unknown;
- struct {
- short framenum;
- long unknown;
- float camera_field_of_view;
- } fov[keys]
- b024H
- ROLL_TRACK_TAG
- short flags;
- short unknown[4];
- short keys;
- short unknown;
- struct {
- short framenum;
- long unknown;
- float camera_roll;
- } roll[keys];
- b025H
- COL_TRACK_TAG
- short flags;
- short unknown[4];
- short keys;
- short unknown;
- struct {
- short framenum;
- long unknown;
- float red, rgn, blu;
- } color[keys];
- b026H
- MORPH_TRACK_TAG
- short flags;
- short unknown[4];
- short keys;
- short unknown;
- struct {
- short framenum;
- long unknown;
- cstr obj_name;
- } morph[keys];
- b027H
- HOT_TRACK_TAG
- short flags;
- short unknown[4];
- short keys;
- short unknown;
- struct {
- short framenum;
- long unknown;
- float hotspot_ang;
- } hotspot[keys];
- b028H
- FALL_TRACK_TAG
- short flags;
- short unknown[4];
- short keys;
- short unknown;
- struct {
- short framenum;
- long unknown;
- float falloff_ang;
- } falloff[keys];
- b029H
- HIDE_TRACK_TAG
- b030H
- NODE_ID
- short id;
-
-
-
-CxxxH Group
-
- c010H
- C_MDRAWER
- c020H
- C_TDRAWER
- c030H
- C_SHPDRAWER
- c040H
- C_MODDRAWER
- c050H
- C_RIPDRAWER
- c060H
- C_TXDRAWER
- c062H
- C_PDRAWER
- c064H
- C_MTLDRAWER
- c066H
- C_FLIDRAWER
- c067H
- C_CUBDRAWER
- c070H
- C_MFILE
- c080H
- C_SHPFILE
- c090H
- C_MODFILE
- c0a0H
- C_RIPFILE
- c0b0H
- C_TXFILE
- c0b2H
- C_PFILE
- c0b4H
- C_MTLFILE
- c0b6H
- C_FLIFILE
- c0b8H
- C_PALFILE
- c0c0H
- C_TX_STRING
- c0d0H
- C_CONSTS
- c0e0H
- C_SNAPS
- c0f0H
- C_GRIDS
- c100H
- C_ASNAPS
- c110H
- C_GRID_RANGE
- c120H
- C_RENDTYPE
- c130H
- C_PROGMODE
- c140H
- C_PREVMODE
- c150H
- C_MODWMODE
- c160H
- C_MODMODEL
- c170H
- C_ALL_LINES
- c180H
- C_BACK_TYPE
- c190H
- C_MD_CS
- c1a0H
- C_MD_CE
- c1b0H
- C_MD_SML
- c1c0H
- C_MD_SMW
- c1c3H
- C_LOFT_WITH_TEXTURE
- c1c4H
- C_LOFT_L_REPEAT
- c1c5H
- C_LOFT_W_REPEAT
- c1c6H
- C_LOFT_UV_NORMALIZE
- c1c7H
- C_WELD_LOFT
- c1d0H
- C_MD_PDET
- c1e0H
- C_MD_SDET
- c1f0H
- C_RGB_RMODE
- c200H
- C_RGB_HIDE
- c202H
- C_RGB_MAPSW
- c204H
- C_RGB_TWOSIDE
- c208H
- C_RGB_SHADOW
- c210H
- C_RGB_AA
- c220H
- C_RGB_OVW
- c230H
- C_RGB_OVH
- c23dH
- CMAGIC
- c240H
- C_RGB_PICTYPE
- c250H
- C_RGB_OUTPUT
- c253H
- C_RGB_TODISK
- c254H
- C_RGB_COMPRESS
- c255H
- C_JPEG_COMPRESSION
- c256H
- C_RGB_DISPDEV
- c259H
- C_RGB_HARDDEV
- c25aH
- C_RGB_PATH
- c25bH
- C_BITMAP_DRAWER
- c260H
- C_RGB_FILE
- c270H
- C_RGB_OVASPECT
- c271H
- C_RGB_ANIMTYPE
- c272H
- C_RENDER_ALL
- c273H
- C_REND_FROM
- c274H
- C_REND_TO
- c275H
- C_REND_NTH
- c276H
- C_PAL_TYPE
- c277H
- C_RND_TURBO
- c278H
- C_RND_MIP
- c279H
- C_BGND_METHOD
- c27aH
- C_AUTO_REFLECT
- c27bH
- C_VP_FROM
- c27cH
- C_VP_TO
- c27dH
- C_VP_NTH
- c27eH
- C_REND_TSTEP
- c27fH
- C_VP_TSTEP
- c280H
- C_SRDIAM
- c290H
- C_SRDEG
- c2a0H
- C_SRSEG
- c2b0H
- C_SRDIR
- c2c0H
- C_HETOP
- c2d0H
- C_HEBOT
- c2e0H
- C_HEHT
- c2f0H
- C_HETURNS
- c300H
- C_HEDEG
- c310H
- C_HESEG
- c320H
- C_HEDIR
- c330H
- C_QUIKSTUFF
- c340H
- C_SEE_LIGHTS
- c350H
- C_SEE_CAMERAS
- c360H
- C_SEE_3D
- c370H
- C_MESHSEL
- c380H
- C_MESHUNSEL
- c390H
- C_POLYSEL
- c3a0H
- C_POLYUNSEL
- c3a2H
- C_SHPLOCAL
- c3a4H
- C_MSHLOCAL
- c3b0H
- C_NUM_FORMAT
- c3c0H
- C_ARCH_DENOM
- c3d0H
- C_IN_DEVICE
- c3e0H
- C_MSCALE
- c3f0H
- C_COMM_PORT
- c400H
- C_TAB_BASES
- c410H
- C_TAB_DIVS
- c420H
- C_MASTER_SCALES
- c430H
- C_SHOW_1STVERT
- c440H
- C_SHAPER_OK
- c450H
- C_LOFTER_OK
- c460H
- C_EDITOR_OK
- c470H
- C_KEYFRAMER_OK
- c480H
- C_PICKSIZE
- c490H
- C_MAPTYPE
- c4a0H
- C_MAP_DISPLAY
- c4b0H
- C_TILE_XY
- c4c0H
- C_MAP_XYZ
- c4d0H
- C_MAP_SCALE
- c4e0H
- C_MAP_MATRIX_OLD
- c4e1H
- C_MAP_MATRIX
- c4f0H
- C_MAP_WID_HT
- c500H
- C_OBNAME
- c510H
- C_CAMNAME
- c520H
- C_LTNAME
- c525H
- C_CUR_MNAME
- c526H
- C_CURMTL_FROM_MESH
- c527H
- C_GET_SHAPE_MAKE_FACES
- c530H
- C_DETAIL
- c540H
- C_VERTMARK
- c550H
- C_MSHAX
- c560H
- C_MSHCP
- c570H
- C_USERAX
- c580H
- C_SHOOK
- c590H
- C_RAX
- c5a0H
- C_STAPE
- c5b0H
- C_LTAPE
- c5c0H
- C_ETAPE
- c5c8H
- C_KTAPE
- c5d0H
- C_SPHSEGS
- c5e0H
- C_GEOSMOOTH
- c5f0H
- C_HEMISEGS
- c600H
- C_PRISMSEGS
- c610H
- C_PRISMSIDES
- c620H
- C_TUBESEGS
- c630H
- C_TUBESIDES
- c640H
- C_TORSEGS
- c650H
- C_TORSIDES
- c660H
- C_CONESIDES
- c661H
- C_CONESEGS
- c670H
- C_NGPARMS
- c680H
- C_PTHLEVEL
- c690H
- C_MSCSYM
- c6a0H
- C_MFTSYM
- c6b0H
- C_MTTSYM
- c6c0H
- C_SMOOTHING
- c6d0H
- C_MODICOUNT
- c6e0H
- C_FONTSEL
- c6f0H
- C_TESS_TYPE
- c6f1H
- C_TESS_TENSION
- c700H
- C_SEG_START
- c705H
- C_SEG_END
- c710H
- C_CURTIME
- c715H
- C_ANIMLENGTH
- c720H
- C_PV_FROM
- c725H
- C_PV_TO
- c730H
- C_PV_DOFNUM
- c735H
- C_PV_RNG
- c740H
- C_PV_NTH
- c745H
- C_PV_TYPE
- c750H
- C_PV_METHOD
- c755H
- C_PV_FPS
- c765H
- C_VTR_FRAMES
- c770H
- C_VTR_HDTL
- c771H
- C_VTR_HD
- c772H
- C_VTR_TL
- c775H
- C_VTR_IN
- c780H
- C_VTR_PK
- c785H
- C_VTR_SH
- c790H
- C_WORK_MTLS
- c792H
- C_WORK_MTLS_2
- c793H
- C_WORK_MTLS_3
- c794H
- C_WORK_MTLS_4
- c7a1H
- C_BGTYPE
- c7b0H
- C_MEDTILE
- c7d0H
- C_LO_CONTRAST
- c7d1H
- C_HI_CONTRAST
- c7e0H
- C_FROZ_DISPLAY
- c7f0H
- C_BOOLWELD
- c7f1H
- C_BOOLTYPE
- c900H
- C_ANG_THRESH
- c901H
- C_SS_THRESH
- c903H
- C_TEXTURE_BLUR_DEFAULT
- ca00H
- C_MAPDRAWER
- ca01H
- C_MAPDRAWER1
- ca02H
- C_MAPDRAWER2
- ca03H
- C_MAPDRAWER3
- ca04H
- C_MAPDRAWER4
- ca05H
- C_MAPDRAWER5
- ca06H
- C_MAPDRAWER6
- ca07H
- C_MAPDRAWER7
- ca08H
- C_MAPDRAWER8
- ca09H
- C_MAPDRAWER9
- ca10H
- C_MAPDRAWER_ENTRY
- ca20H
- C_BACKUP_FILE
- ca21H
- C_DITHER_256
- ca22H
- C_SAVE_LAST
- ca23H
- C_USE_ALPHA
- ca24H
- C_TGA_DEPTH
- ca25H
- C_REND_FIELDS
- ca26H
- C_REFLIP
- ca27H
- C_SEL_ITEMTOG
- ca28H
- C_SEL_RESET
- ca29H
- C_STICKY_KEYINF
- ca2aH
- C_WELD_THRESHOLD
- ca2bH
- C_ZCLIP_POINT
- ca2cH
- C_ALPHA_SPLIT
- ca30H
- C_KF_SHOW_BACKFACE
- ca40H
- C_OPTIMIZE_LOFT
- ca42H
- C_TENS_DEFAULT
- ca44H
- C_CONT_DEFAULT
- ca46H
- C_BIAS_DEFAULT
- ca50H
- C_DXFNAME_SRC
- ca60H
- C_AUTO_WELD
- ca70H
- C_AUTO_UNIFY
- ca80H
- C_AUTO_SMOOTH
- ca90H
- C_DXF_SMOOTH_ANG
- caa0H
- C_SMOOTH_ANG
- cb00H
- C_WORK_MTLS_5
- cb01H
- C_WORK_MTLS_6
- cb02H
- C_WORK_MTLS_7
- cb03H
- C_WORK_MTLS_8
- cb04H
- C_WORKMTL
- cb10H
- C_SXP_TEXT_DATA
- cb11H
- C_SXP_OPAC_DATA
- cb12H
- C_SXP_BUMP_DATA
- cb13H
- C_SXP_SHIN_DATA
- cb20H
- C_SXP_TEXT2_DATA
- cb24H
- C_SXP_SPEC_DATA
- cb28H
- C_SXP_SELFI_DATA
- cb30H
- C_SXP_TEXT_MASKDATA
- cb32H
- C_SXP_TEXT2_MASKDATA
- cb34H
- C_SXP_OPAC_MASKDATA
- cb36H
- C_SXP_BUMP_MASKDATA
- cb38H
- C_SXP_SPEC_MASKDATA
- cb3aH
- C_SXP_SHIN_MASKDATA
- cb3eH
- C_SXP_REFL_MASKDATA
- cc00H
- C_NET_USE_VPOST
- cc10H
- C_NET_USE_GAMMA
- cc20H
- C_NET_FIELD_ORDER
- cd00H
- C_BLUR_FRAMES
- cd10H
- C_BLUR_SAMPLES
- cd20H
- C_BLUR_DUR
- cd30H
- C_HOT_METHOD
- cd40H
- C_HOT_CHECK
- cd50H
- C_PIXEL_SIZE
- cd60H
- C_DISP_GAMMA
- cd70H
- C_FBUF_GAMMA
- cd80H
- C_FILE_OUT_GAMMA
- cd82H
- C_FILE_IN_GAMMA
- cd84H
- C_GAMMA_CORRECT
- cd90H
- C_APPLY_DISP_GAMMA
- cda0H
- C_APPLY_FBUF_GAMMA
- cdb0H
- C_APPLY_FILE_GAMMA
- cdc0H
- C_FORCE_WIRE
- cdd0H
- C_RAY_SHADOWS
- cde0H
- C_MASTER_AMBIENT
- cdf0H
- C_SUPER_SAMPLE
- ce00H
- C_OBJECT_MBLUR
- ce10H
- C_MBLUR_DITHER
- ce20H
- C_DITHER_24
- ce30H
- C_SUPER_BLACK
- ce40H
- C_SAFE_FRAME
- ce50H
- C_VIEW_PRES_RATIO
- ce60H
- C_BGND_PRES_RATIO
- ce70H
- C_NTH_SERIAL_NUM
-
-
-
-DxxxH Group
-
- d000H
- VPDATA
- d100H
- P_QUEUE_ENTRY
- d110H
- P_QUEUE_IMAGE
- d114H
- P_QUEUE_USEIGAMMA
- d120H
- P_QUEUE_PROC
- d130H
- P_QUEUE_SOLID
- d140H
- P_QUEUE_GRADIENT
- d150H
- P_QUEUE_KF
- d152H
- P_QUEUE_MOTBLUR
- d153H
- P_QUEUE_MB_REPEAT
- d160H
- P_QUEUE_NONE
- d180H
- P_QUEUE_RESIZE
- d185H
- P_QUEUE_OFFSET
- d190H
- P_QUEUE_ALIGN
- d1a0H
- P_CUSTOM_SIZE
- d210H
- P_ALPH_NONE
- d220H
- P_ALPH_PSEUDO
- d221H
- P_ALPH_OP_PSEUDO
- d222H
- P_ALPH_BLUR
- d225H
- P_ALPH_PCOL
- d230H
- P_ALPH_C0
- d231H
- P_ALPH_OP_KEY
- d235H
- P_ALPH_KCOL
- d238H
- P_ALPH_OP_NOCONV
- d240H
- P_ALPH_IMAGE
- d250H
- P_ALPH_ALPHA
- d260H
- P_ALPH_QUES
- d265H
- P_ALPH_QUEIMG
- d270H
- P_ALPH_CUTOFF
- d280H
- P_ALPHANEG
- d300H
- P_TRAN_NONE
- d310H
- P_TRAN_IMAGE
- d312H
- P_TRAN_FRAMES
- d320H
- P_TRAN_FADEIN
- d330H
- P_TRAN_FADEOUT
- d340H
- P_TRANNEG
- d400H
- P_RANGES
- d500H
- P_PROC_DATA
-
-
-
-FxxxH Group
-
- f020H
- POS_TRACK_TAG_KEY
- f021H
- ROT_TRACK_TAG_KEY
- f022H
- SCL_TRACK_TAG_KEY
- f023H
- FOV_TRACK_TAG_KEY
- f024H
- ROLL_TRACK_TAG_KEY
- f025H
- COL_TRACK_TAG_KEY
- f026H
- MORPH_TRACK_TAG_KEY
- f027H
- HOT_TRACK_TAG_KEY
- f028H
- FALL_TRACK_TAG_KEY
- f110H
- POINT_ARRAY_ENTRY
- f111H
- POINT_FLAG_ARRAY_ENTRY
- f120H
- FACE_ARRAY_ENTRY
- f130H
- MSH_MAT_GROUP_ENTRY
- f140H
- TEX_VERTS_ENTRY
- f150H
- SMOOTH_GROUP_ENTRY
- ffffH
- DUMMY
-
-
-
-
-
-
-
-The Unofficial 3DStudio 3DS File Format / CR-MM / mediatel-admin@mediatel.lu
-
-
-
-
---------------------------------------------------------------------------------
-
-
-Comments? Send them to: webmaster@filespecs.com
-
-
-Copyright 2001 BreakPoint Software, Inc. All Rights Reserved.
-
+-------------------------------------------------------------------------------- + + +The Unofficial 3DStudio 3DS File Format v1.0 + +By Jeff Lewis (werewolf@worldgate.com) + +Notice + +This document is an attempt to document the AutoDesk 3DS file format. This was +made difficult in that I don't own or have access to a copy of the program, only +to sample files. Fortunately, someone used AutoDesk's own 3DS file development +kit to create a program which dumps the contents of a 3DS file into a human +readable form - albeit somewhat inaccurately. The codes listed and their names +come from that program and have been confirmed by testing. + +It should be known that the 3DS format is, as far as I know, a proprietary +format of AutoDesk and that the format details are not widely known or are +protected by AutoDesk. + +It is not my intent to infringe on AutoDesk's rights, but simply to make a +large collection of 3D image files accessable to people who do not use 3D +Studio - or cannot use it because AutoDesk has not chosen to provide a version +of 3D Studio for the computer they use (ie: The Macintosh in my case). + +Warning + +This document is not intended to be a definitive definition of the 3DS format +and is not authorised by AutoDesk. While every effort has been made to ensure +its accuracy, or at least warn you when there's doubt about its accuracy, no +guarantee of accuracy in any of it can be given. Use this document at your own +risk. + + +Document layout and format information + +In the following document, chunk names which are in bold mean the chunk format +has been determined with certainty. Chunk names which are not bold but have +a struct following means that this is a guess but is not substantiated. All +others are unknown. + +A short is always a two byte integer. +A long is always a four byte integer. +A float is always a four byte IEEE floating point number. +A cstr is a zero byte terminated ASCII string without a length. +A char is a single byte integer. + + +3DS File Format + +A 3DS file consists of blocks of data called chunks. Every chunk starts the +same way: + + short chunk_id; + long chunk_len; + +The chunk_id is a unique code which identifies the type of data in this chunk +and also may indicate the existence of subordinate chunks. The chunk_len +indicates the length of following data to be associated with this chunk. Note, +this may contain more data than just this chunk. If the length of data is +greater than that needed to fill in the information for the chunk, additional +subordinate chunks are attached to this chunk immediately following any data +needed for this chunk, and should be parsed out. These subordinate chunks may +themselves contain subordinate chunks. + +Unfortunately, there is no indication of the length of data which is owned by +the current chunk, only the total length of data attached to the chunk, which +means that the only way to parse out subordinate chunks is to know the exact +format of the owning chunk. On the other hand, if a chunk is unknown, the +parsing program canskip the entire chunk and subordinate chunks in one jump. + +In the following list, I try when possible to indicate that a chunk is likely to +have subordinate chunks and what kinds of subordinate chunks I've seen attached +to it. + +Another problem lies in cstr names. I've seen cases where the space used by a +name is riddled with fragments of old names. It seems that the space reserved +for a name is not cleared if a smaller name replaces it. If the name is removed, +you'll get a zero byte indicating an immediate end of string, followed by an +undetermined number of characters and nulls. This seems to happen only when the +cstr is at the end of a block of data and so you can assume that the length of +the chunk contains no other subchunks. See viewport_data for an example of this. + + +0xxxH Group + + 0000H + NULL_CHUNK + 0001H + Unknown chunk + float ??? + 0002H + M3D_VERSION + short version; + 0005H + M3D_KFVERSION + 0010H + COLOR_F + float red, grn, blu; + 0011H + COLOR_24 + char red, grn, blu; + 0012H + LIN_COLOR_24 + char red, grn, blu; + 0013H + LIN_COLOR_F + float red, grn, blu; + 0030H + INT_PERCENTAGE + short percentage; + 0031H + FLOAT_PERCENTAGE + float percentage; + 0100H + MASTER_SCALE + float scale; + 0995H + ChunkType + 0996H + ChunkUnique + 0997H + NotChunk + 0998H + Container + 0999H + IsChunk + 0c3cH + C_SXP_SELFI_MASKDATA + + + +1xxxH Group + + 1100H + BIT_MAP + cstr filename; + 1101H + USE_BIT_MAP + 1200H + SOLID_BGND; followed by color_f + 1201H + USE_SOLID_BGND + 1300H + V_GRADIENT; followed by three color_f: start, mid, end + float midpoint; + 1301H + USE_V_GRADIENT + 1400H + LO_SHADOW_BIAS + float bias; + 1410H + HI_SHADOW_BIAS + 1420H + SHADOW_MAP_SIZE + short size; + 1430H + SHADOW_SAMPLES + 1440H + SHADOW_RANGE + 1450H + SHADOW_FILTER + float filter; + 1460H + RAY_BIAS + float bias; + 1500H + O_CONSTS + float plane_x, plane_y, plane_z; + + + +2xxxH Group + + 2100H + AMBIENT_LIGHT + 2200H + FOG; followed by color_f, fog_bgnd + float near_plane, near_density; + float far_plane, far_density; + 2201H + USE_FOG + 2210H + FOG_BGND + 2300H + DISTANCE_CUE followed by dcue_bgnd + float near_plane, near_density; + float far_plane, far_density; + 2301H + USE_DISTANCE_CUE + 2302H + LAYER_FOG + float fog_z_from, fog_z_to; + float fog_density; + short fog_type; + 2303H + USE_LAYER_FOG + 2310H + DCUE_BGND + 2d2dH + SMAGIC + 2d3dH + LMAGIC + + + +3xxxH Group + + 3000H + DEFAULT_VIEW + 3010H + VIEW_TOP + float targe_x, target_y, target_z; + float view_width; + 3020H + VIEW_BOTTOM + float targe_x, target_y, target_z; + float view_width; + 3030H + VIEW_LEFT + float targe_x, target_y, target_z; + float view_width; + 3040H + VIEW_RIGHT + float targe_x, target_y, target_z; + float view_width; + 3050H + VIEW_FRONT + float targe_x, target_y, target_z; + float view_width; + 3060H + VIEW_BACK + float targe_x, target_y, target_z; + float view_width; + 3070H + VIEW_USER + float targe_x, target_y, target_z; + float view_width; + 3080H + VIEW_CAMERA + cstr camera_name; + 3090H + VIEW_WINDOW + 3d3dH + MDATA; Mesh Data Magic Number (.3DS files sub of 4d4d) + 3d3eH + MESH_VERSION + 3daaH + MLIBMAGIC; Material Library Magic Number (.MLI files) + 3dc2H + PRJMAGIC; 3dS Project Magic Number (.PRJ files) + 3dffH + MATMAGIC; Material File Magic Number (.MAT files) + + + +4xxxH Group + + 4000H + NAMED_OBJECT + cstr name; + 4010H + OBJ_HIDDEN + 4011H + OBJ_VIS_LOFTER + 4012H + OBJ_DOESNT_CAST + 4013H + OBJ_MATTE + 4014H + OBJ_FAST + 4015H + OBJ_PROCEDURAL + 4016H + OBJ_FROZEN + 4017H + OBJ_DONT_RCVSHADOW + 4100H + N_TRI_OBJECT + named triangle object + followed by point_array, point_flag_array, mesh_matrix, + face_array + 4110H + POINT_ARRAY + short npoints; + struct { + float x, y, z; + } points[npoints]; + 4111H + POINT_FLAG_ARRAY + short nflags; + short flags[nflags]; + 4120H + FACE_ARRAY may be followed by smooth_group + short nfaces; + struct { + short vertex1, vertex2, vertex3; + short flags; + } facearray[nfaces]; + 4130H + MSH_MAT_GROUP mesh_material_group + cstr material_name; + short nfaces; + short facenum[nfaces]; + 4131H + OLD_MAT_GROUP + 4140H + TEX_VERTS + short nverts; + struct { + float x, y; + } vertices[nverts]; + 4150H + SMOOTH_GROUP + short grouplist[n]; determined by length, seems to be 4 per face + 4160H + MESH_MATRIX + float matrix[4][3]; + 4165H + MESH_COLOR + short color_index; + 4170H + MESH_TEXTURE_INFO + short map_type; + float x_tiling, y_tiling; + float icon_x, icon_y, icon_z; + float matrix[4][3]; + float scaling, plan_icon_w, plan_icon_h, cyl_icon_h; + 4181H + PROC_NAME + 4182H + PROC_DATA + 4190H + MSH_BOXMAP + 4400H + N_D_L_OLD + 4500H + N_CAM_OLD + 4600H + N_DIRECT_LIGHT; followed by color_f + float x, y, z; + 4610H + DL_SPOTLIGHT + float target_x, target_y, target_z; + float hotspot_ang; + float falloff_ang; + 4620H + DL_OFF + 4625H + DL_ATTENUATE + 4627H + DL_RAYSHAD + 4630H + DL_SHADOWED + 4640H + DL_LOCAL_SHADOW + 4641H + DL_LOCAL_SHADOW2 + 4650H + DL_SEE_CONE + 4651H + DL_SPOT_RECTANGULAR + 4652H + DL_SPOT_OVERSHOOT + 4653H + DL_SPOT_PROJECTOR + 4654H + DL_EXCLUDE + 4655H + DL_RANGE + 4656H + DL_SPOT_ROLL + float roll_ang; + 4657H + DL_SPOT_ASPECT + 4658H + DL_RAY_BIAS + float bias; + 4659H + DL_INNER_RANGE + float range; + 465aH + DL_OUTER_RANGE + float range; + 465bH + DL_MULTIPLIER + float multiple; + 4680H + N_AMBIENT_LIGHT + 4700H + N_CAMERA + float camera_x, camera_y, camera_z; + float target_x, target_y, target_z; + float bank_angle; + float focus; + 4710H + CAM_SEE_CONE + 4720H + CAM_RANGES + float near_range, far_range; + 4d4dH + M3DMAGIC; 3DS Magic Number (.3DS file) + 4f00H + HIERARCHY + 4f10H + PARENT_OBJECT + 4f20H + PIVOT_OBJECT + 4f30H + PIVOT_LIMITS + 4f40H + PIVOT_ORDER + 4f50H + XLATE_RANGE + + + +5xxxH Group + + 5000H + POLY_2D + 5010H + SHAPE_OK + 5011H + SHAPE_NOT_OK + 5020H + SHAPE_HOOK + + + +6xxxH Group + + 6000H + PATH_3D + 6005H + PATH_MATRIX + 6010H + SHAPE_2D + 6020H + M_SCALE + 6030H + M_TWIST + 6040H + M_TEETER + 6050H + M_FIT + 6060H + M_BEVEL + 6070H + XZ_CURVE + 6080H + YZ_CURVE + 6090H + INTERPCT + 60a0H + DEFORM_LIMIT + 6100H + USE_CONTOUR + 6110H + USE_TWEEN + 6120H + USE_SCALE + 6130H + USE_TWIST + 6140H + USE_TEETER + 6150H + USE_FIT + 6160H + USE_BEVEL + + + +7xxxH Group + + 7000H + VIEWPORT_LAYOUT_OLD + 7001H + VIEWPORT_LAYOUT; followed by viewport_size, viewport_data + short form, top, ready, wstate, swapws, swapport, swapcur; + 7010H + VIEWPORT_DATA_OLD + 7011H + VIEWPORT_DATA + short flags, axis_lockout; + short win_x, win_y, win_w, winh_, win_view; + float zoom; + float worldcenter_x, worldcenter_y, worldcenter_z; + float horiz_ang, vert_ang; + cstr camera_name; + 7012H + VIEWPORT_DATA_3 + short flags, axis_lockout; + short win_x, win_y, win_w, winh_, win_view; + float zoom; + float worldcenter_x, worldcenter_y, worldcenter_z; + float horiz_ang, vert_ang; + cstr camera_name; + 7020H + VIEWPORT_SIZE + short x, y, w, h; + 7030H + NETWORK_VIEW + + + +8xxxH Group + + 8000H + XDATA_SECTION + 8001H + XDATA_ENTRY + 8002H + XDATA_APPNAME + 8003H + XDATA_STRING + 8004H + XDATA_FLOAT + 8005H + XDATA_DOUBLE + 8006H + XDATA_SHORT + 8007H + XDATA_LONG + 8008H + XDATA_VOID + 8009H + XDATA_GROUP + 800aH + XDATA_RFU6 + 800bH + XDATA_RFU5 + 800cH + XDATA_RFU4 + 800dH + XDATA_RFU3 + 800eH + XDATA_RFU2 + 800fH + XDATA_RFU1 + 80f0H + PARENT_NAME + + + +AxxxH Group + + a000H + MAT_NAME + cstr material_name; + a010H + MAT_AMBIENT; followed by color chunk + a020H + MAT_DIFFUSE; followed by color chunk + a030H + MAT_SPECULAR; followed by color chunk + a040H + MAT_SHININESS; followed by percentage chunk + a041H + MAT_SHIN2PCT; followed by percentage chunk + a042H + MAT_SHIN3PCT; followed by percentage chunk + a050H + MAT_TRANSPARENCY; followed by percentage chunk + a052H + MAT_XPFALL; followed by percentage chunk + a053H + MAT_REFBLUR; followed by percentage chunk + a080H + MAT_SELF_ILLUM + a081H + MAT_TWO_SIDE + a082H + MAT_DECAL + a083H + MAT_ADDITIVE + a084H + MAT_SELF_ILPCT; followed by percentage chunk + a085H + MAT_WIRE + a086H + MAT_SUPERSMP + a087H + MAT_WIRESIZE + float wire_size; + a088H + MAT_FACEMAP + a08aH + MAT_XPFALLIN + a08cH + MAT_PHONGSOFT + a08eH + MAT_WIREABS + a100H + MAT_SHADING + short shading_value; + a200H + MAT_TEXMAP; followed by percentage chunk, mat_mapname, + mat_map_tiling, mat_map_texblur... + a204H + MAT_SPECMAP; followed by percentage_chunk, mat_mapname + a210H + MAT_OPACMAP; followed by percentage_chunk, mat_mapname + a220H + MAT_REFLMAP; followed by percentage_chunk, mat_mapname + a230H + MAT_BUMPMAP; followed by percentage_chunk, mat_mapname + a240H + MAT_USE_XPFALL + a250H + MAT_USE_REFBLUR + a252H + MAT_BUMP_PERCENT + a300H + MAT_MAPNAME + cstr filename; + a310H + MAT_ACUBIC + a320H + MAT_SXP_TEXT_DATA + a321H + MAT_SXP_TEXT2_DATA + a322H + MAT_SXP_OPAC_DATA + a324H + MAT_SXP_BUMP_DATA + a325H + MAT_SXP_SPEC_DATA + a326H + MAT_SXP_SHIN_DATA + a328H + MAT_SXP_SELFI_DATA + a32aH + MAT_SXP_TEXT_MASKDATA + a32cH + MAT_SXP_TEXT2_MASKDATA + a32eH + MAT_SXP_OPAC_MASKDATA + a330H + MAT_SXP_BUMP_MASKDATA + a332H + MAT_SXP_SPEC_MASKDATA + a334H + MAT_SXP_SHIN_MASKDATA + a336H + MAT_SXP_SELFI_MASKDATA + a338H + MAT_SXP_REFL_MASKDATA + a33aH + MAT_TEX2MAP + a33cH + MAT_SHINMAP + a33dH + MAT_SELFIMAP + a33eH + MAT_TEXMASK + a340H + MAT_TEX2MASK + a342H + MAT_OPACMASK + a344H + MAT_BUMPMASK + a346H + MAT_SHINMASK + a348H + MAT_SPECMASK + a34aH + MAT_SELFIMASK + a34cH + MAT_REFLMASK + a350H + MAT_MAP_TILINGOLD + a351H + MAT_MAP_TILING + short flags; + a352H + MAT_MAP_TEXBLUR_OLD + a353H + MAT_MAP_TEXBLUR + float blurring; + a354H + MAT_MAP_USCALE + a356H + MAT_MAP_VSCALE + a358H + MAT_MAP_UOFFSET + a35aH + MAT_MAP_VOFFSET + a35cH + MAT_MAP_ANG + a360H + MAT_MAP_COL1 + a362H + MAT_MAP_COL2 + a364H + MAT_MAP_RCOL + a366H + MAT_MAP_GCOL + a368H + MAT_MAP_BCOL + afffH + MAT_ENTRY + + + +BxxxH Group + + b000H + KFDATA; followed by kfhdr + b001H + AMBIENT_NODE_TAG + b002H + OBJECT_NODE_TAG; followed by node_hdr, pivot, pos_track_tag, + rot_track_tag, scl_track_tag, morph_smooth... + b003H + CAMERA_NODE_TAG; followed by node_hdr, pos_track_tag, fov_track_tag, + roll_track_tag... + b004H + TARGET_NODE_TAG; followed by node_hdr, pos_track_tag... + b005H + LIGHT_NODE_TAG; followed by node_hdr, pos_track_tag, col_track_tag... + b006H + L_TARGET_NODE_TAG; followed by node_id, node_hdr, pos_track_tag + b007H + SPOTLIGHT_NODE_TAG; followed by node_id, node_hdr, pos_track_tag, + hot_track_tag, fall_track_tag, roll_track_tag, col_track_tag... + b008H + KFSEG + short start, end; + b009H + KFCURTIME + short curframe; + b00aH + KFHDR followed by viewport_layout, kfseg, kfcurtime, object_node_tag, + light_node_tag, target_node_tag, camera_node_tag, l_target_node_tag, + spotlight_node_tag, ambient_node_tag... + short revision; + cstr filename; + short animlen; + b010H + NODE_HDR + cstr objname; + short flags1; + short flags2; + short heirarchy; ? + b011H + INSTANCE_NAME + b012H + PRESCALE + b013H + PIVOT + float pivot_x, pivot_y, pivot_z; + b014H + BOUNDBOX + b015H + MORPH_SMOOTH + float morph_smoothing_angle_rad; + b020H + POS_TRACK_TAG + short flags; + short unknown[4]; + short keys; + short unknown; + struct { + short framenum; + long unknown; + float pos_x, pos_y, pos_z; + } pos[keys]; + b021H + ROT_TRACK_TAG + short flags; + short unknown[4]; + short keys; + short unknown; + struct { + short framenum; + long unknown; + float rotation_rad; + float axis_x, axis_y, axis_z; + } rot[keys]; + b022H + SCL_TRACK_TAG + short flags; + short unknown[4]; + short keys; + short unknown; + struct { + short framenum; + long unknown; + float scale_x, scale_y, scale_z; + } scale[keys]; + b023H + FOV_TRACK_TAG + short flags; + short unknown[4]; + short keys; + short unknown; + struct { + short framenum; + long unknown; + float camera_field_of_view; + } fov[keys] + b024H + ROLL_TRACK_TAG + short flags; + short unknown[4]; + short keys; + short unknown; + struct { + short framenum; + long unknown; + float camera_roll; + } roll[keys]; + b025H + COL_TRACK_TAG + short flags; + short unknown[4]; + short keys; + short unknown; + struct { + short framenum; + long unknown; + float red, rgn, blu; + } color[keys]; + b026H + MORPH_TRACK_TAG + short flags; + short unknown[4]; + short keys; + short unknown; + struct { + short framenum; + long unknown; + cstr obj_name; + } morph[keys]; + b027H + HOT_TRACK_TAG + short flags; + short unknown[4]; + short keys; + short unknown; + struct { + short framenum; + long unknown; + float hotspot_ang; + } hotspot[keys]; + b028H + FALL_TRACK_TAG + short flags; + short unknown[4]; + short keys; + short unknown; + struct { + short framenum; + long unknown; + float falloff_ang; + } falloff[keys]; + b029H + HIDE_TRACK_TAG + b030H + NODE_ID + short id; + + + +CxxxH Group + + c010H + C_MDRAWER + c020H + C_TDRAWER + c030H + C_SHPDRAWER + c040H + C_MODDRAWER + c050H + C_RIPDRAWER + c060H + C_TXDRAWER + c062H + C_PDRAWER + c064H + C_MTLDRAWER + c066H + C_FLIDRAWER + c067H + C_CUBDRAWER + c070H + C_MFILE + c080H + C_SHPFILE + c090H + C_MODFILE + c0a0H + C_RIPFILE + c0b0H + C_TXFILE + c0b2H + C_PFILE + c0b4H + C_MTLFILE + c0b6H + C_FLIFILE + c0b8H + C_PALFILE + c0c0H + C_TX_STRING + c0d0H + C_CONSTS + c0e0H + C_SNAPS + c0f0H + C_GRIDS + c100H + C_ASNAPS + c110H + C_GRID_RANGE + c120H + C_RENDTYPE + c130H + C_PROGMODE + c140H + C_PREVMODE + c150H + C_MODWMODE + c160H + C_MODMODEL + c170H + C_ALL_LINES + c180H + C_BACK_TYPE + c190H + C_MD_CS + c1a0H + C_MD_CE + c1b0H + C_MD_SML + c1c0H + C_MD_SMW + c1c3H + C_LOFT_WITH_TEXTURE + c1c4H + C_LOFT_L_REPEAT + c1c5H + C_LOFT_W_REPEAT + c1c6H + C_LOFT_UV_NORMALIZE + c1c7H + C_WELD_LOFT + c1d0H + C_MD_PDET + c1e0H + C_MD_SDET + c1f0H + C_RGB_RMODE + c200H + C_RGB_HIDE + c202H + C_RGB_MAPSW + c204H + C_RGB_TWOSIDE + c208H + C_RGB_SHADOW + c210H + C_RGB_AA + c220H + C_RGB_OVW + c230H + C_RGB_OVH + c23dH + CMAGIC + c240H + C_RGB_PICTYPE + c250H + C_RGB_OUTPUT + c253H + C_RGB_TODISK + c254H + C_RGB_COMPRESS + c255H + C_JPEG_COMPRESSION + c256H + C_RGB_DISPDEV + c259H + C_RGB_HARDDEV + c25aH + C_RGB_PATH + c25bH + C_BITMAP_DRAWER + c260H + C_RGB_FILE + c270H + C_RGB_OVASPECT + c271H + C_RGB_ANIMTYPE + c272H + C_RENDER_ALL + c273H + C_REND_FROM + c274H + C_REND_TO + c275H + C_REND_NTH + c276H + C_PAL_TYPE + c277H + C_RND_TURBO + c278H + C_RND_MIP + c279H + C_BGND_METHOD + c27aH + C_AUTO_REFLECT + c27bH + C_VP_FROM + c27cH + C_VP_TO + c27dH + C_VP_NTH + c27eH + C_REND_TSTEP + c27fH + C_VP_TSTEP + c280H + C_SRDIAM + c290H + C_SRDEG + c2a0H + C_SRSEG + c2b0H + C_SRDIR + c2c0H + C_HETOP + c2d0H + C_HEBOT + c2e0H + C_HEHT + c2f0H + C_HETURNS + c300H + C_HEDEG + c310H + C_HESEG + c320H + C_HEDIR + c330H + C_QUIKSTUFF + c340H + C_SEE_LIGHTS + c350H + C_SEE_CAMERAS + c360H + C_SEE_3D + c370H + C_MESHSEL + c380H + C_MESHUNSEL + c390H + C_POLYSEL + c3a0H + C_POLYUNSEL + c3a2H + C_SHPLOCAL + c3a4H + C_MSHLOCAL + c3b0H + C_NUM_FORMAT + c3c0H + C_ARCH_DENOM + c3d0H + C_IN_DEVICE + c3e0H + C_MSCALE + c3f0H + C_COMM_PORT + c400H + C_TAB_BASES + c410H + C_TAB_DIVS + c420H + C_MASTER_SCALES + c430H + C_SHOW_1STVERT + c440H + C_SHAPER_OK + c450H + C_LOFTER_OK + c460H + C_EDITOR_OK + c470H + C_KEYFRAMER_OK + c480H + C_PICKSIZE + c490H + C_MAPTYPE + c4a0H + C_MAP_DISPLAY + c4b0H + C_TILE_XY + c4c0H + C_MAP_XYZ + c4d0H + C_MAP_SCALE + c4e0H + C_MAP_MATRIX_OLD + c4e1H + C_MAP_MATRIX + c4f0H + C_MAP_WID_HT + c500H + C_OBNAME + c510H + C_CAMNAME + c520H + C_LTNAME + c525H + C_CUR_MNAME + c526H + C_CURMTL_FROM_MESH + c527H + C_GET_SHAPE_MAKE_FACES + c530H + C_DETAIL + c540H + C_VERTMARK + c550H + C_MSHAX + c560H + C_MSHCP + c570H + C_USERAX + c580H + C_SHOOK + c590H + C_RAX + c5a0H + C_STAPE + c5b0H + C_LTAPE + c5c0H + C_ETAPE + c5c8H + C_KTAPE + c5d0H + C_SPHSEGS + c5e0H + C_GEOSMOOTH + c5f0H + C_HEMISEGS + c600H + C_PRISMSEGS + c610H + C_PRISMSIDES + c620H + C_TUBESEGS + c630H + C_TUBESIDES + c640H + C_TORSEGS + c650H + C_TORSIDES + c660H + C_CONESIDES + c661H + C_CONESEGS + c670H + C_NGPARMS + c680H + C_PTHLEVEL + c690H + C_MSCSYM + c6a0H + C_MFTSYM + c6b0H + C_MTTSYM + c6c0H + C_SMOOTHING + c6d0H + C_MODICOUNT + c6e0H + C_FONTSEL + c6f0H + C_TESS_TYPE + c6f1H + C_TESS_TENSION + c700H + C_SEG_START + c705H + C_SEG_END + c710H + C_CURTIME + c715H + C_ANIMLENGTH + c720H + C_PV_FROM + c725H + C_PV_TO + c730H + C_PV_DOFNUM + c735H + C_PV_RNG + c740H + C_PV_NTH + c745H + C_PV_TYPE + c750H + C_PV_METHOD + c755H + C_PV_FPS + c765H + C_VTR_FRAMES + c770H + C_VTR_HDTL + c771H + C_VTR_HD + c772H + C_VTR_TL + c775H + C_VTR_IN + c780H + C_VTR_PK + c785H + C_VTR_SH + c790H + C_WORK_MTLS + c792H + C_WORK_MTLS_2 + c793H + C_WORK_MTLS_3 + c794H + C_WORK_MTLS_4 + c7a1H + C_BGTYPE + c7b0H + C_MEDTILE + c7d0H + C_LO_CONTRAST + c7d1H + C_HI_CONTRAST + c7e0H + C_FROZ_DISPLAY + c7f0H + C_BOOLWELD + c7f1H + C_BOOLTYPE + c900H + C_ANG_THRESH + c901H + C_SS_THRESH + c903H + C_TEXTURE_BLUR_DEFAULT + ca00H + C_MAPDRAWER + ca01H + C_MAPDRAWER1 + ca02H + C_MAPDRAWER2 + ca03H + C_MAPDRAWER3 + ca04H + C_MAPDRAWER4 + ca05H + C_MAPDRAWER5 + ca06H + C_MAPDRAWER6 + ca07H + C_MAPDRAWER7 + ca08H + C_MAPDRAWER8 + ca09H + C_MAPDRAWER9 + ca10H + C_MAPDRAWER_ENTRY + ca20H + C_BACKUP_FILE + ca21H + C_DITHER_256 + ca22H + C_SAVE_LAST + ca23H + C_USE_ALPHA + ca24H + C_TGA_DEPTH + ca25H + C_REND_FIELDS + ca26H + C_REFLIP + ca27H + C_SEL_ITEMTOG + ca28H + C_SEL_RESET + ca29H + C_STICKY_KEYINF + ca2aH + C_WELD_THRESHOLD + ca2bH + C_ZCLIP_POINT + ca2cH + C_ALPHA_SPLIT + ca30H + C_KF_SHOW_BACKFACE + ca40H + C_OPTIMIZE_LOFT + ca42H + C_TENS_DEFAULT + ca44H + C_CONT_DEFAULT + ca46H + C_BIAS_DEFAULT + ca50H + C_DXFNAME_SRC + ca60H + C_AUTO_WELD + ca70H + C_AUTO_UNIFY + ca80H + C_AUTO_SMOOTH + ca90H + C_DXF_SMOOTH_ANG + caa0H + C_SMOOTH_ANG + cb00H + C_WORK_MTLS_5 + cb01H + C_WORK_MTLS_6 + cb02H + C_WORK_MTLS_7 + cb03H + C_WORK_MTLS_8 + cb04H + C_WORKMTL + cb10H + C_SXP_TEXT_DATA + cb11H + C_SXP_OPAC_DATA + cb12H + C_SXP_BUMP_DATA + cb13H + C_SXP_SHIN_DATA + cb20H + C_SXP_TEXT2_DATA + cb24H + C_SXP_SPEC_DATA + cb28H + C_SXP_SELFI_DATA + cb30H + C_SXP_TEXT_MASKDATA + cb32H + C_SXP_TEXT2_MASKDATA + cb34H + C_SXP_OPAC_MASKDATA + cb36H + C_SXP_BUMP_MASKDATA + cb38H + C_SXP_SPEC_MASKDATA + cb3aH + C_SXP_SHIN_MASKDATA + cb3eH + C_SXP_REFL_MASKDATA + cc00H + C_NET_USE_VPOST + cc10H + C_NET_USE_GAMMA + cc20H + C_NET_FIELD_ORDER + cd00H + C_BLUR_FRAMES + cd10H + C_BLUR_SAMPLES + cd20H + C_BLUR_DUR + cd30H + C_HOT_METHOD + cd40H + C_HOT_CHECK + cd50H + C_PIXEL_SIZE + cd60H + C_DISP_GAMMA + cd70H + C_FBUF_GAMMA + cd80H + C_FILE_OUT_GAMMA + cd82H + C_FILE_IN_GAMMA + cd84H + C_GAMMA_CORRECT + cd90H + C_APPLY_DISP_GAMMA + cda0H + C_APPLY_FBUF_GAMMA + cdb0H + C_APPLY_FILE_GAMMA + cdc0H + C_FORCE_WIRE + cdd0H + C_RAY_SHADOWS + cde0H + C_MASTER_AMBIENT + cdf0H + C_SUPER_SAMPLE + ce00H + C_OBJECT_MBLUR + ce10H + C_MBLUR_DITHER + ce20H + C_DITHER_24 + ce30H + C_SUPER_BLACK + ce40H + C_SAFE_FRAME + ce50H + C_VIEW_PRES_RATIO + ce60H + C_BGND_PRES_RATIO + ce70H + C_NTH_SERIAL_NUM + + + +DxxxH Group + + d000H + VPDATA + d100H + P_QUEUE_ENTRY + d110H + P_QUEUE_IMAGE + d114H + P_QUEUE_USEIGAMMA + d120H + P_QUEUE_PROC + d130H + P_QUEUE_SOLID + d140H + P_QUEUE_GRADIENT + d150H + P_QUEUE_KF + d152H + P_QUEUE_MOTBLUR + d153H + P_QUEUE_MB_REPEAT + d160H + P_QUEUE_NONE + d180H + P_QUEUE_RESIZE + d185H + P_QUEUE_OFFSET + d190H + P_QUEUE_ALIGN + d1a0H + P_CUSTOM_SIZE + d210H + P_ALPH_NONE + d220H + P_ALPH_PSEUDO + d221H + P_ALPH_OP_PSEUDO + d222H + P_ALPH_BLUR + d225H + P_ALPH_PCOL + d230H + P_ALPH_C0 + d231H + P_ALPH_OP_KEY + d235H + P_ALPH_KCOL + d238H + P_ALPH_OP_NOCONV + d240H + P_ALPH_IMAGE + d250H + P_ALPH_ALPHA + d260H + P_ALPH_QUES + d265H + P_ALPH_QUEIMG + d270H + P_ALPH_CUTOFF + d280H + P_ALPHANEG + d300H + P_TRAN_NONE + d310H + P_TRAN_IMAGE + d312H + P_TRAN_FRAMES + d320H + P_TRAN_FADEIN + d330H + P_TRAN_FADEOUT + d340H + P_TRANNEG + d400H + P_RANGES + d500H + P_PROC_DATA + + + +FxxxH Group + + f020H + POS_TRACK_TAG_KEY + f021H + ROT_TRACK_TAG_KEY + f022H + SCL_TRACK_TAG_KEY + f023H + FOV_TRACK_TAG_KEY + f024H + ROLL_TRACK_TAG_KEY + f025H + COL_TRACK_TAG_KEY + f026H + MORPH_TRACK_TAG_KEY + f027H + HOT_TRACK_TAG_KEY + f028H + FALL_TRACK_TAG_KEY + f110H + POINT_ARRAY_ENTRY + f111H + POINT_FLAG_ARRAY_ENTRY + f120H + FACE_ARRAY_ENTRY + f130H + MSH_MAT_GROUP_ENTRY + f140H + TEX_VERTS_ENTRY + f150H + SMOOTH_GROUP_ENTRY + ffffH + DUMMY + + + + + + + +The Unofficial 3DStudio 3DS File Format / CR-MM / mediatel-admin@mediatel.lu + + + + +-------------------------------------------------------------------------------- + + +Comments? Send them to: webmaster@filespecs.com + + +Copyright 2001 BreakPoint Software, Inc. All Rights Reserved. |