Autodesk 3D Studio

Also Known As: 3DS, ASC


Type Scene
Colors Unlimited
Compression None
Maximum Image Size None
Multiple Images Per File NA
Numerical Format Multiple
Originator Autodesk
Platform MS-DOS
Supporting Applications

3D Studio, Caligari trueSpace, other 3D programs

See Also None

Usage
Storage of 3D scene information for use by rendering applications.

Comments
Autodesk 3D Studio has come to be used as an interchange format. Many 3D modeling and rendering applications read and write 3DS, as well as their own formats. Why this is so is not clear but may be due to Autodesk 3D Studio's longevity and visibility in the market. The program implements a large number of functions, however, and this is reflected in the file.


Autodesk 3D Studio (3DS) is a relatively high-end program used for the modeling and rendering of 3D scenes. It runs under MS-DOS and uses a third-party memory manager to make optimum use of the resources available on the PC platform. Output compares favorably to many higher end platforms. It has thus become one of the platforms of choice for people doing detailed construction of 3D scenes.

Contents:
File Organization
File Details
For Further Information

Unfortunately, Autodesk has chosen to make information about this format available only through purchase of their developer's kit. Information for this article was accordingly obtained from public sources and is necessarily incomplete. We would appreciate any further information available on this format.

There are two formats used by 3D Studio:

Both are used as interchange formats. This article concentrates on the binary version of the file, because the ASCII version is usually used for the storage of object definitions and closely follows the tags defined in the binary version. At the end of this article, we provide an example of a simple ASC file.

File Organization

3DS files consist of tags, called chunks by Autodesk. Each chunk consists of an ID value and an offset to the start of the next chunk. Data associated with each chunk follows the ID and offset information.

typedef struct _CHUNK
{
   WORD  Chunk_ID;       /* Tag type */
   DWORD Chunk_length;   /* Relative offset in bytes to next chunk */
} CHUNK;

Chunks are classified as either Primary, Main, or Subordinate and are arranged in a hierarchy as follows:


Primary Chunk
   Main Chunk #1
      Subordinate Chunk #1
      Subordinate Chunk #2
       
.
.
.
Main Chunk #2 Subordinate Chunk #1 Subordinate Chunk #2
.
.
.
Main Chunk #3
.
.
.

The Main chunks are said to be "owned" by the Primary chunk, and the Subordinate chunks associated with the Main chunks are owned by the Main chunk. Note that many of the chunks defined below are associated with the behavior of 3D Studio at run-time. They are listed here because your rendering application or file conversion program may be able to make use of them as clues to the appearance and behavior of the objects found in the file.

There is only one Primary chunk per file, located at the start of the file. Following the Primary chunk tag is the first Main tag. The chunk_length field of Main chunk tags is generally an offset to the next Main chunk.

Following each Main chunk tag is data associated with the Main chunk and/or Subordinate chunk tags. Thus, the reader/parser must understand the format and length of the data associated with each Main chunk in order to extract information contained in Subordinate chunks owned by the Main chunk.

File Details

The first tag of the file, the Primary chunk, has an ID of 4D4Dh. Beneath the Primary chunk in the tag hierarchy are Main chunks.

Chunks

Table Autodesk 3D Studio-1 lists the possible chunks known at this time:

Table Autodesk 3D Studio-1: Autodesk 3D Studio Chunks

ID

Name

Data Type

Description

0000

NULL_CHUNK

NA

0001

unknown

(possibly FLOAT)

0002

M3D_VERSION

SHORT

Version

0005

M3D_KFVERSION

NA

0010

COLOR_F

FLOAT R,G,B

Floating-point color description

0011

COLOR_24

BYTE R,G,B

24-bit color description

0012

LIN_COLOR_24

BYTE R,G,B

24-bit color description

0013

LIN_COLOR_F

FLOAT R,G,B

Floating-point color description

0030

INT_PERCENTAGE

SHORT

Percentage value

0031

FLOAT_PERCENTAGE

FLOAT

Percentage value

0100

MASTER_SCALE

FLOAT

Scale factor

0995

ChunkType

NA

0996

ChunkUnique

NA

0997

NotChunk

NA

0998

Container

NA

0999

IsChunk

NA

0c3c

C_SXP_SELFI_MASKDATA

NA

1100

BIT_MAP

CHAR[]

0-terminated ASCII string

1101

USE_BIT_MAP

NA

1200

SOLID_BGND

FLOAT R,G,B

1201

USE_SOLID_BGND

NA

1300

V_GRADIENT

FLOAT

Midpoint of gradient

1301

USE_V_GRADIENT

NA

1400

LO_SHADOW_BIAS

FLOAT

Bias

1410

HI_SHADOW_BIAS

NA

1420

SHADOW_MAP_SIZE

SHORT

Size

1430

SHADOW_SAMPLES

NA

1430

SHADOW_RANGE

NA

1430

SHADOW_FILTER

FLOAT

Filter

1460

RAY_BIAS

FLOAT

Bias

1500

O_CONSTS

FLOAT x,y,z

Plane values

2100

AMBIENT_LIGHT

NA

2200

FOG

FLOAT[4]

near_plane, near_density, far_plane, far_density

2201

USE_FOG

NA

2210

FOG_BGND

NA

2300

DISTANCE_CUE

FLOAT[4]

near_plane, near_density, far_plane, far_density

2301

USE_DISTANCE_CUE

NA

2302

