Navigasyon Sistemi Desteği
Kapsam
Bu doküman, navigasyonu LCC çarpışma verisinden oluşturan sahneleri hedefler. Bu nedenle yalnızca ALCCActor ve ALCC2Actor için geçerlidir: çarpışma verisi yalnızca .lcc ve .lcc2 formatlarıyla birlikte gelir. Ayrıntılar için Çarpışma bölümüne bakın.
.sog, .spz ve .ply çarpışma verisi içermez. Bu nedenle yürünebilir alanlar Blocking Volume'lar veya yaklaşık bir mesh ile manuel olarak oluşturulmalıdır. Bu tür geometri standart UE nesnelerinden oluşur ve navigasyon resmi Unreal Engine iş akışıyla yapılandırılır. Bu doküman bu konuyu kapsamaz.
Genel Bakış
Unreal Engine'in Navigation System yapısı, yapay zekâ karakterleri için NavMesh aracılığıyla yürünebilir alanlar sağlar. NavMesh oluşturma, sahnede navigasyonu etkileyebilen ve geçerli çarpışması olan geometriye dayanır.
LCC çarpışması parçalar halinde dinamik olarak yüklenir: yalnızca kameranın çevresindeki belirli bir aralıkta bulunan çarpışma parçaları yüklenir ve kamera hareket ettikçe devreye girip çıkar (mekanizma için bkz. Çarpışma: Yükleme Mekanizması). Bu durum navigasyon yapılandırma stratejisini doğrudan belirler:
- Çarpışma parçalarının çalışma anında devreye girip çıkması NavMesh'in yeniden oluşturulmasını tetikler ve takılmaya neden olur
- Bu nedenle hedef alanın çarpışması, navigasyon
Staticmodunda oluşturulmadan önce tek seferde tamamen yüklenmelidir
LCC sahneleri için Static, önerilen Runtime Generation ayarıdır. Dynamic ayarı çarpışma değişikliklerine yanıt vermeyi ve NavMesh'i yeniden oluşturmayı sürdürür. Parçalar halinde yüklenen çarpışma ile birleştiğinde sık sık yeniden oluşturmayı tetikler. Bu da büyük sahnelerde belirgin CPU maliyetine ve takılmalara yol açar.
Ön Koşullar
| Koşul | Açıklama |
|---|---|
| Veri bir çarpışma dosyası içeriyor | .lcc için collision.lci gerekir (eski sürümlerde collision.bin). .lcc2 için data/mesh/ altındaki .ply dosyaları gerekir. Bkz. Çarpışma: Ön Koşullar |
| Çarpışma etkin | Actor üzerinde bEnableCollision = true |
| Çarpışma verisi yüklendi | Yüklenen çarpışma gövdelerini görmek için görünüm modunda oyuncu çarpışmasını veya görünürlük çarpışmasını seçin |
| Actor navigasyonu etkileyebilir | Actor üzerinde CanEverAffectNavigation = true |
| Çarpışma yükleme aralığı yeterince büyük | Max Load Collision Distance(m), navigasyon gereken hedef alanı kapsamalıdır. Varsayılan değer 300 metredir |
| NavMesh oluşturma sınırları yeterince büyük | Sahneye bir NavMeshBoundsVolume yerleştirilmiştir ve YZ'nin hareket edeceği hedef alanı kapsar |
Çarpışma yükleme mesafesi ve
NavMeshBoundsVolumefarklı aralıkları denetler: ilki hangi alanlarda çarpışma verisi bulunacağını, ikincisi motorun NavMesh'i hangi sınırlar içinde oluşturacağını belirler. Hedef alanda kullanılabilir bir NavMesh oluşturulması için ikisinin de bu alanı kapsaması gerekir.
Adımlar
1. LCC Çarpışmasını Etkinleştirme ve Kontrol Etme
ALCCActor veya ALCC2Actor öğesini seçin ve Details panelinde Enable Collision (bEnableCollision) seçeneğini etkinleştirin. İsterseniz kod üzerinden de etkinleştirebilirsiniz:
LCCComponent->SetLCCCollisionEnable(true);
Aynı zamanda Actor üzerinde CanEverAffectNavigation = true olduğunu doğrulayın. Böylece çarpışması navigasyon oluşturmaya katılabilir.
LCC verisini yükledikten sonra görünüm modunda player collision veya visibility collision seçeneğini belirleyin ve hedef alanda çarpışma gövdelerinin görünüp görünmediğini kontrol edin. Çarpışma asenkron fizik hesaplaması (baking) kullanır. Bu nedenle 3DGS görüntüsü görüntülenmeye başladıktan sonra birkaç saniye daha sürebilir.

