誰も語らない3Dファイル形式の問題
Fusion 360でパーツを完成させ、STEPとしてエクスポートしてプリンターに送ったところ、スライサーが全く対応していないことに気づく。あるいは同僚からスキャンパイプラインで生成されたOBJファイルを渡され、印刷したいのにスライサーはSTLしか受け付けない。または3DプリントしたブラケットをBlenderシーンにはめたいのにSTLにはマテリアル情報が一切ない。
こうした摩擦の原因はほぼ常にフォーマットの不一致だ。STL、STEP、OBJはそれぞれ根本的に異なる目的を持っており、ワークフローの各段階で使われるツールはそれぞれ異なる言語を話す。どの形式がどこに属するかを理解し、ジオメトリを壊さずに変換する方法を知ることが、数時間を節約する実践的スキルだ。
このガイドでは、形式の全体像、最もよくある4つの変換パターン、そして多くの人がはまる失敗パターンを解説する。
3D形式の全体像:STL、STEP、OBJ
非プロプライエタリな3Dモデルのやり取りにおいて、3つの形式がほとんどのケースをカバーしている。これらは互換性があるわけではない。
STL — 3D印刷の標準
STL(STereoLithography、またはStandard Triangle Language)は三角形メッシュ形式だ。ジオメトリを三角形の集合として表現するだけで、それ以上ではない。色もなく、マテリアルもなく、パラメトリック履歴もなく、仕様に単位が埋め込まれているわけでもない(ほとんどのツールはミリメートルを前提とする)。PrusaSlicer、Cura、Bambu Studio、IdeaMakerといったすべての商用スライサーがSTLをネイティブ読み込みできる。
STLの強みはそのシンプルさだ。弱点も同じところにある。エクスポートした瞬間に設計上の意図はすべて失われる。寸法はメッシュに暗黙的に埋め込まれ、フィーチャーツリーは消滅し、パラメトリックな関係もなくなる。STLはCADツールから出る一方通行の扉だ。
STEP — エンジニアリンググレードのパラメトリック形式
STEP(Standard for the Exchange of Product model data、ISO 10303)は、エンジニアリングモデルのやり取りにおける標準だ。STLとは異なり、STEPは正確なジオメトリを格納する。NURBSサーフェス、B-repソリッド、寸法拘束、アセンブリ関係などがそれにあたる。SolidWorksからのSTEPファイルはCATIAで開いても、元の設計通りのジオメトリを保った状態で正確に再現される。公差、サーフェスの連続性、アセンブリの拘束条件もすべて移行時に保持される。
STEPは機械エンジニアがCADパッケージ間でモデルを共有するときに使う形式だ。メッシュ形式ではないため、スライサーは直接読み込めない。
OBJ — レンダリングとアニメーション
OBJ(Wavefront OBJ)は、レンダリングワークフローを念頭に置いて設計されたメッシュ形式だ。STLが生のジオメトリだけを持つのに対し、OBJはUVテクスチャ座標、頂点カラー、そして付属の.mtlファイルによるマテリアル定義をサポートする。ゲームアセットパイプライン、Blender、Maya、Cinema 4D、フォトグラメトリの出力は、いずれもOBJを生成または消費することが多い。
OBJは技術的には印刷可能なメッシュだが、標準的なスライサーの入力形式ではなく、OBJが持つマテリアルデータは印刷コンテキストでは意味を持たない。OBJの本来の居場所は、レンダリングとアニメーションのパイプラインだ。
STEP → STL — CADモデルを3D印刷用に変換する
STEP to STL →これは印刷ワークフローで最も多い変換だ。SolidWorks、Fusion 360、FreeCAD、またはCATIAでパーツを設計した場合、スライサーはネイティブファイルを開けないし、論理的なニュートラルエクスポートであるSTEPも同様に読み込めない。三角形メッシュが必要であり、その答えがSTLだ。
変換プロセスはテッセレーションだ。コンバーターはSTEPファイル内のなめらかなNURBSサーフェスをサンプリングし、三角形で近似する。これは必然的にロスのある処理だ。数学的に正確な曲線を平坦なファセットに置き換えることになるが、そのロスは制御できる。
メッシュ解像度のトレードオフ。 テッセレーションはコード偏差(または角度許容差)によって制御される。これは三角形の辺の中点が理想的なサーフェスからどれだけ離れてよいかを示す値だ。許容差を厳しくすれば三角形が増え、ファイルサイズが大きくなる一方で、視覚的になめらかで寸法的に正確なジオメトリが得られる。許容差を緩くすれば三角形が減り、ファイルサイズは小さくなるが、曲面に目立つファセットが現れる。
ほとんどのFDMパーツでは、コード偏差0.01〜0.05 mmで十分だ。プリンターのレイヤー高さがボトルネックとなり、メッシュの精度が制限要因になることはない。サーフェス仕上がりがより重要なレジンプリントでは、0.005 mm以下が妥当だ。多くの曲面を持つ複雑なアセンブリの場合、非常に厳しい許容差だと数百MBのSTLが生成されることがあり、スライサーによってはうまく処理できない。
変換後に残るもの。 外部ジオメトリは選択した許容差の範囲内で正確に保持される。残らないもの:パラメトリックな関係、フィーチャー履歴、設計意図、内部アセンブリ構造(マルチボディのSTEPはコンバーターによってマージまたは分割されたメッシュになる)、サーフェスカラー。
よくある問題。
- マルチボディアセンブリの内部フェイスが、出力されたSTLのノンマニフォールドジオメトリを生成することがある。スライスする前に結果をプレビューすること。
- 異なるCADパッケージからのSTEPファイルは、コンバーターが解釈しなければならない単位定義(mmとインチ)を持つことがある。印刷されたパーツが25.4倍大きかったり小さかったりする場合、単位の不一致が原因だ。
STL → OBJ — 印刷モデルをレンダリングソフトウェアへ
STL to OBJ →3Dプリントされたデザインを製品のレンダリング画像やアニメーション、CADビジュアライゼーションに使いたい場合、変換の方向は逆になる。BlenderやMayaは技術的にSTLをインポートできるが、OBJの方がレンダリングワークフローの出発点として優れている。理由は以下の通りだ。
- OBJはUVマップをサポートする。Blenderでメッシュを展開し、テクスチャ、ラベル、マテリアル仕上げを適用できる。
- OBJは頂点ノーマルを明示的にサポートしており、レンダラーでスムースシェーディングを計算する際に影響する。STLはフェイスごとのノーマルのみを持ち、フラットシェードや人工的にファセットが目立つ見た目になることがある。
.mtlファイルとペアになったOBJでは、シェーダーエディタを開く前にベースカラーとマテリアルプロパティを定義できる。
この変換でできないこと。 STLからOBJへの変換はフォーマットの翻訳であり、ジオメトリのアップグレードではない。三角形メッシュはそのまま引き継がれる。粗くテッセレーションされたSTLをOBJに変換しても、スムースなサブディビジョンサーフェスは得られない。STLのエクスポート時にメッシュ解像度が低かった場合、OBJにも同じ平坦なファセットが引き継がれる。メッシュ品質を修正するタイミングは、パラメトリック情報がまだ残っているSTEP→STLの段階だ。
典型的なユースケース。
- 製品プロトタイプを印刷し、ピッチデッキ用のレンダリングに合成したい。
- CADでパーツを設計して印刷し、技術図面ではなくリアルな3Dレンダリングとしてシーンに表示したい。
- Blenderで3Dプリント可能なモデルにテクスチャやデカールを追加してから設計を確定したい。
OBJ → STL — レンダリングパイプラインのモデルを印刷する
OBJ to STL →モデルがCADツールの外側で生まれた場合、逆方向の変換が重要になる。ゲームアセット、フォトグラメトリスキャン、ZBrushのスカルプト、アニメーションソフトからエクスポートされたモデルは、いずれもOBJとして届くことが多い。これらを印刷したい場合はSTLが必要だ。
変換は機械的にシンプルだ。どちらも三角形メッシュなので、ジオメトリはそのまま移行する。.mtlファイルのマテリアルデータやUVマップは破棄される。印刷コンテキストでは意味を持たないからだ。重要なのは、メッシュが印刷可能かどうかだ。
マニフォールドジオメトリの要件。 スライサーはウォータータイトなマニフォールドジオメトリを必要とする。すべてのエッジが正確に2つのフェイスで共有されており、穴もなく、自己交差もなく、面積ゼロのフェイスもない状態だ。ゲームアセットやフォトグラメトリのメッシュはこの要件を満たさないことが多い。ゲームアセットはレンダリング向けに最適化されており、製作向けではないため、開いたエッジ、内部の浮いたフェイス、反転したノーマルを持つことがある。フォトグラメトリのメッシュには、再構成のアーティファクトによる穴がよく見られる。
OBJをSTLに変換したら、スライスする前に結果をプレビューすること。レンダラーでは見えないノンマニフォールドの問題が、スライサーを完全に止めてしまうことがある。
スケール。 OBJファイルには標準的な単位がない。50 mmのブラケットを表すモデルが、座標範囲0〜50(ミリメートル)、0〜1.9685(インチ)、または0〜50000(マイクロメートル)で表現されていても、ファイル内にどの単位系を意図したかの記述はない。印刷する前に既知の寸法でスケールを確認すること。そうしないと、ブラケットが50ミリメートルではなく50センチメートルで印刷されてから気づく羽目になる。
STL Preview — 印刷前に検査する
STL Preview →STLに変換することがステップ1であれば、スライサーに送る前に結果を検査することがステップ2だ。これを怠ると、フィラメント、時間、そして労力を無駄にする。
プレビューではメッシュを回転させて確認でき、ファイルリストでは見えない問題を見つけられる。
ノンマニフォールドジオメトリ。 開いたエッジやT字ジャンクション(2つではなく3つのフェイスで共有されているエッジ)は、スライサーを完全に失敗させるか、誤ったツールパスを生成させる。ワイヤーフレーム表示での視覚的な検査でメッシュの不整合をすばやく発見できる。スライサーが自動修復を試みることもあるが、予測しにくい形でジオメトリが変わることがある。
反転ノーマル。 STLのフェイスノーマルは三角形のどちら側が「外側」かを定義する。フェイスのノーマルが内側を向いている場合、スライサーはその部分をソリッド素材ではなく負の空間として処理することがある。ノーマルが反転したパッチは、シェードプレビューで暗い部分や欠けた部分として明確に現れる。
壁の厚さ。 プロセスごとの最小印刷可能厚さ(FDMでは通常1.2 mm、レジンではそれ以下)を下回る薄い壁は、適切な3Dプレビューでは視覚的に明らかだが、フラットなサムネイルでは見えない。スライス前に発見しておけば失敗プリントを防げる。
向きの確認。 3Dでプレビューすることで、ビルドプレートにどう置くべきかを評価できる。水平オーバーハングのせいで大量のサポートが必要なパーツも、三次元ビューからでないと気づきにくい単純な90°回転で再印刷できることがある。
正しい変換を選ぶ
最も一般的なマルチステップワークフロー:STEP → STL(印刷用)→ STL Previewで検査 → スライス。モデルのレンダリングも必要な場合:STEP → STL → OBJ → Blenderへインポート。
よくある問題とその対処法
ノンマニフォールドジオメトリ
スライサーがSTLを拒否する最も多い原因だ。内部フェイスが含まれたマルチボディSTEPのエクスポート、開いたエッジを持つゲームパイプライン由来のOBJファイル、隣接するパッチが誤ってエッジを共有する粗いテッセレーションの曲面などが原因となる。
診断:STL PreviewでファイルをSTL Previewとして開く。ノンマニフォールドエッジは視覚的なアーティファクト(通常はシェードメッシュ上の暗いパッチや穴)として現れる。スライサーによってはインポート時にノンマニフォールドエッジの数を報告することもある。
対処法:ソースがSTEPの場合は、許容差をわずかに緩めて再エクスポートするか、エクスポート前にCADツール組み込みの「ジオメトリチェック」機能を使う。ソースがOBJの場合は、MeshmixerやBlenderの3D Print Toolboxの修復ツールで穴を塞ぎ、ワインディングを修正できる。
反転ノーマル
一部のフェイスが外向きで、他のフェイスが内向きのノーマルを持つSTLは曖昧だ。スライサーはどの領域がソリッドかを判断できない。CADツールのブール演算で減算後に反転したフェイスが残るケースや、OBJモデルでフェイスのワインディングが一貫していないケースで発生することが多い。
診断:STL PreviewでSTLをレンダリングする。反転したノーマルを持つ領域は、片面シェーディングモードで暗い部分または空洞として現れる。BlenderのFace Orientationオーバーレイは、正面向きのフェイスを青、背面向きのフェイスを赤で色付けするため、診断に非常に役立つ。
対処法:Blenderではすべてのフェイスを選択してMesh → Normals → Recalculate Outsideを実行する。FreeCaDではPart → Check Geometry操作を再実行し、報告された問題を修正してから再エクスポートする。
スケールと単位の不一致
STLには正式な単位定義がない。仕様では座標を無次元として扱う。実際には3D印刷コミュニティはSTLの座標をミリメートルとして扱うが、一部のCADツール(特にドキュメントの単位がインチに設定されている場合)はデフォルトでメートルやインチでエクスポートする。
症状:スライサーが1000倍大きすぎるパーツを表示する(ドキュメントがメートル単位で、スライサーがmmと仮定した場合)、または1次元が25.4倍ずれている(インチがミリメートルとして処理された場合)。
対処法:STEPをSTLに変換する前に、CADツールのドキュメント単位を確認する。ほとんどのエクスポーターにはエクスポートダイアログに明示的な単位設定があるため、ミリメートルに設定すること。STLが誤ったスケールで届き、正しいサイズが分かっている場合は、印刷前にスライサーまたはBlenderでリスケールする。
大きなファイルサイズ
複雑なフリーフォームサーフェス(エルゴノミックなハンドル、タービンブレード、ジェネレーティブデザインのブラケットなど)を持つSTEPモデルを厳しいテッセレーション許容差で変換すると、50〜200 MB以上のSTLファイルが生成されることがある。問題なく処理するスライサーもあれば、動作が極端に遅くなったりクラッシュしたりするものもある。
解決策はほぼ常にテッセレーション許容差を緩めることだ。FDM印刷では、コード偏差0.05 mmと0.005 mmの違いは物理的なパーツではほぼ区別できない。レイヤー解像度がその差を上回るからだ。より厳しい許容差は、サーフェス仕上げの精度が本当に重要な場合だけに使うこと。
エンドツーエンドの実践的なワークフロー
ブラウザだけを使って、CADモデルからレンダリング画像と実際の印刷物までの完全なパスを示す。
- CADツールからパーツをSTEP(ジオメトリを保持するニュートラル形式)としてエクスポートする。
- STEP to STL → を使ってSTEPをSTLに変換する。印刷プロセスに合ったコード偏差を選ぶ。
- STL Preview → で結果を検査する。ノンマニフォールドジオメトリ、反転ノーマル、向きを確認する。
- STLをスライサーに送る。
- レンダリングも必要な場合:STL to OBJ → でSTLをOBJに変換し、BlenderまたはMayaにインポートしてテクスチャを適用しレンダリングする。
ゲームアセットやスキャン由来のOBJが出発点の場合:
- OBJ to STL → でOBJをSTLに変換する。
- STL Preview → でプレビューする。製作向けに設計されていないOBJに多いノンマニフォールドジオメトリに特に注意する。
- 必要に応じて修復してからスライサーに送る。
これらのステップのいずれにもCADライセンスは不要だ。4つのツールすべてがブラウザ上で動作する。