STL (file format)

STL adalah format file asli perangkat lunak CAD stereolitografi yang dibuat oleh Sistem 3D. STL memiliki beberapa backronim seperti “Standard Triangle Language” dan “Standard Tessellation Language”. Format file ini didukung oleh banyak paket perangkat lunak lainnya; itu banyak digunakan untuk pembuatan prototipe cepat, pencetakan 3D dan manufaktur dengan bantuan komputer. File STL hanya mendeskripsikan geometri permukaan objek tiga dimensi tanpa representasi warna, tekstur, atau atribut model CAD umum lainnya. Format STL menentukan representasi ASCII dan biner. File biner lebih umum, karena lebih ringkas.

File STL menggambarkan permukaan triangulasi mentah dan tidak terstruktur oleh satuan normal dan simpul (diurutkan dengan aturan tangan kanan) dari segitiga menggunakan sistem koordinat Cartesian tiga dimensi. Dalam spesifikasi aslinya, semua koordinat STL diharuskan berupa angka positif, tetapi batasan ini tidak lagi diberlakukan dan koordinat negatif biasanya ditemui dalam file STL saat ini. File STL tidak berisi informasi skala, dan unitnya berubah-ubah.

ASCII STL
File STL ASCII dimulai dengan baris

nama padat
di mana nama adalah string opsional (meskipun jika nama dihilangkan, masih ada spasi setelah padat). Sisa baris diabaikan dan terkadang digunakan untuk menyimpan metadata (mis., nama file, penulis, tanggal modifikasi, dll). File berlanjut dengan sejumlah segitiga, masing-masing direpresentasikan sebagai berikut:

facet normal ni nj nk
    outer loop
        vertex v1x v1y v1z
        vertex v2x v2y v2z
        vertex v3x v3y v3z
    endloop
endfacet

di mana setiap n atau v adalah angka titik-mengambang dalam format tanda-mantissa-e-tanda-eksponen, misalnya, 2,648000e-002. File diakhiri dengan

nama endsolid

Contoh ASCII STL dari sphericon
Struktur format menunjukkan kemungkinan lain yang ada (misalnya, faset dengan lebih dari satu loop, atau loop dengan lebih dari tiga simpul). Namun dalam praktiknya, semua segi adalah segitiga sederhana.

Spasi putih (spasi, tab, baris baru) dapat digunakan di mana saja dalam file kecuali di dalam angka atau kata. Ruang antara faset dan normal dan antara luar dan loop diperlukan.

STL biner
Karena file STL ASCII bisa sangat besar, ada versi biner dari STL. File STL biner memiliki header 80 karakter (yang umumnya diabaikan, tetapi tidak boleh dimulai dengan padat karena dapat menyebabkan beberapa perangkat lunak berasumsi bahwa ini adalah file STL ASCII). Mengikuti header adalah 4-byte little-endian unsigned integer yang menunjukkan jumlah sisi segitiga dalam file. Berikut ini adalah data yang menggambarkan setiap segitiga secara bergantian. File hanya berakhir setelah segitiga terakhir.

Setiap segitiga dijelaskan oleh dua belas angka floating-point 32-bit: tiga untuk normal dan kemudian tiga untuk koordinat X/Y/Z dari setiap titik – sama seperti STL versi ASCII. Setelah ini mengikuti 2-byte (“pendek”) unsigned integer yang merupakan “jumlah byte atribut” – dalam format standar, ini harus nol karena sebagian besar perangkat lunak tidak mengerti apa-apa lagi.

Angka floating-point direpresentasikan sebagai angka floating-point IEEE dan dianggap sebagai little-endian, meskipun hal ini tidak disebutkan dalam dokumentasi.

UINT8[80]    – Header                 -     80 bytes
UINT32       – Number of triangles    -      4 bytes
foreach triangle                      - 50 bytes:
    REAL32[3] – Normal vector             - 12 bytes
    REAL32[3] – Vertex 1                  - 12 bytes
    REAL32[3] – Vertex 2                  - 12 bytes
    REAL32[3] – Vertex 3                  - 12 bytes
    UINT16    – Attribute byte count      -  2 bytes
