| ファイル名拡張子 |
.obj |
|---|---|
| インターネットメディアの種類 |
モデル/オブジェクト[1] |
| 開発者 | ウェーブフロントテクノロジー |
| フォーマットの種類 | 3Dモデル形式 |
OBJ (または .OBJ) は、 Wavefront TechnologiesがAdvanced Visualizerアニメーション パッケージ用に最初に開発したジオメトリ定義ファイル形式です。このファイル形式はオープンであり、他の 3D グラフィックス アプリケーション ベンダーによって採用されています。
OBJ ファイル形式は、3D ジオメトリのみを表す単純なデータ形式です。つまり、各頂点の位置、各テクスチャ座標頂点のUV 位置、頂点法線、頂点のリストとして定義される各ポリゴンを構成する面、およびテクスチャ頂点です。頂点はデフォルトで反時計回りの順序で格納されるため、面法線の明示的な宣言は不要です。OBJ 座標には単位はありませんが、OBJ ファイルには人間が判読できるコメント行にスケール情報を含めることができます。
ファイル形式
ハッシュ文字 (#) に続くものはすべてコメントです。
# これはコメントです
OBJ ファイルには、頂点データ、フリーフォーム カーブ/サーフェス属性、要素、フリーフォーム カーブ/サーフェス ボディ ステートメント、フリーフォーム サーフェス間の接続、グループ化、および表示/レンダリング属性情報が含まれます。最も一般的な要素は、ジオメトリ頂点、テクスチャ座標、頂点法線、およびポリゴン面です。
# 幾何学的頂点のリスト。(x, y, z, [w]) 座標を持ちます。w はオプションで、デフォルトは 1.0 です。 0.123 0.234 0.345 1.0 v ... ... # テクスチャ座標のリスト。(u、[v、w]) 座標で、0 から 1 の間で変化します。v、w はオプションで、デフォルトは 0 です。 0.500 1 [0] vt ... ... # (x,y,z) 形式の頂点法線のリスト。法線は単位ベクトルではない可能性があります。 0.707 0.000 0.707 vn ... ... # パラメータ空間の頂点は (u, [v, w]) 形式で指定します。自由形式のジオメトリステートメント (下記参照) 0.310000 3.210000 2.100000 副社長... ... # 多角形の面要素(下記参照) 1 2 3 ... 3/1 4/2 5/3 6/4/1 3/5/3 7/6/5 7//1 8//2 9//3 f ... ... # 線要素(下記参照) 1 5 8 1 2 4 9
幾何学的頂点
頂点は文字 で始まる行で指定されますv。その後に (x,y,z[,w]) 座標が続きます。W はオプションで、デフォルトは 1.0 です。座標位置を指定するには右手座標系を使用します。アプリケーションによっては、xy と z の後に赤、緑、青の値を置くことで頂点の色をサポートしています (w の指定は不要です)。色の値の範囲は 0 から 1 です。[2]
パラメータ空間の頂点
文字列 で始まる行に、自由形式のジオメトリステートメントを指定できますvp。曲線またはサーフェスのパラメータ空間内の点を定義します。曲線点の場合は のみ、サーフェス点および非有理トリミング曲線の制御点の場合は 、有理トリミング曲線の制御点の場合は
、および(重み)uが必要です。uvuvw
顔の要素
面は、頂点、テクスチャ、法線インデックスのリストを使用して定義されます。リストは、vertex_index/texture_index/normal_index の形式で定義されます。各インデックスは 1 から始まり、参照される要素が定義された順序に応じて増加します。四辺形などのポリゴンは、3 つ以上のインデックスを使用して定義できます。
OBJ ファイルは、 NURBSサーフェスなど、曲線とサーフェスを使用してオブジェクトを定義する自由形式のジオメトリもサポートします。
頂点インデックス
有効な頂点インデックスは、以前に定義された頂点リストの対応する頂点要素と一致します。インデックスが正の場合、その頂点リスト内のオフセットを参照し、1 から始まります。インデックスが負の場合、頂点リストの末尾を相対的に参照し、-1 は最後の要素を参照します。
各面には 3 つ以上の頂点を含めることができます。
f v1 v2 v3 ....
頂点テクスチャ座標インデックス
オプションとして、面を定義するときにテクスチャ座標インデックスを使用してテクスチャ座標を指定できます。面を定義するときに頂点インデックスにテクスチャ座標インデックスを追加するには、頂点インデックスの直後にスラッシュを付け、その後にテクスチャ座標インデックスを付ける必要があります。スラッシュの前後にスペースを入れることはできません。有効なテクスチャ座標インデックスは 1 から始まり、以前に定義されたテクスチャ座標リストの対応する要素と一致します。各面には 3 つ以上の要素を含めることができます。
v1/vt1 v2/vt2 v3/vt3 ...
頂点法線インデックス
オプションとして、法線インデックスを使用して、面を定義するときに頂点の法線ベクトルを指定できます。面を定義するときに頂点インデックスに法線インデックスを追加するには、テクスチャ座標インデックスの後に 2 番目のスラッシュを付け、法線インデックスを付ける必要があります。有効な法線インデックスは 1 から始まり、以前に定義された法線リストの対応する要素と一致します。各面には 3 つ以上の要素を含めることができます。
f v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3 ...
テクスチャ座標インデックスなしの頂点法線インデックス
テクスチャ座標はオプションであるため、テクスチャ座標なしでもジオメトリを定義できますが、法線インデックスを配置する前に、頂点インデックスの後に 2 つのスラッシュを配置する必要があります。
v1//vn1 v2//vn2 v3//vn3 ...
線要素
文字「l」(小文字の L) で始まるレコードは、ポリラインを構築する頂点の順序を指定します。
v1 v2 v3 v4 v5 v6 ...
その他のジオメトリ形式
Obj ファイルは、テイラーや B スプラインなどのさまざまな種類の補間を使用して高次のサーフェスをサポートしますが、サードパーティのファイル リーダーでのこれらの機能のサポートは、普遍的ではありません。また、Obj ファイルは、メッシュ階層や、頂点スキニングやメッシュ モーフィングなどのあらゆる種類のアニメーションや変形もサポートしません。
参考資料
ポリゴンの視覚的な側面を記述する マテリアルは、外部の .mtl ファイルに保存されます。OBJ ファイル内から複数の外部 MTL マテリアル ファイルを参照できます。.mtl ファイルには、1 つ以上の名前付きマテリアル定義を含めることができます。
mtllib [外部 .mtl ファイル名] ...
このタグは、それに続く要素のマテリアル名を指定します。マテリアル名は、外部の .mtl ファイル内の名前付きマテリアル定義と一致します。
usemtl [マテリアル名] ...
名前付きオブジェクトとポリゴン グループは、次のタグを使用して指定されます。
o [オブジェクト名] ... g [グループ名] ...
スムージング グループにより、ポリゴン全体のスムーズなシェーディングが可能になります。
1 秒 ... # スムーズシェーディングも無効にできます。 オフ ...
相対インデックスと絶対インデックス
OBJ ファイルは、リスト構造のため、頂点、法線などを絶対位置 (1 は最初に定義された頂点、N は N 番目に定義された頂点を表す) または相対位置 (-1 は最後に定義された頂点を表す) で参照できます。ただし、すべてのソフトウェアが後者のアプローチをサポートしているわけではなく、逆に一部のソフトウェアは本質的に後者の形式のみを書き込みます (頂点オフセットなどを再計算せずに要素を追加できる利便性のため)。そのため、互換性が失われる場合があります。
マテリアルテンプレートライブラリ
| ファイル名拡張子 |
.mtl |
|---|---|
| インターネットメディアの種類 |
モデル/mtl [3] |
| 魔法の数字 |
|
| 開発者 | ウェーブフロントテクノロジー |
| フォーマットの種類 | 3Dテクスチャフォーマット |
マテリアルテンプレート ライブラリ形式 (MTL) または .MTL ファイル形式は、 Wavefront Technologiesによって定義された .OBJ の関連ファイル形式で、1 つ以上の .OBJ ファイル内のオブジェクトの表面シェーディング (マテリアル) プロパティを記述します。.OBJ ファイルは、1 つ以上の .MTL ファイル (「マテリアル ライブラリ」と呼ばれる) を参照し、そこから 1 つ以上のマテリアル記述を名前で参照します。.MTL ファイルは、コンピュータ レンダリングの目的で、 Phong 反射モデルに従って表面の光反射プロパティを定義するASCIIテキストです。この標準は、さまざまなコンピュータ ソフトウェア パッケージで広くサポートされているため、マテリアルの交換に便利な形式です。
MTL 形式は、現在でも広く使用されていますが、時代遅れであり、スペキュラ マップや視差マップなどの新しいテクノロジを完全にサポートしていません。ただし、この形式はオープンで直感的なため、カスタム MTL ファイル ジェネレーターを使用して簡単に追加できます。
MTLフォーマットはいくつかのフォーマットを定義しています。[5] [6]
基本材料
1 つの.mtlファイルで複数のマテリアルを定義できます。マテリアルはファイル内で次々に定義され、それぞれ次のnewmtlコマンドで始まります。
# 「Colored」という名前のマテリアルを定義します newmtl カラー
マテリアルの周囲色は を使用して宣言されますKa。色の定義は RGB で、各チャネルの値は 0 から 1 の間です。
# 白 か 1.000 1.000 1.000
同様に、拡散色は を使用して宣言されますKd。
# 白 1.000 1.000 1.000
鏡面反射色は を使用して宣言されKs、鏡面反射指数 Nsを使用して重み付けされます。
# 黒(オフ) 0.000 0.000 0.000 # 範囲は 0 から 1000 まで 10.000 円
マテリアルは透明にすることができます。これは溶解されると呼ばれます。実際の透明度とは異なり、結果はオブジェクトの厚さに依存しません。「d」(溶解) の値が 1.0 が既定値で、完全に不透明であることを意味します。また、「Tr」の値が 0.0 の場合も同様です。溶解はすべての照明モデルで機能します。
# いくつかの実装では 'd' を使用します 0.9 d # その他は 'Tr' を使用します (反転: Tr = 1 - d) 0.1 トラスト
透明マテリアルには、さらに「Tf」で指定された透過フィルタ カラーを追加できます。
# 透過フィルタの色(RGB を使用) TF1.0 0.5 0.5 # 透過フィルタの色(CIEXYZ を使用) - y と z の値はオプションであり、省略された場合は x と等しいとみなされます TFXYZ 1.0 0.5 0.5 # スペクトル曲線ファイルからの透過フィルタカラー(一般的には使用されない) Tf スペクトル <ファイル名>.rfl <オプションの係数>
物質の表面には光学密度がある場合もあります。これは屈折率とも呼ばれます。
# 光学密度 ニ 1.45000
値の範囲は0.001から10です。1.0の値は、光が物体を通過するときに曲がらないことを意味します。光学密度が高くなると、曲がる量が増えます。ガラスの屈折率は約1.5です。1.0未満の値では奇妙な結果が生じるため、推奨されません。[7]
マテリアルごとに複数の照明モデルが利用可能です。"d" または "Tr" で透明度を実現するために透明な照明モデルを設定する必要はなく、最近の使用法では透明なマテリアルであっても照明モデルが指定されないことが多いことに注意してください。照明モデルは次のように列挙されます。
0. カラーオン、アンビエントオフ 1. カラーオン、アンビエントオン 2. ハイライト 3. 反射とレイトレースをオンにする 4. 透明度: ガラスオン、反射: レイトレースオン 5. 反射: フレネルオン、レイトレースオン 6. 透明度: 屈折オン、反射: フレネルオフ、レイトレースオン 7. 透明度: 屈折オン、反射: フレネルオン、レイトレースオン 8. 反射オン、レイトレースオフ 9. 透明度: ガラスオン、反射: レイトレースオフ 10. 目に見えない表面に影を落とす
イルム2
テクスチャマップ
テクスチャ付きマテリアルは上記と同じプロパティを使用し、さらにテクスチャ マップを定義します。以下は一般的なマテリアル ファイルの例です。詳細については、Wavefront ファイル形式の完全なリファレンスを参照してください。
newmtl テクスチャ か 1.000 1.000 1.000 1.000 1.000 1.000 0.000 0.000 0.000 1.0 d イルム2 # アンビエントテクスチャマップ map_Ka lemur.tga # 拡散テクスチャマップ(ほとんどの場合、 # アンビエントテクスチャマップ) map_Kd lemur.tga # スペキュラカラーテクスチャマップ map_Ks レムール.tga # スペキュラハイライトコンポーネント マップ_Ns lemur_spec.tga # アルファテクスチャマップ マップ_d lemur_alpha.tga # いくつかの実装では、以下の 'bump' の代わりに 'map_bump' を使用します マップバンプ lemur_bump.tga # バンプマップ(デフォルトでは画像の輝度チャンネルを使用します) バンプ lemur_bump.tga # ディスプレイスメントマップ 表示 lemur_disp.tga # ステンシル デカール テクスチャ (デフォルトでは画像の「マット」チャンネル) デカール lemur_stencil.tga
テクスチャ マップ ステートメントにはオプション パラメータも含まれる場合があります (完全な仕様を参照)。
# テクスチャ原点 (1,1,1) map_Ka -o 1 1 1 アンビエント.tga # 球面反射マップ refl タイプの球状雲.tga
テクスチャオプション
-blendu on | off # 水平テクスチャブレンディングを設定します (デフォルトはオン)
-blendv on | off # 垂直テクスチャブレンディングを設定します (デフォルトはオン)
-boost float_value # ミップマップのシャープネスを高める
-mm base_value gain_value # テクスチャマップの値を変更します (デフォルト 0 1)
# base_value = 明るさ、gain_value = コントラスト
-ou [v [w]] # 原点オフセット(デフォルト 0 0 0)
-su [v [w]] # スケール(デフォルト 1 1 1)
-tu [v [w]] # 乱気流 (デフォルト 0 0 0)
-texres resolution # 作成するテクスチャ解像度
-clamp on | off # クランプされた 0-1 範囲のテクセルのみをレンダリングします (デフォルトはオフ)
# クランプされていない場合、テクスチャは表面全体に繰り返され、
# クランプすると、0-1の範囲内にあるテクセルのみ
# 範囲がレンダリングされます。
-bm mult_value # バンプ乗数(バンプマップのみ)
-imfchan r | g | b | m | l | z # ファイルのどのチャンネルを使用するかを指定します
# スカラーまたはバンプテクスチャを作成します。r:red、g:green、
# b:青、m:マット、l:輝度、z:z深度。
# (バンプのデフォルトは 'l'、デカールのデフォルトは 'm' です)
例えば、
# は、bumpmap.tga の赤チャンネルをバンプマップとして使用することを指定します バンプ -imfchan r バンプマップ.tga
反射マップの場合...
-type sphere # は「refl」反射マップの球を指定します
-typecube_top |cube_bottom | # キューブマップを使用する場合、各キューブのテクスチャファイルは
cube_front | cube_back | # キューブの側面は別途指定されます
キューブ左 | キューブ右
ベンダー固有の変更
ファイルの解析が容易であり、ファイル形式が非公式に普及しているため、ファイルにはベンダー固有の変更が含まれる場合があります。
仕様によれば、オプションはテクスチャ ファイル名の前に付ける必要があります。ただし、少なくとも 1 つのベンダーは、オプションを末尾に付けたファイルを生成しています。
# バンプ乗数 0.2 バンプ texbump.tga -bm 0.2
物理ベースレンダリング
オンライン3D編集およびモデリングツールであるClara.ioの開発者は、MTL形式を拡張して物理ベースレンダリング(PBR)マップとパラメータを指定できるようにすることを提案しました。この拡張はその後、BlenderとTinyObjLoaderに採用されました。拡張PBRマップとパラメータは次のとおりです。[8]
P/map_Pr # 粗さ Pm/map_Pm # メタリック Ps/map_Ps # シーン クリアコートの厚さ PCR # クリアコートの粗さ Ke/map_Ke # 発光 異方性 # 異方性 anisor # 異方性回転 norm # 法線マップ (RGB コンポーネントは表面法線の XYZ コンポーネントを表します)
さらに提案された拡張機能は、 MicrosoftのDirectXエンジン用のDirectXMeshツールキットから来ており、モデルの事前コンパイルされたRMAマテリアルを定義する機能を可能にします。[9]
map_RMA # RMA マテリアル (粗さ、金属性、アンビエント オクルージョン) map_ORM # map_RMA の代替定義
参照
- グールド
- オブジェクトファイル
- OFF(ファイル形式)
- 再配置可能オブジェクトモジュール形式
- STL (ファイル形式)
- PLY (ファイル形式)は、ほとんどのステレオリソグラフィーアプリケーションよりも柔軟性の高い代替ファイル形式です。
参考文献
- ^ メディアサブタイプ名: obj
- ^ 「.OBJ ファイルに頂点カラー情報を含めるにはどうすればよいですか?」Game Development Stack Exchange 。 2014 年 10 月 8 日閲覧。
- ^ メディアサブタイプ名: mtl
- ^ 「Wavefront Material Template Library (MTL) ファイル形式」。米国議会図書館。2019年10月4日。
- ^ 「MTL ファイル - OBJ ファイルのマテリアル定義」。People.sc.fsu.edu。2004 年 6 月 14 日。2010 年 11 月 26 日閲覧。
- ^ 「Wavefront .mtl ファイル形式の情報 - GRIPES and GRUMBLES - Wings - Wings3D - 公式開発フォーラム - メッセージ ボード」。Nendowingsmirai.yuku.com。2002 年 7 月。2010年 11 月 26 日閲覧。
- ^ Ramey, Diane (1995). 「MTL マテリアル フォーマット (Lightwave、OBJ)」. Alias-Wavefront, Inc. 2020 年5 月 17 日閲覧。
- ^ 「Ben Houston | 物理ベースレンダリングのための Wavefront MTL の拡張」benhouston3d.com。
- ^ 「OBJ の MTL で RMA テクスチャを定義する機能。MattFiler による · プル リクエスト #39 · microsoft/DirectXMesh」。GitHub。
外部リンク
- 付録 B1. オブジェクト ファイル (.obj)、Advanced Visualizer マニュアル
- 材料仕様
- ツール、ライブラリ、サンプルファイル
- FileFormat.Info: Wavefront OBJ ファイル形式の概要