LAYER_FOG

FLOAT[3],

fog_z_from, fog_z_to, fog_density

SHORT

fog_type

2303

USE_LAYER_FOG

NA

2310

DCUE_BGND

NA

2d2d

SMAGIC

NA

2d3d

LMAGIC

NA

3000

DEFAULT_VIEW

NA

3010

VIEW_TOP

FLOAT[4]

target_x, target_y, target_z, view_width

3020

VIEW_BOTTOM

FLOAT[4]

target_x, target_y, target_z, view_width

3030

VIEW_LEFT

FLOAT[4]

target_x, target_y, target_z, view_width

3040

VIEW_RIGHT

FLOAT[4]

target_x, target_y, target_z, view_width

3050

VIEW_FRONT

FLOAT[4]

target_x, target_y, target_z, view_width

3060

VIEW_BACK

FLOAT[4]

target_x, target_y, target_z, view_width

3070

VIEW_USER

FLOAT[4]

target_x, target_y, target_z, view_width

3080

VIEW_CAMERA

CHAR[]

0-terminated ASCII string

3090

VIEW_WINDOW

NA

3d3d

MDATA

WORD

Mesh data magic number 4d4d

3d3e

MESH_VERSION

NA

3daa

MLIBMAGIC

WORD

Material library magic number

3dc2

PRJMAGIC

WORD

Project number magic number

3dff

MATMAGIC

WORD

Material file magic number

4000

NAMED_OBJECT

CHAR[]

0-terminated ASCII string

4010

OBJ_HIDDEN

NA

4011

OBJ_VIS_LOFTER

NA

4012

OBJ_DOESNT_CAST

NA

4013

OBJ_MATTE

NA

4014

OBJ_FAST

NA

4015

OBJ_PROCEDURAL

NA

4016

OBJ_FROZEN

NA

4017

OBJ_DONT_RCVSHADOW

NA

4100

N_TRI_OBJECT

NA

Named triangle object

4110

POINT_ARRAY

SHORT,

Number of points

POINT[]

Array of POINT structs

4111

POINT_FLAG_ARRAY

SHORT,

Number of flags

SHORT[]

Array of SHORT flags

4120

FACE_ARRAY

SHORT,

Number of faces

FACE[]

Array of FACE structs

4130

MSH_MAT_GROUP

CHAR[],

Material name

SHORT,

Number of faces

SHORT[]

Face numbers

4140

TEX_VERTS

SHORT,

Number of vertices

VERTEX[]

Array of VERTEX structs

4150

SMOOTH_GROUP

SHORT[]

Groups = faces x 4

4160

MESH_MATRIX

FLOAT[4][3]

4x3 FLOAT matrix

4170

MESH_TEXTURE_INFO

SHORT,

map_type

FLOAT[2],

x_tiling, y_tiling

FLOAT[3],

icon_x, icon_y, icon_z

FLOAT[4][3],

4x3 FLOAT matrix

FLOAT[4]

scaling, plan_icon_w, plan_icon_h, cyl_icon_h

4181

PROC_NAME

NA

4182

PROC_DATA

NA

4190

MSH_BOXMAP

NA

4400

N_D_L_OLD

NA

4500

N_CAM_OLD

NA

4600

N_DIRECT_LIGHT

FLOAT[3]

x,y,z of light

4610

DL_SPOTLIGHT

FLOAT[5]

target_x, target_y, target_z, hotspot_ang, falloff_ang

4620

DL_OFF

NA

4625

DL_ATTENUATE

NA

4627

DL_RAYSHAD

NA

4630

DL_SHADOWED

NA

4640

DL_LOCAL_SHADOW

NA

4641

DL_LOCAL_SHADOW2

NA

4650

DL_SEE_CONE

NA

4651

DL_SPOT_RECTANGULAR

NA

4652

DL_SPOT_OVERSHOOT

NA

4653

DL_SPOT_PROJECTOR

NA

4654

DL_EXCLUDE

NA

4655

DL_RANGE

NA

4656

DL_SPOT_ROLL

FLOAT

Roll angle

4657

DL_SPOT_ASPECT

NA

4658

DL_RAY_BIAS

FLOAT

Bias

4659

DL_INNER_RANGE

FLOAT

Range

465a

DL_OUTER_RANGE

FLOAT

Range

465b

DL_MULTIPLIER

FLOAT

Multiplier value

4680

N_AMBIENT_LIGHT

NA

4700

N_CAMERA

FLOAT[3],

camera_x, camera_y, camera_z

FLOAT[3],

target_x, target_y, target_z

FLOAT[2]

bank_angle, focus

4710

CAM_SEE_CONE

NA

4720

CAM_RANGES

FLOAT[2]

near_range, far_range

4d4d

M3DMAGIC

NA

3DS file magic number

4f00

HIERARCHY

NA

4f10

PARENT_OBJECT

NA

4f20

PIVOT_OBJECT

NA

4f30

PIVOT_LIMITS

NA

4f40

PIVOT_ORDER

NA

4f50

XLATE_RANGE

NA

5000

POLY_2D

NA

5010

SHAPE_OK

NA

5011

SHAPE_NOT_OK

NA

5020

SHAPE_HOOK

NA

6000

PATH_3D

NA

6005

PATH_MATRIX

NA

6010

SHAPE_2D

NA

6020

M_SCALE

NA

6030

M_TWIST

NA

6040

M_TEETER

NA

6050

