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

Camminare in una scena 3DGS: supporto delle collisioni

LCC4Unreal supporta il caricamento dinamico dei dati di collisione, così i personaggi possono muoversi e interagire liberamente nel mondo 3DGS.

Prerequisiti

Le collisioni si basano sul file di collisione distribuito con i dati, e i requisiti differiscono per formato:

FormatoDati di collisioneSupporto
.lcccollision.lci nella directory dei dati, collision.bin nelle versioni precedentiSupportato
.lcc2File .ply in data/mesh/ nella directory dei datiSupportato
.sog / .spz / .plyNessunoNon supportato

Il plugin controlla nell'ordine collision.lci → collision.bin → data/mesh/*.ply, e registra un avviso e disabilita le collisioni quando nessuno di essi esiste. Dopo il caricamento dei dati, usare HaveValidCollisionData() per verificare se i dati correnti contengono dati di collisione utilizzabili.

Nota: collision.lci richiede l'esportazione da LCC Studio v1.6.1 o superiore; i dati esportati dalle versioni precedenti usano collision.bin.

Alternative per i formati a file singolo

.sog, .spz e .ply sono formati a file singolo che non contengono dati di collisione, quindi il plugin non può generare collisioni per essi. Costruirle nella scena quando le collisioni servono:

  • Blocking Volume: usare i blocking volume del motore per costruire terreno, pareti e altre aree che devono bloccare. Adatto a forme regolari e l'opzione più economica
  • Mesh approssimata: posizionare una mesh che corrisponde alla forma del 3DGS e abilitarne le collisioni. Adatto a scene con forme complesse. Questa mesh può riutilizzare la mesh proxy cambiandone il preset di collisione in blocco

Nessuno dei due approcci coinvolge il meccanismo di caricamento delle collisioni LCC, quindi non sono influenzati da CollisionLoadMaxDistance e non vengono scambiati dentro e fuori al movimento della camera.

Meccanismo di caricamento

I dati di collisione sono memorizzati in blocchi spaziali esattamente come i dati di rendering. Il plugin non carica tutte le collisioni in una volta: carica solo i blocchi entro una certa distanza dalla camera e li scambia dentro e fuori dinamicamente al movimento della camera.

La posizione della camera cambia
      │
      ▼
Calcolo dell'insieme di blocchi di collisione da caricare nell'estensione
      │
      ▼
Confronto con l'insieme precedente ── uguale ──▶ salta, non fa nulla
      │ diverso
      ▼
Carica i nuovi blocchi → li passa al sistema fisico per il baking → genera i corpi di collisione

Alcuni punti di implementazione:

  • L'estensione di caricamento è controllata da Max Load Collision Distance(m), e le aree oltre quella distanza non hanno collisioni
  • Il primo caricamento è sincrono, il che evita che il personaggio cada attraverso il terreno prima che le collisioni siano pronte; ogni aggiornamento successivo è asincrono e non blocca il thread principale
  • Gli aggiornamenti sono limitati in frequenza, quindi le collisioni non vengono ricostruite a ogni fotogramma mentre la camera si muove in continuo
  • Gli aggiornamenti vengono saltati quando l'insieme dei blocchi visibili non cambia, quindi piccoli movimenti sul posto non innescano una ricostruzione
  • Per il calcolo viene usata solo la camera principale, e SceneCapture non partecipa al caricamento delle collisioni

Vantaggi

  • L'uso della memoria dipende solo dall'estensione di caricamento, non dalla dimensione totale dei dati, quindi le collisioni funzionano anche per grandi scene
  • Il numero di corpi di collisione che il sistema fisico deve elaborare resta sotto controllo e non rallenta la fisica al crescere della scena

Costi e mitigazioni

