「.3ds」の版間の差分
LILOBJTOFU123 (会話 | 投稿記録) m Category:CADファイル形式を除去 (HotCat使用) |
|||
25行目: | 25行目: | ||
以下は、チャンクの中の最も一般的なIDの、それらの依存を示し階層的様式で表現した一覧である:<ref>[http://www.spacesimulator.net/tut4_3dsloader.html Spacesimulator.net - 3ds format file reader, loader], by Damiano Vitulli</ref><ref>[http://www.the-labs.com/Blender/3dsspec.html The Labs: 3DS Specifics]</ref> |
以下は、チャンクの中の最も一般的なIDの、それらの依存を示し階層的様式で表現した一覧である:<ref>[http://www.spacesimulator.net/tut4_3dsloader.html Spacesimulator.net - 3ds format file reader, loader], by Damiano Vitulli</ref><ref>[http://www.the-labs.com/Blender/3dsspec.html The Labs: 3DS Specifics]</ref> |
||
< |
<syntaxhighlight lang="c"> |
||
0x4D4D // 主チャンク |
0x4D4D // 主チャンク |
||
├─ 0x0002 // M3Dバージョン |
├─ 0x0002 // M3Dバージョン |
||
61行目: | 61行目: | ||
├─ 0xB022 // 拡縮トラック |
├─ 0xB022 // 拡縮トラック |
||
└─ 0xB030 // 階層の位置 |
└─ 0xB030 // 階層の位置 |
||
</syntaxhighlight> |
|||
</source> |
|||
== 欠点 == |
== 欠点 == |
2020年7月5日 (日) 23:08時点における版
拡張子 | .3ds |
---|---|
MIMEタイプ | application/x-3ds, image/x-3ds |
マジック ナンバー | 4D 4D (hex), MM (ASCII) |
開発者 | オートデスク |
種別 | 3Dファイル形式 |
.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と共に)[1]。
3DS形式はインポートおよびエクスポート形式 (必要不可欠なジオメトリ、テクスチャおよびライトデータのみを保持している) の提供を目指している一方、関連するMAX形式 (今はPRJ形式で置き換えられている[要出典])は、Autodesk 3ds Max特有の追加情報を含み、シーンを完全に保存/読み込みすることができる。
構造
3dsはバイナリファイル形式である。
この形式はチャンクに基づいており、データのそれぞれのセクションは、チャンク識別子と(次の主ブロックの場所を提供するための)データの長さ、並びにデータ自身の含むブロックが埋め込まれている。これはパーサーに理解できないチャンクのスキップを許容し、また、形式の拡張を許す。
チャンクは、XMLのDOM木に似た階層的構造より成る。その値により、パーサーはチャンクを特定でき、そのチャンクのパースするかスキップするかどうかを決定する。次の4バイトは、データ、サブブロックおよび6バイトのヘッダより成るチャンクの長さを、リトルエンディアン整数で含む。次のバイトは、チャンクのデータであり、その次に、数レベル深く延長しているであろう構造のサブチャンクが続く。
以下は、チャンクの中の最も一般的なIDの、それらの依存を示し階層的様式で表現した一覧である:[2][3]
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データ交換のために最も適合するものではない。言及された欠点のいくつかは[1]:
- 全てのメッシュは三角形より作られなければならない。
- 全てのテクスチャのファイル名は8.3 DOS形式に制限される。
- メッシュ当たりの頂点およびポリゴン数は65536個に制限される。
- 正確な頂点法線は、.3dsファイルに格納できない。その代わり、スムーシンググループ[note 1]が使われるため、受け取ったプログラムは頂点法線の(うまくいけば良い)表現を再構築することが可能である。これは1980年代より始まる今日の多くのアニメーションプログラムのための、依然としたレガシーな遺物である (3ds Max、LightwaveおよびtrueSpaceは依然としてスムースグループを使用しており、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ライセンス
- テキスト形式のリファレンス
- Jim Pitts (18 December 1994). “3D Studio File Format”. 2001年7月21日時点のオリジナルよりアーカイブ。2017年4月14日閲覧。
- Martin van Velsen and Robin Fercoq (January 1997). “3D-Studio File Format”. 2017年4月14日閲覧。 (based on documentation by Jim Pitts)
- Jochen Wilhelmy (1997年6月8日). “3D Studio File Format Information”. 2009年4月4日時点のオリジナルよりアーカイブ。2017年4月14日閲覧。 (based on documentation by Christophe Chabanois, Jim Pitts and Niklas Beisert)