M_FIT

NA

6060

M_BEVEL

NA

6070

XZ_CURVE

NA

6080

YZ_CURVE

NA

6090

INTERPCT

NA

60a0

DEFORM_LIMIT

NA

6100

USE_CONTOUR

NA

6110

USE_TWEEN

NA

6120

USE_SCALE

NA

6130

USE_TWIST

NA

6140

USE_TEETER

NA

6150

USE_FIT

NA

6160

USE_BEVEL

NA

7000

VIEWPORT_LAYOUT_OLD

NA

7001

VIEWPORT_LAYOUT

SHORT[7]

form, top, ready, wstate, swapws, swapport, swapcur

7010

VIEWPORT_DATA_OLD

NA

7011

VIEWPORT_DATA

SHORT[7],

flags, axis_lockout, win_x, win_y, win_w, win_h, win_view

FLOAT[6],

zoom, worldcenter_x, worldcenter_y, worldcenter_z, horiz_and, vert_ang

CHAR[]

0-terminated ASCII string--camera name

7011

VIEWPORT_DATA_3

SHORT[7],

flags, axis_lockout, win_x, win_y, win_w, win_h, win_view

FLOAT[6],

zoom, worldcenter_x, worldcenter_y, worldcenter_z, horiz_and, vert_ang

CHAR[]

0-terminated ASCII string--camera name

7020

VIEWPORT_SIZE

SHORT[4]

x,y,width,height

7030

NETWORK_VIEW

NA

8000

XDATA_SECTION

NA

8001

XDATA_ENTRY

NA

8002

XDATA_APPNAME

NA

8003

XDATA_STRING

NA

8004

XDATA_FLOAT

NA

8005

XDATA_DOUBLE

NA

8006

XDATA_SHORT

NA

8007

XDATA_LONG

NA

8008

XDATA_VOID

NA

8009

XDATA_GROUP

NA

800a

XDATA_RFU6

NA

800b

XDATA_RFU5

NA

800c

XDATA_RFU4

NA

800d

XDATA_RFU3

NA

800e

XDATA_RFU2

NA

800f

XDATA_RFU1

NA

80f0

PARENT_NAME

NA

a000

MAT_NAME

CHAR[]

0-terminated ASCII string--material name

a010

MAT_AMBIENT

NA

a020

MAT_DIFFUSE

NA

a030

MAT_SPECULAR

NA

a040

MAT_SHININESS

NA

a041

MAT_SHIN2PCT

NA

a042

MAT_SHIN3PCT

NA

a050

MAT_TRANSPARENCY

NA

a052

MAT_XPFALL

NA

a053

MAT_REFBLUR

NA

a080

MAT_SELF_ILLUM

NA

a081

MAT_TWO_SIDE

NA

a082

MAT_DECAL

NA

a083

MAT_ADDITIVE

NA

a084

MAT_SELF_ILPCT

NA

a085

MAT_WIRE

NA

a086

MAT_SUPERSMP

NA

a087

MAT_WIRESIZE

FLOAT

Wire size

a088

MAT_FACEMAP

NA

a08a

MAT_XPFALLIN

NA

a08c

MAT_PHONGSOFT

NA

a08e

MAT_WIREABS

NA

a100

MAT_SHADING

SHORT

Shading value

a200

MAT_TEXMAP

NA

a204

MAT_SPECMAP

NA

a210

MAT_OPACMAP

NA

a220

MAT_REFLMAP

NA

a230

MAT_BUMPMAP

NA

a240

MAT_USE_XPFALL

NA

a250

MAT_USE_REFBLUR

NA

a252

MAT_BUMP_PERCENT

NA

a300

MAT_MAPNAME

CHAR[]

0-terminated ASCII filename

a310

MAT_ACUBIC

NA

a320

MAT_SXP_TEXT_DATA

NA

a321

MAT_SXP_TEXT2_DATA

NA

a322

MAT_SXP_OPAC_DATA

NA

a324

MAT_SXP_BUMP_DATA

NA

a325

MAT_SXP_SPEC_DATA

NA

a326

MAT_SXP_SHIN_DATA

NA

a328

MAT_SXP_SELF1_DATA

NA

a32a

MAT_SXP_TEXT_DATA

NA

a32c

MAT_SXP_TEXT2_MASKDATA

NA

a32e

MAT_SXP_OPAC_MASKDATA

NA

a330

MAT_SXP_BUMP_MASKDATA

NA

a332

MAT_SXP_SPEC_MASKDATA

NA

a334

MAT_SXP_SHIN_MASKDATA

NA

a336

MAT_SXP_SELF1_MASKDATA

NA

a338

MAT_SXP_REFL_MASKDATA

NA

a33a

MAT_TEX2MAP

NA

a33c

MAT_SHINMAP

NA

a33d

MAT_SELFIMAP

NA

a33e

MAT_TEXMASK

NA

a340

MAT_TEX2MASK

NA

a342

MAT_OPACMASK

NA

a344

MAT_BUMPMASK

NA

a346

MAT_SHINMASK

NA

a348

MAT_SPECMASK

NA

a34a

MAT_SELFIMASK

NA

a34c

MAT_REFLMASK

NA

a350

MAT_MAP_TILINGOLD

NA

a351

MAT_MAP_TILING

SHORT

Flags

a352

MAT_MAP_TEXBLUR_OLD

NA

a353

MAT_MAP_TEXBLUR

