Mesh analizinde bir renk göstergesi eklemenin bir yolu var mı?

Aug 17 2020

Bu Nesnenin duvar kalınlığını analiz etmenin gerekli olduğu tıbbi bir araştırma yapıyorum. Ağları otomatik olarak renklendiren ağ analizini kullandım. Renklerin duvar kalınlığını belirtmek için maalesef bir renk açıklaması eklemenin bir yolunu bulamıyorum. Bunun gibi bir şey arıyorum:

https://www.researchgate.net/figure/Three-dimensional-3D-atrial-wall-thickness-variation-across-the-whole-human-atria-Top_fig2_319241926

Bu sorunu çözmenin bir yolu var mı?

Böyle bir şey izledim.

Bu ayarlarla objekt mavi kalır.

Blender'da oldukça yeni olduğum için, gölgeleme düzenleyicisini bulmak ve komut dosyalarını kullanmak benim için o kadar kolay olmadı ama yavaş yavaş onunla uyumlu hale geliyorum. Gölgelendirme düzenleyicisindeki ayarları yeniden oluşturmaya çalıştığımda, komut dosyasını, MaptThickness "grubuna bağlayamadım. NormalDepth metnini test_Thickness'inizden volume projekt @vklidu'dan kopyaladım ve yüklemek için (.py) olarak kaydettim bir eklenti olarak ama işe yaramadı. (.osl) olarak kaydettiğimde Blender bana göstermiyor bile.Sanırım oldukça kolay ama betiği aslında nasıl uygulayabilirim?

Yanıtlar

6 vklidu Aug 17 2020 at 11:41

Inside özelliği etkinleştirilmiş Ortam Oklüzyon düğümü ne olacak ? Sonuç ne kadar kesin emin değilim, ancak Mesh Analizinden çok daha iyi çalışıyor gibi görünüyor .

(Ekrandaki çubuk sadece bir 2D gradyan.)

Mesh Analizi ile karşılaştırın, bu gölgelendirici:

  • işlenebilir (Döngü motoruyla)
  • renk tepe noktasına atanır (yüze değil)

İpuçları:

  • Her iki malzemede aynı ColorRamp düğümünü paylaşmak için bu düğümü bir malzemede Düğüm Grubuna kapatın ve bu Düğüm Grubunu ikinci malzemeye ekleyin .
  • Renk Yönetimi geçiş filmik için Standardı

Not: AO etkinleştirilmiş Eevee renkler üretir, ancak kalınlık için kullandığımız "Inside" özelliği yoktur.


Doğruluk

oldukça ilginç Q, çünkü kalınlık ölçü yönüne bağlıdır. Derinlik yönünde bir kalınlığı söylemek ve ölçmek için kullandığımız cam levha gibi, yani ince. Ancak, bu durumda çok kalın olacak şekilde genişlik yönünde kalınlığı da ölçebilirsiniz.

Mesh Analizinin ölçtüğü budur. @RobinBetts'in OSL gölgelendiricileriyle karışımını kontrol ederseniz, içinde NormalDepth adlı bir malzeme bulunur ve bu, Mesh Analizi ile tam olarak aynı şeyi yapar - tek bir ışını normal yönden başka bir yüze doğru çeker. Bu mesafe, bir yüze atanan karşılık gelen renkle temsil edilir. Dolayısıyla, düğüm grubunu açıp Eşleme Aralığı düğümünü kontrol ederseniz - ilk iki değer Renk Rampasının başlangıcını / bitişini tanımlar .

Örnek - Min = 0'dan itibaren kırmızı sıfır mesafede başlar ve Maks'dan = 1 , 1 m mesafede mavi biter anlamına gelir. Bu iki değerle oynarken, ColorRamp'ın hangi mesafeyi temsil ettiğini tam olarak belirleyebilirsiniz. Yani bu malzeme sizin için en iyisi gibi görünüyor.

Ancak Mesh Analizi ile aynı şekilde matematiksel olarak doğru olan "tuhaf" renkli yüzler oluşturur. Maymun'un çenesinin alt kısmını kontrol ettiğinizde olduğu gibi, ağın o kısmı o kadar kalın olmasa da koyu mavi vardır, ancak yüzden atılan ışın kaşlara kadar uzanır, bu mesafe o yüz için koyu maviye karşılık gelir.

Tek bir ışın yönü kullanılmadığında kalınlığın nasıl hesaplanacağına dair başka yöntemler de vardır. AO'nun yarım küre yönünde birçok kişiyi vurduğu gibi. Nihai renkler bu mesafelerin ortalamasını temsil eder.

Karşılaştırma - Normal Derinlik (OSL) / Ortam Tıkanıklığı / Lambert Derinliği (OSL)

Çubuk nesnesi, kama nesnesi olarak 1m yüksekliğinde ve 1m derinliğindedir. Soldaki çubuk Normal Derinlik gölgelendiricisini kullanır ve yalnızca mesafe YALNIZCA tek bir yönden ölçüldüğü için çalışır. Küp 0,5 m'dir, bu nedenle çubuğun ortasındaki mesafe için doğru renkte saf yeşildir. Ancak gördüğünüz gibi, diğer iki gölgelendirme, Küp'ün köşelerinin 3 boyutlu gözlemde Orta Kütle küpünden daha ince olduğunu bilmenizi sağlar.

NormalDepth gölgelendiricisi , benzer renkleri elde etmek için Ambient Occlusion ve Lambert değerleriyle doğru görünüyor . Ve nasıl kontrol edeceğime dair hiçbir fikrim yok.

3 RobinBetts Aug 17 2020 at 21:16

Bu, @ vklidu'nun cevabının bir tamamlayıcısıdır .. AO, doğru yol gibi görünüyor. Uygulamanıza bağlı olarak, dikkate alınması gereken başka 'kalınlık' ölçüleri olabilir.

Ben normal bir ray uzunluğu alarak, hızlı OSL shader yazacaktım, ama bütün toprakları, @Robert Pali tarafından çok kapsamlı bir şekilde ele edilmiştir burada . Yani bu cevap için burada kredi yok lütfen, senaryolar onun.

Model için @ Pali'nin Lambertian kalınlığını (normal önyargılı, ancak çevresinde örnekleme) ve 0-1 arasındaki renk kaması için basit Normal kalınlığını kullanmak, şunu verir:

@Vklidu'nun bahsettiği gibi, eşlemelerin senkronize kalmasını sağlayabilirsiniz. Tüm malzemeler için aralık eşlemesini bir gruba koyarak ve grubu düzenleyerek malzemeler arasında:

@ Pali'nin gölgelendiricileri ile AO arasındaki tek fark, AO'nun yarımkürede normal gölgeleme noktasının etrafına ' Örnekler ' örnekleme ışınları göndermesi ve cevabında tanımladığı şekillerde önyargılı olarak sadece bir tane göndermesidir.