ステレオリソグラフィー STL (.stl)
3D 標準Standard Triangle Language(STL、別名:Stereolithography)は、3Dプリントおよびラピッドプロトタイピング業界で共通の欠かせない形式です。未加工の三角形ファセットを使って、ソリッド3Dオブジェクトの表面形状を記述します。
OBJ を STL に変換
無料のブラウザ内 OBJ から STL へのコンバーター。お使いのデバイスでファイルを即座に変換します。
調査とメタデータ
オペレーティングシステムやファイル解析ツールは、先頭のバイナリ列を検査してSTLファイルを識別します:
バイトレベルのヘッダーシグネチャ (マジックバイト)
オペレーティングシステムやファイル解析ツールは、先頭のバイナリ列を検査してSTLファイルを識別します:
16進数シグネチャ(オフセット0):
73 6F 6C 69 64ASCII表現: solid
標準化: 3D Systemsステレオリソグラフィ仕様
技術仕様
| コンテナアーキテクチャ | ASCII形式('solid'で開始)またはバイナリ形式(80バイトヘッダー、32ビットの三角形数、50バイトのファセットレコード) |
| 圧縮 | 非圧縮の三角形ファセットデータ |
| バイトエンディアン | バイナリSTLではリトルエンディアン(Intel x86) |
| 色空間 | なし(形状はモノクロ。独自のVisCAM/Magicsカラー拡張は存在) |
| チャンネルと構造 | 三角形ファセット:面法線ベクトル(I、J、K)と3つの頂点座標(X、Y、Z) |
| 最大寸法 | 3D物理座標に上限なし(通常はミリメートル単位) |
| 透過性 | なし(実体のある物体) |
| ストリーミングとプログレッシブ | ファセットを順次ストリーミングし、連続してスライスごとに処理可能 |
技術比較表:STLと競合製品
| 技術属性 | STL (現在) | OBJ | 3MF | STEP |
|---|---|---|---|---|
| 3Dプリントスライサーの採用 | 3Dプリント用スライサーで広く使用。対応状況は異なる | 幅広く対応 | 最新の後継標準 | CADエンジニアリング標準 |
| 色とテクスチャのサポート | なし (純粋な表面ジオメトリ) | 完全なUVテクスチャマッピング | フルカラー、素材、マルチエクストルーダー | パラメトリックなソリッドカラー |
| ファセット構造 | 独立した三角形ファセット | 接続された頂点共有メッシュ | 頂点共有インデックス付きメッシュ | 正確なパラメトリック曲線 (NURBS) |
| 単位の定義 | 無単位 (ミリメートルを想定) | 無単位 (メートル/ミリメートルを想定) | 明示的な単位 (mm、cm、インチ) | 明示的なエンジニアリング単位 |
一般的な破損モードと16進数リカバリガイド
3Dスライサーに「モデルがマニホールドではありません / 非マニホールドエッジが含まれています」と表示される。
根本原因: 三角形メッシュの穴、自己交差する三角形、または反転した表面法線。
復旧: File2File.app 3Dメッシュ修復ツールまたはNetfabbを使用して、メッシュを水密にします。
セキュリティ分析とパーサー攻撃ベクトル
バイナリSTLパーサーは三角形数を32ビット整数として処理するため、整数オーバーフローによってヒープへの割り当てサイズが小さくなり、範囲外書き込みが発生する可能性があります。
既知の攻撃ベクター
- triangle_count * 50 バイトをメモリに割り当てる際の整数オーバーフロー。
- 実際のファイルサイズが宣言された三角形数よりも小さい場合のバッファ読み取り超過。
- 数ギガバイト分の三角形データを割り当てさせることによるサービス拒否。
防御的ベストプラクティス: 読み取り前に、宣言された三角形の数が (file_size - 84) / 50 と正確に一致していることを検証します。
歴史的背景とマイルストーン
主なメリット
- STLは3Dプリント用スライサーやCAMツールで広くサポートされていますが、対応する機能やワークフローは異なります。
- バイナリ形式はシンプルでコンパクトです。ヘッダーは正確に84バイトで、三角形ファセットごとに50バイトを使用します。
- 積層造形ツールパスの生成に必要な、水密性のある表面境界を直接表現できます。
技術的な制限とデメリット
- STL規格には色、素材、テクスチャの相互運用可能なフィールドがありません。互換性のない拡張で色データを追加するものもあります。
- 曲面は数千の平らな平面三角形で近似する必要があり、ポリゴン数が高くなります。
- 物理的な測定単位が指定されていません (スライサーはミリメートルまたはインチを前提とする必要があります)。
興味深い技術トリビア
- チャック・ハル氏は1986年に3Dプリンティングの特許を取得し、1987年に3DモデルをSLA-1プリンターに供給するためにSTLフォーマットを作成しました。
- STLファイルには単位メタデータが一切含まれません。「10」という次元のキューブは、スライサーの設定に応じて10ミリメートル、10メートル、または10インチを意味する可能性があります。
- バイナリSTLファイルには任意のテキストを含めることができる80バイトのヘッダーがありますが、「solid」という単語で始まってはなりません。始まると、一部のデコーダーがASCIIファイルと誤認してしまいます。
よくある技術的な質問
どのプログラムでSTLファイルを開くことができますか?
Cura、PrusaSlicer、Bambu Studioなどの3Dプリンタースライサー、Fusion 360やBlenderなどのCADプログラムでSTLファイルを開くか、File2File.appでオンラインで即座に表示できます。
ASCII STLとBinary STLの違いは何ですか?
Binary STLは各三角形を数値レコードとして保存し、ASCII STLは座標をテキストで記述します。Binaryは通常より小さく、ASCIIは直接確認できますが、どちらの形式にも色や素材の標準フィールドはありません。
STLファイルをOBJまたはGLBに変換するにはどうすればよいですか?
ブラウザから直接File2File.appを使用して、STLファイルをテクスチャ付きのOBJモデルやWeb対応のGLBファイルに変換できます。