FLOAT

Blurring value

a354

MAT_MAP_USCALE

NA

a356

MAT_MAP_VSCALE

NA

a358

MAT_MAP_UOFFSET

NA

a35a

MAT_MAP_VOFFSET

NA

a35c

MAT_MAP_ANG

NA

a360

MAT_MAP_COL1

NA

a362

MAT_MAP_COL2

NA

a364

MAT_MAP_RCOL

NA

a366

MAT_MAP_GCOL

NA

a368

MAT_MAP_BCOL

NA

afff

MAP_ENTRY

NA

b000

KFDATA

NA

b001

AMBIENT_NODE_TAG

NA

b002

OBJECT_NODE_TAG

NA

b003

CAMERA_NODE_TAG

NA

b004

TARGET_NODE_TAG

NA

b005

LIGHT_NODE_TAG

NA

b006

L_TARGET_NODE_TAG

NA

b007

SPOTLIGHT_NODE_TAG

NA

b008

KFSEG

SHORT[2]

start, end

b009

KFCURTIME

SHORT

curframe

b00a

KFHDR

SHORT,

Revision number

CHAR[],

0-terminated ASCII filename

SHORT

Animation length

b010

NODE_HDR

CHAR[],

0-terminated ASCII object name

SHORT[3]

flags1, flags2, hierarchy

b011

INSTANCE_NAME

NA

b012

PRESCALE

NA

b013

PIVOT

FLOAT[3]

pivot_x, pivot_y, pivot_z

b014

BOUNDBOX

NA

b015

MORPH_SMOOTH

FLOAT

Smoothing angle (radians)

b020

POS_TRACK_TAG

SHORT,

Flags

SHORT[4],

Unknown

SHORT,

Keys

SHORT

Unknown

POSITION[keys]

Array of POSITION structs

b021

ROT_TRACK_TAG

SHORT,

Flags

SHORT[4],

Unknown

SHORT,

Keys

SHORT,

Unknown

ROTATION[keys]

Array of ROTATION structs

b022

SCL_TRACK_TAG

SHORT,

Flags

SHORT[4],

Unknown

SHORT,

Keys

SHORT,

Unknown

SCALE[keys]

Array of SCALE structs

b023

FOV_TRACK_TAG

SHORT,

Flags

SHORT[4],

Unknown

SHORT,

Keys

SHORT,

Unknown

FOV[keys]

Array of FOV structs

b024

ROLL_TRACK_TAG

SHORT,

Flags

SHORT[4],

Unknown

SHORT,

Keys

SHORT,

Unknown

ROLL[keys]

Array of ROLL structs

b025

COL_TRACK_TAG

SHORT,

Flags

SHORT[4],

Unknown

SHORT,

Keys

SHORT,

Unknown

COLOR[keys]

Array of COLOR structs

b026

MORPH_TRACK_TAG

SHORT,

Flags

SHORT[4],

Unknown

SHORT,

Keys

SHORT,

Unknown

MORPH[keys]

Array of MORPH structs

b027

HOT_TRACK_TAG

SHORT,

Flags

SHORT[4],

Unknown

SHORT,

Keys

SHORT,

Unknown

HOTSPOT[keys]

Array of HOTSPOT structs

b028

FALL_TRACK_TAG

SHORT,

Flags

SHORT[4],

Unknown

SHORT,

Keys

SHORT,

Unknown

FALLOFF[keys]

Array of FALLOFF structs

b029

HIDE_TRACK_TAG

NA

b030

NODE_ID

SHORT

ID value

c010

C_MDRAWER

NA

c020

C_TDRAWER

NA

c030

C_SHPDRAWER

NA

c040

C_MODDRAWER

NA

c050

C_RIPDRAWER

NA

c060

C_TXDDRAWER

NA

c062

C_PDRAWER

NA

c064

C_MTLDRAWER

NA

c066

C_FLIDRAWER

NA

c067

C_CUBDRAWER

NA

c070

C_MFILE

NA

c080

C_SHPFILE

NA

c090

C_MODFILE

NA

c0a0

C_RIPFILE

NA

c0b0

C_TXFILE

NA

c0b2

C_PFILE

NA

c0b4

C_MTLFILE

NA

c0b6

C_FLIFILE

NA

c0b8

C_PALFILE

NA

c0c0

C_TX_STRING

NA

c0d0

C_CONSTS

NA

c0e0

C_SNAPS

NA

c0f0

C_GRIDS

NA

c100

C_ASNAPS

NA

c110

C_GRID_RANGE

NA

c120

C_RENDTYPE

NA

c130

C_PROGMODE

NA

c140

C_PREVMODE

NA

c150

C_MODWMODE

NA

c160

C_MODMODEL

NA

c170

C_ALL_LINES

NA

c180

C_BACK_TYPE

NA

c190

C_MD_CS

NA

c1a0

C_MD_CE

NA

c1b0

C_MD_SML

NA

c1c0

C_MD_SMW

NA

c1c3

C_LOFT_WITH_TEXTURE

NA

c1c4

C_LOFT_L_REPEAT

NA

c1c5

C_LOFT_W_REPEAT

NA

c1c6

C_LOFT_UV_NORMALIZE

NA

c1c7

C_WELD_LOFT

NA

c1d0

C_MD_PDET

NA

c1e0

C_MD_SDET

NA

c1f0

C_RGB_MODE

NA

c200

C_RGB_HIDE

NA

