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

    • PortalCam P1

      • 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 L3

      • Panoramica del prodotto
      • Operazioni di base
      • Attivazione e connessione del dispositivo
      • Acquisizione dei dati
      • Acquisizione di coordinate assolute
      • Appendice
  • Lixel Studio

    • Versione e copyright
    • Installazione e attivazione
    • Interfaccia del software
    • Operazioni sui file
    • Elaborazione del progetto
    • Strumenti
    • Disegno 2D
    • Applicazioni di settore
    • Impostazioni
    • Connessione del dispositivo
    • Domande Frequenti
  • 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
    • Buone Pratiche

      • Unione di più modelli 3DGS di grandi dimensioni
    • Cronologia versioni
  • Plugin e SDK

    • Unreal

      • Introduzione
      • Avvio rapido - Windows
      • Avvio rapido - Linux
      • Avvio rapido - Quest3
      • Edizioni e licenze
      • Rendering
      • Rasterizzazione Tiled (sperimentale)
      • 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
      • Buone pratiche

        • Rilluminare il 3DGS con una mesh di LixelStudio
      • Riferimento API

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

        • v3.4.0
        • 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
    • Unity

      • Introduzione all'Unity SDK
      • Caratteristiche tecniche
      • Requisiti dell'ambiente di sviluppo
      • Guida rapida per PC
      • Guida all'ottimizzazione delle impostazioni di progetto
      • Guida allo sviluppo per Pico 4 Ultra
      • Guida allo streaming PC per Pico 4 Ultra
      • Guida allo sviluppo per Quest 3
      • Guida allo streaming PC per Quest 3
      • Guida allo sviluppo OpenXR
      • Guida allo streaming Business per Pico 4 Ultra
      • Glossario
      • FAQ
      • Contattaci
      • Guida allo sviluppo delle funzionalità

        • Guida allo sviluppo del rendering misto multi-scena
        • Guida allo sviluppo della ricezione delle ombre
        • Guida allo sviluppo dell'illuminazione in tempo reale
        • Guida allo sviluppo del rendering multi-camera
        • Guida allo sviluppo del rendering di immagini ad alta risoluzione
        • Guida allo sviluppo della compatibilità dei formati dati LCC e LCC2
        • Guida allo sviluppo dell'effetto di caricamento
        • Guida allo sviluppo del cambio di modalità di rendering Mip
        • Guida allo sviluppo dello snap a bordi e angoli
        • Guida allo sviluppo della decal proiettata
        • Guida allo sviluppo della decal proiettata video
        • Guida allo sviluppo dell'evidenziazione
        • Guida allo sviluppo del ritaglio in tempo reale
        • Guida allo sviluppo della regolazione del tono
        • Guida allo sviluppo dell'ottenimento dei dati Mesh della scena
        • Guida allo sviluppo della modalità Editor
        • Guida alla configurazione dei parametri di prestazioni di rendering
        • Guida allo sviluppo del co-impacchettamento di applicazione e dati
        • Guida allo sviluppo del sistema di collisione
        • Guida ai problemi di autorizzazione nello sviluppo su macOS
        • Guida allo sviluppo di compilazione e packaging per dispositivi iOS
      • Riferimento API

        • LCCManager
        • Renderer
        • Tipi di dati
      • Registro delle modifiche

        • v2.3.0
        • v2.2.10
        • v2.2.0
        • v2.1.19
        • v2.0.14
    • Web

      • Introduzione
      • Guida all'ottimizzazione delle prestazioni di rendering
      • Configurazione grafica
      • Domande frequenti
      • Riferimento API

        • LCCRender::clearIndexDB
        • LCCRender::dispose
        • LCCRender::load
        • LCCRender::setCamera
        • LCCRender::unload
        • LCCRender::update
        • LCCObject::checkRenderNextFrame
        • LCCObject::clearRenderNextFrame
        • LCCObject::ecef2Prj
        • LCCObject::getBounds
        • LCCObject::getEnvInstancedMesh
        • LCCObject::getInstancedMesh
        • LCCObject::getLodInfos
        • LCCObject::getOriginPosition
        • LCCObject::getProjectionCoordinateSystemInfos
        • LCCObject::hasCollision
        • LCCObject::hasEnvironment
        • LCCObject::hasShcoef
        • LCCObject::intersectsCapsule
        • LCCObject::intersectsRayExt
        • LCCObject::intersectsRayFromOriginExt
        • LCCObject::intersectsSphere
        • LCCObject::lowerToBottom
        • LCCObject::prj2Ecef
        • LCCObject::raiseToTop
        • LCCObject::raycast
        • LCCObject::raycastFromOrigin
        • LCCObject::setAlpha
        • LCCObject::setClipBox
        • LCCObject::setClipPlane
        • LCCObject::setEndLod
        • LCCObject::setLodAutoLevelUp
        • LCCObject::setMaxDistance
        • LCCObject::setMaxNodeSplats
        • LCCObject::setMaxSplats
        • LCCObject::setOriginPosition
        • LCCObject::setPointsColor
        • LCCObject::setRenderState
        • LCCObject::setRotation
        • LCCObject::setScale
        • LCCObject::setSemantic
        • LCCObject::setSemanticColor
        • LCCObject::setSmooth
        • LCCObject::setStartLod
        • LCCObject::setTranslation
        • LCCObject::setVisible
        • LCCObject::togglePointsDisplayMode
        • LCCObject::useEnvironment
        • LCCObject::useShcoef
      • Registro delle modifiche

        • v0.6.3
        • v0.6.2
        • v0.6.1
        • v0.6.0
        • v0.5.5
        • v0.5.4
        • v0.5.3
        • v0.5.2
        • v0.5.1
        • v0.5.0
        • v0.4.1
        • v0.4.0
        • v0.3.1
        • v0.3.0
        • v0.2.0

