GLTF を OBJ に変換

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

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

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

glTF から数値そのものを取り出したい場面

この変換は glb-to-obj とは別の読み込み経路を使います。あちらはインポーターに食わせるための変換ですが、こちらは数値そのものが欲しい人向けです。ジェネレーターや CAD の Web 書き出し、スクリプトから出てきた .gltf を、行数を数えたり diff を取ったり測ったり、自分のコードに流し込んだりできる形にします。

glTF も OBJ もテキストですが、座標を人間が読める場所に置いているのは OBJ だけです。glTF ではその座標は base64 のバッファーの中にあり、アクセサーとバッファービューを経由しないと見えません。

出てくる OBJ は頂点 1 行、三角形 1 行だけ

「v 」で始まる行が頂点、「f 」で始まる行が三角形で、これだけです。vt 行も vn 行も usemtl もないので、余計な行を除外する必要がありません。頂点数と三角形数はどちらも正確に数えられます。

面のインデックスは 1 から始まる形式の規定どおりで、各オブジェクトでリセットされずファイル全体を通して番号が振られます。2 つ目のオブジェクトが自分の最初の頂点を参照していても、それ以前のすべての頂点数が足された番号で書き出されます。

座標はローカルではなくワールド座標

各ノードの行列は親のものと合成され、書き出す前に頂点へ適用されます。glTF の中で変換によって位置が決まっている部品は、OBJ では最終的な位置に置かれた状態で出てきます。

これはシーン内の配置をそのまま数値として扱いたい人には都合がよく、逆にオブジェクトごとのローカル座標が欲しい場合には不向きです。この変換はどちらか一方しか選べません。

面はすべて三角形——四角形や多角形は書かれない

面の行は必ず 3 つのインデックスを持ちます。ソース側にあった多角形はすでに glTF の時点で三角形分割されており、この変換で三角形を大きな面へまとめ直すこともありません。

したがって三角形数はそのまま数えれば正確です。ポリゴン単位でモデリングされたことを前提にした解析をするなら、この時点で三角形化されていることを織り込んでおく必要があります。

外部の .bin を参照する glTF は変換できない

1 ファイルだけを読む変換なので、外部ファイルへの参照を辿ることができません。ジオメトリがファイルの中にあるのは、バッファーが base64 のデータ URI として埋め込まれている glTF だけです。

外部バッファーを参照する glTF を渡すと変換できません。エクスポート時にバッファーを埋め込む設定にするか、同じモデルの GLB 版があればそちらを変換してください。GLB は仕様上バッファーを自身の中に持つ形式です。

ジオメトリだけで、材質もテクスチャも渡らない

glb-to-obj と同じく、この変換も幾何情報だけを読みます。材質、テクスチャ、UV 座標は取り出されず、mtllib 行も .mtl ファイルも生成されません。読み込み先のソフトは既定のグレーを割り当てます。

数値だけが目的なら、これは欠点というより仕様です。材質やテクスチャの情報を数値として扱いたいわけではないので、そもそも書く必要がないからです。

このファイルでできる検証

「v 」の行数を数えれば頂点数、「f 」の行数を数えれば三角形数が、追加の解析なしにわかります。バウンディングボックスは、すべての v 行の最小値と最大値を見るだけで計算できます。

glTF 自体をアクセサーの型やバイトオフセットを読んで解析するより、この平文の OBJ を数行のスクリプトで読むほうがずっと速く済みます。ライブラリを使わずに glTF の中身を検証したいとき、この変換はその近道になります。

GLTF を OBJ に変換する手順

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

GLTF と OBJ——何が変わるか

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

結果を開く

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

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

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

GLTF は Khronos Group の形式です(2015 年に登場)。 glTF 2.0 で規定されています。ファイルが、それを書いた道具より長く生きなければならないなら、この一点には値打ちがあります。

OBJ は Wavefront Technologies の形式で、1992 年から使われています。Blender、MeshLab、Mayaがこの形式を読めます。

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

GLTF から OBJ:よくある質問

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

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

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

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

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

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

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

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

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