c202

C_RGB_MAPSW

NA

c204

C_RGB_TWOSIDE

NA

c208

C_RGB_SHADOW

NA

c210

C_RGB_AA

NA

c220

C_RGB_OVW

NA

c230

C_RGB_OVH

NA

c23d

CMAGIC

NA

c240

C_RGB_PICTYPE

NA

c250

C_RGB_OUTPUT

NA

c253

C_RGB_TODISK

NA

c254

C_RGB_COMPRESS

NA

c255

C_JPEG_COMPRESSION

NA

c256

C_RGB_DISPDEV

NA

c259

C_RGB_HARDDEV

NA

c25a

C_RGB_PATH

NA

c25b

C_BITMAP_DRAWER

NA

c260

C_RGB_FILE

NA

c270

C_RGB_OVASPECT

NA

c271

C_RGB_ANIMTYPE

NA

c272

C_RENDER_ALL

NA

c273

C_REND_FROM

NA

c274

C_REND_TO

NA

c275

C_REND_NTH

NA

c276

C_PAL_TYPE

NA

c277

C_RND_TURBO

NA

c278

C_RND_MIP

NA

c279

C_BGND_METHOD

NA

c27a

C_AUTO_REFLECT

NA

c27b

C_VP_FROM

NA

c27c

C_VP_TO

NA

c27d

C_VP_NTH

NA

c27e

C_REND_TSTEP

NA

c27f

C_VP_TSTEP

NA

c280

C_SRDIAM

NA

c290

C_SRDEG

NA

c2a0

C_SRSEG

NA

c2b0

C_SRDIR

NA

c2c0

C_HETOP

NA

c2d0

C_HEBOT

NA

c2e0

C_HEHT

NA

c2f0

C_HETURNS

NA

c300

C_HEDEG

NA

c310

C_HESEG

NA

c320

C_HEDIR

NA

c330

C_QUIKSTUFF

NA

c340

C_SEE_LIGHTS

NA

c350

C_SEE_CAMERAS

NA

c360

C_SEE_3D

NA

c370

C_MESHSEL

NA

c380

C_MESHUNSEL

NA

c390

C_POLYSEL

NA

c3a0

C_POLYUNSEL

NA

c3a2

C_SHPLOCAL

NA

c3a4

C_MSHLOCAL

NA

c3b0

C_NUM_FORMAT

NA

c3c0

C_ARCH_DENOM

NA

c3d0

C_IN_DEVICE

NA

c3e0

C_MSCALE

NA

c3f0

C_COMM_PORT

NA

c400

C_TAB_BASES

NA

c410

C_TAB_DIVS

NA

c420

C_MASTER_SCALES

NA

c430

C_SHOW_1STVERT

NA

c440

C_SHAPER_OK

NA

c450

C_LOFTER_OK

NA

c460

C_EDITOR_OK

NA

c470

C_KEYFRAMER_OK

NA

c480

C_PICKSIZE

NA

c490

C_MAPTYPE

NA

c4a0

C_MAP_DISPLAY

NA

c4b0

C_TILE_XY

NA

c4c0

C_MAP_XYZ

NA

c4d0

C_MAP_SCALE

NA

c4e0

C_MAP_MATRIX_OLD

NA

c4e1

C_MAP_MATRIX

NA

c4f0

C_MAP_WID_HT

NA

c500

C_OBNAME

NA

c510

C_CAMNAME

NA

c520

C_LTNAME

NA

c525

C_CUR_MNAME

NA

c526

C_CURMTL_FROM_MESH

NA

c527

C_GET_SHAPE_MAKE_FACES

NA

c530

C_DETAIL

NA

c540

C_VERTMARK

NA

c550

C_MSHAX

NA

c560

C_MSHCP

NA

c570

C_USERAX

NA

c580

C_SHOOK

NA

c590

C_RAX

NA

c5a0

C_STAPE

NA

c5b0

C_LTAPE

NA

c5c0

C_ETAPE

NA

c5c8

C_KTAPE

NA

c5c0

C_ETAPE

NA

c5d0

C_SPHSEGS

NA

c5e0

C_GEOSMOOTH

NA

c5f0

C_HEMISEGS

NA

c600

C_PRISMSEGS

NA

c610

C_PRISMSIDES

NA

c620

C_TUBESEGS

NA

c630

C_TUBESIDES

NA

c640

C_TORSEGS

NA

c650

C_TORSIDES

NA

c660

C_CONESIDES

NA

c661

C_CONESEGS

NA

c670

C_NGPARMS

NA

c680

C_PTHLEVEL

NA

c690

C_MSCSYM

NA

c6a0

C_MFTSYM

NA

c6b0

C_MTTSYM

NA

c6c0

C_SMOOTHING

NA

c6d0

C_MODICOUNT

NA

c6e0

C_FONTSEL

NA

c6f0

C_TESS_TYPE

NA

c6f1

C_TESS_TENSION

NA

c700

C_SEG_START

NA

c705

C_SEG_END

NA

c710

C_CURTIME

NA

c715

C_ANIMLENGTH

NA

c720

C_PV_FROM

NA

c725

C_PV_TO

NA

c730

C_PV_DOFNUM

NA

c735

C_PV_RNG

NA

c740

C_PV_NTH

NA

c745

C_PV_TYPE

NA

c750

C_PV_METHOD

NA

c755

C_PV_FPS

NA

c765

C_VTR_FRAMES