Guida alla configurazione dei parametri di prestazioni di rendering

Panoramica

Per adattarsi a dispositivi con diversi livelli di prestazioni, l'LCC Unity SDK fornisce diversi parametri di configurazione delle prestazioni di rendering. Sono distribuiti sulla classe LCCManager e sulla classe Renderer, coinvolgendo principalmente i seguenti metodi:

ClasseMetodoScopoTempistica di chiamata
LCCManagerSetMaxBufferSplatImposta la capacità massima del Buffer (allocata una sola volta sulla GPU)Deve essere prima di qualsiasi Renderer.Load()
LCCManagerSetFullRenderSplatImposta la soglia del numero di Splat tra rendering completo/a blocchiDeve essere prima di Load()
LCCManagerSetMaxRenderSplatsImposta il numero totale di Splat renderizzati su schermo nel rendering a blocchiIn qualsiasi momento durante il rendering a blocchi
LCCManagerSetStartLodImposta il livello LOD inizialeHa effetto in fase di esecuzione, dopo Load()
LCCManagerSetDetailLevelImposta il livello di dettaglio del rendering (regolazione fine della precisione di rendering)Può essere regolato dinamicamente in fase di esecuzione
RendererSetRenderAllImposta se forzare il rendering completoDeve essere prima di Load()

Nota:

Tra i parametri sopra, le unità dei metodi relativi al conteggio degli Splat (SetMaxBufferSplat, SetFullRenderSplat, SetMaxRenderSplats) sono tutte in decine di migliaia, cioè valore passato × 10000 = conteggio effettivo degli Splat.

Nota:

SetMaxBufferSplat imposta lo spazio massimo del buffer di memoria CPU e memoria video GPU disponibile per il rendering, mentre SetMaxRenderSplats imposta il numero di primitive Splat renderizzate su schermo durante il rendering a blocchi in streaming. Pertanto, se il valore impostato da SetMaxRenderSplats supera il valore impostato da SetMaxBufferSplat, verrà troncato.

Modalità di rendering dell'SDK

