Mapping ve Hammer

Source Engine ışıklandırma rehberi: GMod haritalarını doğru aydınlatmak

Source Engine ışıklandırma rehberi: light, light_spot, light_environment, HDR derleme, lightmap scale, cubemap'ler ve en sık görülen ışıklandırma hataları.

Source Engine'de ışıklandırma büyük ölçüde önceden hesaplanır: VRAD derleyicisi, ışık entity'lerinden yola çıkarak lightmap'leri hesaplar ve BSP'ye kaydeder. İç mekânlar için light ve light_spot, güneş ve gökyüzü için tek bir light_environment yerleştirirsin. Ardından VRAD ile derler ve yansımalar için cubemap'leri oyun içinde oluşturursun.

En önemli ışık entity'leri

EntityEtkisiTipik kullanım
lightNoktasal ışık, her yöne yayılırLambalar, odalarda temel aydınlık
light_spotİç ve dış açısı olan ışık konisiSpot ışıkları, tavan spotları, sokak lambaları
light_environmentTüm harita için güneş ve gökyüzü ışığıDış mekânlar
light_dynamicGerçek zamanlı ışık, önceden hesaplanmazHareketli ya da titreyen ışıklar, idareli kullan
env_projectedtextureDinamik gölgeli, projeksiyonla yansıtılan gerçek zamanlı ışıkTekil vurgular, pahalı

Bir ışığın parlaklığı dört sayıdan oluşur: kırmızı, yeşil, mavi ve yoğunluk. Falloff ayarları, ışığın mesafeyle ne kadar hızlı zayıfladığını belirler. Önceden hesaplanmış ışıklar oyunda performanstan neredeyse hiçbir şey götürmez, gerçek zamanlı ışıkların ise her karede bir maliyeti vardır. Atmosferi light ve light_spot ile kur, dinamik ışıkları yalnızca bilinçli olarak kullan.

Güneş ve gökyüzü: light_environment ve skybox

Bir light_environment, haritayı tools/toolsskybox texture'ı ile kaplanmış tüm yüzeyler üzerinden aydınlatır. Üç değer önemlidir:

  • Brightness and Color: doğrudan güneş ışığının rengi ve gücü.
  • Ambient Color and Brightness: dağınık gökyüzü ışığı. Gölgeleri aydınlatır ve doğrudan güneş almayan alanların ne kadar karanlık olacağını belirler.
  • Pitch ve Yaw: güneşin hangi yönden vurduğu.

SunSpreadAngle güneş gölgelerini yumuşatır. Skybox texture'ının kendisi Map > Map Properties altında ayarlanır. Işık rengi ve güneş yönü gökyüzü görüntüsüyle uyuşmalı, yoksa sahne tutarsız görünür. env_sun entity'si yalnızca gökyüzündeki güneş parıltısını çizer, hiçbir şeyi aydınlatmaz.

Uzaktaki manzarayı göstermek istiyorsan 3D skybox rehberini oku.

HDR mı LDR mi derlemeli

VRAD ışıklandırmayı iki biçimde hesaplayabilir: LDR (klasik parlaklık aralığı) ve HDR (otomatik pozlamalı genişletilmiş aralık). Parametreler -ldr, -hdr ve -both şeklindedir. Hiçbiri verilmezse GMod'un VRAD'ı yalnızca LDR hesaplar. Hammer'ın normal derleme penceresindeki "HDR" onay kutusu ikisini birden derler.

  • Hızlı testler için LDR yeterlidir.
  • Yayın için -both ile derle. Böylece harita, HDR'si açık olan oyuncularda da olmayanlarda da doğru görünür. Işıklandırma iki kez hesaplanır, yani VRAD buna bağlı olarak daha uzun sürer.

HDR haritalarda otomatik pozlamayı env_tonemap_controller kontrol eder. O olmadan motorun varsayılan pozlama aralığı geçerli olur ve bu aralık her haritaya uymaz. Işıkların ayrıca kendi HDR parlaklık değerleri vardır. Varsayılan -1 -1 -1 1, normal değerin kullanıldığı anlamına gelir. Derleme adımlarının birbirine nasıl bağlandığı VBSP, VVIS ve VRAD nedir? yazısında anlatılıyor.

Lightmap scale ve gölge kalitesi

Bir yüzeyin lightmap scale değeri, tek bir lightmap örneğinin kaç birimi kapsadığını belirtir. Varsayılan değer 16'dır. Bunu texture aracında (Shift+A) değiştirirsin.

  • Daha küçük değerler (8 ya da 4 gibi) daha keskin gölgeler verir ama belleğe, dosya boyutuna ve derleme süresine mal olur.
  • Daha büyük değerler (32 ya da 64 gibi) ucuzdur ve büyük, eşit aydınlatılmış yüzeyler için yeterlidir.

