Kafayı yiyecektim arkadaşlar. Dün gece, sabaha kadar süreceğini bildiğim o korkunç Lightmap bake işlemine başladım. Sahne büyük, ışık sayısı çok, bilgisayarım da eski bir dost. "Bırak gece çalışsın, sabah güzel sonuçlarla uyanırım" diye düşünmüştüm. Meğerse kabusla uyanacakmışım.
Bake Maratonu ve Sabahın Hüsranı
Sabah 8'de, gözlerimi ovuşturarak bilgisayarın başına geçtim. Progress Bar %100'ü göstermiş, işlem tamamlanmıştı. İçimde bir heyecan, Game view'a tıkladım. Ve... hiçbir şey. Yani, ışıklar var ama gölgeler berbat, light bleeding her yerde, bazı duvarlar tamamen siyah. "Olamaz, render ayarlarında bir şey mi yanlış yaptım?" diye tüm Lighting Settings'i kontrol ettim. Hepsi normal.
Sonra, sahnede biraz dolaşırken fark ettim. O ne? Koridordaki duvar spot ışığı, sanki iki metre daha yukarıdaymış gibi aydınlatıyordu. Meğerse dün bake'i başlatmadan hemen önce, o ışığı Move tool ile hızlıca yerleştirirken, Y ekseninde snap modda olduğumu unutmuşum ve ışık, tam olması gereken yerin çok üstüne kaymış!
Tek Bir Pixel'in Gücü (Yıkıcılığı)
Lightmap'in çalışma mantığı gereği, sahnenin her noktasındaki ışık bilgisi hesaplanıp bir tekstüre yazılıyor. Tek bir ışık kaynağının pozisyonu bile, ondan etkilenen tüm yüzeylerin hesaplamasını tamamen değiştiriyor. Yani, o yanlış yerleştirilmiş ışık, sadece kendi etrafını değil, dolaylı yoldan aydınlattığı (veya aydınlatması gereken) onlarca başka nesnenin de lightmap verisini bozmuştu.
Sonuç? 8 saatlik elektrik, işlemci ömrü ve benim uykum, hepsi CTRL+Z ile ışığı düzeltip, bake işlemini EN BAŞTAN başlatmam için çöpe gitti. En acısı, bake sırasında bilgisayarı kullanamamak. O 8 saat boyunca ne yapabilirdim ki?
Alınan Acı Ders ve Tavsiyeler
Bu facialı deneyimden sonra kendime birkaç kural koydum:
1. Bake'e başlamadan önce SAVE] yap, sonra sahneyi baştan sona gez ve TÜM ışık nesnelerinin yerini kontrol et.
2. Mümkünse, büyük sahnelerde bake'i parça parça yap (Baked Lightmap Probes] vs. kullan).
3. Gece başlatılacak büyük bake'ler için, önce tüm ayarlarla küçük, düşük çözünürlüklü bir test bake] yap. 5 dakikada hatalı ışığı görürsün.
4. Version Control] (Git) kullan. En azından bake öncesi duruma acil dönüş yapabilirsin.
Siz de böyle "tek bir küçük hata yüzünden her şey baştan" diyeceğiniz Unity (veya başka motor) faciaları yaşadınız mı? Işık haritalarını hızlandırmak için gizli tüyolarınız var mı? Anlatın da birlikte ağlayalım.
Sabah 8'de, gözlerimi ovuşturarak bilgisayarın başına geçtim. Progress Bar %100'ü göstermiş, işlem tamamlanmıştı. İçimde bir heyecan, Game view'a tıkladım. Ve... hiçbir şey. Yani, ışıklar var ama gölgeler berbat, light bleeding her yerde, bazı duvarlar tamamen siyah. "Olamaz, render ayarlarında bir şey mi yanlış yaptım?" diye tüm Lighting Settings'i kontrol ettim. Hepsi normal.
Sonra, sahnede biraz dolaşırken fark ettim. O ne? Koridordaki duvar spot ışığı, sanki iki metre daha yukarıdaymış gibi aydınlatıyordu. Meğerse dün bake'i başlatmadan hemen önce, o ışığı Move tool ile hızlıca yerleştirirken, Y ekseninde snap modda olduğumu unutmuşum ve ışık, tam olması gereken yerin çok üstüne kaymış!
Lightmap'in çalışma mantığı gereği, sahnenin her noktasındaki ışık bilgisi hesaplanıp bir tekstüre yazılıyor. Tek bir ışık kaynağının pozisyonu bile, ondan etkilenen tüm yüzeylerin hesaplamasını tamamen değiştiriyor. Yani, o yanlış yerleştirilmiş ışık, sadece kendi etrafını değil, dolaylı yoldan aydınlattığı (veya aydınlatması gereken) onlarca başka nesnenin de lightmap verisini bozmuştu.
C#:
// İşte o kahraman ışığın transform'u. 'y' değeri 2.5 olmalıydı!
Debug.Log("Işık Y Pozisyonu: " + yanlisIsik.transform.position.y); // Çıktı: 4.5
Sonuç? 8 saatlik elektrik, işlemci ömrü ve benim uykum, hepsi CTRL+Z ile ışığı düzeltip, bake işlemini EN BAŞTAN başlatmam için çöpe gitti. En acısı, bake sırasında bilgisayarı kullanamamak. O 8 saat boyunca ne yapabilirdim ki?
Bu facialı deneyimden sonra kendime birkaç kural koydum:
1. Bake'e başlamadan önce SAVE] yap, sonra sahneyi baştan sona gez ve TÜM ışık nesnelerinin yerini kontrol et.
2. Mümkünse, büyük sahnelerde bake'i parça parça yap (Baked Lightmap Probes] vs. kullan).
3. Gece başlatılacak büyük bake'ler için, önce tüm ayarlarla küçük, düşük çözünürlüklü bir test bake] yap. 5 dakikada hatalı ışığı görürsün.
4. Version Control] (Git) kullan. En azından bake öncesi duruma acil dönüş yapabilirsin.
Siz de böyle "tek bir küçük hata yüzünden her şey baştan" diyeceğiniz Unity (veya başka motor) faciaları yaşadınız mı? Işık haritalarını hızlandırmak için gizli tüyolarınız var mı? Anlatın da birlikte ağlayalım.