Pengenalan
- Fidget adalah pustaka untuk mengekspresikan, mengompilasi, dan mengevaluasi ekspresi matematika dalam skala besar, dan pada dasarnya dirancang sebagai backend untuk permukaan implisit.
- Ini adalah pustaka yang fleksibel untuk digunakan dalam berbagai kebutuhan.
Apa itu permukaan implisit?
- Permukaan implisit adalah ekspresi berbentuk f(x,y,z)→d, di mana d bernilai positif berarti berada di luar model, dan bernilai negatif berarti berada di dalam.
- Misalnya, sebuah bola beradius 1 dapat direpresentasikan sebagai f(x,y,z)=x²+y²+z²−1.
- Fidget berfokus pada permukaan implisit bentuk tertutup yang dibangun dari operasi aritmatika dasar.
Keunggulan permukaan implisit
- Permukaan implisit bersifat ringkas dan cocok untuk evaluasi paralel berskala besar.
- Operasi CSG (penggabungan, perpotongan, dll.) dapat diproses dengan mudah.
- Persamaan bentuk tertutup menguntungkan optimasi, karena memungkinkan pelacakan cabang mana yang dipilih saat evaluasi.
Asal-usul
- Dalam sepuluh tahun terakhir, dilakukan penelitian tentang rendering dan evaluasi permukaan implisit.
- Fidget adalah proyek riset pribadi yang ditulis dalam Rust agar lebih mudah dipakai dibandingkan kernel lama seperti libfive.
Struktur pustaka
- Fidget terdiri dari tiga lapisan utama yang terpisah dengan jelas dan aplikasi demo.
Frontend: Membangun ekspresi matematika
- Fidget membangun ekspresi matematika menggunakan bahasa skrip Rhai.
- Pohon matematika dinormalisasi menjadi DAG untuk menghapus duplikasi.
- Tape SSA meratakan graf menjadi kode linear.
Backend: Evaluasi cepat dan fleksibel
- Backend Fidget dipisahkan dari frontend dan mendukung beragam mode evaluasi.
- Kompilator JIT mengonversi bytecode menjadi instruksi mesin untuk memaksimalkan kinerja.
Algoritma
- Fidget menerapkan berbagai algoritme rendering dan meshing berdasarkan evaluasi yang cepat.
- Meshing menggunakan Manifold Dual Contouring untuk menjamin watertightness, manifoldness, dan mempertahankan fitur tajam.
Demo
- Fidget mencakup berbagai demo, dan GUI web adalah bagian yang paling menarik.
- Ia juga dipakai sebagai kesempatan untuk mengeksplorasi teknologi pengembangan web terbaru.
Potensi masa depan
- Penambahan backend GPU, penyempurnaan meshing, pembangunan pustaka standar, dan binding bahasa tingkat tinggi sedang dipertimbangkan.
Kesimpulan
- Fidget kini tersedia untuk penggunaan publik dan dapat dengan mudah ditambahkan ke proyek Rust.
- Disediakan dengan lisensi yang ramah untuk penggunaan open source maupun komersial.
1 komentar
Pendapat Hacker News
Proyek ini mencakup berbagai bidang ilmu komputer, termasuk struktur data, algoritma, optimasi performa tingkat rendah, kompilator, rendering/komputer grafis, alat desain UI/UX, dan pemrograman GPGPU
Penulis sedang membaca beberapa postingan hebat lainnya
Saya pikir proyek ini akan sangat berguna saat saya menulis penggambar permukaan implisit saya sendiri
libfive sebagian besar ditulis dalam C++ dengan sekitar 40K baris, sehingga sulit untuk di-hack bahkan bagi penulis aslinya
Sedang mencari perangkat lunak CAD berbasis kode terbaik, mencoba cad query tetapi ada beberapa masalah
Di masa kuliah, saya pernah mengerjakan pendekatan berbasis permukaan implisit dalam simulator fisika nuklir
Ingin mengerjakan pohon abstrak untuk pembuatan permukaan menggunakan SDF
Saya telah melihat paper dan demo tentang permukaan implisit, jadi saya bisa membangun model dengan imajinasi
Mengingatkan saya pada proyek Ian Henry
Sebagai orang yang belum pernah berkecimpung di dunia grafis, proyek ini sangat menarik