3 puan yazan GN⁺ 2025-01-09 | 1 yorum | WhatsApp'ta paylaş

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

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

    • Sosyal medya veya blog RSS beslemelerinden ek güncellemeler alabiliyorsunuz
  • Yorumcu diğer harika gönderileri okuyordu

  • Kendi implicit yüzey çizicimi yazarken bu projenin çok işe yarayacağını düşündüm

    • Kendi yaklaşımım bir miktar benzer ama daha az optimize edilmiş ve doğrudan GLSL üretiyor
    • Bu projeyle değiştirmeyi çok istiyorum
  • libfive çoğunlukla C++ ile yazılmış 40K satırdan oluşuyor ve orijinal yazarına göre bile hacklemesi zor

    • Birkaç ay derleme yapmazsanız yapıyı çoğu zaman bozar ve CMake'i değiştirmeniz gerekir
    • Derleme sorunlarının bu kadar büyük bir mesele olmaması beni şaşırttı
  • En iyi kod tabanlı CAD yazılımını arıyorum ve cad query denedim ama birkaç sorun vardı

    • 3D baskı için önerilecek bir yazılım arıyorum
  • Üniversite yıllarında bir nükleer fizik simülatöründe implicit yüzey temelli işler yaptım

    • R fonksiyonu her yerde türevlenebilir
    • Hâlâ büyük ölçüde eski/legacy Fortran kodu kullanıldığını düşünüyorum
  • Yüzey üretimi için bir soyut ağacı SDF ile yapmak istedim

    • Hedef ağları/nokta bulutunu kullanarak arzu edilen biçime uygun bir ağaç bulma fikri
  • Implicit yüzeyler hakkında bir dizi makale ve demo gördüm

    • b-rep çekirdeğinde nelerin yapılabileceğini merak ediyordum
    • Hızlı, açık kaynaklı ve paralel olarak çalışabilen bir çekirdek görmek istiyorum
  • Ian Henry'nin projesini hatırlatıyor

  • Grafikle hiç çalışmamış biri olarak bu proje çok ilginç geliyor

    • Daha fazla demo görmek isterdim
    • Web düzenleyicide farklı programları deneyebileceğimiz bir açılır menünün olması gerçekten iyi olur