STL ファイルとは?
STL (ステレオリソグラフィーの略) は、3 次元の表面形状を表す交換可能なファイル形式です。このファイル形式は、ラピッド プロトタイピング、3D 印刷、コンピューター支援製造など、いくつかの分野で使用されています。これは、ファセットと呼ばれる一連の小さな三角形としてサーフェスを表します。各ファセットは、垂直方向と三角形の頂点を表す 3 つの点によって記述されます。結果として得られるデータは、アプリケーションによって使用され、ファバーによって構築される 3D 形状の断面が決定されます。色、テクスチャ、またはその他の一般的な CAD モデル属性の表現について、STL ファイル形式で利用できる情報はありません。
簡単な歴史
STL ファイル形式の開発は 1987 年にさかのぼります。商用 3D プリンターで使用するために 3D Systems によって開発されました。 STL 2.0 として知られる STL ファイル形式の改訂版が 2009 年に提案され、ファイル形式が更新されました。
ファイル形式の仕様
STL ファイルは、ファセットを使用してサーフェス ジオメトリを表します。ファセットは 3D オブジェクトの表面を定義し、単位法線 (長さ 1.0 の三角形に垂直な線) と 3 つの頂点によって一意に識別されます。ファセットごとに合計 12 個の数値が法線として保存され、各頂点はそれぞれ 3 つの座標で指定されます。 StL ファイルにはスケール情報が含まれていません。座標は任意の単位です。
STL ファイル形式の仕様は、次の 2 つの側面から検討できます。
ファセットの向き
ファセットの方向は、単位法線の方向と頂点がリストされている順序によって決まります。ファセットの方向は、次の 2 つの方法で指定されます。
※法線の向きは外側
- 右手の法則に従い、頂点は外側から反時計回りに並べられます。
頂点から頂点へのルール
この規則に従って、各三角形は隣接する各三角形と 2 つの頂点を共有します。したがって、ある三角形の頂点が別の三角形の側面にあることはできません。
ファイル形式
STL は、コンパクトなファイル形式の ASCII およびバイナリ表現で利用できます。
STL ASCII フォーマット
STL ファイル形式の ASCII バージョンは、プレーン ASCII で記述されます。ただし、サイズが大きいため、ファイル形式は使用に適した形式として選択されていません。 ASCII STL ファイルの構文は次のとおりです。
solid name
facet normal ni nj nk
outer loop
vertex v1x v1y v1z
vertex v2x v2y v2z
vertex v3x v3y v3z
endloop
endfacet
endsolid name
太字の単語は、常に小文字にする必要があるキーワードを表します。イタリック体の記号は、ユーザー指定の値に置き換えられる変数です。 facet normal および vertex 行の数値データは、1.23456E+789 などの単精度浮動小数点数です。 ファセットの法線の座標には、先頭にマイナス記号が付いている場合があります。 頂点座標はそうではないかもしれません。
STL バイナリ形式
バイナリ形式では、IEEE 整数および浮動小数点数値表現が使用されます。ファイル形式は次のように表されます。
フィールド | 情報 |
---|---|
ヘッダー | 80文字 |
三角形の数 | 4 バイトのリトルエンディアン符号なし整数 |
各三角形のデータ | 12 個の 32 ビット浮動小数点数 |
ファイル形式のより詳細なビューを以下に示します。
UINT8[80] – Header
UINT32 – Number of triangles
foreach triangle
REAL32[3] – Normal vector
REAL32[3] – Vertex 1
REAL32[3] – Vertex 2
REAL32[3] – Vertex 3
UINT16 – Attribute byte count
end