.3ds

.3dsは、Autodesk 3ds Max (3Dモデリング、アニメーション、レンダリングソフトウェア) で使われるファイル形式の一つである。
これは古い3D Studio DOS (リリース 1から4) のネイティブファイル形式であった。3D Studio DOSは、1996年4月にその後継ソフトウェア (3D Studio MAX 1.0) に置き換えられるまで、大衆的であった。この形式は、1990年 (3D Studio DOSの最初のバージョンが立ち上げられた)から存在していることで、3Dプログラム間を転送したり、3Dリソースカタログのためにモデルを保管するための"デファクト"な業界標準へと成長してきた (モデル保管ファイル形式としてより頻繁に使われているOBJと共に)。
3DS形式はインポートおよびエクスポート形式 (必要不可欠なジオメトリ、テクスチャおよびライトデータのみを保持している) の提供を目指している一方、関連するMAX形式 (今はPRJ形式で置き換えられている)は、Autodesk 3ds Max特有の追加情報を含み、シーンを完全に保存/読み込みすることができる。
構造.
3dsはバイナリファイル形式である。
この形式はチャンクに基づいており、データのそれぞれのセクションは、チャンク識別子と(次の主ブロックの場所を提供するための)データの長さ、並びにデータ自身の含むブロックが埋め込まれている。これはパーサーに理解できないチャンクのスキップを許容し、また、形式の拡張を許す。
チャンクは、XMLのDOM木に似た階層的構造より成る。その値により、パーサーはチャンクを特定でき、そのチャンクのパースするかスキップするかどうかを決定する。次の4バイトは、データ、サブブロックおよび6バイトのヘッダより成るチャンクの長さを、リトルエンディアン整数で含む。次のバイトは、チャンクのデータであり、その次に、数レベル深く延長しているであろう構造のサブチャンクが続く。
以下は、チャンクの中の最も一般的なIDの、それらの依存を示し階層的様式で表現した一覧である:
0x4D4D // 主チャンク
├─ 0x0002 // M3Dバージョン
├─ 0x3D3D // 3Dエディターチャンク
│ ├─ 0x4000 // オブジェクトブロック
│ │ ├─ 0x4100 // 三角メッシュ
│ │ │ ├─ 0x4110 // 頂点一覧
│ │ │ ├─ 0x4120 // 面の記述
│ │ │ │ ├─ 0x4130 // 面マテリアル
│ │ │ │ └─ 0x4150 // スムーシンググループ一覧
│ │ │ ├─ 0x4140 // 頂点マッピング一覧
│ │ │ └─ 0x4160 // ローカル頂点システム
│ │ ├─ 0x4600 // ライト
│ │ │ └─ 0x4610 // スポットライト
│ │ └─ 0x4700 // カメラ
│ └─ 0xAFFF // マテリアルブロック
│ ├─ 0xA000 // マテリアル名
│ ├─ 0xA010 // 環境色
│ ├─ 0xA020 // ディフューズ色
│ ├─ 0xA030 // スペキュラ色
│ ├─ 0xA200 // テクスチャマップ 1
│ ├─ 0xA230 // バンプマップ
│ └─ 0xA220 // リフレクションマップ
│ │ /* それぞれのマップのサブチャンク */
│ ├─ 0xA300 // マッピングのファイル名
│ └─ 0xA351 // マッピングのパラメータ
└─ 0xB000 // Keyframerチャンク
 ├─ 0xB002 // メッシュ情報ブロック
 ├─ 0xB007 // スポットライト情報ブロック
 └─ 0xB008 // フレーム (開始および終了)
 ├─ 0xB010 // オブジェクト名
 ├─ 0xB013 // オブジェクトのピボットポイント
 ├─ 0xB020 // 位置トラック
 ├─ 0xB021 // 回転トラック
 ├─ 0xB022 // 拡縮トラック
 └─ 0xB030 // 階層の位置
欠点.
この形式は欠点を指摘されてきており、その大衆さにもかかわらず、3Dデータ交換のために最も適合するものではない。言及された欠点のいくつかは: