ATLAS / Ahmet Salih Haroğlu
3D · Teknik rehber

PBR Malzeme Nedir? Roughness ve Metallic Ne Anlama Gelir?

Modern 3D malzemelerinin dili: taban rengi, pürüzlülük, metaliklik ve normal harita. Gerçekçi bir malzeme için hangi değeri neden değiştirdiğinizi anlamak, deneme yanılmayı azaltır.

Ahmet Salih Haroğlu9 dk okuma
Drone çalışmasından görsel
İçindekilerPBR ne demek?Temel parametrelerBase Color: rengi doğru seçmekRoughness: yansımanın keskinliğiMetallic: ikili bir seçimNormal map ve veri dokularıOpacity ve transmissionGerçekçiliğin sırrı: kusurPratik kontrolSık yapılan hatalarWeb'e taşırkenSık sorulan sorularSonuç

PBR ne demek?

PBR, fiziksel tabanlı render (Physically Based Rendering) demektir. Malzemeler gerçek dünyada ışığın davranışına benzer değerlerle tanımlanır; böylece aynı malzeme farklı ışık altında inandırıcı görünür.

Eski yaklaşımda bir malzemeyi görsel olarak "tatmin edici" yapana kadar parlaklık, yansıma gücü ve renk değerleriyle oynanırdı; sonuç belirli bir ışık altında iyi görünürdü, ışık değişince bozulurdu. PBR'ın temel fikri farklıdır: malzemenin kendisini, ışıktan bağımsız fiziksel özellikleriyle tarif edersiniz (ne kadar pürüzlü, metal mi değil mi, rengi ne). Işık ve kamera değiştiğinde malzeme kendiliğinden tutarlı davranır. Bu yüzden aynı çelik parçayı bir stüdyo ışığında da, bir gün batımı HDRI'sında da aynı malzeme tanımıyla inandırıcı gösterebilirsiniz. Ürün görselleştirmede müşteri farklı ortam görselleri istediğinde bu tutarlılık çok değerlidir.

Temel parametreler

  • Base Color (taban rengi): malzemenin saf rengi; aşırı doygun ya da saf siyah/beyaz seçmemek gerekir.
  • Roughness: yüzeyin pürüzlülüğü. 0'a yakın ayna gibi, 1'e yakın tamamen mat.
  • Metallic: genellikle 0 (metal olmayan) ya da 1 (metal); ara değerler özel durumlar içindir.
  • Normal map: poligon eklemeden küçük kabartı etkisi (deri gözeneği, kumaş örgüsü).
  • Opacity ve transmission: şeffaflık ve cam gibi geçirgenlik.

Blender'da bu parametrelerin çoğu tek bir düğümde, Principled BSDF'te toplanır. Aynı düğümün üzerinde bunlara ek olarak IOR, Coat (cila katmanı), Sheen (kumaşın kenar parlaması), Subsurface (ışığın yüzeyin altında dağılması) ve Emission (ışık yayma) gibi ayarlar da bulunur. Bu ayarların adları ve yerleşimi Blender sürümüne göre biraz değişebilir; en güvenlisi kendi sürümünüzün düğüm arayüzüne bakmaktır. Aşağıda en temel olanları tek tek ele alıyorum.

Base Color: rengi doğru seçmek

Base Color, ışıktan bağımsız malzeme rengidir. Metal olmayan (dielektrik) malzemelerde yüzeyin dağınık yansıttığı renk, yani gördüğümüz boyalı yüzey rengidir. Metallerde ise Base Color, yansımanın rengini belirler; altın sarımsı, bakır kızılımsı yansıtır, çünkü yansıyan ışık metalin kendi renginde olur.

Değer seçerken iki uca kaçmamak önerilir. Saf beyaz (1.0) gerçekte hiçbir yüzeyin tüm ışığı yansıtmadığı için fazla parlak çıkar; saf siyah (0.0) ise hiçbir yüzeyin ışığı tamamen yutmadığı için ölü bir leke gibi görünür. Kara bir ürün bile gerçekte birazcık ışık yansıtır. Aynı mantıkla aşırı doygun renkler de gerçek dışı hissettirir. Bir ürün için müşterinin verdiği renk kodunu doğrudan Base Color'a yazmak yerine, gerçek ürün fotoğrafıyla karşılaştırıp render sonucunda gözle kontrol etmek daha güvenilirdir; çünkü ışık ve kamera renk algısını değiştirir.

