STL を OBJ に変換

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

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

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

3D プリント用の形式から、編集できる形式へ

STL は切断されて印刷されるために存在する形式で、三角形の情報しか持ちません。スライサーにはそれで十分ですが、モデリングソフトには何もありません。グループもマテリアルも名前もなく、そして重要なのは頂点が共有されていないという点です。編集はまず何かを選択することから始まりますが、STL には選択できる構造がありません。

OBJ はテキストベースのインデックス構造を持ち、あらゆるモデリングツールに標準で読み込める古参の形式です。抽象的に優れているわけではなく、次の作業先のソフトが前提として扱う形式だからこそ意味があります。

溶接をすることで、はじめて選択できるメッシュになる

STL の中の立方体は 12 個の三角形と 36 個の頂点でできていて、実際の角は 8 つしかないのに、それぞれの三角形が独立して座標を持つため、同じ角が四、五回書き込まれています。これをそのまま読み込むと、三角形がすべて孤立した島になり、辺ループの選択もサブディビジョンもスムーズシェーディングもうまく働きません。

このサイトの読み込み処理は、書き出す前に一致する頂点を統合します。比較の基準は小数点以下六桁で丸めた値で、辺で接する二つの三角形が浮動小数点の最後の桁でわずかに食い違うことがあるためです。統合後の立方体は 8 頂点・12 面になり、モデラーが期待する「メッシュ」の形になります。

書き出される OBJ の中身

コメント行、単一のグループを表す o 行、そして頂点ごとの v 行と三角形ごとの f 行だけの、シンプルなファイルです。

テクスチャー座標を表す vt 行はなく、法線を表す vn 行もありません。マテリアルを参照する usemtl も、マテリアルライブラリーを指す mtllib もありません。STL がそもそも持っていない情報だからです。読み込む側が判断に迷う要素がない、素直なファイルです。

単一のグループになり、部品はあとで分ける

STL にはオブジェクトという概念がないため、OBJ は一つのグループにまとまります。本体、蓋、取っ手からなるモデルも、離れた三つの塊を含む一つのグループとして出てきます。

この分割は Blender の「緩やかな部分で分離」や MeshLab の連結成分での分割など、多くのモデリングソフトが備えています。ただし名前までは復元できません。STL がそもそも名前を持っていなかったためです。名前を残したいなら、可能であれば 3MF や OBJ を出力できる元のソースを探すほうが確実です。

法線が書かれないのは正しい判断

STL は三角形ごとの面法線を持っていますが、OBJ には書き込まれません。面法線は三角形の頂点の並び順から一意に決まるため、失われる情報はなく、どのソフトも読み込み時に自分で計算し直します。

頂点法線が書かれないことにも理由があります。溶接済みのメッシュであれば、共有された頂点をもとにソフト側で法線を平均化でき、スムーズにするかフラットにするかを、ファイルに焼き込まれた値ではなく自分の手元で選べるようになります。

バイナリかテキストかを見分ける方法

どちらの形式も変換対象で、ファイル自体には自分がどちらかを名乗る情報がありません。よくある判定方法である「solid という単語で始まるかどうか」は当てになりません。バイナリの STL は先頭 80 バイトを自由に使える決まりで、そこに solid という文字列を入れている書き出しソフトも実際に存在するためです。

確実なのは算術による判定です。バイナリの STL はヘッダーに書かれた三角形の数から 84 + 50n バイトぴったりになるという性質を持っています。その計算が合わなければテキストとして読み、vertex 行を探します。どちらでもないファイルは、空のメッシュを返すのではなく、はっきりとエラーを返します。

OBJ のサイズは STL とだいたい同じ範囲になる

二つの効果が逆方向に働きます。溶接によって重複していた頂点はまとめられ、通常は一つの頂点が五、六個の三角形に共有されるため、それだけ頂点リストが縮小します。一方でテキスト表現は、4 バイトの浮動小数点数が十数文字の十進表記に膨らむため、その分だけ大きくなります。

結果としてバイナリの STL と近い範囲に収まり、多くの場合 OBJ のほうがやや大きくなります。無料枠は 100 MB までで、これはおよそ 200 万三角形に相当します。それだけ密なメッシュを扱うことは通常のモデリング作業ではまれです。

変換した OBJ を Blender や MeshLab に取り込むとき

取り込みの際に確認する価値がある設定が二つあります。一つは上方向の軸で、OBJ にはこの決まりがなく、Blender の初期設定では Y-up として読み込まれますが、CAD や 3D プリント由来の STL はたいてい Z-up です。もう一つは単位で、どちらの形式も単位を宣言しないため、ミリメートル単位の STL をメートル単位のシーンに読み込むと、部品が桁違いの大きさになります。

取り込んだあとは、「距離による統合」をごく小さいしきい値で一度実行しておくと、六桁の丸めでは統合しきれなかった、もとの形状自体がわずかに食い違っていた箇所を拾えます。

すべて三角形のままであることの意味

メッシュは溶接されますが、STL が持っていた情報がすべて三角形である以上、それ以上の形には戻せません。かつて四角形だった二枚の三角形の組み合わせを推測で復元することはできません。彫刻やブーリアン演算、計測、デシメーションといった作業は三角形のままで問題なく行えます。

サブディビジョンサーフェスや、きれいなエッジフローを前提にした作業には向きません。このモデルに長く手を入れる予定があるなら、Blender の Quadriflow Remesh や ZBrush の ZRemesher といったリトポロジーのツールに、変換済みの OBJ をそのまま渡すのが妥当な次の一歩です。

STL がどこで変換されるか

このブラウザータブの中で、プレーンな JavaScript によって処理されます。WebAssembly モジュールのダウンロードもなく、アップロードもなく、アカウント登録も一日あたりの上限もありません。

STL はクライアントの部品図や取引先の設計データであることが多く、まさにこのページの利用場面がそれにあたります。ファイルを一切送信しない変換であれば、その問題自体が発生しません。

STL を OBJ に変換する手順

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

STL と OBJ——何が変わるか

STLとOBJの比較
STLOBJ
正式名称StereolithographyWavefront オブジェクト
拡張子.stl.obj
メディアタイプmodel/stlmodel/obj
最初の公開19871992
発行元3D SystemsWavefront Technologies
ライセンスオープン標準オープン標準
現在の位置づけ現行現行
ブラウザで開けるか対応なし対応なし
代わりに検討される形式3MF, PLYGLTF, PLY

結果を開く

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

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

2 つは狙っている用途が違います。STL は3D プリント、OBJ はプログラム間のデータ受け渡しと編集です。ここは考える価値があります。一方が存在する理由が、そのままもう一方が使いにくい理由になっていることが多いからです。

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

STL から OBJ:よくある質問

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

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

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

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

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

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

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

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

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