OBJ を GLTF に変換

ここで OBJ を GLTF に変換できます。無料、アカウント不要です。ファイルを上の枠に落とせば、数秒で結果がダウンロードできる状態になります。 変換はお使いのブラウザーの中で行われるので、ファイルはアップロードされません。Windows でも macOS でも Linux でも、iPhone でも Android でも同じように動き、通信を切っても動き続けます。

  • 処理される場所 ブラウザーの中です。ファイルがアップロードされることはありません。
  • 作り直し GLTFはOBJとは仕組みが違います。非可逆コーデックのような段階的な劣化ではありません。GLTFが表現できるものは忠実に再現され、対応するものがないものはまったく残りません。
  • ファイルサイズの上限 1ファイルあたり100MBまで。無料、アカウント不要です。
  • 知っておきたいこと 形状だけです。材質・色・テクスチャ・アニメーションは引き継がれず、同じモデルを複数回配置していた場合は、それぞれの位置に焼き付けられた別々のコピーとして返ってきます。

一度に100ファイルまで。フォーマットが混ざっていても構いません。

glTF ツール群への入り口として

現代の 3D ウェブ制作の道具はほとんどが glTF を入力として想定しています。gltf-transform は間引きや圧縮を行い、Khronos のバリデーターは仕様への適合を確認し、three.js や Babylon.js はそのまま読み込みます。OBJ はその外側にあり、まずはこれらが受け付ける形にする必要があります。

.glb ではなく .gltf を選ぶ理由は、JSON のままなら開いて手で直せるからです。GLB はパイプラインの最後、マテリアルが決まり圧縮も済んだあとに作る成果物です。このページは、そのパイプラインの入り口——エディターで開けることが、1 リクエストで配信できることより価値がある段階——のためのものです。

OBJ から書き出される glTF の構造

バージョン 2.0 を宣言する asset ブロック、シーン、OBJ のグループごとに 1 個のメッシュとノード、各メッシュに 1 個のプリミティブ、POSITION 属性とインデックスのアクセサ。そこにアクセサ、バッファービュー、1 個のバッファーが続きます。

2 スペースの字下げで整形されているため、圧縮版よりおよそ 3 割大きくなりますが、フォーマッターなしでも読めます。これから編集するファイルとしては妥当な既定であり、圧縮したければコマンド一つで済みます。

頂点データは base64 のデータ URI として埋め込まれます

glTF が頂点データを持つ方法は、別ファイルの .bin、buffer の uri 欄の base64 データ URI、GLB のバイナリチャンクの 3 通りです。ここでは 1 ファイルにするため、データ URI 一択になります。

その代償として、同じデータをバイナリで持つ場合よりおよそ 3 割大きくなります——base64 は 3 バイトを 4 文字で表すためです。作業用の文書としては許容範囲で、gltf-transform やバリデーター、three.js はいずれも設定なしで埋め込みバッファーを読み込みます。

マテリアルを足すのは小さな編集です

OBJ の MTL ファイルは読み込まれないため、この文書に materials 配列はありません。追加は 4 行ほどで済みます。pbrMetallicRoughness ブロックと baseColorFactor を持つオブジェクトを materials に加え、対象のプリミティブに material のインデックスを指定するだけです。

これでジオメトリに手を触れずに、色付きで正しく照らされたモデルが得られます。テクスチャはもっと大きな作業で、画像やサンプラー、そして何より TEXCOORD_0 のデータが必要ですが、これはこの変換では生成されません。UV が必要な場合は Blender のような専用ソフトのほうが正直な選択です。

OBJ のグループ名が JSON の中で果たす役割

o 行や g 行がグループの開始を示し、各グループが名前付きのメッシュになります。ジオメトリ以外で変換をまたいで残る情報はこれだけで、手で編集する文書においては、目的の部品を探す手がかりとメッシュを数える作業の違いを生みます。

名前のないグループは、メッシュにも名前が付きません。あとから手で編集する予定があるなら、OBJ の側でグループに名前を付けておくほうが、無名のメッシュを JSON の中で整理し直すより簡単です。

仕様が実際に検証する部分に対応しています

バッファービューは、各アクセサのバイトオフセットがコンポーネントサイズの倍数になるようパディングされています。これは推奨ではなく要件で、自作の書き出しコードでよく起きるバリデーターエラーの原因です。すべての POSITION アクセサには min と max が付き、これはビューアーがモデルをフレームに収めるために使う必須情報です。

Khronos の glTF Validator を実行すると、エラーではなく「メッシュに法線がない」という情報レベルの注記が出ます。これは事実であり、仕様はビューアーに対してフラットな法線を計算するよう指示しているので、問題ではありません。