Doku kullanıyorsanız, renk dokusunun renk uzayı sRGB olmalıdır. Bunun tersi, ışıkla ilgisi olmayan "veri" dokuları için geçerlidir; onlar aşağıda anlatılıyor.

Roughness: yansımanın keskinliği

Roughness, yüzeydeki mikroskobik pürüzlerin ışığı ne kadar dağıttığını söyler. 0'a yakın değerlerde yüzey ayna gibi net yansıma verir; 1'e yakın değerlerde yansıma tamamen dağılır ve yüzey mat görünür. Gerçek malzemelerin çoğu bu uçların arasında bir yerdedir. Cilalı krom 0'a çok yakın, bir lastik ya da kumaş 1'e yakın, boyalı plastik çoğu zaman ortada bir yerde yer alır.

Roughness hem yansımanın netliğini hem de parlama (highlight) büyüklüğünü kontrol eder. Düşük roughness'ta küçük, keskin ve parlak bir highlight görürsünüz; yüksek roughness'ta geniş, soluk bir parlama oluşur. Tek bir sayıyla yüzeyin hissini değiştirmek mümkündür, bu yüzden birçok malzeme probleminin ilk çözümü roughness'a bakmaktır. Fırçalanmış metal ya da krom gibi metallerde bunun ayrıntıları için metal yazısına bakabilirsiniz.

Metallic: ikili bir seçim

Metallic değeri, malzemenin metal gibi mi yoksa metal olmayan bir madde gibi mi davrandığını belirler. Pratikte neredeyse her zaman 0 ya da 1'dir. Çünkü gerçek dünyada bir yüzey ya çıplak metaldir ya da değildir. Ara değerler ince geçişler içindir: metal üzerinde boya aşınmasının olduğu bir yerde, pas, kir veya oksit tabakasının bulunduğu bölgede kullanılır. Bu tür karışımlar tek bir ara değerle değil, doku haritası ile (bazı bölgeler 1, bazı bölgeler 0) yapılır.

Temel fark şudur: metal olmayan malzemeler ışığın bir kısmını yüzeyden beyaz bir yansıma olarak (Fresnel etkisiyle), kalanını ise rengiyle saçar. Genel bilinen bir değer olarak, metal olmayan malzemelerde dik açıdan bakıldığında yansıyan ışık oranı düşüktür (yaklaşık yüzde dört mertebesindedir) ve bakış açısı yüzeye yatıklaştıkça artar. Metaller ise ışığın büyük bölümünü kendi renkleriyle yansıtır ve dağınık bir renk saçılımı yoktur. Principled BSDF bu ayrımı Metallic ayarı ile yönetir.

Önemli bir ipucu: Boyalı bir metal parça aslında metal değildir; yüzeyi boya tabakası kapladığı için malzeme açısından dielektriktir. Bir arabanın boyalı kaportası Metallic 0'dır, çıplak krom jant ise Metallic 1'dir. Bu ayrım sık yapılan hatalardan biridir.

Normal map ve veri dokuları

Normal map, yüzey normallerini dokudan okuyarak geometriyi değiştirmeden küçük kabartı etkisi verir. Deri gözenekleri, kumaş örgüsü, dövme metal yüzey, kazınmış yazılar bu yöntemle düşük poligonlu bir modelde yüksek detaymış gibi görünür. Blender'da normal map doku görselini Image Texture düğümüne yükleyip Normal Map düğümü üzerinden Principled BSDF'in Normal girişine bağlarsınız.

Burada kritik ayrıntı renk uzayıdır. Normal map, roughness haritası, metallic haritası gibi dokular renk değil sayısal veri taşır; bu yüzden Image Texture düğümünde renk uzayı (Color Space) Non-Color olmalıdır. sRGB olarak bırakılırsa değerler yanlış yorumlanır ve normal map beklenmedik biçimde bozuk görünür, roughness ise olması gerekenden farklı çıkar. Bu, özellikle başka bir programdan gelen dokularla çalışırken sık atlanan bir noktadır.

Bir de normal map'in Y kanalı yönü meselesi vardır. Bazı yazılımlar OpenGL, bazıları DirectX düzenini kullanır; ikisi arasında yeşil kanalın yönü terstir. Blender ve glTF OpenGL düzenini bekler. Kabartılarınız çukur, çukurlarınız kabartı gibi görünüyorsa yeşil kanalı çevirmek gerekir.