Hedef navigasyon alanındaki LCC çarpışma gövdelerinin yüklendiğini player collision veya visibility collision moduyla doğrulama
2. Çarpışma Yükleme Aralığını Yapılandırma
LCC çarpışması yalnızca Max Load Collision Distance(m) ile belirtilen aralıkta yüklenir. Varsayılan değer 300 metredir.
Navigasyonla birlikte kullanırken bu değeri, YZ'nin etkinlik gösterdiği alanın tamamını kapsayacak şekilde artırın. Böylece tüm çarpışma tek seferde yüklenir. Aksi halde çalışma zamanında kamera hareket ettikçe çarpışma parçaları sürekli yüklenip kaldırılır. Bu durum NavMesh'in tekrar tekrar oluşturulmasını tetikler ve belirgin takılmalara neden olur. Aralık yeterince büyükse çalışma zamanında çarpışma değişikliği olmaz ve navigasyon yeniden oluşturulmaz.
Bunun bedeli, açılışta daha uzun yükleme süresi ve daha yüksek bellek kullanımıdır. Tam yüklemeden sonraki belleğin kabul edilebilir olup olmadığını doğrulamak için stat xgrids içindeki Collision Data Usage değerini kullanın. Bkz. Çarpışma: Tüm Çarpışmayı Tek Seferde Yükleme.
Yetersiz çarpışma mesafesini aşmak için Runtime Generation ayarını Dynamic olarak değiştirmeyin. Dynamic, çarpışma yükleme aralığını genişletmez. Bu mesafenin ötesindeki alanlarda navigasyon oluşturma için yine çarpışma verisi bulunmaz.
3. NavMeshBoundsVolume Yerleştirme ve Ayarlama
Sahneye bir NavMeshBoundsVolume yerleştirin. Ardından YZ'nin hareket etmesi gereken alanın tamamını kapsayacak şekilde taşıyın ve ölçeklendirin.