Per adattarsi a vari dati e piattaforme, l'SDK dispone di 3 modalità di rendering principali. Comprendere le modalità di rendering è il prerequisito per impostare correttamente i parametri di prestazioni, perché parametri diversi hanno effetto solo in modalità specifiche.

  • Modalità SingleRender (predefinita): usata principalmente su PC/Mac. Questa modalità non consente di creare più Renderer, il che significa che può essere renderizzata una sola scena LCC alla volta. Quando il volume dei dati è piccolo e soddisfa i requisiti, i dati verranno renderizzati completamente (vengono caricati tutti i dati LOD0, nessun cambio dinamico di LOD, migliore qualità di rendering); quando le primitive Splat LOD0 superano la quantità totale che può essere renderizzata completamente, i dati verranno renderizzati a blocchi, usando un meccanismo di rendering streaming LOD dinamico in fase di esecuzione per adattarsi al rendering di scene molto grandi.
  • Modalità MultiRender: usata principalmente su PC/Mac. Questa modalità consente il rendering misto in tempo reale di più scene LCC; tutti i dati della scena verranno renderizzati a blocchi usando il meccanismo LOD dinamico.
  • Percorso di rendering a blocchi: sulle piattaforme Mobile (iOS / Android), VR (Pico 4 / Quest 3), così come sulle origini dati HTTP su PC/Mac, viene usato il percorso di rendering a blocchi, impiegando il meccanismo LOD dinamico.
Relazione tra le tre modalità di rendering dell'SDK e i percorsi di rendering completo/a blocchi

Relazione tra le tre modalità di rendering dell'SDK e i percorsi di rendering completo / a blocchi

Rendering completo vs rendering a blocchi:

  • Rendering completo: carica e renderizza tutti i dati LOD0 in una volta sola, migliore qualità dell'immagine, abilitato solo nella modalità SingleRender PC/Mac quando il volume dei dati LOD0 soddisfa le condizioni.
  • Rendering a blocchi: carica dinamicamente i dati del livello LOD in base al frustum della camera di rendering, controlla il numero di Splat su schermo e si adatta agli ambienti hardware con memoria video e prestazioni limitate.

Valori predefiniti dell'SDK

I valori predefiniti, i valori minimi consentiti e i valori massimi consentiti per ogni piattaforma sono i seguenti (unità: decine di migliaia):

VoceValore predefinitoValore minimo consentitoValore massimo consentitoOsservazioni
Buffer globalePC/Mac: 3000
Mobile: 300
VR: 100
100PC/Mac: 4450
Mobile: 600
VR: 200
Controllato tramite SetMaxBufferSplat()
Soglia del rendering completo25001004450Controllata tramite SetFullRenderSplat(); efficace solo per la modalità SingleRender PC/Mac
Conteggio del rendering su schermo a blocchiPC/Mac: 2000
Mobile: 200
VR: 60
10——Controllato tramite SetMaxRenderSplats(); il valore massimo è limitato dalla quantità del Buffer globale
Se forzare il completoNo————Efficace solo su PC/Mac, e solo per la modalità SingleRender

Strategia di configurazione per PC/Mac

Per PC/Mac, si consiglia di configurare i parametri secondo i seguenti livelli di qualità (unità del conteggio degli Splat: decine di migliaia):

LivelloBuffer globaleSoglia del rendering completoConteggio su schermo a blocchiStartLODForza il completo
Molto basso3003003002No
Basso1000100010001No
Medio3000190019001No
Alto3000250025000No
Molto alto3000300030000No