glTF を書く前に、OBJ はこう読まれます

4 頂点以上の面は、最初の頂点を起点にファン三角形分割されます。これは凸型のポリゴンには正しく、凹型の面では三角形が重なることがあります。複雑な多角形を出力するツールから来た OBJ では注意してください。

負のインデックスは読み込み時に解決されます。順序どおりに解釈できないためです。グループごとに小数点以下 6 桁で頂点が溶接されるため、4000 頂点のファイルのうち 12 個しか参照されていないグループは、glTF の中では 12 頂点として書かれます。

同じモデルの GLB より大きくなる理由

バッファーの base64 化に加えて、整形済み JSON の分が上乗せされます。ジオメトリだけのモデルではバッファーが支配的なので、圧縮前で GLB のおよそ 3 割増しと見込んでください。

これはパイプラインの序盤では正しい選択で、終盤では逆です。よくある流れは、まずここで glTF に変換し、編集や処理を挟んでから、変換し直すか gltf-transform に書かせて最終的な GLB を作るというものです。Draco や meshopt の圧縮もその段階に属します。

編集の予定がないなら GLB へ直接変換してください

変換から納品までのあいだに何も起きないなら、GLB へ直接変換するほうが、より小さく、リクエストも 1 回で済みます。誰も開かない文書のために余分なバイト数を払う理由はありません。

マテリアルを足す、バリデーターを通す、変換パスを実行する、あるいはテキストとして差分の取れるリポジトリに置く——次の作業があるときに glTF を選んでください。どちらの変換もブラウザーの中だけで完結し、エンジンのダウンロードもありません。

OBJ を GLTF に変換する手順

  1. お手元の OBJ ファイル をこのページに落とすか、押してファイルを選んでください。
  2. 変換先に GLTF を選びます。変換はブラウザーの中で行われ、ファイルはアップロードされません。
  3. できあがった GLTF ファイル をダウンロードします。

OBJ と GLTF——何が変わるか

OBJとGLTFの比較
OBJGLTF
正式名称Wavefront オブジェクトGL Transmission Format
拡張子.obj.gltf
メディアタイプmodel/objmodel/gltf+json
最初の公開19922015
発行元Wavefront TechnologiesKhronos Group
仕様glTF 2.0
ライセンスオープン標準オープン標準
現在の位置づけ現行現行
ブラウザで開けるか対応なし対応なし
代わりに検討される形式PLY, STLGLB

結果を開く

Blenderは OBJ と GLTF のどちらも読めるので、別のプログラムを開かずに、結果を元のファイルと並べて確かめられます。

どちらの形式が何のためのものか

2 つは狙っている用途が違います。OBJ はプログラム間のデータ受け渡しと編集、GLTF はウェブと完成したファイルの受け渡しです。ここは考える価値があります。一方が存在する理由が、そのままもう一方が使いにくい理由になっていることが多いからです。

GLTF は Khronos Group の形式で、2015 年から使われています。規定は glTF 2.0 です。Blender、three.js、Babylon.jsがこの形式を読めます。

OBJ は 1992 年、GLTF は 2015 年に登場しました。人に渡すならたいてい古いほうが安全で、新しいほうは同じ仕事をより少ないバイト数で片づけます。

OBJ から GLTF:よくある質問

OBJ ファイル はどこかにアップロードされますか。

いいえ。この変換は完全にブラウザーの中で行われるので、ファイルが端末から出ることはありません。ご自分で確かめられます。開発者ツールのネットワークタブを開いて、何か変換してみてください。ページそのものと、このサービスの費用をまかなっている分析・広告のリクエストは見えますが、あなたのファイルを運んでいるリクエストはひとつもありません。

OBJ から GLTF への変換は無料ですか。

はい。アカウントも透かしもなく、消費される 1 日の割り当てもありません。お使いの機械の上で動くので、何度でも戻ってきていただけます。ブラウザーが扱えるのは 100 MB までのファイルで、一度に 100 本です。

OBJ を GLTF に変換すると品質は落ちますか。

OBJ と GLTF は、内容の表し方が根本から違います。ですからこの変換は複製ではなく再構築です。誠実ではありますが、1 バイトも同じというわけではありません。 形状だけです。材質・色・テクスチャ・アニメーションは引き継がれず、同じモデルを複数回配置していた場合は、それぞれの位置に焼き付けられた別々のコピーとして返ってきます。

できあがった GLTF ファイル を開くのに、何かインストールが必要ですか。

変換には要りません。すでに開いているブラウザーの中で行われます。そのあと結果を開くには、お使いの端末がふだん GL Transmission Format を表示するのに使っているソフトが必要です。

これらのフォーマットについて