Tepe Noktası (Vertex) Optimizasyon Motoru Güncellemesi
Görünür silueti bozmadan STL boyutunu küçülten ve dilimleyici kararlılığını artıran, kenar farkındalıklı bir vertex optimizasyon adımı yayınladık.
Öne çıkanlar
- Kenar farkındalıklı vertex birleştirme: Keskin sınırları koruyarak birbirine çok yakın tepe noktalarını birleştirir.
- Dejenerik üçgen temizleme: Bazı dilimleyicileri şaşırtabilen sıfır alanlı yüzleri kaldırır.
- Deterministik çıktı sıralaması: Aynı girdilerde tekrar dönüşümlerde kararlı topoloji ve byte-seviyesinde tekrarlanabilir STL akışı.
Algoritma detayları
Kenar farkındalıklı birleştirme (neden güvenli?)
Klasik “weld” işlemi, sınırların üzerinden birleştirirse keskin köşeleri bozabilir. Bu adım, siluet için kritik vertex’leri korumak için kenar sinyallerini kullanır; düz bölgelerde ise yakın kopyaları birleştirir.
- Sınır koruması: Keskin açı değişimlerine yakın vertex’ler, kenar üzerinden birleştirmeye karşı korunur.
- Epsilon tabanlı gruplama: Yakın kopya vertex’ler uzamsal olarak gruplandırılır ve gereksiz noktalar azaltılır.
Dejenerik temizleme
Sıfır alanlı (veya sıfıra yakın) üçgenler; gürültülü girdiler, kontur temasları veya sayısal uç durumlar nedeniyle oluşabilir. Bunları kaldırmak dilimleyici uyarılarını azaltır ve garip “eksik katman” artefaktlarını önler.
Deterministik sıralama
Vertex/yüzleri kararlı bir düzende sıralıyoruz; aynı girdi aynı STL akışını üretir. Bu; cache, debug ve regresyon testini ciddi ölçüde kolaylaştırır.
convert(input) → stl_A
convert(input) → stl_B
# with deterministic ordering:
hash(stl_A) == hash(stl_B) ✅Boru hattında (pipeline) ne değişti?
Bu sürüm, raster/vektör örnekleme ve mesh üretiminden sonra; STL serileştirmesinden önce çalışan bir "mesh sonrası" optimizasyon aşaması ekler.
input (PNG/SVG)
→ normalize (colorspace / alpha / viewBox)
→ sample (height field / contours)
→ mesh generation (triangulation)
→ vertex optimization (weld + cull + ordering) ← NEW
→ STL serialization (stream)Etki
- Daha küçük STL dosyaları: Daha az gereksiz vertex/yüz, daha hızlı yükleme ve daha hızlı dilimleme demektir.
- Aşağı akış araçları için daha temiz geometri: Dilimleyicilerde “degenerate facets” gibi uyarıların azalması.
- UX değişikliği yok: Araç arayüzü aynı kaldı; iyileştirmeler içsel.
Bu NE yapmaz?
- Gürültülü PNG kenarını sihirli biçimde pürüzsüzleştirmez — önce 2D girdiyi temizleyin.
- Genel amaçlı bir decimator değildir — poligon stratejisi için Poligon sayısını optimize et rehberine bakın.
- Mesh non-manifold ise önce düzeltme rehberi: Non-manifold STL düzeltme.
En iyi etki için keskin kenarlı, yüksek kontrastlı temiz bir PNG ile dönüşüm yapın. PNG / SVG → STL dönüştürücü.