XGRIDSDocumentazione
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • PortalCam

    • Panoramica del prodotto
    • Operazioni di base
    • Uso della LCC Scan App
    • Manutenzione e cura
    • FAQ
  • Serie Lixel K

    • Lixel K1

      • Panoramica del prodotto
      • Operazioni di base
      • Attivazione e connessione del dispositivo
      • Flusso di scansione
      • Ottenere una nuvola di punti con coordinate assolute
      • Fusione delle mappe
      • Consigli di pianificazione dei percorsi per scene tipiche
      • Precauzioni
      • FAQ
    • Lixel K2

      • Panoramica del prodotto
      • Operazioni di base
      • Attivazione e connessione
      • Flusso di scansione
      • Acquisire una nuvola di punti con coordinate assolute
      • Fusione mappe
      • Consigli di pianificazione dei percorsi per scene tipiche
      • Precauzioni
      • FAQ
  • Serie Lixel L

    • Lixel L2 Pro

      • Panoramica del prodotto
      • Operazioni di base
      • Attivazione e connessione del dispositivo
      • Flusso di scansione
      • Ottenere una nuvola di punti con coordinate assolute
      • Punto di misura
      • Appendice
      • FAQ
  • Lixel Studio

    • Versione e copyright
    • Installazione e attivazione
    • Interfaccia del software
    • Operazioni sui file
    • Elaborazione del progetto
    • Strumenti
    • Disegno 2D
    • Applicazioni
    • Impostazioni
    • Connessione del dispositivo
  • Lixel CyberColor

    • LCC Studio

      • Introduzione
      • Versione e aggiornamenti
      • Download e installazione
      • Panoramica dell'interfaccia e navigazione
      • Operazioni preliminari alla ricostruzione
      • Prima della ricostruzione
      • Ricostruzione del modello
      • Ricostruzione modello singolo
      • Fusione delle mappe
      • Fusione aria-terra
      • Ricostruzione aerea
      • I miei modelli
      • Altre funzioni
      • Impostazioni e account
      • Convertitore
      • Ricostruzione video
      • Domande Frequenti / FAQ
    • LCC Scene Editor

      • Versione e aggiornamenti
      • Account e accesso
      • Panoramica del prodotto e home page
      • Interfaccia dell'editor
      • Modalità di navigazione
      • File
      • Impostazioni
      • Modifica
      • Finestra
      • Barra degli strumenti globale
      • Asset e proprietà
      • Barra degli strumenti sinistra
      • Punti di vista
      • Portale
      • Skybox
      • Annotazioni
      • Misurazione
      • Flythrough
      • Rapporto scena
      • 3D Layout
      • Mini-mappa
      • Modalità Anteprima (Viewer)
      • Aiuto
      • Domande frequenti (FAQ)
      • Punto di spawn
    • LCC Model Editor

      • Versione e aggiornamenti
      • Guida utente
      • Panoramica e interfaccia
      • Operazioni sui file
      • Selettori
      • Modifica dei modelli
      • Misurazione
      • Correzione colore
      • Gestione degli asset
      • Impostazioni e Aiuto
      • Domande frequenti
    • Capture Guide

      • Panoramica
      • Panoramica dei dispositivi di acquisizione
      • Principi generali di acquisizione
      • Acquisizione di scene interne
      • Acquisizione di scene esterne
      • Acquisizione su larga scala (map fusion)
      • Acquisizione per aerial-ground map fusion
      • Acquisizione di oggetti
      • Acquisizione di persone
      • Acquisizione per ricostruzione da video
      • HD Enhancement
      • Control points (Lixel P1)
      • FAQ e risoluzione dei problemi
    • Cronologia versioni
  • Plugin e SDK

    • Unreal

      • Introduzione
      • Avvio rapido - Windows
      • Avvio rapido - Linux
      • Avvio rapido - Quest3
      • Edizioni e licenze
      • Rendering
      • Impostazioni visive
      • Normali e illuminazione
      • Modifica della scena
      • Parametri di prestazione
      • Guida alle prestazioni
      • Integrazione con plugin di terze parti e del motore
      • Proxy Mesh
      • Animazione di caricamento
      • Collisioni
      • Supporto del Navigation System
      • Supporto di Single Layer Water
      • Localizzazione
      • FAQ
      • Risoluzione dei problemi
      • Log e diagnostica
      • Contattaci
      • Riferimento API

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • Actor SOG / SPZ / PLY
        • ALCC2ProxyMesh
        • ALCCClippingVolume
        • ALCCSectionPlane
        • ULCCUtilLibrary
        • Enum
        • Struct
      • Registro delle modifiche

        • v3.3.1
        • v3.0.0
        • v2.2.1
        • v1.0.0
        • v0.9.0
        • v0.8.0
        • v0.7.1
        • v0.6.1
        • v0.5.2
        • v0.4.1
        • v0.4.0
        • v0.3.0
        • v0.0.5
        • v0.0.4
        • v0.0.3
        • v0.0.2
        • v0.0.1