ProblemaCausaMitigazione
Il personaggio cade attraverso il terreno nell'istante in cui il gioco parteLe collisioni non sono ancora costruiteAlzare un po' PlayerStart, oppure abilitare il movimento del personaggio solo quando le collisioni sono pronte
Scatto quando il personaggio entra nel raggio della scena 3DGS da lontanoIl punto di spawn è fuori dal raggio di caricamento delle collisioni; il primo caricamento sincrono si attiva all'ingressoPosizionare il punto di spawn all'interno del raggio di caricamento delle collisioni oppure caricare tutte le collisioni in una volta
Nessuna collisione in lontananza, quindi i line trace non colpiscono nullaLe aree oltre l'estensione di caricamento non hanno corpi di collisioneAumentare Max Load Collision Distance(m), oppure passare a un controllo che non si basi sulle collisioni
Nessuna collisione per un breve periodo dopo un teletrasporto o un movimento rapidoI blocchi di collisione della nuova area sono ancora in caricamentoCaricare tutte le collisioni in una volta
Scatti durante il movimento, con un costo elevato di Update CollisionI blocchi di collisione vengono scambiati dentro e fuori e ricostruiti frequentementeRidurre l'estensione di caricamento, oppure verificare che le collisioni servano davvero
La mesh di navigazione continua a ricostruirsi quando si usa la navigazioneLe variazioni delle collisioni innescano aggiornamenti della NavMeshAumentare l'estensione di caricamento in modo che l'area di destinazione venga caricata in un solo passaggio, e usare il baking Static, vedere Supporto del Navigation System

Caricare tutte le collisioni in una volta

La maggior parte dei costi elencati sopra deriva dallo scambio dei blocchi dentro e fuori a runtime. Quando le dimensioni della scena sono contenute e la memoria lo consente, aumentare Max Load Collision Distance(m) a sufficienza per coprire l'intera scena, così che tutte le collisioni vengano costruite in un solo passaggio durante il caricamento dei dati.

Lo scambio a runtime dei blocchi di collisione scompare, e nessuno dei problemi precedenti si verifica: caduta attraverso il terreno, collisioni mancanti dopo un teletrasporto, scatti durante il movimento e ricostruzioni ripetute della navigazione. Questo è consigliato in particolare quando si usa il sistema di navigazione.

Il costo è un tempo di caricamento più lungo all'avvio e un uso di memoria fisso pari alle collisioni dell'intera scena. Per valutare se è praticabile, controllare Collision Data Usage in stat xgrids e verificare che l'uso di memoria dopo un caricamento completo sia accettabile.

Abilitazione

LCCComponent->SetLCCCollisionEnable(true);

Oppure spuntare bEnableCollision nel pannello Details.

Abilitazione delle collisioni LCC nel pannello Details

Abilitazione delle collisioni LCC nel pannello Details

Dimostrazione delle collisioni dinamiche LCC

Collisioni dinamiche di un personaggio in una scena LCC

Verifica

Usare le impostazioni della modalità di visualizzazione e selezionare player collision o visibility collision per osservare se le collisioni sono abilitate.

Visualizzazione dei corpi di collisione nella modalità di visualizzazione

Verifica dei corpi di collisione con la modalità player collision o visibility collision

Proprietà correlate

ProprietàDescrizione
bEnableCollisionAbilita le collisioni
CollisionLoadMaxDistanceDistanza massima di caricamento dei dati di collisione (300 metri per impostazione predefinita)
Proprietà di abilitazione delle collisioni e distanza massima di caricamento

Configurazione dello stato di abilitazione delle collisioni e della distanza massima di caricamento

Note

  • Una volta abilitate le collisioni, il LineTrace di Unreal Engine può essere usato per i test dei raggi contro i corpi di collisione, e anche l'estensione del test è limitata dall'estensione di caricamento
  • La memoria usata dai dati di collisione è visibile in Collision Data Usage di stat xgrids, il costo degli aggiornamenti in Update Collision, e il significato delle voci in Parametri di prestazione
Precedente
Animazione di caricamento
Successivo
Supporto del Navigation System