Format file manufaktur aditif (AMF) adalah standar terbuka untuk mendeskripsikan objek untuk proses manufaktur aditif seperti pencetakan 3D. Standar resmi ISO/ASTM 52915:2016[1][2] adalah format berbasis XML yang dirancang agar perangkat lunak desain berbantuan komputer dapat mendeskripsikan bentuk dan komposisi objek 3D apa pun untuk dibuat pada printer 3D apa pun melalui komputer -dibantu perangkat lunak manufaktur. Tidak seperti format STL pendahulunya, AMF memiliki dukungan asli untuk warna, bahan, kisi, dan konstelasi.
Struktur
AMF dapat mewakili satu objek, atau beberapa objek yang diatur dalam konstelasi. Setiap objek digambarkan sebagai satu set volume yang tidak tumpang tindih. Setiap volume dijelaskan oleh jaring segitiga yang mereferensikan sekumpulan titik (simpul). Verteks ini dapat dibagi di antara volume milik objek yang sama. File AMF juga dapat menentukan bahan dan warna setiap volume, serta warna setiap segitiga di jaring. File AMF dikompres menggunakan format kompresi zip, tetapi ekstensi file “.amf” dipertahankan. Implementasi pembaca AMF minimal harus dapat mendekompres file AMF dan mengimpor setidaknya informasi geometri (mengabaikan kelengkungan).
Struktur file dasar
File AMF dimulai dengan baris deklarasi XML yang menentukan versi dan pengkodean XML. Sisa file dilampirkan di antara elemen <amf> pembuka dan elemen </amf> penutup. Sistem unit juga dapat ditentukan (milimeter, inci, kaki, meter atau mikrometer). Dengan tidak adanya spesifikasi unit, milimeter diasumsikan.
Dalam kurung AMF, ada lima elemen tingkat atas. Hanya satu elemen objek yang diperlukan untuk file AMF yang berfungsi penuh.
- <objek> Elemen objek mendefinisikan volume atau volume material, yang masing-masing dikaitkan dengan ID material untuk pencetakan. Setidaknya satu elemen objek harus ada dalam file. Objek tambahan bersifat opsional.
- <material> Elemen material opsional menentukan satu atau lebih material untuk dicetak dengan ID material terkait. Jika tidak ada elemen material yang disertakan, satu material standar diasumsikan.
- <tekstur> Elemen tekstur opsional menentukan satu atau lebih gambar atau tekstur untuk pemetaan warna atau tekstur, masing-masing dengan ID tekstur terkait.
- <konstelasi> Elemen konstelasi opsional secara hierarki menggabungkan objek dan konstelasi lainnya ke dalam pola relatif untuk dicetak.
- <metadata> Elemen metadata opsional menentukan informasi tambahan tentang objek dan elemen yang terkandung dalam file.
spesifikasi geometri
Formatnya menggunakan tata letak mesh poligon Face-vertex. Setiap elemen <object> tingkat atas menentukan id unik. Elemen <object> juga dapat secara opsional menentukan material. Seluruh geometri mesh terkandung dalam elemen <mesh> tunggal. Jala didefinisikan menggunakan satu elemen <vertices> dan satu atau lebih elemen <volume>. Elemen <vertices> yang diperlukan mencantumkan semua simpul yang digunakan dalam objek ini. Setiap simpul secara implisit diberi nomor sesuai urutan yang dideklarasikan, mulai dari nol. Elemen anak yang diperlukan <coordinates> memberikan posisi titik dalam ruang 3D menggunakan elemen <x>, <y> dan <z>. Setelah informasi simpul, setidaknya satu elemen <volume> harus disertakan. Setiap volume merangkum volume tertutup dari objek, Beberapa volume dapat ditentukan dalam satu objek. Volume dapat berbagi simpul pada antarmuka tetapi mungkin tidak memiliki volume yang tumpang tindih. Di dalam setiap volume, elemen turunan <triangle> digunakan untuk mendefinisikan segitiga yang membentuk segitiga pada permukaan volume. Setiap elemen <triangle> akan mencantumkan tiga simpul dari kumpulan indeks dari simpul yang ditentukan sebelumnya yang diberikan dalam elemen <vertices>. Indeks dari tiga simpul segitiga ditentukan menggunakan elemen <v1>, <v2> dan <v3>. Urutan simpul harus sesuai dengan aturan tangan kanan, sehingga simpul dicantumkan dalam urutan berlawanan arah jarum jam jika dilihat dari luar. Setiap segitiga secara implisit diberi nomor sesuai urutan yang dinyatakan, mulai dari nol.
Spesifikasi warna
Warna diperkenalkan menggunakan elemen <color> dengan menentukan saluran merah, hijau, biru dan alfa (transparansi) dalam ruang warna sRGB sebagai angka dalam rentang 0 hingga 1. Elemen <color> dapat disisipkan pada materi, tingkat objek, volume, puncak, atau segitiga, dan diprioritaskan dalam urutan terbalik (warna segitiga adalah prioritas tertinggi). Saluran transparansi menentukan sejauh mana warna dari tingkat yang lebih rendah dicampur. Secara default, semua nilai disetel ke nol.
Warna juga dapat ditentukan dengan mengacu pada rumus yang dapat menggunakan berbagai fungsi yang bergantung pada koordinat.
Peta tekstur
Peta tekstur memungkinkan penetapan warna atau bahan ke permukaan atau volume, meminjam dari gagasan pemetaan Tekstur dalam grafik. Elemen <texture> pertama kali digunakan untuk mengasosiasikan texture-id dengan data tekstur tertentu. Data dapat direpresentasikan sebagai larik 2D atau 3D, bergantung pada apakah warna atau bahan perlu dipetakan ke permukaan atau volume. Data direpresentasikan sebagai string byte dalam pengkodean Base64, satu byte per piksel menentukan tingkat skala abu-abu dalam rentang 0-255.
Setelah texture-id ditetapkan, data tekstur dapat direferensikan dalam rumus warna, seperti contoh di bawah ini.
Biasanya, bagaimanapun, koordinat tidak akan digunakan secara langsung seperti yang ditunjukkan di atas, tetapi ditransformasikan terlebih dahulu untuk membawanya dari koordinat objek ke koordinat tekstur. Misalnya, tex(1,f1(x,y,z),f2(x,y,z),f3(x,y,z)) di mana f1(), f2(), f3() adalah beberapa fungsi, biasanya linier.
Spesifikasi material
Material diperkenalkan menggunakan elemen <material>. Setiap materi diberi id unik. Volume geometrik diasosiasikan dengan material dengan menentukan material-id di dalam elemen <volume>.
Bahan campuran, bertingkat, kisi, dan acak
Bahan baru dapat didefinisikan sebagai komposisi dari bahan lain. Elemen <komposit> digunakan untuk menentukan proporsi komposisi, sebagai konstanta atau sebagai rumus yang bergantung pada koordinat x, y, dan z. Proporsi pencampuran yang konstan akan menghasilkan bahan yang homogen. Komposisi yang bergantung pada koordinat dapat menghasilkan bahan bergradasi. Proporsi yang bergantung pada koordinat yang lebih kompleks dapat menyebabkan gradien material nonlinier serta substruktur periodik dan non-periodik. Rumus proporsi juga dapat mengacu pada peta tekstur menggunakan fungsi tex(textureid,x,y,z). Referensi ke material-id “0” (void) dicadangkan dan dapat digunakan untuk menentukan struktur berpori. Referensi ke fungsi rand(x,y,z) dapat digunakan untuk menentukan bahan acak semu. Fungsi rand(x,y,z) mengembalikan angka acak antara 0 dan 1 yang tetap untuk koordinat tersebut.
Cetak rasi bintang
Beberapa objek dapat diatur bersama menggunakan elemen <constellation>. Konstelasi dapat menentukan posisi dan orientasi objek untuk meningkatkan efisiensi pengepakan dan untuk menggambarkan susunan besar objek yang identik. Elemen <instance> menentukan perpindahan dan rotasi yang harus dialami objek yang ada untuk mencapai posisinya di konstelasi. Perpindahan dan rotasi selalu didefinisikan secara relatif terhadap posisi dan orientasi asli di mana objek didefinisikan. Konstelasi dapat merujuk ke konstelasi lain selama referensi siklik dihindari.
Jika beberapa konstelasi tingkat atas ditentukan, atau jika beberapa objek tanpa konstelasi ditentukan, masing-masing akan diimpor tanpa data posisi relatif. Program pengimpor kemudian dapat dengan bebas menentukan posisi relatif.
Meta-data
Elemen <metadata> secara opsional dapat digunakan untuk menentukan informasi tambahan tentang objek, geometri, dan material yang didefinisikan. Misalnya, informasi ini dapat menentukan nama, deskripsi tekstual, kepenulisan, informasi hak cipta, dan instruksi khusus. Elemen <metadata> dapat disertakan di tingkat atas untuk menentukan atribut seluruh file, atau di dalam objek, volume, dan bahan untuk menentukan atribut lokal ke entitas tersebut.
Segitiga melengkung opsional
Tambalan segitiga melengkung. Normal pada simpul digunakan untuk membagi segitiga secara rekursif menjadi empat sub-segitiga
Untuk meningkatkan ketepatan geometris, formatnya memungkinkan melengkungnya tambalan segitiga. Secara default, semua segitiga diasumsikan datar dan semua tepi segitiga diasumsikan garis lurus yang menghubungkan dua simpulnya. Namun, segitiga melengkung dan tepi melengkung dapat ditentukan secara opsional untuk mengurangi jumlah elemen jala yang diperlukan untuk menggambarkan permukaan melengkung. Informasi kelengkungan telah terbukti mengurangi kesalahan permukaan bola dengan faktor 1000 dibandingkan dengan permukaan yang dijelaskan oleh jumlah segitiga planar yang sama.[1] Kelengkungan tidak boleh menimbulkan penyimpangan dari bidang segitiga datar yang melebihi 50% dari dimensi terbesar segitiga.
Untuk menentukan kelengkungan, sebuah simpul secara opsional dapat berisi elemen anak <normal> untuk menentukan normal permukaan yang diinginkan di lokasi simpul. Normal harus satuan panjang dan mengarah ke luar. Jika garis normal ini ditentukan, semua sisi segitiga yang bertemu di titik tersebut melengkung sehingga tegak lurus terhadap garis normal tersebut dan dalam bidang yang ditentukan oleh garis normal dan garis lurus awal. Ketika kelengkungan permukaan pada simpul tidak terdefinisi (misalnya pada titik puncak, sudut atau tepi), elemen <tepi> dapat digunakan untuk menentukan kelengkungan tepi non-linear tunggal yang menggabungkan dua simpul. Kelengkungan ditentukan menggunakan vektor arah singgung di awal dan akhir tepi itu. Elemen <Edge> akan diutamakan jika terjadi konflik dengan kelengkungan yang ditunjukkan oleh elemen <normal>.
Ketika kelengkungan ditentukan, segitiga didekomposisi secara rekursif menjadi empat sub-segitiga. Rekursi harus dijalankan sedalam lima tingkat, sehingga segitiga lengkung asli pada akhirnya digantikan oleh 1024 segitiga datar. 1024 segitiga ini dihasilkan “dengan cepat” dan disimpan sementara hanya saat lapisan yang memotong segitiga tersebut sedang diproses untuk pembuatan.
Rumus
Dalam elemen <color> dan <composite>, rumus yang bergantung pada koordinat dapat digunakan sebagai pengganti konstanta. Rumus ini dapat menggunakan berbagai operator dan ekspresi aljabar dan matematika standar.
Kompresi
AMF dapat disimpan baik sebagai teks biasa atau sebagai teks terkompresi. Jika dikompresi, kompresinya dalam format arsip ZIP. File AMF terkompresi biasanya berukuran setengah dari file STL biner terkompresi yang setara.[3]: 275 Kompresi dapat dilakukan secara manual menggunakan perangkat lunak kompresi, atau secara otomatis dengan perangkat lunak pengekspor selama penulisan. File terkompresi dan tidak terkompresi memiliki ekstensi .amf dan merupakan tanggung jawab program parsing untuk menentukan apakah file tersebut dikompresi atau tidak, dan jika demikian untuk melakukan dekompresi selama impor.
Pertimbangan desain
Ketika subkomite Desain ASTM mulai mengembangkan spesifikasi AMF [kapan?], survei pemangku kepentingan [4] mengungkapkan bahwa prioritas utama untuk standar baru adalah persyaratan untuk format non-proprietary. Masalah unit dan kemampuan membangun menjadi perhatian yang tersisa dari masalah dengan format STL. Persyaratan utama lainnya adalah kemampuan untuk menentukan geometri dengan fidelitas tinggi dan ukuran file kecil, banyak bahan, warna, dan struktur mikro. Agar berhasil di bidang manufaktur aditif, format file ini dirancang untuk mengatasi masalah berikut
- Kemandirian teknologi: Format file harus mendeskripsikan objek secara umum sehingga mesin mana pun dapat membangunnya dengan kemampuan terbaiknya. Ini adalah resolusi dan ketebalan lapisan independen, dan tidak mengandung informasi khusus untuk satu proses atau teknik pembuatan. Ini tidak meniadakan penyertaan properti yang hanya didukung oleh mesin canggih tertentu (misalnya, warna, banyak bahan, dll.), tetapi ini didefinisikan sedemikian rupa untuk menghindari eksklusivitas.
- Kesederhanaan: Format file harus mudah diimplementasikan dan dipahami. Formatnya harus dapat dibaca dan diedit dalam penampil teks sederhana, untuk mendorong pemahaman dan adopsi. Tidak ada informasi identik yang harus disimpan di banyak tempat.
- Skalabilitas: Format file harus diskalakan dengan baik dengan peningkatan kompleksitas dan ukuran sebagian, dan dengan peningkatan resolusi dan akurasi peralatan manufaktur. Ini termasuk mampu menangani susunan besar objek identik, fitur internal berulang yang rumit (misalnya jaring), permukaan melengkung halus dengan resolusi pencetakan halus, dan beberapa komponen disusun dalam kemasan optimal untuk pencetakan.
- Performa: Format file harus mengaktifkan durasi yang wajar (waktu interaktif) untuk operasi baca dan tulis dan ukuran file yang wajar untuk objek besar pada umumnya.
- Kompatibilitas mundur: Setiap file STL yang ada harus dapat dikonversi langsung menjadi file AMF yang valid tanpa kehilangan informasi dan tanpa memerlukan informasi tambahan apa pun. File AMF juga dapat dengan mudah dikonversi kembali ke STL untuk digunakan pada sistem lawas, meskipun fitur lanjutan akan hilang.
- Kompatibilitas masa depan: Agar tetap berguna dalam industri yang berubah dengan cepat, format file ini harus dapat diperluas dengan mudah sambil tetap kompatibel dengan versi dan teknologi sebelumnya. Hal ini memungkinkan fitur-fitur baru ditambahkan sebagai jaminan kemajuan teknologi, sambil tetap bekerja dengan sempurna untuk geometri homogen sederhana pada perangkat keras tertua.
Sejarah
Sejak pertengahan 1980-an, format file STL telah menjadi standar industri de facto untuk mentransfer informasi antara program desain dan peralatan manufaktur aditif. Format STL hanya berisi informasi tentang mesh permukaan, dan tidak memiliki ketentuan untuk merepresentasikan warna, tekstur, material, substruktur, dan properti lain dari objek target yang dibuat. Karena teknologi manufaktur aditif berevolusi dari memproduksi terutama bahan tunggal, bentuk homogen untuk memproduksi geometri multi-bahan dalam warna penuh dengan bahan dan struktur mikro yang dinilai secara fungsional, ada kebutuhan yang berkembang untuk format file pertukaran standar yang dapat mendukung fitur ini. Faktor kedua yang mengantar pengembangan standar adalah peningkatan resolusi teknologi manufaktur aditif. Karena ketepatan proses pencetakan mendekati resolusi skala mikron, jumlah segitiga yang dibutuhkan untuk menggambarkan permukaan melengkung yang halus menghasilkan ukuran file yang sangat besar.
Selama tahun 1990-an dan 2000-an, sejumlah format file berpemilik telah digunakan oleh berbagai perusahaan untuk mendukung fitur khusus peralatan manufaktur mereka, tetapi kurangnya kesepakatan di seluruh industri mencegah adopsi format tunggal apa pun secara luas. Pada tahun 2006, Jonathan D. Hiller dan Hod Lipson menyajikan versi awal dari AMF dijuluki “STL 2.0”. [3] Pada bulan Januari 2009, Komite ASTM F42 baru tentang Teknologi Manufaktur Aditif didirikan, dan subkomite desain dibentuk untuk mengembangkan standar baru. Sebuah survei dilakukan pada akhir 2009[4] yang mengarah ke pembahasan standar baru selama lebih dari setahun. Hasil revisi pertama dari standar AMF menjadi resmi pada tanggal 2 Mei 2011.[5]
Selama pertemuan Juli 2013 ASTM’s F42 dan ISO’s TC261 di Nottingham (Inggris), Rencana Bersama untuk Pengembangan Standar Manufaktur Aditif telah disetujui. Sejak saat itu, standar AMF dikelola bersama oleh ISO dan ASTM.