end

Warna dalam STL biner

Setidaknya ada dua variasi non-standar pada format STL biner untuk menambahkan informasi warna:

Paket perangkat lunak VisCAM dan SolidView menggunakan dua byte “jumlah byte atribut” di akhir setiap segitiga untuk menyimpan warna RGB 15-bit:

  • bit 0–4 adalah tingkat intensitas untuk warna biru (0–31),
  • bit 5–9 adalah tingkat intensitas untuk hijau (0–31),
  • bit 10–14 adalah tingkat intensitas untuk warna merah (0–31),
  • bit 15 adalah 1 jika warnanya valid, atau 0 jika warnanya tidak valid (seperti pada file STL normal).

Perangkat lunak Materialize Magics menggunakan header 80-byte di bagian atas file untuk mewakili warna keseluruhan dari seluruh bagian. Jika warna digunakan, maka di suatu tempat di header harus ada string ASCII COLOR= diikuti oleh empat byte yang mewakili saluran merah, hijau, biru dan alfa (transparansi) dalam rentang 0–255. Ini adalah warna seluruh objek, kecuali diganti di setiap sisi. Sihir juga mengenali deskripsi material; karakteristik permukaan yang lebih rinci. Tepat setelah spesifikasi COLOR=RGBA harus ada string ASCII lainnya, MATERIAL= diikuti oleh tiga warna (3×4 byte): pertama adalah warna pantulan difus, kedua adalah warna sorotan specular, dan ketiga adalah cahaya sekitar. Pengaturan material lebih disukai daripada warna. Warna per-faset direpresentasikan dalam dua byte “jumlah byte atribut” sebagai berikut:

  • bit 0–4 adalah tingkat intensitas untuk warna merah (0–31),
  • bit 5–9 adalah tingkat intensitas untuk hijau (0–31),
  • bit 10–14 adalah tingkat intensitas untuk warna biru (0–31),
  • bit 15 adalah 0 jika faset ini memiliki warna uniknya sendiri, atau 1 jika warna per objek akan digunakan.

Pengurutan merah/hijau/biru dalam dua byte tersebut dibalik dalam dua pendekatan ini – jadi meskipun format ini dapat dengan mudah kompatibel, pembalikan urutan warna berarti tidak – dan lebih buruk lagi, file STL generik pembaca tidak dapat secara otomatis membedakannya. Juga tidak ada cara untuk membuat faset transparan secara selektif karena tidak ada nilai alfa per faset – meskipun dalam konteks mesin pembuatan prototipe cepat saat ini, ini tidak penting.

Unit dalam STL biner

Unit koordinat tidak ditentukan dalam standar STL. Satu ide adalah menambahkan string ASCII UNITS=xx di suatu tempat di header, di mana xx adalah dua byte yang mewakili unit yang digunakan, saat menulis file ini. Opsi yang memungkinkan adalah:

UNITS header hint
ASCIIHexDescription
mm6D 6DMillimetres
cm63 6DCentimetres
 m20 6DMetres. The first byte is a space character ‘ ‘, ASCII 32=0x20.
ft66 74Decimal feet
in69 6EDecimal inches
ly6C 79Lightyears

Sisi normal

Dalam versi ASCII dan biner dari STL, faset normal harus berupa vektor satuan yang mengarah ke luar dari objek padat.[13] Di sebagian besar perangkat lunak ini dapat diatur ke (0,0,0), dan perangkat lunak akan secara otomatis menghitung normal berdasarkan urutan simpul segitiga menggunakan “aturan tangan kanan”, yaitu simpul terdaftar dalam counter-clock -Pesanan bijak dari luar. Beberapa pemuat STL (misalnya plugin STL untuk Art of Illusion) memeriksa bahwa normal dalam file sesuai dengan normal yang mereka hitung menggunakan aturan tangan kanan dan memperingatkan pengguna jika tidak. Perangkat lunak lain mungkin mengabaikan aspek normal sepenuhnya dan hanya menggunakan aturan tangan kanan. Meskipun jarang menentukan normal yang tidak dapat dihitung menggunakan aturan tangan kanan, agar sepenuhnya portabel, sebuah file harus menyediakan facet normal dan mengurutkan simpul dengan tepat. Pengecualian penting adalah SolidWorks, yang menggunakan normal untuk efek bayangan.

