.3ds
Encyclopedia
3DS is one of the file format
File format
A file format is a particular way that information is encoded for storage in a computer file.Since a disk drive, or indeed any computer storage, can store only bits, the computer must have some way of converting information to 0s and 1s and vice-versa. There are different kinds of formats for...

s used by the Autodesk 3ds Max 3D modeling, animation and rendering software.

It was the native file format of the old Autodesk 3D Studio DOS (releases 1 to 4), which was popular until its successor (3D Studio MAX 1.0) replaced it in April 1996. Having been around since 1990 (when the first version of 3D Studio DOS was launched), it has grown to become a de facto
De facto
De facto is a Latin expression that means "concerning fact." In law, it often means "in practice but not necessarily ordained by law" or "in practice or actuality, but not officially established." It is commonly used in contrast to de jure when referring to matters of law, governance, or...

industry standard for transferring models between 3D programs, or for storing models for 3D resource catalogs (along with OBJ, which is more frequently used as a model archiving file format).

Structure

3ds is a binary file format, therefore it is faster to load, and smaller than human-readable
Human-readable
A human-readable medium or human-readable format is a representation of data or information that can be naturally read by humans.In computing, human-readable data is often encoded as ASCII or Unicode text, rather than presented in a binary representation...

 text-based formats.

The format is based in chunks, where each section of data is embedded in a block that contains a chunk identifier and the length of the data (to provide the location of the next main block), as well as the data itself. This allows parsers to skip chunks they don't recognize, and allows for extensions to the format.

The chunks form a hierarchical structure, similar to an xml DOM tree. The first two bytes of the chunk are its ID. From that value the parser can identify the chunk and decide whether it will parse it or skip it. The next four bytes contain a little-endian
Endianness
In computing, the term endian or endianness refers to the ordering of individually addressable sub-components within the representation of a larger data item as stored in external memory . Each sub-component in the representation has a unique degree of significance, like the place value of digits...

 integer that is the length of the chunk, including its data, the length of its sub-blocks and the 6-byte header. The next bytes are the chunk's data, followed by the sub-chunks, in a structure that may extend to several levels deep.

Below is a list of the most common IDs for chunks, represented in a hierarchical fashion depicting their dependencies:


0x4D4D // Main Chunk
├─ 0x3D3D // 3D Editor Chunk
│ ├─ 0x4000 // Object Block
│ │ ├─ 0x4100 // Triangular Mesh
│ │ │ ├─ 0x4110 // Vertices List
│ │ │ ├─ 0x4120 // Faces Description
│ │ │ │ └─ 0x4130 // Faces Material
│ │ │ ├─ 0x4140 // Mapping Coordinates List
│ │ │ │ └─ 0x4150 // Smoothing Group List
│ │ │ └─ 0x4160 // Local Coordinates System
│ │ ├─ 0x4600 // Light
│ │ │ └─ 0x4610 // Spotlight
│ │ └─ 0x4700 // Camera
│ └─ 0xAFFF // Material Block
│ ├─ 0xA000 // Material Name
│ ├─ 0xA010 // Ambient Color
│ ├─ 0xA020 // Diffuse Color
│ ├─ 0xA030 // Specular Color
│ ├─ 0xA200 // Texture Map 1
│ ├─ 0xA230 // Bump Map
│ └─ 0xA220 // Reflection Map
│ │ /* Sub Chunks For Each Map */
│ ├─ 0xA300 // Mapping Filename
│ └─ 0xA351 // Mapping Parameters
└─ 0xB000 // Keyframer Chunk
├─ 0xB002 // Mesh Information Block
├─ 0xB007 // Spot Light Information Block
└─ 0xB008 // Frames (Start and End)
├─ 0xB010 // Object Name
├─ 0xB013 // Object Pivot Point
├─ 0xB020 // Position Track
├─ 0xB021 // Rotation Track
├─ 0xB022 // Scale Track
└─ 0xB030 // Hierarchy Position

Shortcomings

It has been pointed out that, despite its popularity, the format may not be the most suitable for 3D data exchange. Some of the disadvantages mentioned are:
  • All meshes must be made of triangles
    Triangle mesh
    A triangle mesh is a type of polygon mesh in computer graphics. It comprises a set of triangles that are connected by their common edges or corners....

    .
  • All texture filenames are limited to the 8.3 DOS format.
  • The number of vertices and polygons per mesh is limited to 65536.
  • Accurate vertex normals cannot be stored in the .3ds file. Instead "smoothing group
    Smoothing group
    In 3D computer graphics, a smoothing group is a group of polygons in a polygon mesh which should appear to form a smooth surface. Smoothing groups are useful for describing shapes where some polygons are connected smoothly to their neighbors, and some are not...

    s" are used so that the receiving program can recreate a (hopefully good) representation of the vertex normals. This is still a hold-over legacy for many animation programs today which started in the 1980s (3DS MAX, Lightwave
    LightWave
    LightWave 3D is a high end computer graphics program developed by NewTek. The latest release of LightWave runs on Windows and Mac OS X.- Overview:...

     and trueSpace
    TrueSpace
    TrueSpace is a freeware 3D computer graphics and animation software developed by Caligari Corporation, bought-out by Microsoft. As of May 2009, it has been officially discontinued, but with some 'unofficial support' up to February 2010, at least.- History :The company was founded in 1985 by Roman...

     still use smoothing groups, and Maya
    Maya (software)
    Autodesk Maya , commonly shortened to Maya, is 3D computer graphics software that runs on Microsoft Windows, Mac OS and Linux, originally developed by Alias Systems Corporation and currently owned and developed by Autodesk, Inc. It is used to create interactive 3D applications, including video...

     did up to v2.51).
  • Object, light and camera names are limited to 10 characters. Material names are limited to 16 characters.
  • Directional light sources are not supported.

External links

web pages

text-file references

(based on documentation by Jim Pitts)
(based on documentation by Christophe Chabanois, Jim Pitts and Niklas Beisert)
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK