3 poin oleh GN⁺ 2025-01-09 | 1 komentar | Bagikan ke WhatsApp

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

 
GN⁺ 2025-01-09
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

    • Pembaruan tambahan bisa didapat melalui media sosial atau RSS blog
  • Penulis sedang membaca beberapa postingan hebat lainnya

  • Saya pikir proyek ini akan sangat berguna saat saya menulis penggambar permukaan implisit saya sendiri

    • Pendekatan saya sendiri agak mirip, tetapi kurang dioptimalkan, dan saya membuat GLSL secara langsung
    • Saya tergoda untuk menggantinya dengan proyek ini
  • libfive sebagian besar ditulis dalam C++ dengan sekitar 40K baris, sehingga sulit untuk di-hack bahkan bagi penulis aslinya

    • Jika tidak dikompilasi selama beberapa bulan, biasanya build jadi rusak sehingga perlu mengutak-atik CMake
    • Saya terkejut karena masalah build bisa sejauh itu
  • Sedang mencari perangkat lunak CAD berbasis kode terbaik, mencoba cad query tetapi ada beberapa masalah

    • Mencari rekomendasi software untuk pencetakan 3D
  • Di masa kuliah, saya pernah mengerjakan pendekatan berbasis permukaan implisit dalam simulator fisika nuklir

    • Fungsi R ini terdiferensiasi di semua titik
    • Kami menduga bahwa masih banyak kode Fortran lama yang masih digunakan
  • Ingin mengerjakan pohon abstrak untuk pembuatan permukaan menggunakan SDF

    • Ide dari goal mesh/point cloud adalah menemukan tree yang cocok berdasarkan bentuk yang diinginkan
  • Saya telah melihat paper dan demo tentang permukaan implisit, jadi saya bisa membangun model dengan imajinasi

    • Bertanya-tanya apakah mungkin melakukan hal yang biasa dilakukan di kernel b-rep
    • Ingin melihat kernel yang cepat, open source, dan mendukung pemrosesan paralel
  • Mengingatkan saya pada proyek Ian Henry

  • Sebagai orang yang belum pernah berkecimpung di dunia grafis, proyek ini sangat menarik

    • Saya berharap ada lebih banyak demo
    • Saya menyarankan agar editor web memiliki menu tarik-turun untuk mencoba berbagai program