Tanıtım
- Fidget, büyük ölçekli matematiksel ifadeleri temsil etme, derleme ve değerlendirme için bir kütüphanedir; özellikle implicit yüzeylerin arka ucu olarak tasarlanmıştır.
- Çeşitli amaçlar için esnek biçimde kullanılabilen bir kütüphanedir.
Implicit yüzey nedir?
- Implicit yüzey, f(x,y,z)→d biçimindeki bir ifadedir; d pozitifse nokta modelin dışında, negatifse içinde yer alır.
- Örneğin, yarıçapı 1 olan bir küre f(x,y,z)=x²+y²+z²−1 ile ifade edilebilir.
- Fidget, temel aritmetik işlemlerle kurulan kapalı-form implicit yüzeylere odaklanır.
Implicit yüzeylerin avantajları
- Implicit yüzeyler sade bir yapıya sahiptir ve büyük ölçekli paralel değerlendirme için uygundur.
- CSG işlemleri (birleşim, kesişim vb.) kolayca uygulanabilir.
- Kapalı-form denklemler optimizasyon için elverişlidir ve değerlendirme sırasında hangi dalın seçildiği izlenebilir.
Köken
- Son 10 yıl boyunca implicit yüzeylerin render edilmesi ve değerlendirilmesi üzerine araştırma yapıldı.
- Fidget, kişisel bir araştırma projesidir ve libfive gibi mevcut çekirdeklerin yerine geçecek şekilde Rust ile yazılarak kullanımı kolaylaştırılmıştır.
Kütüphane yapısı
- Fidget üç ana katman ve demo uygulamalardan oluşur.
Ön yüz: Matematiksel ifade oluşturma
- Fidget, matematiksel ifadeleri oluşturmak için Rhai betik dilini kullanır.
- Matematik ağacı, tekrarları kaldırmak için yönlendirilmiş bir döngüsüz grafik olarak düzenlenir.
- SSA tape, grafiği doğrusal koda düzleştirir.
Arka uç: Hızlı ve esnek değerlendirme
- Fidget arka ucu, ön yüze ayrılmıştır ve çeşitli değerlendirme modlarını destekler.
- JIT derleyici, bayt kodunu makine komutlarına dönüştürerek performansı üst düzeye çıkarır.
Algoritmalar
- Fidget, hızlı değerlendirme temeline dayalı olarak çeşitli render ve meshleme algoritmalarını uygular.
- Meshleme, su geçirmezlik, manifoldluk ve keskin özelliklerin korunmasını garanti eden Manifold Dual Contouring kullanır.
Demolar
- Fidget çeşitli demolar içerir; web GUI en ilgi çekici bölümdür.
- Web geliştirme alanındaki en yeni teknolojileri keşfetme fırsatı olarak kullanılmaktadır.
Gelecek potansiyeli
- GPU arka ucu eklenmesi, meshleme iyileştirmeleri, standart kütüphane oluşturulması ve üst düzey dil bağlayıcıları gibi konular düşünülmektedir.
Sonuç
- Fidget artık herkese açık olarak kullanılabilir ve Rust projelerine kolayca eklenebilir.
- Açık kaynak ve ticari kullanıma uygun bir lisans ile sunulmaktadır.
1 yorum
Hacker News yorumları
Bu proje, veri yapıları, algoritmalar, düşük seviyeli performans çalışmaları, derleyiciler, renderlama/bilgisayar grafikleri, UI/UX tasarım araçları ve GPGPU programlama gibi çeşitli bilgisayar bilimi alanlarını kapsıyor
Yorumcu diğer harika gönderileri okuyordu
Kendi implicit yüzey çizicimi yazarken bu projenin çok işe yarayacağını düşündüm
libfive çoğunlukla C++ ile yazılmış 40K satırdan oluşuyor ve orijinal yazarına göre bile hacklemesi zor
En iyi kod tabanlı CAD yazılımını arıyorum ve cad query denedim ama birkaç sorun vardı
Üniversite yıllarında bir nükleer fizik simülatöründe implicit yüzey temelli işler yaptım
Yüzey üretimi için bir soyut ağacı SDF ile yapmak istedim
Implicit yüzeyler hakkında bir dizi makale ve demo gördüm
Ian Henry'nin projesini hatırlatıyor
Grafikle hiç çalışmamış biri olarak bu proje çok ilginç geliyor