Gunakan dalam pencetakan 3D

Logo Wikipedia
Printer 3D membuat objek dengan memperkuat (SLA, SLS, SHS, DMLS, EBM, DLP) atau mencetak (3DP, MJM, FDM, FFF, PJP, MJS)[14] satu lapis dalam satu waktu. Ini membutuhkan serangkaian kontur 2D tertutup (lapisan horizontal) yang diisi dengan bahan padat saat lapisan-lapisan tersebut menyatu. Format file alami untuk mesin seperti itu adalah serangkaian poligon tertutup (lapisan atau irisan) yang sesuai dengan nilai Z yang berbeda. Namun, karena dimungkinkan untuk memvariasikan ketebalan lapisan untuk pembuatan yang lebih cepat meskipun kurang presisi, lebih mudah untuk menentukan model yang akan dibuat sebagai polihedron tertutup yang dapat diiris pada tingkat horizontal yang diperlukan. Facet normal yang salah dapat memengaruhi cara file diiris dan diisi. Sepotong pada nilai Z yang berbeda dapat dipilih untuk melewatkan aspek buruk atau file harus dikembalikan ke program CAD untuk melakukan koreksi dan kemudian membuat ulang file STL.

Format file STL tampaknya mampu mendefinisikan polihedron dengan segi poligonal apa pun, tetapi dalam praktiknya hanya digunakan untuk segitiga, yang berarti banyak sintaks protokol ASCII yang berlebihan.

Untuk membentuk volume 3D dengan benar, permukaan yang diwakili oleh file STL apa pun harus ditutup (tidak ada lubang atau vektor terbalik normal) dan terhubung, di mana setiap sisi merupakan bagian dari tepat dua segitiga, dan tidak berpotongan sendiri. Karena sintaks STL tidak menerapkan properti ini, ini dapat diabaikan untuk aplikasi yang tidak mempermasalahkan kekosongan. Permukaan yang hilang hanya penting sejauh perangkat lunak yang mengiris segitiga memerlukannya untuk memastikan bahwa poligon 2D yang dihasilkan tertutup. Terkadang perangkat lunak semacam itu dapat ditulis untuk membersihkan perbedaan kecil dengan memindahkan simpul yang berdekatan sehingga bertepatan. Hasilnya tidak dapat diprediksi, dan mungkin memerlukan perbaikan menggunakan program lain. Printer 3D vektor memerlukan file STL yang bersih dan mencetak file data yang buruk akan gagal diisi atau mungkin berhenti mencetak.

Representasi permukaan melengkung

Tidak mungkin menggunakan segitiga untuk merepresentasikan permukaan melengkung dengan sempurna. Sebagai kompensasi, pengguna sering kali menyimpan file STL yang sangat besar untuk mengurangi ketidakakuratan. Namun, format asli yang terkait dengan banyak aplikasi desain 3D menggunakan permukaan matematis untuk menjaga detail tanpa kerugian dalam file kecil. Sebagai contoh, Rhino 3D dan Blender mengimplementasikan NURBS untuk membuat permukaan melengkung yang sebenarnya dan menyimpannya dalam format file aslinya masing-masing, tetapi harus menghasilkan jaring segitiga saat mengekspor model ke format STL.

Sejarah

STL ditemukan oleh Albert Consulting Group untuk Sistem 3D pada tahun 1987.Format ini dikembangkan untuk printer 3D komersial pertama Sistem 3D. Sejak rilis awal, formatnya relatif tidak berubah selama 22 tahun.

Pada tahun 2009, pembaruan format, dijuluki STL 2.0, diusulkan. Itu berkembang menjadi format file manufaktur aditif.

File STL tertua yang ada di WikiCommons pada 2022 adalah Goat5k.stl, 10-01-2018.

This entry was posted in . Bookmark the permalink.

SIGN UP FOR NEWSLETTER

Signup for our newsletter to get notified about news and new products.

Table of Contents