holodepth

Babylon.js · Mesh & materyal

PBR materyal: fiziksel yüzey ve kanal düzeni

Holodepth'te Three.js tarafında PBR'i çoğu zaman MeshStandardMaterial, aydınlatma modeli ve tek tek texture slotları üzerinden işleriz — doğru bir çerçevedir. Babylon.js sayfasında ise aynı fiziksel görünüm düşüncesini motorun birleşik PBRMaterial kabuğu üzerinden okuyacağız: metal–rough iş akışı, hangi haritanın neyi temsil ettiği ve özellikle dosya içinden gelen çok kanallı dokuların nasıl yorumlandığı.

Bu sayfa shader matematiğini satır satır üretmez; amaç "açık kapı" bırakmamak: her başlıkta hem sezgisel anlam hem de pratikte karşılaşılan yapı (ör. kanal paketleme) netleşecek. Uzunluğu tablolar ve kısa alt başlıklarla dengeledik.

Özet: metal–rough üçlüsü

Kavram Kullanıcıya ne ifade eder? Babylon.js pratiği
Base color / albedo Mikro yüzey olmadan "katı rengi"; metalde kısıtlı kullanım. albedoColor ve/veya albedoTexture; metal yoğunluğu ile birlikte okunur.
Metallic Yüzey metal mi yalıtkan mı; iletkenlik ile ilişkilendirilir. Tek değer veya dokuda kanal; genelde roughness ile aynı dosyada paketlenir.
Roughness Yüzey pürüzlülüğü; yansımanın keskinliği. Tek değer veya dokuda kanal; düşük değer = daha parlak speküler.

PBRMaterial ve iş akışı seçimi

Babylon.js'te üretimde sık kullanılan malzeme sınıfı PBRMaterial'tır. İki büyük dünya vardır: metal–rough (günümüzde varsayılan dil) ve tarihî olarak specular–glossiness. Holodepth çizgisi metal–rough üzerinden gider; metallic ve roughness skalerleri ya da dokuları bu çerçeveye göre yorumlanır. Specular–glossiness kullanıyorsanız, doku kanallarının anlamı değişir — aynı dosyayı "metal–rough sanarak" bağlamak renk ve parlaklık hataları üretir.

Motor tarafında bu seçim, sahneye hangi formül yolunun bağlanacağını belirler; bu yüzden DCC veya glTF ihracında iş akışını sabitlemek takım disiplinidir.

Kanallar ve haritalar: her biri neyi taşır?

Albedo / temel renk

Temel renk, ışık hesaplanmadan önceki yüzey rengidir; gölgelenmiş veya parlaklıkla çarpılmış final renk değildir. Metal yüzeylerde efektif baz renk davranışı ortam yansıması ile görünür; tamamen metal bölgelerde «saf renk» okuması bazen yanıltıcıdır — bu yüzden üretimde metal bölgelerde albedo'yu nötr tutmak yaygın bir pratikir.

Metallic ve roughness

İkisi birlikte mikro yüzey modelinin kalbidir: metal olmayan bölgelerde difüz yansıma, metal bölgelerde ise iletken yüzey davranışı devreye girer; pürüzlülük ise speküler lobun genişliğini kontrol eder. Tek dokuda birleştirildiğinde genellikle gri tonlu bir görüntü görürsünüz — renk bilgi taşır, «güzel görünmek» zorunda değildir.

Normal haritası

Yüksek poligon detayını düşük poligon üzerinde taklit eder; vektörler genelde teğet uzayında kodlanır. Ölçek (normal map strength) fazla olursa kenarlarda parıltı artefaktları görülür; eksik olursa yüzey düz kalır.

Ambient occlusion

Çevresel gölgelenmeyi temsil eder; geometrik oluk ve birleşimleri karanlıklaştırır. Fiziksel olarak doğru tam aydınlatmanın yerine geçmez; çoğu zaman üretim arkasında konfor için kullanılır ve aşırı güçlü AO «kirli» görünüm yapar.

Emissive

Kendi kendine ışık yaydığı gösterilen bölgeler için kullanılır; gerçek ışık kaynağı yerine geçmez — çevreyi aydınlatmak için çoğu kurulumda ek ışık nesneleri gerekir. Parlak ekranlar ve küçük LED detayları için uygundur.

Özel yapı: glTF metal–rough tek dokusu (ORM)

Çekirdek glTF 2.0 tarafında metal–rough haritası çoğu zaman aynı dokuda saklanır: G kanalı pürüzlülük ( roughness), B kanalı metalik ( metallic). Ortam gölgelenmesi (occlusion) ise sıklıkla ayrı bir doku olarak gelir veya ihracat aracınız üç kanalı tek dosyada birleştirmiş olabilir. Üretim boru hatlarında sık görülen ORM pratiği (R: gölgelenme, G: pürüzlülük, B: metalik) tek dosyada üç bilgiyi paketler — hangi düzenin kullanıldığını dosya başına kontrol etmek gerekir.

Motor ve araçlar içeri alırken kanalları eşler; siz tek bir «metal–rough görseli» bağladığınızı varsayıp yanlış kanalı örneklerseniz parlaklık ve gölgelenme kayar. Çözüm: ihracat ayarını ve bağlı slotları doğrulayın; şüphede kanalı tek tek izole edin.

Pratik ipucu

Harita dosyasını görüntü düzenleyicide kanal bazında incelemek (yalnız kırmızı / yalnız yeşil / yalnız mavi), paketlemenin gerçekten beklediğiniz düzen mi olduğunu en hızlı gösterir.

Ortam yansıması ve sahne ortamı (IBL)

