Materials Ayrıntılı Anlatımı

Material (Malzeme), Unity’de bir nesnenin yüzey özelliklerini tanımlamak için kullanılır ve nesnelerin renk, yansıma, saydamlık gibi görsel efektlerini kontrol eder. Material, 3D nesnelerde olduğu gibi 2D nesnelerde de kullanılabilir, ancak temel olarak 3D projelerde daha fazla işlev görür.

Material bileşeni, sahnedeki nesnelerin gerçekçi veya stilize bir görünüme sahip olmasını sağlar. Material bileşeninin yüzey özellikleri Shader adı verilen görsel işleme motorları ile belirlenir. Her material bir shader kullanır, ancak shader’ı değiştirdikçe material’in özellikleri de değişir.

1. Materials Menüsüne Nasıl Ulaşılır?

Unity’de Material bileşeni oluşturmak ve düzenlemek için şu adımları izleyebilirsiniz:

  1. Project Panelinde Material Oluşturma:
    • Assets paneline sağ tıklayın, ardından Create > Material seçeneğini tıklayın. Yeni bir Material oluşturulacaktır.
  2. Inspector Panelinde Material’i Düzenleme:
    • Material’i seçtiğinizde, sağ taraftaki Inspector panelinde Material özelliklerini görebilir ve düzenleyebilirsiniz.
  3. Nesneye Material Ekleme:
    • Bir nesneye material eklemek için oluşturduğunuz material’i doğrudan nesnenin üzerine sürükleyebilirsiniz. Alternatif olarak, Mesh Renderer bileşeninde Material alanına material’i sürükleyip bırakabilirsiniz.

2. Material Çeşitleri

Unity’de Material’ler, kullanılan shader türüne göre çeşitlenir. Material’in hangi türde görüneceğini belirleyen şey Shader’dır. Unity, farklı efektler için çeşitli yerleşik shader’lar sağlar. İşte en yaygın kullanılan shader türleri:

  • Standard Shader: Unity’nin varsayılan shader’ıdır ve pek çok özelliğe sahiptir. Nesnelerin saydamlığı, yansıması, metalik görünümü gibi özellikleri kontrol edilebilir.
  • Unlit Shader: Işıktan etkilenmeyen basit bir shader türüdür. Özellikle simgesel veya çizgi film tarzı grafikler için uygundur.
  • Transparent Shader: Saydam nesneler için kullanılır. Cam, su veya duman efektleri için idealdir.
  • Toon Shader: Çizgi film tarzı gölgelendirme sağlar ve stilize grafikler için uygundur.
  • HDRP ve URP Shader’ları: Unity’nin High Definition Render Pipeline (HDRP) ve Universal Render Pipeline (URP) shader’ları, yüksek kaliteli grafikler için optimize edilmiştir ve HDRP veya URP projelerinde kullanılır.

3. Material Özellikleri ve Ayrıntılı Açıklamaları

Aşağıda Material bileşeninin özelliklerini, ne işe yaradıklarını ve nasıl kullanıldıklarını ayrıntılı olarak açıkladığım bir tablo bulabilirsiniz:

ÖzellikAçıklamaKullanım DurumlarıProgramatik Erişim
Albedo (Renk)Nesnenin temel rengini veya dokusunu belirler. Material’in ana rengidir.Tüm nesnelerin temel renk ve dokusunu ayarlamak için.material.SetColor("_Color", Color.red);
MetallicNesnenin metalik görünümünü belirler. 0 ile 1 arasında değer alır. 1 değeri nesneyi tamamen metalik yapar.Metalik yüzeyler veya parlak metaller için yüksek değer kullanılabilir.material.SetFloat("_Metallic", 0.5f);
Smoothness (Pürüzsüzlük)Yüzeyin ne kadar yansıtıcı veya pürüzsüz olduğunu belirler. 0 ile 1 arasında değer alır.Cam veya parlak yüzeylerde yüksek, mat yüzeylerde düşük değer kullanılabilir.material.SetFloat("_Glossiness", 0.8f);
Normal MapNesnenin yüzeyine detay kazandıran bir harita ekler. Normallerin etkisini arttırır, yüzeye gerçekçilik katılır.Kabartma efektleri veya yüzey detayları vermek için kullanılır.material.SetTexture("_BumpMap", normalTexture);
Occlusion (Gölgeleme)Nesnenin çevresel gölgelenmesini belirler. 0 ile 1 arasında değer alır, yüzeyin gölge miktarını etkiler.Çevresel ışık alan yüzeylerde gölge derinliği sağlamak için kullanılır.material.SetFloat("_OcclusionStrength", 1.0f);
Emission (Emisyon)Nesnenin kendi ışığını yaymasını sağlar. Karanlıkta bile parlayarak dikkat çeken nesneler için kullanılır.LED ekranlar, ışık saçan nesneler veya neon efektleri için.material.SetColor("_EmissionColor", Color.blue);
Detail Map (Detay Haritası)Yüzeydeki ince detayları arttırmak için ek bir harita sağlar.Doku detaylarını arttırmak ve daha gerçekçi yüzeyler için kullanılır.material.SetTexture("_DetailAlbedoMap", detailTexture);
Rendering Mode (Render Modu)Nesnenin nasıl render edileceğini belirler: Opaque, Transparent, Cutout, Fade.Cam gibi saydam nesnelerde Transparent, mat nesnelerde Opaque.material.SetInt("_Mode", (int)UnityEngine.Rendering.BlendMode.Transparent);

Material Özelliklerine Programatik Erişim

Material bileşeninin özelliklerine C# kodu ile erişebilir ve bunları değiştirebilirsiniz. İşte Material özelliklerine kodla nasıl erişileceğini gösteren bir tablo:

ÖzellikKod ile Erişim ÖrneğiAçıklama
Albedo (Renk)material.SetColor("_Color", Color.red);Nesnenin temel rengini kırmızıya ayarlar.
Metallicmaterial.SetFloat("_Metallic", 0.5f);Nesnenin metalik görünümünü %50 olarak ayarlar.
Smoothness (Pürüzsüzlük)material.SetFloat("_Glossiness", 0.8f);Yüzeyi daha pürüzsüz ve yansıtıcı yapar.
Normal Mapmaterial.SetTexture("_BumpMap", normalTexture);Normaller haritasını ekler, yüzey detayları kazandırır.
Occlusion (Gölgeleme)material.SetFloat("_OcclusionStrength", 1.0f);Gölgeleme efektini maksimize eder.
Emission (Emisyon)material.SetColor("_EmissionColor", Color.blue);Emisyon rengi mavi olarak ayarlanır, yüzey parlak görünür.
Detail Map (Detay Haritası)material.SetTexture("_DetailAlbedoMap", detailTexture);Yüzeye ekstra detay haritası ekler.
Rendering Mode (Render Modu)material.SetInt("_Mode", (int)UnityEngine.Rendering.BlendMode.Transparent);Render modunu saydam hale getirir.

4. Material Özelliklerinin Değer Aralıkları ve Kullanım Durumları

Aşağıdaki tabloda Material bileşeninin özelliklerine ait değer aralıklarını ve hangi durumlarda hangi değerlerin kullanılabileceğini detaylandırdım:

ÖzellikDeğer Aralığı / SeçeneklerÖnerilen DeğerlerKullanım Durumları
Albedo (Renk)Renk paletiYüzeyin istenen rengine göreNesnenin ana rengini belirlemek için.
Metallic0 – 10.5 (Orta parlaklık), 1 (Tam parlaklık)Metalik yüzeylerde 0.5-1 arası, mat yüzeylerde daha düşük değerler tercih edilir.
Smoothness (Pürüzsüzlük)0 – 10.7 (Cam için), 0.2 (Ahşap için)Yansıtıcı yüzeyler için yüksek, mat yüzeyler için düşük değerler.
Normal MapDoku HaritasıNormal Map kullanımıYüzey detayları vermek için yüksek çözünürlüklü normal mapler tercih edilir.
Occlusion (Gölgeleme)0 – 11 (Yoğun gölgeler), 0.5 (Yumuşak gölgeler)Koyu gölge isteyen nesnelerde yüksek, hafif gölgelerde düşük değerler.
Emission (Emisyon)Renk paletiRenk ve ışık yayılımına göreLED ışıklar, neon tabelalar veya ışık saçan nesneler için parlak renkler tercih edilir.
Detail MapDoku HaritasıDetay yoğunluğuna göreKüçük detaylar, ince çizgiler veya yüzey efektleri için kullanılır.
Rendering ModeOpaque, Transparent, Cutout, FadeOpaque (Kapalı yüzey), Transparent (Saydam yüzey)Cam veya saydam yüzeylerde Transparent, katı yüzeylerde Opaque kullanılır.

5. Material Kullanım Alanları ve Dikkat Edilecekler

Kullanım Alanları

  1. Nesne Yüzeylerini Belirleme: Material, bir nesnenin rengini, yansımasını ve ışıkla olan etkileşimini belirler. Tüm nesnelerde kullanılabilir.
  2. Saydam ve Yarı Saydam Yüzeyler: Saydamlık gerektiren cam, su veya duman gibi efektlerde Material’in Transparent veya Cutout gibi render modları tercih edilir.
  3. Özel Shader ve Grafik Efektleri: Unity’nin yerleşik shader’ları dışında, özel shader’lar kullanarak daha gerçekçi ve karmaşık efektler elde edebilirsiniz.

Dikkat Edilmesi Gerekenler

  • Doğru Render Modu Kullanımı: Saydam yüzeyler için Transparent, mat yüzeyler için Opaque seçilmelidir. Yanlış render modu performansı düşürebilir.
  • Metalik ve Pürüzsüzlük Ayarları: Yüksek metalik ve pürüzsüzlük değerleri, özellikle mobil cihazlarda performans sorunlarına yol açabilir. Gereksiz yüksek değerlerden kaçınılmalıdır.
  • Texture Boyutları: Yüksek çözünürlüklü texture’lar, bellekte fazla yer kaplayabilir ve oyunun performansını düşürebilir. Texture boyutları optimize edilmelidir.

Uygulanmaması Gereken Nesneler

  • Arka Plan veya Statik Grafikler: Material, genellikle 3D nesnelerde kullanılır. Arka planlarda ve statik grafiklerde gereksiz kullanımdan kaçınılmalıdır.
  • UI Elemanları: 2D UI elemanlarında Sprite Renderer ve UI Material tercih edilmelidir. Standart Material, UI elemanları için fazla olabilir.

Özet

Dikkat Edilecek Noktalar: Doğru render modu kullanımı, texture boyutlarının optimize edilmesi ve metalik/pürüzsüzlük ayarlarına dikkat edilmelidir.

Materials Menüsüne Erişim: Project panelinde Create > Material yoluyla yeni bir material oluşturulur ve Inspector panelinde ayarlanır.

Çeşitleri: Material, Standard, Unlit, Transparent, Toon gibi farklı shader’larla özelleştirilebilir.

Özellikler ve Kullanımı: Albedo, Metallic, Smoothness, Normal Map gibi özellikler ile nesne yüzeyi üzerinde tam kontrol sağlanır.

Kullanım Alanları: Nesne yüzeyini tanımlamak, saydamlık veya parlaklık efektleri eklemek, özel shader’lar ile görsel kaliteyi artırmak için kullanılır.

1

Bir cevap yazın