Kafeslerdeki T-bağlantıları neden çatlaklara neden olur?


19

Birçok kaynaktan, 3D kafeslerde T-kavşaklarına sahip olmanın kötü bir fikir olduğunu duydum çünkü render sırasında çatlaklara neden olabilir. Birisi bunun neden olduğunu ve bunlardan kaçınmak için neler yapabileceğini açıklayabilir mi?


Yanıtlar:


20

lhf'nin cevabı mozaikleme açısından iyidir, ancak bunlar daha basit üçgen örgü kullanım durumlarında ortaya çıkabilir.

ABC, ADE ve DBE'nin üç ekran boşluğu üçgeninin bu önemsiz örneğini ele alalım ...

resim açıklamasını buraya girin

Her ne kadar E noktası matematiksel olarak tam olarak AB çizgi segmentinde olacak şekilde tasarlanmış olsa da, boru hattı rasyonel sayılar (örn. Https://gmplib.org/ ) gibi tam kesin değerler kullanmayacaktır . Bunun yerine, büyük olasılıkla şamandıralar kullanacaktır ve bu nedenle bazı yaklaşık / hatalar tanıtılacaktır. Sonuç muhtemelen şöyle bir şey olacaktır:

resim açıklamasını buraya girin

Not tüm köşe yanlışlıklar olabilir. Yukarıdaki örnekte bir çatlak görülmesine rağmen, T bağlantısı bunun yerine kenar boyunca üst üste binme ile sonuçlanarak piksellerin iki kez çizilmesine neden olabilir. Bu kötü görünmeyebilir, ancak şeffaflık veya şablon işlemlerinde sorunlara neden olabilir.

Sen belki o zaman kayan noktalı düşünüyorum önemsiz olacaktır, ama bir Oluşturucu, ekran-uzay köşe (X, Y) değerleri tanıtıldı hata neredeyse her zaman sabit nokta sayıları temsil edilir ve ideal konumu irade gelen yer değiştirme böylece genellikle çok daha büyük olur. Ayrıca, oluşturma donanımı, çizgi segmentini piksel iç piksel kendi iç hassasiyetiyle "enterpole" ettiğinden, E'nin yuvarlatılmış konumundan sapma olasılığı daha da yüksektir.

T-kavşağı, örneğin ABC üçgenini ikiye, yani AEC ve EBC'ye bölerek "kaldırılırsa", hataların getirdiği değişimlerin tutarlı olması nedeniyle sorun ortadan kalkacaktır.

Şimdi, oluşturucuların (özellikle HW) neden tepe XY koordinatları için sabit nokta matematiği kullandığını sorabilirsiniz? Neden sorunu azaltmak için kayan nokta kullanmıyorlar? Bazıları (örneğin, Sega'nın Dreamcast'i) olmasına rağmen, üçgen kurulum matematiklerinin, özellikle uzun ince üçgenler için felaket açısından yanlış hale geldiği ve hoş olmayan şekillerde boyut değiştirdiği başka bir soruna yol açabilir.


2
"Tepe (X, Y) değerleri neredeyse her zaman sabit nokta sayılarıyla temsil edilir" dediğinde, rasterleştiricide ekran boşluğu tepe koordinatlarını kastettiğini tahmin ediyorum, değil mi? Orijinal model-uzay köşeleri değil.
Nathan Reed

2
@NathanReed Evet. Sadece ekran alanı X&Y (ve belki de bazı GPU'larda Z). Bunu daha net hale getirmek için düzenleyeceğim.
Simon F

9

Parametrik yüzeyleri parametre alanında bir ağ ile modellerken, T-kavşakları büyük olasılıkla yüzeyde süreksizlik olarak görünecektir . Bunlar görüntü oluşturmada boşluklar olarak görünür. Aşağıya bakınız.

Daha genel olarak, üçgen kafeslerdeki T-kavşakları muhtemelen renk ve normaller gibi enterpolasyonlu özelliklerin süreksizliklerine neden olacaktır.

resim açıklamasını buraya girin resim açıklamasını buraya girin



4

Kayan nokta yuvarlama hatası.

T kavşağını dönüştürdükten ve T'deki nokta kenardan yuvarlanabilir.

Daha sonra, bir piksel için örneklenen bir parçanın 2 yüzey arasındaki boşlukta yatması mümkündür.

Bu, ilk etapta bir T-bağlantısının olmamasıyla düzeltilebilir.


3

Bundan kaçınmanın basit yolu, tüm köşelerinizin kaynak yapılmasını sağlamaktır

Sorun, bir tepe noktasıyla kenarlar boyunca kesikleriniz var, ancak kaynak yapmak / bağlamak için bitişik kenarda karşılık gelen bir tepe noktanız yok, eğer bir gömlek üzerindeki bir düğme gibi düşünüyorsanız, düğmesine basın, ancak kumaşın açık olması için bir delik vermediniz.

Aşağıdaki resimde, kırmızı noktalar doğru kaynaklı köşeleri temsil eder, mavi noktaların bitişik kenara kesilmesi için ek bir tepe noktasına ihtiyacı vardır.

resim açıklamasını buraya girin

Genel olarak, modelinizi dörtlü ve üçlü olarak tutmak iyi bir uygulamadır, bu da her zaman kaynak yapmak için karşılık gelen bir tepe noktasına sahip olmanız gerektiğinden bu sorunu hafifletmeye yardımcı olur. Mesh üzerinde alt bölümleme yöntemleri kullanmayı planlıyorsanız, dörtlü kalmanıza da yardımcı olur.

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.