Şu VRAD parametreleri son derlemede kaliteyi artırır:

  • -final: daha hassas ışık hesabı, belirgin biçimde daha yavaş.
  • -StaticPropLighting: prop_static ışıklandırmasını tek bir noktada değil, modelin her vertex'i için hesaplar.
  • -StaticPropPolys: gölgeler için kaba çarpışma modeli yerine prop'ların görünen şeklini kullanır.
  • -TextureShadows: modeller bunun için bir RAD dosyasına kaydedilmiş ya da buna göre derlenmişse prop gölgelerinde saydam texture'ları hesaba katar. Genellikle yalnızca -StaticPropPolys ile birlikte etki eder.

env_cubemap ile yansımalar

Parlak yüzeyler gerçek çevreyi değil, önceden yakalanmış bir panoramayı yansıtır. env_cubemap entity'leri bunun içindir:

  1. Her oda ya da ışık atmosferi için en az bir env_cubemap yerleştir; kabaca baş hizasında ve geometrinin içinde kalmayacak şekilde.
  2. Haritayı derle ve oyunda yükle.
  3. Konsola buildcubemaps yaz.
  4. -both ile derlediysen cubemap'leri bir kez LDR, bir kez de HDR için oluştur. Arada mat_hdr_level ile geçiş yap ve haritayı yeniden yükle.

Her yeni derlemeden sonra cubemap'leri yeniden oluşturman gerekir. Sık görülen sorunlar Cubemap yansımalarını düzeltme yazısında ele alınıyor.

Tipik ışıklandırma hataları

  • Fullbright: Her şey eşit parlaklıkta ve gölgesiz. Bu durumda harita hiç ışıklandırma verisi içermiyor demektir. Ya hiç ışık entity'si yoktur ya da VRAD çalıştırılmamış veya yarıda kesilmiştir. Compile log'u kontrol et.
  • Harita çok karanlık: Çoğu zaman light_environment entity'sinin ambient değeri çok düşüktür ya da iç mekânlarda dolgu ışıkları eksiktir. Zayıf ek light entity'leri ve daha açık renkli yüzeyler işe yarar, çünkü açık renkli texture'lar daha fazla ışık yansıtır.
  • Sert, basamaklı gölge kenarları: Lightmap scale fazla kaba. İlgili yüzeylerde değeri düşür. Yuvarlatılmış brush geometrisindeki görünür ışıklandırma ek yerleri smoothing group'larla giderilir.
  • Siyah prop'lar: -StaticPropLighting olmadan bir prop_static tek bir noktada aydınlatılır. O nokta karanlıktaysa ya da bir duvarın içindeyse modelin tamamı simsiyah olur. Lighting origin olarak bir info_lighting bunu çözer.
  • Çok fazla light style: Adı ya da titreme stili olan ışıklar kendi lightmap'lerine ihtiyaç duyar. Bunlardan birçoğu tek bir yüzeyde üst üste binerse VRAD uyarı verir.
  • Leak: Leak varsa VVIS görünürlük verisi üretmez ve VRAD bu durumda yalnızca doğrudan ışığı hesaplar, yansıyan ışığı hesaplamaz. Önce harita leak hatasını düzelt.

VRAD log'undaki mesajları Map Scanner aracına yapıştırabilirsin. Bilinen mesajları nedenleri ve çözümleriyle eşleştirir.

Sık sorulan sorular

Haritam neden fullbright?

BSP hiç ışıklandırma verisi içermiyor. Bu, haritada tek bir ışık entity'si bile olmadığında ya da VRAD derleme sırasında atlandığında veya bir hatayla yarıda kesildiğinde olur. Bir ışık yerleştir, RAD ayarı "Normal" olacak şekilde derle ve log'u kontrol et.

Bir haritada kaç light_environment entity'si olabilir?

Bir tane. Güneş ve gökyüzü haritanın tamamı için geçerlidir. Farklı değerlere sahip birden fazla entity, farklı alanlarda farklı ışıklandırma üretmez.

HDR ile derlemek zorunda mıyım?

Hayır, yalnızca LDR içeren bir harita da çalışır. Yayınlanan bir harita için -both güvenli tercihtir, çünkü harita o zaman oyuncuların grafik ayarlarından bağımsız olarak doğru aydınlatılır.

Derlemeden sonra yansımalar neden yanlış görünüyor?

Cubemap'ler bu derleme için henüz oluşturulmamıştır. Her yeni derleme onları siler. Haritayı yükle, buildcubemaps komutunu çalıştır ve haritayı yeniden başlat.