Generare una mesh di navigazione in una scena 3DGS

Navigation System Support

Ambito

Questo documento riguarda le scene che costruiscono la navigazione dai dati di collisione LCC, quindi si applica solo a ALCCActor e ALCC2Actor: solo i formati .lcc e .lcc2 includono dati di collisione, vedere Collisioni.

.sog, .spz e .ply non contengono dati di collisione, quindi le aree percorribili devono essere costruite manualmente con Blocking Volume o una mesh approssimata. Tale geometria è composta da oggetti UE standard, e la navigazione si configura attraverso il flusso di lavoro ufficiale di Unreal Engine, che non riguarda le specificità di questo documento.

Panoramica

Il Navigation System di Unreal Engine fornisce aree percorribili ai personaggi IA attraverso una NavMesh. La generazione della NavMesh si basa su geometria presente nella scena che può influire sulla navigazione e che ha collisioni valide.

Le collisioni LCC vengono caricate dinamicamente a blocchi: vengono caricati solo i blocchi di collisione entro una certa distanza dalla camera, e vengono scambiati dentro e fuori al movimento della camera (per il meccanismo, vedere Collisioni: meccanismo di caricamento). Questo determina direttamente la strategia di configurazione della navigazione:

  • Lo scambio dei blocchi di collisione a runtime innesca ricostruzioni della NavMesh e provoca scatti
  • Le collisioni dell'area di destinazione dovrebbero quindi essere completamente caricate in un solo passaggio prima di costruire la navigazione in modalità Static

Per le scene LCC, Static è la Runtime Generation consigliata. Dynamic continua a rispondere alle variazioni delle collisioni e a ricostruire la NavMesh, il che unito alle collisioni caricate a blocchi innesca ricostruzioni frequenti e provoca costi CPU e scatti evidenti nelle grandi scene.

Prerequisiti

CondizioneDescrizione
I dati contengono un file di collisione.lcc richiede collision.lci (collision.bin nelle versioni precedenti); .lcc2 richiede i file .ply in data/mesh/. Vedere Collisioni: prerequisiti
Le collisioni sono abilitatebEnableCollision = true sull'Actor
I dati di collisione sono caricatiSelezionare player collision o visibility collision nella modalità di visualizzazione per vedere i corpi di collisione caricati
L'Actor può influire sulla navigazioneCanEverAffectNavigation = true sull'Actor
L'estensione di caricamento delle collisioni è sufficienteMax Load Collision Distance(m) copre l'area di destinazione in cui serve la navigazione, 300 metri per impostazione predefinita
I limiti di costruzione della NavMesh sono sufficientiUn NavMeshBoundsVolume è posizionato nella scena e copre l'area di destinazione in cui si muove l'IA

La distanza di caricamento delle collisioni e NavMeshBoundsVolume controllano estensioni differenti: la prima decide quali aree hanno dati di collisione, il secondo decide entro quali limiti il motore costruisce la NavMesh. Entrambi devono coprire l'area di destinazione perché venga generata una NavMesh utilizzabile in quel punto.

Procedura

1. Abilitare e controllare le collisioni LCC

Selezionare ALCCActor o ALCC2Actor e abilitare Enable Collision (bEnableCollision) nel pannello Details, oppure abilitarlo da codice:

LCCComponent->SetLCCCollisionEnable(true);

Allo stesso tempo verificare che CanEverAffectNavigation = true sull'Actor, così che le sue collisioni possano partecipare alla costruzione della navigazione.

Dopo il caricamento dei dati LCC, selezionare player collision o visibility collision nella modalità di visualizzazione e controllare se i corpi di collisione sono comparsi nell'area di destinazione. Le collisioni usano il baking fisico asincrono, quindi possono richiedere ancora alcuni secondi dopo l'inizio del rendering dell'immagine 3DGS.

Controllo del caricamento dei corpi di collisione LCC nella modalità di visualizzazione di Unreal Engine

Uso della modalità player collision o visibility collision per verificare che i corpi di collisione LCC nell'area di navigazione di destinazione siano caricati

2. Configurare l'estensione di caricamento delle collisioni

Le collisioni LCC vengono caricate solo entro l'estensione indicata da Max Load Collision Distance(m), 300 metri per impostazione predefinita.

Quando si usa la navigazione, aumentare questo valore per coprire l'intera area di attività dell'IA così che tutte le collisioni vengano caricate in un solo passaggio. Altrimenti i blocchi di collisione continuano a essere scambiati dentro e fuori al movimento della camera a runtime, il che innesca continuamente ricostruzioni della NavMesh e provoca scatti evidenti. Con un'estensione abbastanza grande non ci sono variazioni delle collisioni a runtime, quindi la navigazione non viene mai ricostruita.

Il costo è un tempo di caricamento più lungo all'avvio e un uso di memoria maggiore. Usare Collision Data Usage in stat xgrids per verificare se la memoria dopo un caricamento completo è accettabile, vedere Collisioni: caricare tutte le collisioni in una volta.