Normal map poligon eklemediği için siluetin kenarını değiştirmez; yakından, yan açıdan bakıldığında kabartının düz bir yüzey olduğu fark edilir. Gerçek derinlik gerektiğinde displacement ya da gerçek geometri kullanılır.

Opacity ve transmission

Bir malzemenin saydamlığı iki farklı mantıkla kurulur. Alpha (opacity) basit bir saydamlık verir; çit teli, yaprak gibi kesilmiş şekiller veya basit yarı saydam yüzeyler için uygundur. Transmission ise ışığın malzemenin içinden kırılarak geçmesini temsil eder; cam, su ve temiz plastik gibi gerçek geçirgen malzemeler için kullanılır. Transmission kullanırken IOR (kırılma indisi) değeri de önemlidir. Genel bilinen değerlerle cam için yaklaşık 1,45–1,55 aralığı kullanılır. Cam ve saydam malzemeler render motoruna ve ayarlarına duyarlıdır; bu konuda motor seçimi hakkında Eevee mi Cycles mı yazısı faydalıdır.

Gerçekçiliğin sırrı: kusur

Gerçek yüzeylerin pürüzlülüğü her yerde aynı değildir. Roughness'a çok hafif bir doku ya da leke eklemek, parmak izi ve aşınma etkisi verir. Düzgün, tek değerli malzeme "plastik" gibi görünür.

Bunun pratik yolu, roughness girişine bir gürültü ya da leke dokusu bağlayıp değer aralığını dar tutmaktır. Örneğin roughness 0,3 ile 0,45 arasında hafifçe değişsin. Parmak izleri, tozlanma, mikro çizikler ve kenarlardaki aşınma gibi detaylar ışığın yansımasını bozar ve gözün "bu gerçek" demesini sağlar. Ayrıca kenarlarda biraz farklı roughness da gerçekçi sonuç verir: kenarlar daha sık dokunulup aşındığı için çoğunlukla daha parlak ya da daha pürüzlü olur. Kenar yuvarlatma ile birlikte düşünüldüğünde etki artar: bevel yazısı bu konuyu tamamlıyor.

Ancak kusuru abartmamak gerekir. Ürün katalog görselinde amaç yeni ve temiz bir ürünü göstermektir; aşırı kirli ya da yıpranmış bir malzeme yanlış mesaj verir. Kusur, fark edilmeyecek kadar ince, ama yokluğu hissedilecek kadar var olmalıdır.

Pratik kontrol

Malzemeyi tek bir ışıkta ve bir de dış mekan HDRI'sında deneyin; iki ortamda da inandırıcıysa malzeme sağlamdır. Deri için ayrıntılı bir örnek: gerçekçi deri materyali.

Bu kontrolü sistematik hale getirmek için birkaç yöntem öneririm. Önce nötr gri bir arka plan ve tek yumuşak ışıkla malzemeyi tek başına inceleyin. Ardından farklı HDRI'larla (iç mekân, dış mekân, stüdyo) aynı sahneyi deneyin. Işık değiştikçe malzemenin bozulmadığını görmek, PBR değerlerinizin fiziksel olarak makul olduğunu gösterir. HDRI seçimi için HDRI yazısına bakabilirsiniz. Kontrol sırasında malzemeyi küre ya da düz bir yüzey üzerinde değil, gerçek modelin üzerinde değerlendirin; çünkü köşe ve kenarlardaki davranış asıl bilgiyi verir.

Sık yapılan hatalar

  • Metallic'i 0,5 gibi bir ara değere çekmek ve "yarı metal" elde etmeyi beklemek.
  • Roughness'ı hiç değiştirmeden tek değerle bırakmak.
  • Normal map ve roughness dokularını sRGB olarak yüklemek.
  • Saf beyaz ya da saf siyah Base Color kullanmak.
  • Boyalı metali Metallic 1 yapmak.
  • Normal map'i kabartının tek kaynağı sanıp siluetin düz kaldığını unutmak.
  • Cam için yalnızca alpha ile saydamlık vermek.

Bir ürün için malzeme kurarken hepsini tek seferde değil, sırayla ayarlayın: önce Base Color, sonra Roughness, sonra Metallic ve en son detay dokuları. Her adımdan sonra render'a bakmak, sorunun hangi parametreden geldiğini kolayca anlamanızı sağlar.

Web'e taşırken

