#お役立ちコラム
OBJファイルとは|中身と.mtlの関係、開き方と単位の確認

OBJファイルは、3Dモデルの形をテキストで記録するファイル形式です。
この記事では、OBJファイルの中身、色を持つ .mtl と画像ファイルの関係、開く手段を整理します。STL・FBX・GLB・STEPとの違いと、開けないときの確認点も扱います。
執筆: bestat 編集部
OBJファイルとは
OBJファイルは、3Dの形状を頂点と面の並びで記録するファイル形式です。Wavefront社の3DソフトAdvanced Visualizer向けに作られました。仕様書は、オブジェクトの形状とその他の性質を定義するものと説明しています(Wavefront .obj 仕様)。
中身は人が読めるテキストです。点の座標を書いた行と、その点をつないで面を作る行が並びます。形そのものは .obj だけで表せますが、色や質感は別のファイルが持ちます。
3Dデータを扱う場面では、次のようなときにOBJが登場します。
3Dスキャナで計測した対象や、写真から作った3Dモデルを書き出して渡すとき
CG・ゲーム・AR/VR向けに配布されているモデルをダウンロードしたとき
色や模様を付けたまま3Dプリント用のデータを渡すとき
現況を計測した点群からメッシュを作り、関係者へ共有するとき
点群は対象の表面を点の集まりで記録したデータ、メッシュは点をつないで面にした3Dデータです。点群からメッシュを作る工程は点群メッシュ化の手順で扱っています。
OBJファイルの中身
.obj は1行に1つの記述を書いたテキストで、行の先頭の記号がその行の役割を表します。頂点はv、テクスチャ座標はvt、法線はvn、面はfで始まります。
テキストエディタで開けば中身を確認できます。ただし面の多いモデルでは行数が数十万を超えることもあるため、元ファイルは残し、調査用のコピーを開きます。
行の先頭 | 役割 | 書かれている内容 |
|---|---|---|
v | 幾何頂点 | 点のx・y・z座標。有理曲線や曲面では4つ目の重みを付けます |
vt | テクスチャ頂点 | 画像のどこを貼るかを表すu・v座標 |
vn | 法線 | 面や頂点の向きを表すベクトル |
f | 面 | 頂点の番号を並べて面にします。番号は頂点・テクスチャ頂点・法線の順にスラッシュで区切ります |
mtllib | 材質ファイルの指定 | 使う .mtl のファイル名 |
usemtl | 材質の切り替え | その行以降の面に使う材質名 |
面には最低3つの頂点が必要で、4つ以上の頂点を持つ多角形も書けます。また面の向きは頂点の並び順で決まり、反時計回りに並んでいれば面は手前を向きます(Wavefront .obj 仕様)。同じ形でも、書き出し側の設定で行数とファイル容量が変わります。
仕様は多角形に加えて、cstypeやdegといった記述で自由曲面も定義しています。ただし、読み込む側がどこまで対応するかはソフトによって異なります。BlenderのマニュアルはOBJについて、基本的な形状と材質のサポートにとどまると説明しています(Blender Manual)。
色とテクスチャは.mtlと画像ファイルが持つ
.obj が持つのは形とテクスチャ座標までで、色や質感は .mtl という別のテキストファイルが持ちます。.obj の mtllib 行が .mtl のファイル名を指し、usemtl 行が面ごとに使う材質名を指定します。
MTLの仕様によると、.mtl は材質の定義を1つ以上まとめたファイルで、材質ごとに色(Ka・Kd・Ks)、テクスチャマップ、反射マップを書きます(MTL仕様)。テクスチャマップの行は画像そのものを含まず、map_Kd などの後ろに画像ファイル名を書くだけです。
つまり、1つのモデルが .obj から .mtl へ、.mtl から画像ファイルへという2段の参照でつながっています。3種類がそろって初めて、色や模様の付いた状態で表示されます。
ファイル | 持っている情報 | 次を指す方法 |
|---|---|---|
.obj | 頂点、面、テクスチャ座標 | mtllib行に .mtl のファイル名を書きます |
.mtl | 材質名、色の値、テクスチャマップの指定 | map_Kd などの行に画像ファイル名を書きます |
画像ファイル(.png・.jpg など) | 表面に貼る絵柄 | 参照される側です。名前か場所が変わると見つかりません |
材質が見つからないと白いモデルになる
仕様は、材質名が指定されていない場合に白い材質を使うと定めています。mtllib についても既定値は無いと明記されています(Wavefront .obj 仕様)。そのため .mtl の名前や置き場所が変わると、読み込む側は材質を探す手掛かりを失います。
ダウンロードしたモデルが真っ白に見えるとき、形が壊れているとは限りません。.obj・.mtl・画像ファイルを配布時のまま同じフォルダに置いて読み込むと、この状態は避けられます。
頂点に色を書く方法は仕様の外にある
3Dスキャンやフォトグラメトリのソフトは、.mtl を使わず、頂点の行に色の値を続けて書くことがあります。この書き方は正式な仕様に含まれておらず、仕様が定めているのは材質ファイルを通じた面ごとの色までです(OBJファイルの頂点色)。
そのため、対応していないソフトでは色が無視されて白く表示されます。.mtl が付いていないのに元は色付きだったという場合は、頂点の行に座標以外の数値が並んでいないかを確認します。
OBJが持たない情報
OBJファイルには、長さの単位も、どの軸を上とするかも含まれていません。設計の履歴や寸法の拘束、ライトやカメラの情報も記録されません。
仕様が座標について定めているのは、右手座標系を使うことと、座標値が浮動小数点数であることです。1という値が何ミリに当たるかは書かれていないため、同じ .obj でも読み込む側の設定で大きさが変わります(Wavefront .obj 仕様)。
情報 | OBJでの扱い | 受け取り後にすること |
|---|---|---|
頂点と面の形状 | 記録されます | 面の欠けや裏返りを確認します |
テクスチャ座標 | 記録されます | 画像が意図した位置に貼られるかを見ます |
色と質感 | .mtl と画像ファイルが持ちます | 3種類のファイルがそろっているかを確認します |
長さの単位 | 定義がありません | 既知の寸法と照合し、送り手に単位を確認します |
上方向 | 定義がありません(右手座標系のみ) | 読み込み時の軸設定で合わせます |
設計履歴・寸法拘束 | 記録されません | 設計を続けるならCADの形式を用意します |
ライト・カメラ・親子関係 | 記録されません(Blender Manual) | これらが必要なら扱える形式を選びます |
単位と上方向を仕様で決めている形式もあります。glTF 2.0 は、すべての線分距離の単位をメートルとし、+Yを上、+Zを前と定義しています(glTF 2.0 仕様)。受け取ったファイルだけで大きさと向きが一意に決まるかは、形式によって変わります。
メッシュは面の集まりなので、穴の直径を10mmにするといった寸法を指定した変更はできません。実物や既存の3Dデータから設計に使えるCADデータを作る流れは、リバースエンジニアリングで現物からCAD化する手順で扱っています。
OBJファイルの開き方
見るだけならブラウザ上のビューア、形を編集するなら3Dソフト、設計データと併せて扱うならCADを使います。何をしたいかで選ぶソフトが変わります。
どの手段でも、.obj だけを開くと色は付きません。色や模様を確認したいときは、.obj・.mtl・画像ファイルを同じフォルダに入れたまま読み込みます。
やりたいこと | ソフトの例 | 確認できること・注意点 |
|---|---|---|
その場で形を見る | ブラウザ上のビューアで、objとmtlを含む形式に対応します | |
手元で形を見て変換する | 個人利用・商用ともに無料のオフラインビューアで、OBJ Wavefrontを扱えます | |
メッシュを編集する | 読み込み時に前方向・上方向と倍率を指定でき、対応する .mtl があれば材質も読み込みます | |
CADの形式と併せて扱う | STEPやSTLとともに、OBJの読み込みと書き出しに対応します |
ソフトを選んだら、次の順で確認します。
ソフトの「開く」または「インポート」からファイルを選びます。ダブルクリックで開かない場合は、拡張子とソフトの関連付けが無いだけのことがあります。
モデル全体が画面に収まる表示にして、面の欠けや裏返りを確認します。
単位が分かっている場合は、既知の寸法を測って大きさを照合します。
材質が読み込まれているかを見ます。白いまま表示されるときは、.mtl か画像ファイルが見つかっていません。
ブラウザ上のビューアを使う場合は、データを端末内で処理する方式か、外部のサーバーへ送る方式かを確認します。外部へ持ち出せないデータでは、この違いが使えるかどうかを左右します。
STL・FBX・GLB・STEPとの違いと変換の注意
形式の違いは、色を持てるか、長さの単位を決めているか、面をどう表すかで分かれます。OBJは色を材質ファイル経由で持てる一方、単位を決めておらず、面は多角形で表します。
形式 | 色・材質 | 長さの単位 | 形状の持ち方 | 主に使う場面 |
|---|---|---|---|---|
OBJ | .mtl と画像ファイルで持てます | 定義がありません | 多角形のメッシュ(自由曲面の定義もあります) | メッシュの受け渡し、色付きモデルの共有 |
STL | 色・テクスチャを保存しません | 標準の指定がありません | 三角形のメッシュ | 3Dプリント、形だけの受け渡し |
FBX | 材質やアニメーションを扱えます | 読み書きするソフトの設定によります | メッシュとシーンの情報 | 映像・ゲーム向けのデータ交換 |
glTF・GLB | 材質・テクスチャを扱えます | メートルと定義されています | メッシュ(GLBは1つのファイルにまとめます) | Webやアプリでの表示 |
STEP | 設計上の情報を扱えます | モデルに単位を定義できます | 曲面と立体 | CAD間での設計データ交換 |
STLは色、テクスチャ、シーン構造、アニメーションを保存しません(Spatial)。FBXは、アニメーションのあるキャラクターや複雑なシーン情報のやり取りに広く使われる形式です(Blender Manual)。STEPは製品データの表現と交換を定めるISO 10303の通称で、部品、アセンブリ、寸法・公差などの製造情報を扱います(NIST)。
形式ごとの位置づけをまとめて見る場合は、3Dデータ 拡張子一覧を参照してください。
変換しても、元に無い情報は増えない
変換ツールを選ぶ前に、何が残り、何が残らないかを見ておくと、変換後の確認が短く済みます。
変換 | 残るもの | 残らないもの |
|---|---|---|
OBJ → STL | 三角形にした形状 | 材質、テクスチャ、テクスチャ座標 |
OBJ → glTF・GLB | 形状、材質、テクスチャ | 単位の指定。glTFはメートルを前提とするため、1をどの長さと見なすかを書き出し時に決めます |
STL → OBJ | 三角形の形状 | 元に無い色は増えません |
CADのソリッド → OBJ | 表面の形 | 編集履歴、寸法拘束、公差などの設計指示 |
色を付けたい、単位を確定したい、寸法を編集したいという要望は、変換では解決しません。必要な情報を持つ形式で、作成元から出し直してもらう方が確実です。
開けない・色が出ない・寸法が合わないときの確認
3つの症状は、見るところが違います。開けないならソフトの対応範囲、色が出ないなら外部参照、寸法が合わないなら単位と倍率を先に確認します。
症状 | 先に確認すること | 次に試すこと |
|---|---|---|
ダブルクリックで開かない | OBJに対応するソフトがあるか | ソフトの「開く」「インポート」から選びます |
読み込みでエラーになる | ファイルを最後まで取得できているか | 別の対応ソフトでも開いて比べます |
白いまま色が付かない | 同じ場所に .mtl があるか、mtllib に書かれた名前と一致するか | .mtl のファイル名を配布時の名前へ戻します |
模様だけが出ない | .mtl の map_Kd などが指す画像が存在するか | 画像を .mtl と同じ場所に置き、名前を合わせます |
大きさが違う | 送り手が使った単位と、読み込み時の倍率 | 既知の寸法を測って倍率を決めます |
向きが違う | 読み込み時の前方向・上方向の設定 | 上方向をYとZで切り替えて見比べます |
重くて表示できない | 面の数と、テクスチャ画像の解像度 | 面を減らしたデータを作成元へ依頼します |
配布されているモデルで、.mtl が存在しない画像を指していることがあります。テクスチャマップの行は画像ファイル名を書くだけなので、配布物に画像が同梱されていなければ、読み込む側に絵柄を復元する手段はありません(MTL仕様)。材質に書かれた色までは表示できても、模様は戻りません。
送り手へ確認するときは、長さの単位、上方向、同梱ファイルの一覧の3点を聞きます。この3点がそろうと、データ側とソフト側のどちらを見直すかを絞れます。
よくある質問
コンパイルでできる .obj ファイルと同じものですか
別のものです。C/C++などのソースコードをコンパイルすると生成されるオブジェクトファイルも、拡張子に .obj を使います。Windowsでは、リンカが受け取るCOFF形式のファイルを指します(Microsoft Learn)。3DモデルのOBJはテキストなので、先頭の数行を見て、vやfで始まる行が並んでいるかで判別できます。
OBJファイルが大きいのですが、小さくできますか
容量は主に、面の数とテクスチャ画像の解像度で決まります。ZIPなどで圧縮すれば送るときの容量は減りますが、開くときは元の大きさに戻ります。恒久的に軽くするなら、面を減らしたメッシュを作成元で書き出すか、テクスチャ画像の解像度を下げます。形の確認と詳細な計測で必要な細かさが違う場合は、用途ごとにデータを分ける方法もあります。
OBJファイルは編集できますか
メッシュを扱う3Dソフトで、頂点や面の追加・削除・移動ができます。テキストエディタで座標を直すこともできますが、面は頂点の番号で定義されているため、頂点の行を削ると面の参照がずれます。寸法を指定した変更が必要な場合は、CADで形状を作り直します。
まとめ
OBJファイルは、頂点と面をテキストで書き並べた3Dモデルの形式です。形は .obj が持ち、色と質感は .mtl と画像ファイルが持つため、1つのモデルが複数のファイルに分かれます。
仕様が定めているのは右手座標系までで、長さの単位も上方向も決まっていません。受け取ったら、3種類のファイルがそろっているか、単位と向きが送り手の意図どおりかを確認します。
色を保って渡すならOBJやglTF、造形用の形だけならSTL、設計を続けるならCADの形式と、目的によって選ぶ形式が変わります。
3D.Core のサービス紹介資料をダウンロードできます。→ 資料ダウンロード
bestat 編集部について
bestat株式会社は、東京大学 松尾研究室発の産業用3Dデータに特化したAIスタートアップです。製造業・インフラ・土木の現場で、画像・動画・点群・360度動画などから3Dデータを生成・処理・活用する「3D.Core」シリーズを開発・提供しています。
https://bestat-data.com/3dcore