Non cambiare Runtime Generation in Dynamic per aggirare una distanza di collisione insufficiente. Dynamic non estende l'estensione di caricamento delle collisioni, e le aree oltre quella distanza restano prive di collisioni disponibili per la costruzione della navigazione.

3. Posizionare e regolare il NavMeshBoundsVolume

Posizionare un NavMeshBoundsVolume nella scena, quindi spostarlo e scalarlo per coprire l'intera area in cui l'IA deve muoversi.

Posizionamento e scalatura di un NavMeshBoundsVolume in una scena LCC

Posizionamento e scalatura del NavMeshBoundsVolume così che i limiti di costruzione della navigazione coprano l'intera area di attività dell'IA

Verificare di nuovo che entrambe le estensioni soddisfino il requisito:

  • Max Load Collision Distance(m): decide se nell'area di destinazione esistono collisioni LCC caricate.
  • NavMeshBoundsVolume: decide entro quali limiti Unreal Engine costruisce la NavMesh.

Estendere solo uno dei due non risolve l'area che l'altro non riesce a coprire.

4. Configurare il Navigation System

ImpostazioneValore consigliatoDescrizione
Runtime GenerationStaticL'impostazione preferibile. La navigazione viene generata solo quando la si costruisce nell'editor, evitando il costo di prestazione delle ricostruzioni continue a runtime
Cell SizePredefinitoPiù piccolo è il valore, più accurata è la NavMesh, ma più alti sono tempo di costruzione, memoria e costo a runtime

Quando usare Dynamic

Considerare Dynamic solo quando la NavMesh deve davvero ricostruirsi automaticamente al variare della geometria a runtime, per esempio in una scena interattiva in cui le aree percorribili cambiano durante il gioco.

Fare particolare attenzione a Dynamic insieme alle collisioni LCC: le collisioni stesse vengono caricate dinamicamente a blocchi, e ogni scambio di un blocco di collisione conta come variazione della geometria e innesca una ricostruzione della navigazione, il che può produrre costi CPU e scatti continui nelle grandi scene. Quando Dynamic serve davvero, aumentare anche l'estensione di caricamento delle collisioni per coprire l'intera area di attività, così da non avere variazioni delle collisioni a runtime.

Non abilitare Dynamic solo per estendere la distanza di collisione o la copertura della navigazione.

5. Attendere le collisioni e costruire la NavMesh statica

Con la modalità Static consigliata, seguire questo ordine:

  1. Caricare i dati LCC e verificare che l'immagine 3DGS sia visualizzata.
  2. Attendere la fine del baking asincrono delle collisioni.
  3. Usare la modalità player collision o visibility collision per verificare che le collisioni nell'area di destinazione siano caricate.
  4. Verificare che sia Collision Load Max Distance sia NavMeshBoundsVolume coprano l'area di destinazione.
  5. Eseguire Build → Build Paths dal menu principale di Unreal Engine.
  6. Attendere la fine della costruzione della navigazione.
  7. Salvare il livello e i dati di navigazione.

Verifica e risoluzione dei problemi

Premere P per mostrare la NavMesh nel viewport:

  • Aree verdi: è stata generata una NavMesh percorribile;
  • Nessuna area verde: nessuna NavMesh è stata generata in quel punto, controllare nell'ordine seguente.
Pressione di P per mostrare le aree verdi percorribili della NavMesh in una scena LCC

Pressione di P per verificare la NavMesh; la copertura verde indica che in quell'area sono stati generati dati di navigazione percorribili

Quando nel punto di destinazione non c'è NavMesh verde, controllare in ordine:

  1. Se i dati contengono collisioni: verificare che si usi .lcc o .lcc2 e che il file di collisione corrispondente esista nella directory dei dati; i formati a file singolo non contengono collisioni e non possono usare questo flusso di lavoro.
  2. Se le collisioni sono abilitate e caricate: verificare che bEnableCollision = true e CanEverAffectNavigation = true, e che i corpi di collisione nel punto di destinazione siano visibili nella modalità player collision o visibility collision.
  3. Se l'estensione di caricamento delle collisioni è sufficiente: quando il punto di destinazione è oltre l'estensione di caricamento, aumentare Max Load Collision Distance(m) e attendere di nuovo che le collisioni siano pronte.
  4. Se il NavMeshBoundsVolume copre il punto di destinazione: spostare o scalare il Volume così che i limiti di costruzione della navigazione coprano completamente l'area di destinazione.
  5. Se la NavMesh statica è stata ricostruita: una volta verificate collisioni ed estensioni, eseguire Build → Build Paths, attenderne la fine e salvare il livello e i dati di navigazione.
  6. Premere di nuovo P per controllare la copertura verde.

Quando tutto quanto sopra è corretto ma la generazione continua a non riuscire, controllare ulteriormente nell'Output Log gli errori relativi a Navigation, Recast e collisioni, e verificare che il livello corrente sia salvato.

Precedente
Collisioni
Successivo
Supporto di Single Layer Water