İçeriğe geç
TREN
Atlıhan Harita

LCC for UE Kullanım Kılavuzu

3DGS Sahnesinde Navigasyon Mesh'i Oluşturma

Bölüm 17 / 26Kılavuz sürümü v3.5.0Türkçe

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 Static modunda 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şulAçı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 etkinActor üzerinde bEnableCollision = true
Çarpışma verisi yüklendiYü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 etkileyebilirActor üzerinde CanEverAffectNavigation = true
Çarpışma yükleme aralığı yeterince büyükMax 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ükSahneye bir NavMeshBoundsVolume yerleştirilmiştir ve YZ'nin hareket edeceği hedef alanı kapsar

Çarpışma yükleme mesafesi ve NavMeshBoundsVolume farklı 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.

Unreal Engine Görünüm Modunda LCC Çarpışma Gövdelerinin Yüklenip Yüklenmediğini Kontrol Etme

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.

LCC Sahnesinde NavMeshBoundsVolume Yerleştirme ve Ölçekleme

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ğerAçıklama
Runtime GenerationStaticTercih 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 SizeVarsayılanDeğ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:

  1. LCC verisini yükleyin ve 3DGS görüntüsünün görüntülendiğini doğrulayın.
  2. Asenkron çarpışma hesaplamasının (baking) bitmesini bekleyin.
  3. Hedef alandaki çarpışmanın yüklendiğini player collision veya visibility collision moduyla doğrulayın.
  4. Collision Load Max Distance ve NavMeshBoundsVolume öğelerinin ikisinin de hedef alanı kapsadığını doğrulayın.
  5. Unreal Engine ana menüsünden Build → Build Paths komutunu çalıştırın.
  6. Navigasyon oluşturma işleminin bitmesini bekleyin.
  7. 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.
LCC Sahnesinde Yürünebilir Yeşil NavMesh Alanlarını P Tuşuyla Gösterme

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:

  1. Verinin çarpışma içerip içermediği: .lcc veya .lcc2 kullanı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.
  2. Çarpışmanın etkin ve yüklü olup olmadığı: bEnableCollision = true ve CanEverAffectNavigation = true olduğunu doğrulayın. Ayrıca hedef konumdaki çarpışma gövdelerinin player collision veya visibility collision modunda göründüğünü kontrol edin.
  3. Ç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.
  4. 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.
  5. 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.
  6. 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:

XGRIDS Türkiye

Kurulumda ve Sahada Yanınızdayız

Atlıhan Harita; cihaz kurulumu, firmware güncellemesi, yazılım kullanımı ve saha uygulamalarında eğitim ve teknik destek verir. Sorunuzu iletin, uzmanımız size dönsün.

+90 216 546 0804