NA

c770

C_VTR_HDTL

NA

c771

C_VTR_HD

NA

c772

C_VTR_TL

NA

c775

C_VTR_IN

NA

c780

C_VTR_PK

NA

c785

C_VTR_SH

NA

c790

C_WORK_MTLS

NA

c792

C_WORK_MTLS_2

NA

c793

C_WORK_MTLS_3

NA

c794

C_WORK_MTLS_4

NA

c7a1

C_BGTYPE

NA

c7b0

C_MEDTILE

NA

c7d0

C_LO_CONTRAST

NA

c7d1

C_HI_CONTRAST

NA

c7e0

C_FROZ_DISPLAY

NA

c7f0

C_BOOLWELD

NA

c7f1

C_BOOLTYPE

NA

c900

C_AND_THRESH

NA

c901

C_SS_THRESH

NA

c903

C_TEXTURE_BLUR_DEFAULT

NA

ca00

C_MAPDRAWER

NA

ca01

C_MAPDRAWER1

NA

ca02

C_MAPDRAWER2

NA

ca03

C_MAPDRAWER3

NA

ca04

C_MAPDRAWER4

NA

ca05

C_MAPDRAWER5

NA

ca06

C_MAPDRAWER6

NA

ca07

C_MAPDRAWER7

NA

ca08

C_MAPDRAWER8

NA

ca09

C_MAPDRAWER9

NA

ca10

C_MAPDRAWER_ENTRY

NA

ca20

C_BACKUP_FILE

NA

ca21

C_DITHER_256

NA

ca22

C_SAVE_LAST

NA

ca23

C_USE_ALPHA

NA

ca24

C_TGA_DEPTH

NA

ca25

C_REND_FIELDS

NA

ca26

C_REFLIP

NA

ca27

C_SEL_ITEMTOG

NA

ca28

C_SEL_RESET

NA

ca29

C_STICKY_KEYINF

NA

ca2a

C_WELD_THRESHOLD

NA

ca2b

C_ZCLIP_POINT

NA

ca2c

C_ALPHA_SPLIT

NA

ca30

C_KF_SHOW_BACKFACE

NA

ca40

C_OPTIMIZE_LOFT

NA

ca42

C_TENS_DEFAULT

NA

ca44

C_CONT_DEFAULT

NA

ca46

C_BIAS_DEFAULT

NA

ca50

C_DXFNAME_SRC

NA

ca60

C_AUTO_WELD

NA

ca70

C_AUTO_UNIFY

NA

ca80

C_AUTO_SMOOTH

NA

ca90

C_DXF_SMOOTH_ANG

NA

caa0

C_SMOOTH_ANG

NA

cb00

C_WORK_MTLS_5

NA

cb01

C_WORK_MTLS_6

NA

cb02

C_WORK_MTLS_7

NA

cb03

C_WORK_MTLS_8

NA

cb04

C_WORKMTL

NA

cb10

C_SXP_TEXT_DATA

NA

cb11

C_SXP_OPAC_DATA

NA

cb12

C_SXP_BUMP_DATA

NA

cb13

C_SXP_SHIN_DATA

NA

cb20

C_SXP_TEXT2_DATA

NA

cb24

C_SXP_SPEC_DATA

NA

cb28

C_SXP_SELFI_DATA

NA

cb30

C_SXP_TEXT_MASKDATA

NA

cb32

C_SXP_TEXT2_MASKDATA

NA

cb34

C_SXP_OPAC_MASKDATA

NA

cb36

C_SXP_BUMP_MASKDATA

NA

cb38

C_SXP_SPEC_MASKDATA

NA

cb3a

C_SXP_SHIN_MASKDATA

NA

cb3e

C_SXP_REFL_MASKDATA

NA

cc00

C_NET_USE_VPOST

NA

cc10

C_NET_USE_GAMMA

NA

cc20

C_NET_FIELD_ORDER

NA

cd00

C_BLUR_FRAMES

NA

cd10

C_BLUR_SAMPLES

NA

cd20

C_BLUR_DUR

NA

cd30

C_HOT_METHOD

NA

cd40

C_HOT_CHECK

NA

cd50

C_PIXEL_SIZE

NA

cd60

C_DISP_GAMMA

NA

cd70

C_FBUF_GAMMA

NA

cd80

C_FILE_OUT_GAMMA

NA

cd82

C_FILE_IN_GAMMA

NA

cd84

C_GAMMA_CORRECT

NA

cd90

C_APPLY_DISP_GAMMA

NA

cda0

C_APPLY_FBUF_GAMMA

NA

cdb0

C_APPLY_FILE_GAMMA

NA

cdc0

C_FORCE_WIRE

NA

cdd0

C_RAY_SHADOWS

NA

cde0

C_MASTER_AMBIENT

NA

cdf0

C_SUPER_SAMPLE

NA

ce00

C_OBJECT_MBUR

NA

ce10

C_MBLUR_DITHER

NA

ce20

C_DITHER_24

NA

ce30

C_SUPER_BLACK

NA

ce40

C_SAFE_FRAME

NA

ce50

C_VIEW_PRES_RATIO

NA

ce60

C_BGND_PRES_RATIO

NA

ce70

C_NTH_SERIAL_NUM

NA

d000

VPDATA

NA

d100

P_QUEUE_ENTRY

NA

d110

P_QUEUE_IMAGE

NA

d114

P_QUEUE_USEIGAMMA

NA

d120

P_QUEUE_PROC

NA

d130

P_QUEUE_SOLID

NA

d140

P_QUEUE_GRADIENT

NA

d150

P_QUEUE_KF

NA

d152

P_QUEUE_MOTBLUR

NA

d153

P_QUEUE_MB_REPEAT

NA

d160

P_QUEUE_NONE

NA

d180

P_QUEUE_RESIZE

NA

d185

P_QUEUE_OFFSET

NA

d190

P_QUEUE_ALIGN

NA

d1a0

P_CUSTOM_SIZE

NA

d210

P_ALPH_NONE

NA

d220

P_ALPH_PSEUDO

NA

d221

P_ALPH_OP_PSEUDO

NA

d222

P_ALPH_BLUR

NA

d225

P_ALPH_PCOL

NA

d230

P_ALPH_CO

NA

d231

P_ALPH_OP_KEY

NA

d235

P_ALPH_KCOL

NA

d238

P_ALPH_OP_NOCONV

NA

d240

P_ALPH_IMAGE

NA

d250

P_ALPH_ALPHA

NA

d260

P_ALPH_QUES

NA

d265

P_ALPH_QUEIMG

NA

d270

P_ALPH_CUTOFF

NA

d280

P_ALPHANEG

NA

d300

P_TRAN_NONE

NA

d310

P_TRAN_IMAGE

NA

d312

P_TRAN_FRAMES

NA

d320

P_TRAN_FADEIN

NA

d330

P_TRAN_FADEOUT

NA

d340

P_TRANNEG

NA

d400

P_RANGES

NA

d500

P_PROC_DATA

NA

f020

POS_TRACK_TAG_KEY

NA

f021

ROT_TRACK_TAG_KEY

NA

f022

SCL_TRACK_TAG_KEY

NA

f023

FOV_TRACK_TAG_KEY

NA

f024

ROLL_TRACK_TAG_KEY

NA

f025

COL_TRACK_TAG_KEY

NA

f026

MORPH_TRACK_TAG_KEY

NA

f027

HOT_TRACK_TAG_KEY

NA

f028

FALL_TRACK_TAG_KEY

NA

f110

POINT_ARRAY_ENTRY

NA

f120

POINT_FLAG_ARRAY_ENTRY

NA

f130

FACE_ARRAY_ENTRY

NA

f140

TEX_VERTS_ENTRY

NA

f150

SMOOTH_GROUP_ENTRY

NA

ffff

DUMMY

NA

Chunk Order

Below is a list of data chunks, and beneath each one a list of chunks or subordinate chunks which usually follow them.

2200 (FOG)

COLOR_F fog_bgnd

2300 (DISTANCE_CUE)

dcue_bgnd (data type unknown)

1200 (SOLID_BGND)

COLOR_F

1300 (V_GRADIENT)

COLOR_F (start of color gradient)

COLOR_F (middle)

COLOR_F (end of gradient)

4600 (N_DIRECT_LIGHT)

COLOR_F

7001 (VIEWPORT_LAYOUT)

VIEWPORT_SIZE

VIEWPORT_DATA

a010 (MAT_AMBIENT)
a020 (MAT_DIFFUSE)
a030 (MAT_SPECULAR)

COLOR_F or COLOR_24

a040 (MAT_SHININESS)
a041 (MAT_SHIN2PCT)
a042 (MAT_SHIN3PCT)
a050 (MAT_TRNSPARENCY)
a052 (MAT_XPFALL)
a053 (MAT_REFBLUR)
a084 (MAT_SELF_ILPCT)

percentage chunk 0030 or 0031

a200 (MAT_TEXMAP)

percentage chunk

MAT_MAPNAME

MAT_MAP_TILING

MAT_MAP_TEXBLUR

possibly other material modifier chunks

a204 (MAT_SPECMAP)
a210 (MAT_OPACMAP)
a220 (MAT_REFLMAP)
a230 (MAT_BUMPMAP)

percentage chunk

MAT_MAPNAME

b000 (KFDATA)

KFHDR

b002 (OBJECT_NODE_TAG)

NODE_HDR

PIVOT

POS_TRACK_TAG

ROT_TRACK_TAG

SCL_TRACK_TAG

possibly others

b003 (CAMERA_NODE_TAG)

NODE_HDR

POS_TRACK_TAG

FOV_TRACK_TAG

ROLL_TRACK_TAG

possibly others

b004 (TARGET_NODE_TAG)

NODE_HDR

POS_TRACK_TAG

possibly others

b005 (LIGHT_NODE_TAG)

NODE_HDR

POS_TRACK_TAG

COL_TRACK_TAG

possibly others

b006 (L_TARGET_NODE_TAG)

NODE_ID

NODE_HDR

POS_TRACK_TAG

b007 (SPOTLIGHT_NODE_TAG)

NODE_ID

NODE_HDR

POS_TRACK_TAG

HOT_TRACK_TAG

FALL_TRACK_TAG

ROLL_TRACK_TAG

COL_TRACK_TAG

possibly others

b00a (KFHDR)

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

possibly others

Chunk Dependencies

Chunk 4110 (POINT_ARRAY) relies on the following POINT definition:

typedef struct _POINT
{
   FLOAT x, y, z;
} POINT;

Chunk 4120 (FACE_ARRAY) relies on the following FACE definition:

typedef struct _FACE
{
   SHORT vertex1, vertex2, vertex3, flags;
} FACE;