Note sul cambio di livello in fase di esecuzione

  • Quando passi tra i livelli Medio / Alto / Molto alto, puoi lasciare invariato il Buffer globale, e la logica di gestione è molto semplice: devi solo impostare la soglia del rendering completo, il conteggio del rendering su schermo e StartLOD.
  • Quando passi tra i livelli Molto basso / Basso e gli altri livelli, la situazione è più complessa: poiché il Buffer globale potrebbe essere già allocato, devi prima distruggere il Buffer globale originale e poi crearne uno nuovo. Questa operazione richiede di eliminare tutti i Renderer con Dispose() e di rilasciare il Buffer, quindi di riacquisire il Renderer tramite GetRender().
  • Raccomandazione attuale: imposta il livello predefinito su Alto; quando cambi livello, lascia invariato il Buffer globale, ma gestisci comunque il passaggio tra rendering completo/a blocchi.

Note

  1. SetMaxBufferSplat() deve essere impostato all'inizio, idealmente prima di GetRender(). Se imposti questo valore dopo che la scena è già in esecuzione, devi eliminare tutti i Renderer con Dispose() e poi riacquisire il Renderer affinché abbia effetto.
  2. SetFullRenderSplat() è efficace solo per la modalità SingleRender PC/Mac e deve essere impostato prima di Load().
  3. SetMaxRenderSplats() si applica a tutto il rendering a blocchi e può essere impostato in qualsiasi momento, ma deve essere successivo a SetMaxBufferSplat() (se quel metodo viene chiamato).

API per le prestazioni di rendering

SetMaxBufferSplat

// Valore restituito: void
public void SetMaxBufferSplat(int _count)

Imposta la capacità massima del Buffer GPU (conteggio degli Splat). Nel percorso RenderCore (MultiRender / SingleRender a blocchi), determina la dimensione del Buffer globale condiviso; nella modalità SingleRender Full Load, viene allocata in base al volume effettivo dei dati e non fa riferimento a questo valore. Allocata una sola volta e non può essere modificata dinamicamente.

ParametroTipoDescrizione
_countintDimensione del Buffer unificato globale, in conteggio di Splat 3DGS, unità: decine di migliaia

Esempio di utilizzo:

lccManager.SetMaxBufferSplat(3000); // 30 milioni di punti (predefinito PC/Mac)
lccManager.SetMaxBufferSplat(4450); // 44,5 milioni di punti (massimo PC/Mac)

Descrizione:

  • L'unità è "decine di migliaia"; valore passato × 10000 = conteggio effettivo degli Splat.
  • Deve essere chiamato prima di qualsiasi Renderer.Load(), altrimenti restituisce un errore.
  • Deve prima chiamare SetPlatformType.
  • Maggiore è la capacità, maggiore è l'uso della memoria video; imposta secondo necessità.
  • Limiti di piattaforma: PC/Mac 44,5 milioni, Android/iOS 6 milioni, VR 2 milioni; minimo 1 milione.
  • Valori predefiniti: PC/Mac 30 milioni, Android/iOS 3 milioni, VR 1 milione.

SetFullRenderSplat

// Valore restituito: void
public void SetFullRenderSplat(int _count)

Imposta la soglia del conteggio degli Splat tra rendering completo e rendering a blocchi nella modalità SingleRender PC/Mac. Quando il conteggio degli Splat LOD0 dei dati è inferiore a questo valore, viene usato il percorso di rendering completo (Buffer GPU dedicato); altrimenti viene usato il percorso di rendering a blocchi.

ParametroTipoDescrizione
_countintConteggio di Splat 3DGS, unità: decine di migliaia

Esempio di utilizzo:

lccManager.SetFullRenderSplat(2500); // 25 milioni di punti

Descrizione:

  • L'unità è "decine di migliaia".
  • Supportato solo sulle piattaforme PC/Mac; la chiamata su altre piattaforme restituisce direttamente un errore.
  • Deve essere chiamato prima di qualsiasi Renderer.Load().
  • Deve prima chiamare SetPlatformType.
  • Intervallo di valori [100, 4450] (cioè da 1 milione a 44,5 milioni).

SetMaxRenderSplats

// Valore restituito: void
public void SetMaxRenderSplats(int _count)

