Çakışan analitik eğrilerin kapsamını nasıl doğru bir şekilde hesaplayabilirim?


10

2B şekillerin kenar yumuşatması, bir pikselin şekil tarafından kapsanan kısmını hesaplamak için kaynar. Üst üste binmeyen basit şekiller için bu çok zor değildir: şekli piksel dikdörtgene karşı kırpın ve elde edilen şeklin alanını hesaplayın. Ancak, birden çok şekil aynı pikselle çakışıyorsa zorlaşır. Alanların toplanması, bir şeklin başka bir şekli kapsadığı miktarı ihmal ederse, hesaplanan kapsama alanının çok yüksek olmasına neden olabilir. Örneğin, yazı tipi oluşturma hakkında bu makalenin Sınırlamalar bölümüne bakın . İki eğrinin farklı renklere sahip farklı nesnelerden geldiği bir durumda da olabilirsiniz (bu nedenle, iki şeklin birleşmesi için toplam kapsama alanı değil, her birinin ayrı ayrı kapsamı ile ilgilidir).

Tam bir doğrulukla ilgilenirseniz, bu nasıl hesaplanır? Daha karmaşık olsa bile, eğriler gibi çokgen olmayan şekilleri örtüşmek için kapsamı nasıl doğru hesaplarsınız? Çoklu örnekleme veya stokastik tekniklere geri dönmekten başka seçeneğiniz olmadığında bir anlamı var mı?

Yanıtlar:


10

Bunu tüm köşe vakaları için verimli bir şekilde analitik olarak yapmanın gerçekten iyi bir yolu yoktur. Analitik kapsam hesaplaması yapmaya çalışan ticari 2D oluşturucuların çoğu veya tamamı, çoklu örnekleme yöntemlerinin yapmadığı tahmin edilebilir hatalar yapar.

Tipik bir sorun, aynı kenarı paylaşan üst üste gelen iki şekildir. Yaygın durum, alfa kanallarının hafifçe takma çok kalın bir alfa kenarına kadar toplanmasıdır. Veya şekiller farklı renkteyse, sistem arka planın rengini karıştırır. Bu son derece can sıkıcı.

görüntü

Resim 1 : Oluşturma motoru kapsamı karıştırır ve hiçbir anahat olmaması gereken yerde ince beyaz bir anahat oluşturur.

İkinci mükemmel kapsama alanı kutu filtreleme demektir. Kesinlikle daha iyisini yapabiliriz. Şekillerin doğru yapılması için boole işlemleri gerektirecek birçok özel köşe vakası olduğu düşünüldüğünde, süper örnekleme hala daha üstündür. Aslında kapsama tahminleri, örneklemeyi en çok ihtiyaç duyulan yerlerde yoğunlaştırmak için kullanılabilir.

Durum, alt piksel seviyelerindeki poligonlara sadeleştirilebilir, ardından ayrık analitik çözüm çözülebilir. Ancak bu esneklik pahasına. Örneğin, gelecekteki vektör sistemlerinin, diğer değişken renkli nesnelerde olduğu gibi, analitik çözümler için sorun teşkil eden değişken genişlikte bulanık çizgilere izin vermek isteyebileceği söz konusu değildir.

Analitik olarak nasıl yapılır

Analitik sahne

Resim 2 : Bu sahneye sahip olduğunuzu varsayalım, sağ tarafta patlamış görünüm

Şimdi bunu sadece analitik olarak yapamazsınız, her parça ayrı ayrı ve daha sonra verileri birleştirebilirsiniz. Çünkü yanlış verilere yol açar. Gördüğünüz gibi alfa harmanlaması, mavinin boşlukları doldurmasına izin verir.

Yapmanız gereken sahneyi ayırmaktır, böylece her şekil diğerinin altında olanı ortadan kaldırır:

resim açıklamasını buraya girin

Resim 3 : Alttaki yüzeyleri kesmeniz gerekir.

Şimdi her şey opaksa, o zaman bu tamamen düzdür. sadece her parçanın alanını hesaplayın ve bunu renkle çarpın ve toplayın. Şimdi böyle bir şey kullanabilirsiniz bu .

Bireysel şekilleriniz rota dışı opak değilse, ancak bu bir düzeyde bile yapılabilirse, tüm bunlar yıkılır.

Hatırlamak:

  • AA hesaplamasının doğrusal renk uzayında yapılması ve tekrar kullanım alanına dönüştürülmesi gerekir.

Verimliliği fazla önemsemediğimizi söyleyin. Şekillerdeki boole işlemleri için kapsama hesaplamaları yapmaya nasıl devam ederiz? Genel olarak mı yoksa sadece belirli şekiller için mi?
John Calsbeek

@JohnCalsbeek ok im analitik cevap oluşturmaya başlıyor, biraz zaman alacak
joojaa
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.