Chunk 4140 (TEX_VERTS) relies on the following VERTEX definition:

typedef struct _VERTEX
{
   FLOAT x,y;
} VERTEX;

Chunk b020 (POS_TRACK_TAG) relies on the following POSITION definition:

typedef struct _POSITION 
{
   SHORT frame_number;
   DWORD unknown;
   FLOAT position_x, position_y, position_z;
} POSITION;

Chunk b021 (ROT_TRACK_TAG) relies on the following ROTATION definition:

typedef struct _ROTATION
{
   SHORT frame_number;
   DWORD unknown;
   FLOAT rotation;         /* in radians */
   FLOAT axis_x, axis_y, axis_z;
} ROTATION;

Chunk b022 (SCL_TRACK_TAG) relies on the following definition of SCALE:

typedef _SCALE
{
   SHORT frame_number;
   DWORD unknown;
   FLOAT scale_x, scale_y, scale_z;
} SCALE;

Chunk b023 (FOV_TRACK_TAG) relies on the following definition of FOV:

typedef _FOV
{
   SHORT frame_number;
   DWORD unknown;
   FLOAT field_of_view;
} FOV

Chunk b024 (ROLL_TRACK_TAG) relies on the following ROLL definition:

typedef _ROLL
{
   SHORT frame_number;
   DWORD unknown;
   FLOAT camera_roll;
} ROLL;

Chunk b025 (COL_TRACK_TAG) relies on the following definition of COLOR:

typedef _COLOR
{
   SHORT frame_number;
   DWORD unknown;
   FLOAT r,g,b;
} COLOR;

Chunk b026 (MORPH_TRACK_TAG) relies on the following definition of MORPH:

typedef _MORPH
{
   SHORT frame_number;
   DWORD unknown;
   CHAR  object_name[]; /* 0-terminated ASCII string */
} MORPH;

Chunk b027 (HOT_TRACK_TAG) relies on the following definition of HOTSPOT:

typedef _HOTSPOT
{
   SHORT frame_number;
   DWORD unknown;
   FLOAT falloff_angle;
} HOTSPOT;

ASC File Example

This is a definition of a cube, centered at the origin, and saved in 3D Studio ASC format:

Ambient light color: Red=0.3 Green=0.3 Blue=0.3
Named object: "Cube"
Tri-mesh, Vertices: 8     Faces: 12
Vertex list:
Vertex 0:  X:-1.000000     Y:-1.000000     Z:0.000000
Vertex 1:  X:-1.000000     Y:-1.000000     Z:2.000000
Vertex 2:  X:1.000000     Y:-1.000000     Z:0.000000
Vertex 3:  X:1.000000     Y:-1.000000     Z:2.000000
Vertex 4:  X:-1.000000     Y:1.000000     Z:0.000000
Vertex 5:  X:1.000000     Y:1.000000     Z:0.000000
Vertex 6:  X:1.000000     Y:1.000000     Z:2.000000
Vertex 7:  X:-1.000000     Y:1.000000     Z:2.000000
Face list:
Face 0:    A:2 B:3 C:1 AB:1 BC:1 CA:1
Material:"r210g210b210a0"
Smoothing:  1
Face 1:    A:2 B:1 C:0 AB:1 BC:1 CA:1
Material:"r210g210b210a0"
Smoothing:  1
Face 2:    A:4 B:5 C:2 AB:1 BC:1 CA:1
Material:"r210g210b210a0"
Smoothing:  1
Face 3:    A:4 B:2 C:0 AB:1 BC:1 CA:1
Material:"r210g210b210a0"
Smoothing:  1
Face 4:    A:6 B:3 C:2 AB:1 BC:1 CA:1
Material:"r210g210b210a0"
Smoothing:  1
Face 5:    A:6 B:2 C:5 AB:1 BC:1 CA:1
Material:"r210g210b210a0"
Smoothing:  1
Face 6:    A:6 B:7 C:1 AB:1 BC:1 CA:1
Material:"r210g210b210a0"
Smoothing:  1
Face 7:    A:6 B:1 C:3 AB:1 BC:1 CA:1
Material:"r210g210b210a0"
Smoothing:  1
Face 8:    A:6 B:5 C:4 AB:1 BC:1 CA:1
Material:"r210g210b210a0"
Smoothing:  1
Face 9:    A:6 B:4 C:7 AB:1 BC:1 CA:1
Material:"r210g210b210a0"
Smoothing:  1
Face 10:    A:1 B:7 C:4 AB:1 BC:1 CA:1
Material:"r210g210b210a0"
Smoothing:  1
Face 11:    A:1 B:4 C:0 AB:1 BC:1 CA:1
Material:"r210g210b210a0"
Smoothing:  1

For Further Information

Autodesk sells a package that includes documentation on the 3DS file format. Please contact them for further details.

Autodesk Developer Marketing
2320 Marinship Way
Sausalito, CA 94965
Voice: 415-491-8719
WWW: http://www.autodesk.com

Information in this article was obtained from the following two documents:

Lewis, Jeff, The Unofficial 3D Studio 3DS File Format, v1.0, 1 December 1995.

Pitts, Jim, 3D Studio File Format (3dS), Document Revision 0.8, 18 December 1994.

These can be found at:

http://www.europa.com/~keithr/



Copyright © 1996, 1994 O'Reilly & Associates, Inc. All Rights Reserved.