NavMeshBoundsVolume öğesini, navigasyon oluşturma sınırları YZ etkinlik alanının tamamını kapsayacak şekilde yerleştirme ve ölçeklendirme
Her iki aralığın da gereksinimi karşıladığını bir kez daha doğrulayın:
- Max Load Collision Distance(m): Yüklenen LCC çarpışmasının hedef alanda bulunup bulunmadığını belirler.
- NavMeshBoundsVolume: Unreal Engine'in NavMesh'i hangi sınırlar içinde oluşturacağını belirler.
İkisinden yalnızca birini genişletmek, diğerinin kapsamadığı alanı çözmez.
4. Navigasyon Sistemini Yapılandırma
| Ayarlar | Önerilen değer | Açıklama |
|---|---|---|
| Runtime Generation | Static | Tercih edilen ayardır. Navigasyon yalnızca editörde derlendiğinde oluşturulur. Çalışma zamanında sürekli yeniden oluşturmanın performans maliyeti önlenir |
| Cell Size | Varsayılan | Değer küçüldükçe NavMesh daha doğru olur, ancak derleme süresi, bellek ve çalışma zamanı maliyeti artar |
Dynamic Ne Zaman Kullanılmalıdır
Dynamic ayarını yalnızca NavMesh'in çalışma zamanında geometri değiştikçe gerçekten otomatik olarak yeniden oluşturulması gerektiğinde değerlendirin. Örneğin, oyun sırasında yürünebilir alanların değiştiği etkileşimli bir sahne bu duruma uygundur.
Dynamic ayarını LCC çarpışmasıyla birlikte kullanırken özellikle dikkatli olun: Çarpışmanın kendisi parçalar halinde dinamik olarak yüklenir. Her çarpışma parçası değişimi bir geometri değişikliği sayılır ve navigasyonun yeniden oluşturulmasını tetikler. Bu da büyük sahnelerde sürekli CPU maliyetine ve takılmalara yol açabilir. Dynamic gerçekten gerekliyse çalışma zamanında çarpışma değişikliği olmaması için çarpışma yükleme aralığını da etkinlik alanının tamamını kapsayacak şekilde artırın.
Yalnızca çarpışma mesafesini veya navigasyon kapsamını genişletmek için Dynamic ayarını etkinleştirmeyin.
5. Çarpışmayı Bekleme ve Static NavMesh Oluşturma
Önerilen Static modunda şu sırayı izleyin:
- LCC verisini yükleyin ve 3DGS görüntüsünün görüntülendiğini doğrulayın.
- Asenkron çarpışma hesaplamasının (baking) bitmesini bekleyin.
- Hedef alandaki çarpışmanın yüklendiğini player collision veya visibility collision moduyla doğrulayın.
- Collision Load Max Distance ve
NavMeshBoundsVolumeöğelerinin ikisinin de hedef alanı kapsadığını doğrulayın. - Unreal Engine ana menüsünden Build → Build Paths komutunu çalıştırın.
- Navigasyon oluşturma işleminin bitmesini bekleyin.
- Seviyeyi ve navigasyon verisini kaydedin.
Doğrulama ve Sorun Giderme
NavMesh'i görünüm penceresinde göstermek için P tuşuna basın:
- Yeşil alanlar: Yürünebilir bir NavMesh oluşturulmuştur.
- Yeşil alan yok: O konumda NavMesh oluşturulmamıştır. Aşağıdaki sırayla kontrol edin.

NavMesh'i doğrulamak için P tuşuna basma; yeşil kapsama, o alanda yürünebilir navigasyon verisi oluşturulduğunu gösterir
Hedef konumda yeşil NavMesh yoksa şunları sırayla kontrol edin:
- Verinin çarpışma içerip içermediği:
.lccveya.lcc2kullanıldığını ve veri dizininde eşleşen çarpışma dosyasının bulunduğunu doğrulayın. Tek dosyalı biçimler çarpışma içermez ve bu iş akışında kullanılamaz. - Çarpışmanın etkin ve yüklü olup olmadığı:
bEnableCollision = trueveCanEverAffectNavigation = trueolduğunu doğrulayın. Ayrıca hedef konumdaki çarpışma gövdelerinin player collision veya visibility collision modunda göründüğünü kontrol edin. - Çarpışma yükleme aralığının yeterince büyük olup olmadığı: Hedef konum yükleme aralığının dışındaysa
Max Load Collision Distance(m)değerini artırın ve çarpışmanın yeniden hazır olmasını bekleyin. - NavMeshBoundsVolume'un hedef konumu kapsayıp kapsamadığı: Navigasyon oluşturma sınırları hedef alanı tamamen kapsayacak şekilde Volume'u taşıyın veya ölçeklendirin.
- Static NavMesh'in yeniden oluşturulup oluşturulmadığı: Çarpışma ve aralıklar doğrulandıktan sonra Build → Build Paths komutunu çalıştırın, işlemin bitmesini bekleyin, ardından seviyeyi ve navigasyon verisini kaydedin.
- Yeşil kapsama alanını kontrol etmek için P tuşuna tekrar basın.
Yukarıdakilerin hepsi doğru olduğu hâlde oluşturma yine başarısız oluyorsa, Output Log içinde Navigation, Recast ve çarpışmayla ilgili hataları da kontrol edin ve geçerli seviyenin kaydedildiğini doğrulayın.
Bu bölüm XGRIDS'in resmî kullanım kılavuzundan Türkçeye çevrildi; ekran görüntüleri ve arayüz adları özgün haliyle İngilizcedir. İngilizce aslı (yeni sekmede açılır) · Güncelleme:

