Oyun Geliştirme
LOD grupları
LOD Group ile mesafeye göre mesh detayını öğrenirsin.
Level of Detail (LOD) nedir?
Bir nesne kameraya çok yakınken binlerce poligon ve detaylı geometri gereklidir; ancak nesne 60 metre uzaktayken bu detayları görmek imkansızdır. LOD (Level of Detail), kameraya olan mesafeye göre modelin daha düşük poligonlu sürümlerini devreye sokan sistemdir.
// Unity LOD Group yapisi:
// LOD 0: 5000 poligon (Yakın mesafe)
// LOD 1: 1500 poligon (Orta mesafe)
// LOD 2: 300 poligon (Uzak mesafe)
// Culled: 0 poligon (Çok uzak, çizilmez)
LOD tekniği ekran kartının işlemesi gereken tepe noktası (vertex) sayısını büyük oranda düşürür.
LOD geçişleri ve Culled durumu
Unity'de nesneye eklenen LODGroup bileşeni kameranın ekranda kapladığı alana göre geçiş eşiklerini yönetir. Model ekranda çok küçük bir piksel alanına indiğinde çizim tamamen durdurulur; bu duruma Culled denir.
LODGroup group = GetComponent<LODGroup>();
// lodCount, tanimli LOD seviyesi sayisini dondurur
int levels = group.lodCount;
Bu sayede ufuk çizgisindeki binlerce gereksiz ağaç veya kaya ekran kartını yormaz.
Uygulama Mesafeye göre LOD seviyesi seç
Verilen distance değerini kontrol et: 20'den küçükse "LOD 0", 50'den küçükse "LOD 1", aksi halde "LOD 2" belirle ve Console.WriteLine ile yazdır.
Örnek çözümü göster
using System;
class LodSystem
{
static void Main()
{
float distance = 45.0f;
string lodLevel;
if (distance < 20.0f)
lodLevel = "LOD 0";
else if (distance < 50.0f)
lodLevel = "LOD 1";
else
lodLevel = "LOD 2";
Console.WriteLine($"Mesafe: {distance}m - Aktif: {lodLevel}");
}
}
Kendini test et
-
Kameradan uzaklaşan bir model için LOD Group bileşeni ne yapar?
- Sahnedeki tüm ışıklandırmayı devre dışı bırakır
- Kamera görüş açısını otomatik olarak daraltır
- Nesneyi fizik motorundan tamamen kaldırır
- Modelin daha az poligonlu düşük detay versiyonuna geçiş yapar
Cevabı göster
Modelin daha az poligonlu düşük detay versiyonuna geçiş yapar — LOD Group, nesnenin ekrandaki boyutuna göre basitleştirilmiş mesh modelleri arasında kademeli geçiş sağlar.
-
LODGroup bileşenini al
LODGroup lodGroup = GetComponent<____>();
Cevabı göster
LODGroup lodGroup = GetComponent<LODGroup>();
-
LOD aşamaları
- LOD 0
- En yüksek poligonlu ve detaylı mesh
- LOD 1
- Orta mesafede sadeleştirilmiş mesh
- LOD 2
- Uzak için en düşük poligonlu mesh
- Culled
- Çok küçük kalınca çizimin kesilmesi
Sıradaki ders: Occlusion culling