glTF/GLB formatı da PBR (metallic-roughness) kullanır; bu yüzden Blender'daki malzeme ile tarayıcıdaki görünüm büyük oranda örtüşür. Detay için GLB yazısı.

glTF'te roughness ve metallic değerleri tek bir görselin farklı kanallarında tutulur: yeşil kanal roughness, mavi kanal metallic bilgisini taşır. Ambient occlusion istenirse kırmızı kanalda saklanabilir. Blender'ın glTF dışa aktarıcısı bu birleştirmeyi Principled BSDF'e bağlı doku düğümlerinden otomatik yapar; ama dışa aktarıcının tanıdığı düğüm yapısının dışına çıkmak (karmaşık düğüm ağları, özel prosedürel katmanlar) malzemenin tarayıcıda farklı görünmesine neden olabilir. Bu yüzden web için hazırladığınız malzemeleri olabildiğince sade tutun ve dışa aktardıktan sonra mutlaka bir görüntüleyicide kontrol edin. Dışa aktarma ayrıntıları için GLB export yazısı yardımcı olur.

Web'de malzemeler için ayrıca doku çözünürlüğü ve sayısı bütçeyi etkiler. Her ayrı doku bir indirme ve bellek yüküdür; bu yüzden mümkün olduğunda birden fazla haritayı paketlemek, çözünürlüğü ürünün ekrandaki boyutuna göre seçmek gerekir. Daha fazlası için optimizasyon yazısına bakın. Malzemenin ürününüzde nasıl görüneceğini görmek isterseniz 3D ürün görselleştirme sayfasında süreci anlattım.

Sık sorulan sorular

Metallic için ara değer hiç kullanılmaz mı?

Kullanılır ama düz bir sayı olarak değil. Metal ile metal olmayan bölgelerin karıştığı yerlerde (paslanma, boya aşınması) doku haritasıyla bazı bölgeler 1, bazıları 0 olur. Tüm yüzeyi 0,5'e çekmek fiziksel olarak anlamlı bir malzeme üretmez.

Roughness 0 olursa malzeme ayna mı olur?

Yüzey çok net yansıma verir ama yine de yansıttığı şey ortamdır. Ortamda yansıyacak ayrıntı yoksa (düz bir arka plan) sonuç boş ve plastik görünebilir. Gerçekte hiçbir yüzey tam 0 değildir, bu yüzden küçük bir pürüzlülük payı bırakmak çoğunlukla daha inandırıcıdır.

Normal map ile bump map arasındaki fark nedir?

Bump map yükseklik bilgisini gri tonla tutar ve normal yönünü ondan türetir. Normal map ise yönü doğrudan renk kanallarında saklar, bu yüzden daha kesin ve keskin detay verir. Her ikisi de geometriyi gerçekten değiştirmez.

Dokularımı neden Non-Color yüklemem gerekiyor?

Roughness, metallic ve normal map renk değil veri taşır. sRGB olarak yüklenirse Blender bu sayıları renk gibi yorumlar ve gamma düzeltmesi uygular; sonuçta değerler bozulur. Yalnızca taban rengi dokusu sRGB olmalıdır.

Blender'da kurduğum malzeme web'de neden farklı görünüyor?

Sebepler arasında farklı aydınlatma ortamı, dışa aktarıcının tanımadığı karmaşık düğümler, renk uzayı hataları ve görüntüleyicinin tonlama ayarları sayılabilir. Malzemeyi sade tutup görüntüleyicide aynı ortam görseliyle karşılaştırmak farkı daraltır.

Sonuç

PBR, malzemeyi ışıktan bağımsız ve fiziksel olarak tarif etmenin yoludur: taban rengi, roughness, metallic ve normal map ile çoğu gerçek yüzeyi kurabilirsiniz. Metallic'i ikili düşünün, roughness'a hafif bir değişim ekleyin, veri dokularını Non-Color yükleyin ve malzemeyi her zaman birden fazla ışık altında sınayın. Kendi ürününüz için teklif almak isterseniz teklif formu hazır.

Aura Reformer Cadillac: dört direkli çerçeve, yaylar, trapez ve pofuduk askı, şeffaf zeminde
İlgili çalışmaAura ReformerÜrün Modelleme · Müşteri Çalışması · Blender · EEVEE · 6 ürün
Ahmet Salih Haroğlu3D sanatçı · dijital üretici · İstanbul

Aklınızda bir proje mi var?

Proje talebi gönder →

Bülten

Notlar, teknik rehberler ve yeni çalışmalar.