| STL | |
|---|---|
トーラスのCAD表現(2つの同心円状の赤い円で示されている)と、同じ形状のSTL近似モデル(三角形の平面で構成されている) | |
| ファイル名拡張子 | .stl |
| インターネットメディアの 種類 | |
| 開発元 | 3Dシステムズ |
| 初回リリース | 1987 |
| フォーマットの種類 | ステレオリソグラフィー |
STL は、 3D Systemsが作成したステレオリソグラフィーCADソフトウェアのネイティブファイル形式です。[ 3 ] [ 4 ] [ 5 ]ステレオリソグラフィーの発明者であり 3D Systems の創設者であるChuck Hull は、ファイル拡張子がstereolithographyの略語であると報告していますが、[ 6 ]標準三角形言語または標準テッセレーション言語とも呼ばれています。[ 2 ]
STL ファイルは、 3 次元直交座標系を使用して、三角形の単位法線と頂点 (右手の法則[ 2 ]に従って順序付けられている)によって、未加工の非構造化三角形サーフェスを記述します。[ 7 ]元の仕様では、すべての STL 座標は正の数である必要がありましたが、この制限はもはや強制されておらず、今日では STL ファイルで負の座標がよく見られます。 STL ファイルにはスケール情報は含まれておらず、単位は任意です。[ 8 ] STL ファイルは、色、テクスチャ、またはその他の一般的な CAD モデル属性の表現なしに、3 次元オブジェクトの表面形状のみを記述します。 STL フォーマットは、ASCII 表現とバイナリ表現の両方を規定しています。バイナリファイルはよりコンパクトであるため、より一般的です。[ 9 ]
STLは、ラピッドプロトタイピング、3Dプリンティング、コンピュータ支援製造に広く使用されており、[ 10 ]他の多くのソフトウェアパッケージでもサポートされています。
STLは1987年にAlbert Consulting Groupが3D Systemsのために開発しました。 [ 11 ]このフォーマットは3D Systemsの最初の商用3Dプリンター向けに開発されました。最初のリリース以来、このフォーマットは22年間ほとんど変更されていません。[ 12 ]
2009年にSTL 2.0と呼ばれるフォーマットの更新が提案され、それが積層造形ファイルフォーマットへと発展した。[ 12 ] [ 13 ]
ASCII STLファイルは、次の行で始まります。
ソリッドネーム
ここでnameはオプションの文字列です (ただし、一部のソフトウェアとの互換性のために、 nameを省略した場合でも solid の後にスペースが必要です)。行の残りの部分は無視され、メタデータ (ファイル名、作成者、更新日など) を格納するために使用されることがあります。[ 14 ]ファイルは任意の数の三角形で続き、それぞれは次のように表されます。[ 15 ]
ファセット法線n i n j n k外側のループの頂点v1 x v1 y v1 z頂点v2 x v2 y v2 z頂点v3 x v3 y v3 zエンドループのエンドファセット
ここで、各nまたはv は、符号-仮数-符号-指数形式の浮動小数点数です(例:)。ファイルは以下で終了します。e2.648000e-002
endsolid名

