.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と共に)3D Studio .3ds Geometry Export Converter。

3DS形式はインポートおよびエクスポート形式 (必要不可欠なジオメトリ、テクスチャおよびライトデータのみを保持している) の提供を目指している一方、関連するMAX形式 (今はPRJ形式で置き換えられている)は、Autodesk 3ds Max特有の追加情報を含み、シーンを完全に保存/読み込みすることができる。

 構造 
3dsはバイナリファイル形式である。

この形式はチャンクに基づいており、データのそれぞれのセクションは、チャンク識別子と(次の主ブロックの場所を提供するための)データの長さ、並びにデータ自身の含むブロックが埋め込まれている。これはパーサーに理解できないチャンクのスキップを許容し、また、形式の拡張を許す。

チャンクは、XMLのDOM木に似た階層的構造より成る。その値により、パーサーはチャンクを特定でき、そのチャンクのパースするかスキップするかどうかを決定する。次の4バイトは、データ、サブブロックおよび6バイトのヘッダより成るチャンクの長さを、リトルエンディアン整数で含む。次のバイトは、チャンクのデータであり、その次に、数レベル深く延長しているであろう構造のサブチャンクが続く。

以下は、チャンクの中の最も一般的なIDの、それらの依存を示し階層的様式で表現した一覧である:Spacesimulator.net - 3ds format file reader, loader, by Damiano VitulliThe Labs: 3DS Specifics

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データ交換のために最も適合するものではない。言及された欠点のいくつかは:

 全てのメッシュはなければならない。
 全てのテクスチャのファイル名は8.3 DOS形式に制限される。
 メッシュ当たりの頂点およびポリゴン数は65536個に制限される。
 正確なは、.3dsファイルに格納できない。その代わり、が使われるため、受け取ったプログラムは頂点法線の(うまくいけば良い)表現を再構築することが可能である。これは1980年代より始まる今日の多くのアニメーションプログラムのための、依然としたレガシーな遺物である (3ds Max、Lightwaveおよびは依然としてスムースグループを使用しており、Mayaはv2.51まで使用していた) 。
 オブジェクト、ライトおよびカメラ名は10文字に制限される。マテリアル名は16文字に制限される。
 平行光源は未対応となっている。

 脚注 
 注釈 
スムーシンググループ (これの使用する理論的根拠については、メッシュモデリングの要素のサーフィスについてを読め)は、それぞれの面毎に4バイト (long int)のビットフィールドとして保存されるため、面当たり32 (4×8) 個までのスムーシンググループを許容する。

 出典 

 外部リンク 
Webページ
 3D Studio Mesh (3DS, PRJ) Files - Autodesk Knowledge Network
 3DS parsing tutorial - Amir "Genjix" Taakiによる
 Spacesimulator.net - 3ds format file reader, loader - Damiano Vitulliによる
 The Labs: 3DS File Format - Jeff Lewisによる
 lib3ds: C library for loading/saving 3DS files - LGPLライセンス

テキスト形式のリファレンス

  (based on documentation by Jim Pitts)
  (based on documentation by Christophe Chabanois, Jim Pitts and Niklas Beisert)

Category:3DCGソフトウェア