STL(Stereolithography)
ファイルフォーマットは、3Dモデルを表現するための標準的なファイル形式の一つです。主に
ラピッドプロトタイピング(試作)の分野で広く利用されており、多くの3D CADソフトウェアや3Dプリンターでサポートされています。STLファイルは、3次元形状を小さな三角形の集合として表現するのが特徴で、そのシンプルさから様々な場面で活用されています。
STLファイルの特徴
STLファイルは、3Dモデルの表面を細かい三角形(ファセット)の集まりで表現します。この形式の大きな特徴は、三角形以外の要素、例えば多角形や曲線、色情報、トポロジーデータ(形状同士の接続関係)などを一切含まない点です。データ構造が非常に単純であるため、ファイルサイズを小さくでき、処理も高速に行えます。
各三角形は、3つの頂点の座標と、三角形の面に対する法線ベクトルによって定義されます。法線ベクトルは、三角形がどちらを向いているか(表裏)を示すための重要な情報で、特に3Dプリントの際には、この情報が正しく設定されている必要があります。
データ形式
STLファイルには、主に以下の2つの形式があります。
ASCII STL形式: テキスト形式で、人間が内容を読めるように記述されています。ファイルサイズが大きくなりがちで、読み書きに時間がかかる場合がありますが、デバッグや手動編集には便利です。
バイナリ STL形式: データがバイナリ形式で格納されており、ファイルサイズが小さく、読み書きが高速です。大規模なデータや高速な処理が必要な場合に適しています。
ASCII STL形式
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
最初の行は`solid name`で始まり、`name`は任意の名前ですが、省略した場合でも半角スペースが必要です。その後に、三角形のデータが続きます。各三角形は、`facet normal`で始まる行で法線ベクトルが定義され、`outer loop`と`vertex`キーワードで3つの頂点の座標が指定されます。法線ベクトルは単位ベクトルであり、三角形の表裏を決定します。座標は反時計回りの順序で記述されます。ファイルの最後は`endsolid name`で終了します。
バイナリ STL形式
バイナリ形式のSTLファイルは、よりコンパクトな形式でデータを格納します。
80バイトのヘッダー(任意の文字列)
4バイトの整数で、ファイル内の三角形の総数を示す。
各三角形のデータ(法線ベクトル、3つの頂点の座標、2バイトの未使用データ)
各三角形のデータは、3つの32ビット浮動小数点数で法線ベクトルが、次の9つの32ビット浮動小数点数で3つの頂点の座標が、そして2バイトの未使用データで構成されます。浮動小数点数はIEEE 754形式で、リトルエンディアンで格納されます。
法線ベクトルの重要性
STLファイルにおける法線ベクトルは、三角形がどちらを向いているかを示す非常に重要な情報です。特に3Dプリンターでは、法線ベクトルに基づいて内外が区別され、印刷の向きや内部構造の生成に利用されます。法線ベクトルが誤って設定されていると、反転した形状が出力されてしまうなど、不具合の原因となります。
その他の注意点
STLファイルは、三角形の集合で形状を表現するため、曲線や複雑な形状を完全に表現するには、多くの三角形が必要になります。これにより、ファイルサイズが大きくなる場合があります。
* 一部のソフトウェアでは、法線ベクトルを
シェーディングに使用するため、必ずしも形状に対する厳密な法線ベクトルとならない場合があります。
STLファイルは、3Dモデルを扱う上で基本となるファイル形式であり、その構造や特性を理解することは、3Dモデリングや3Dプリントにおいて非常に重要です。