Imposta il numero massimo di Splat renderizzati su schermo per fotogramma nel rendering a blocchi. Può essere chiamato dinamicamente dopo Load(), ed è limitato dal limite superiore impostato da SetMaxBufferSplat. La chiamata nella modalità SingleRender a rendering completo non ha effetto (registra un avviso e restituisce direttamente).

ParametroTipoDescrizione
_countintConteggio di Splat 3DGS, unità: decine di migliaia; minimo 100 mila, massimo non superiore alla dimensione del Buffer impostata da SetMaxBufferSplat()

Esempio di utilizzo:

lccManager.SetMaxRenderSplats(2000); // 20 milioni di punti

Descrizione:

  • L'unità è "decine di migliaia"; valore passato × 10000 = conteggio effettivo degli Splat.
  • Può essere regolato dinamicamente in fase di esecuzione.
  • Non deve superare il limite superiore di capacità impostato da SetMaxBufferSplat (se superato, viene limitato automaticamente e registra un avviso).
  • La regolazione in fase di esecuzione non è supportata nella modalità SingleRender a rendering completo.

SetStartLod

// Valore restituito: void
public void SetStartLod(int lod)

Imposta il punto iniziale di espansione LOD (a base 0). 0 significa il più fine; maggiore è il numero, più grossolano è il livello. Questo metodo ha effetto in fase di esecuzione e deve essere chiamato dopo Load().

ParametroTipoDescrizione
lodintLivello LOD iniziale, intervallo [0, 10], 0 è il più fine

Esempio di utilizzo:

lccManager.SetStartLod(0);

Descrizione:

  • Efficace solo per il rendering a blocchi, intervallo [0, 10], limitato automaticamente se superato.
  • Il limite superiore effettivo è limitato da totalLevels dei dati.
  • L'SDK ha effetto immediatamente dopo la chiamata.

SetDetailLevel

// Valore restituito: void
public void SetDetailLevel(float sse)

Imposta il livello di dettaglio del rendering, usato per regolare con precisione la precisione di rendering. Maggiore è il valore, più fine è il rendering e maggiore è il costo delle prestazioni.

ParametroTipoDescrizione
ssefloatFattore di suddivisione, intervallo [1, 100]. 1 = più grossolano (nessun affinamento anche a distanza ravvicinata), 100 = più fine (tutti i livelli affinati al più basso)

Esempio di utilizzo:

lccManager.SetDetailLevel(50f); // Precisione media

Descrizione:

  • Questo parametro è usato per regolare con precisione il dettaglio della scena, si applica solo al rendering a blocchi, il predefinito è 40, intervallo [1, 100], limitato automaticamente se superato.
  • Usa una mappatura logaritmica: l'intervallo dei valori bassi è sensibile ai cambiamenti, mentre l'intervallo dei valori alti cambia dolcemente.
  • Può essere regolato dinamicamente in fase di esecuzione.

SetRenderAll

// Valore restituito: void
public void SetRenderAll(bool _renderAll)

Un metodo della classe Renderer. Imposta se questo Renderer forza il rendering completo e deve essere chiamato prima di Load(). Usato solo per la modalità SingleRender PC/Mac: in fase di esecuzione confronta il volume dei dati LOD0 con il limite superiore di 44,5 milioni; se LOD0 < 44,5 milioni, i dati completi LOD0 vengono usati direttamente per il rendering; se LOD0 > 44,5 milioni, questa impostazione è inefficace (limitata dal GBuffer massimo di Unity) e viene usato invece il rendering a blocchi.

ParametroTipoDescrizione
_renderAllboolIndica se forzare il rendering completo

Esempio di utilizzo:

renderer.SetRenderAll(true);
renderer.Load(filePath, null, () => Debug.Log("Caricamento completo"));

Descrizione:

  • Supportato solo sulle piattaforme PC/Mac; la chiamata su mobile / VR registra un avviso e restituisce.
  • L'impostazione ha effetto sulla successiva chiamata di Load() e non influisce sul dataset attualmente caricato.
  • Può essere usato insieme alla proprietà IsRenderAll per interrogare lo stato corrente.