PBR metal yüzeyler ve parlak pürüzlülükler için çevrede ne var? sorusuna duyarlıdır. Tek tek noktasal ışıklar eksik kaldığında yüzey «ölü» görünür; bu boşluğu dolduran şey çoğu zaman ortam haritası ( environment texture / küresel örneklenmiş ortam) ile gelir. Babylon.js sahnesinde ortamın bağlanması, materyalin tek başına değil sahne atmosferiyle birlikte düşünülmesi gerektiği anlamına gelir ( Sahne · ortam ile uyumlu okuma).

Ortam yokken yapılan karşılaştırmalar yanıltıcıdır: iki materyal paketi «aynı kod» ile bile farklı görünür çünkü yansıma içeriği eksiktir.

Mikro yüzey uzantıları: clearcoat, sheen

Clearcoat ve sheen, metal–rough kanalları çekirdeğinin üstüne bindirilen isteğe bağlı mikro yüzey katmanlarıdır; ayrı glTF uzantıları olarak da gelirler. Bu sayfada amaç motor API sözlüğü vermek değil, hangi karışıklığın sahneyi bozduğunu sabitlemektir: ikisi de "daha parlak olsun" diye baz pürüzlülüğü oynamakla çözülmez.

Clearcoat tipik olarak ince, ikinci bir dielektrik lobu gibi düşünülür: alt yüzeyin pürüzlülüğü (base roughness) tabanın dağılımını, üst vernik katmanının pürüzlülüğü (clearcoat roughness) ise cam benzeri üst yüzeyin dağılımını kontrol eder. İkisini aynı "parlaklık düğmesi" sanmak, ya çift parlama ya da mat taban üzerinde yapay cam hissi üretir. Üst katman ortam yansımasına da duyarlıdır; ortam kapalıyken vernikli yüzeyi ayarlamak yanıltıcı olabilir — önceki bölümdeki IBL uyarısının uzantıya taşınmış halidir, yeni bir istisna değildir.

Sheen ise kumaş, keçe veya tüy gibi yüzeylerde ızgara açısına yakın (grazing) ek parlama verir; metalik tabanı "kumaş gibi" göstermek için metal kanalını ezmeye çalışmak yerine, doğru kategori için sheen açılır. Renk / yoğunluk kanalları üretimde sık unutulur; sonuç ya soluk ya da post-proses / rim ışığına bağımlı görünüme kayar — bu bölüm rim ışığı anlatmaz, yalnız şunu söyler: sheen ayrı bir yüzey lobudur, albedo ile aynı şey değildir.

  • Temel roughness ile kaplama pürüzlülüğünü ayırın: biri taban dağılımı, diğeri üst katman; tek haritadan "ikisini birden" tahmin etmeyin.
  • Sheen'i stil filtresi sanmayın: ihtiyaç yoksa kapalı tutun; açık bırakılan her uzantı hem sahne karşılaştırmasını hem de doku örnekleme yükünü karmaşıklaştırır.
  • Varlık tarafı: dışarıdan gelen model uzantıları taşımıyorsa motorda elle açmak tutarlılığı kırar; ihracat öncesi glTF uzantı listesini kontrol edin.

Varsayılan: kapalı

Araba boyası, cilalı plastik, kadife gibi gerçekten iki katmanlı veya tüylü okuma gerektiren sahnelerde clearcoat / sheen anlamlıdır. "Biraz daha premium dursun" diye açmak, ışık değişince beklenmedik speküler katmanlar üretir ve hata ayıklamayı zorlaştırır. Şüphede önce çekirdek kanallarla hedefe yaklaşın; uzantıyı son ince ayar olarak ekleyin.

Özet: clearcoat ve sheen farklı fiziksel hikâyeler taşır; temel pürüzlülükle karıştırılmamalıdır. İhtiyaç yoksa kapalı tutmak hem maliyet hem bakım basitliği sağlar — ek örneklemeyi sadeleştirmenin ayrıntılı tablosu bir sonraki bölümde.

Performans: doku sayısı ve çözünürlük

Her ekstra doku örneği (texture sample), örnek başına maliyet ekleyebilir; mobil web'de az sayıda düşük çözünürlüklü bir set, çok sayıda 4K haritadan iyidir. Normal ve metal–rough paketi birleştirilmiş halde tutmak bant genişliği ve örnek sayısı açısından sıklıkla avantajlıdır — bu da ORM düzeninin pratik gerekçelerinden biridir.

  • Önce doğruluk: kanal yanlışsa çözünürlük artırmak hatayı büyütür.
  • Sonra ölçek: uzaktaki nesnelerde düşük çözünürlüklü varyant ( mip zinciri / LOD) düşünün.

Three.js ile üst üste okuma

Çakışmayı önleyen çerçeve

Three.js'te MeshStandardMaterial slotları öğretilir; Babylon.js'te ise benzer kanallar PBRMaterial üzerinde toplanır. Fark, komut seti değil, sahne ortamı ve yükleyici ekosistemiyle birlikte nasıl paketlendiğidir. Aynı glTF dosyası iki motor farklı varsayılanlarla açabilir — sonuçları körü körüne karşılaştırmayın; ortam ve ton eşlemesi eşitlenmelidir.

Minimal kod iskelesi

Aşağıdaki blok yalnızca skaler başlangıç gösterir; dokular ve ortam bağın projeye göre eklenir.

const pbr = new BABYLON.PBRMaterial("metalRough", scene);
pbr.metallic = 0.35;
pbr.roughness = 0.45;
pbr.albedoColor = new BABYLON.Color3(0.85, 0.82, 0.78);

mesh.material = pbr;

Sıradaki başlık

Yüzey modeli netleştikten sonra sarma, mip ve örnekleme ayrıntıları için Texture sistemi sayfasına geçebilirsiniz. Önceki adım: Node material.