フォーマットの構造から、他の可能性(例えば、1つ以上の頂点を持つ面や、3つ以上の頂点を持つループなど)が存在することが示唆されるが、ファイルフォーマットの説明では三角形のテセレーションloopのみに言及している。[ 2 ]
空白文字(スペース、タブ、改行)は、数字や単語の中を除き、ファイル内のどこでも使用できます。 と の間、および と の間のスペースfacetはnormal必須outerですloop。[ 9 ]
ASCII STL ファイルはサイズが大きくなる可能性があるため、バイナリ版の STL が存在します。バイナリ STL ファイルには 80 文字のヘッダーがありますが、これは通常無視されます。ただし、ASCII 文字列の表現でヘッダーを開始してはいけませんsolid。一部のソフトウェアが ASCII STL ファイルと誤認する可能性があるためです。ヘッダーの後には、ファイル内の三角形の面の数を示す 4 バイトのリトルエンディアンの符号なし整数が続きます。その後に、各三角形を順番に記述するデータが続きます。ファイルは最後の三角形で終了します。
各三角形は、12 個の 32 ビット浮動小数点数で記述されます。3 個は法線、残りの 3 個は各頂点の X/Y/Z 座標です。これは STL の ASCII バージョンと同じです。これらの後には、2 バイト ("short") の符号なし整数が続きます。これは「属性バイト数」です。標準形式では、ほとんどのソフトウェアがそれ以外を理解できないため、これはゼロである必要があります。[ 9 ]
浮動小数点数はIEEE浮動小数点数として表現され、ドキュメントには明記されていませんが、リトルエンディアンであると想定されています。
UINT8[80] – ヘッダー – 80バイト UINT32 – 三角形の数 - 4バイト foreach triangle - 50バイト REAL32[3] – 標準ベクトル - 12バイト REAL32[3] – 頂点1 - 12バイト REAL32[3] – 頂点2 - 12バイト REAL32[3] – 頂点3 - 12バイト UINT16 – 属性バイト数 - 2バイト 終わり
バイナリSTLフォーマットには、色情報を追加するための非標準的なバリエーションが少なくとも2つ存在する。
COLOR=COLOR=RGBA,MATERIAL=これら2つの方式では、2バイト内の赤/緑/青の順序が逆になっているため、本来であれば互換性があったはずのフォーマットが、色の順序が逆になっているために互換性がなく、さらに悪いことに、汎用のSTLファイルリーダーでは自動的に区別することができません。また、ファセットごとにアルファ値が設定されていないため、ファセットを選択的に透明にすることもできません。ただし、現在のラピッドプロトタイピング機器の文脈では、これは重要ではありません。
STL の ASCII バージョンとバイナリ バージョンの両方で、ファセット法線はソリッド オブジェクトから外側を向く単位ベクトルである必要があります。 [ 16 ]ほとんどのソフトウェアでは、これは (0,0,0) に設定でき、ソフトウェアは「右手の法則」を使用して三角形の頂点の順序に基づいて法線を自動的に計算します。つまり、頂点は外側から反時計回りの順序でリストされます。[ 2 ]一部の STL ローダー (たとえば、Art of Illusion の STL プラグイン) は、ファイル内の法線が右手の法則を使用して計算した法線と一致するかどうかを確認し、一致しない場合はユーザーに警告します。他のソフトウェアでは、ファセット法線を完全に無視して、右手の法則のみを使用する場合があります。右手の法則を使用して計算できない法線を指定することはまれですが、完全に移植可能にするには、ファイルにはファセット法線と適切な頂点の順序の両方が含まれている必要があります。注目すべき例外はSolidWorksで、シェーディング効果に法線を使用します。
三角形を使って曲面を完全に表現することはできません。そのため、ユーザーは不正確さを軽減するために、巨大な STL ファイルを保存することがよくあります。しかし、多くの 3D デザイン アプリケーションに関連付けられているネイティブ フォーマットでは、数学的な曲面を使用して、小さなファイルで詳細をロスなく保持しています。たとえば、Rhino 3D [ 17 ]とBlender [ 18 ]は、 NURBSを実装して真の曲面を作成し、それぞれのネイティブ ファイル フォーマットに保存しますが、モデルを STL フォーマットにエクスポートするときには三角形メッシュを生成する必要があります。

3D プリンターは、一度に 1 層ずつ固化 ( SLA、SLS、SHS、DMLS、EBM、DLP ) または印刷 (3DP、MJM、FDM、FFF、PJP、MJS) [ 19 ]することによってオブジェクトを作成します。これには、層が融合されるにつれて固化された材料で満たされる一連の閉じた 2D 輪郭 (水平層) が必要です。このようなマシンの自然なファイル形式は、異なる Z 値に対応する一連の閉じた多角形 (層またはスライス) になります。ただし、より高速で精度は低いビルドのために層の厚さを変更できるため、必要な水平レベルでスライスできる閉じた多面体として構築するモデルを定義する方が容易でした。ファセット法線が正しくないと、ファイルのスライスと充填方法に影響します。異なる Z 値のスライスを選択して悪いファセットを回避するか、ファイルを CAD プログラムに戻して修正し、STL ファイルを再生成する必要があります。
3Dボリュームを適切に形成するには、STLファイルで表されるサーフェスは閉じている(穴や反転したベクトル法線がない)かつ接続されている必要があり、すべてのエッジは正確に2つの面で共有され、自己交差してはなりません。STL構文はこの特性を強制しないため、空隙が問題にならないアプリケーションでは無視できます。欠けているサーフェスは、三角形をスライスするソフトウェアが結果として得られる2Dポリゴンが閉じていることを保証するために必要とする限りにおいて重要です。このようなソフトウェアは、近接する頂点を移動して一致させることで小さなずれを修正するように作成できる場合があります。結果は予測不可能であり、別のプログラムを使用して修正が必要になる場合があります。ベクター3DプリンターはクリーンなSTLファイルを必要とし、不良データファイルを印刷すると、充填に失敗したり、印刷が停止したりする可能性があります。

STLはシンプルで出力も容易です。そのため、多くのCADシステムでSTLファイル形式を出力できます。出力は簡単ですが、共有頂点の識別情報が失われるため、メッシュの接続情報は破棄されます。
多くのコンピュータ支援製造システムでは、三角形分割されたモデルが必要です。STL形式は、このデータを転送するためのメモリ効率と計算効率が最も高い方法ではありませんが、三角形分割されたジオメトリをCAMシステムにインポートするためにSTLがよく使用されます。この形式は一般的に利用可能であるため、CAMシステムで使用できます。データを使用するには、CAMシステムは接続性を再構築する必要がある場合があります。STLファイルにはユニットの物理的な寸法が保存されないため、CAMシステムはそれを要求します。典型的なユニットは、mmおよびですinch。
STLは、CAD/CAMシステムとMathematicaなどの計算環境との間でデータを交換するためにも使用できます。
事実上の標準として、ほぼすべてのラピッドプロトタイピングシステムで使用されています。