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

    • Stick Light

      • Guida all'installazione
      • Operazioni di base
      • Domande frequenti
  • 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 allo sviluppo del rendering multi-camera

L'LCC Unity SDK supporta il rendering con più telecamere simultaneamente nella modalità di rendering completo a scena singola. Di seguito viene usato un esempio di una camera principale più due telecamere secondarie per descrivere i passaggi completi per implementare il rendering multi-camera.

Passaggio 1: crea la scena e i GameObject

Crea una scena completamente nuova in Unity. Unity crea Camera principale e Luce direzionale per impostazione predefinita.

Configura la Camera principale

Seleziona Camera principale nella finestra Gerarchia e imposta le sue proprietà nella finestra Inspector come mostrato di seguito.

Imposta le proprietà della Camera principale

Imposta le proprietà della Camera principale

Crea LCCManager

Fai clic con il pulsante destro su un'area vuota nella finestra Gerarchia, seleziona Crea vuoto dal menu a comparsa per creare un GameObject vuoto, assegna il nome LCCManager, normalizza il suo Transform e aggiungi lo script LCCManager tramite Aggiungi componente.

Crea il GameObject LCCManager e aggiungi lo script LCCManager

Crea il GameObject LCCManager e aggiungi lo script LCCManager

Crea LCCRenderer

Fai clic con il pulsante destro su un'area vuota nella finestra Gerarchia, seleziona Crea vuoto per creare un GameObject vuoto, assegna il nome LCCRenderer e imposta il suo Transform su Rotation.x = -90 e Scale.x = -1.

Crea LCCRenderer e imposta il suo Transform

Crea LCCRenderer e imposta il suo Transform (Rotation.x = -90, Scale.x = -1)

Nota:

Le impostazioni Transform del GameObject LCCRenderer (Rotation.x = -90, Scale.x = -1) lo allineano al sistema di coordinate dei dati LCC. Per i dettagli sull'allineamento del sistema di coordinate, vedi "Sistema di coordinate dei dati LCC" in Introduzione all'Unity SDK.

Crea le telecamere di rendering secondarie

Fai clic con il pulsante destro su un'area vuota nella finestra Gerarchia per creare due telecamere di rendering aggiuntive, assegna loro rispettivamente i nomi Camera01 e Camera02 e imposta le proprietà di queste due telecamere come mostrato di seguito.

Imposta le proprietà di Camera01

Imposta le proprietà di Camera01

Imposta le proprietà di Camera02

Imposta le proprietà di Camera02

In questo esempio, il Viewport Rect delle due telecamere è configurato per posizionarle rispettivamente nell'angolo in basso a sinistra e nell'angolo in basso a destra della finestra di rendering principale.

Passaggio 2: scrivi lo script multi-camera

Crea un nuovo script C# denominato MultiCamera.cs con il seguente codice:

using LCCCore;
using UnityEngine;

public class MultiCamera : MonoBehaviour
{
    public LCCManager m_manager;
    public string m_FilePath01;
    public Camera m_camera01;
    public Camera m_camera02;

    public Transform m_transform01;
    private LCCCore.Renderer m_renderer01;

    private int m_currentFileIndex = 0;

    void Start()
    {
        m_manager.SetPlatformType(PlatformType.PC);
        m_manager.SwitchRenderPass(ActiveRenderMode.SingleRender);

        Debug.Log("Avviato ");
        m_renderer01 = m_manager.GetRender(m_transform01);

        m_currentFileIndex = 0;
        m_renderer01.Load(m_FilePath01, onProgress, onComplete);
    }

    private void onProgress(float _progress)
    {
        Debug.Log($"[LCCRenderer] file {m_currentFileIndex} avanzamento caricamento: {_progress:P1}");
    }

    private void onComplete()
    {
        Debug.Log($"[LCCRenderer] file {m_currentFileIndex} caricato");

        m_manager.AddCamera(m_camera01);
        m_manager.AddCamera(m_camera02);
    }

    private void OnDestroy()
    {
        m_manager.RemoveCamera(m_camera01);
        m_manager.RemoveCamera(m_camera02);
    }
}

Nota:

  • Le telecamere secondarie devono essere registrate dopo il completamento del caricamento della scena LCC, quindi AddCamera viene chiamato nel callback onComplete.
  • Il nome del file dello script deve corrispondere al nome della classe (MultiCamera.cs corrisponde a class MultiCamera), altrimenti non può essere associato a un GameObject.
  • La camera principale viene impostata tramite SetMainCamera e le telecamere secondarie vengono aggiunte tramite AddCamera; non puoi aggiungere la camera principale come telecamera secondaria.

Passaggio 3: associa lo script e imposta le proprietà

  1. Associa lo script MultiCamera.cs al GameObject LCCRenderer nella finestra Gerarchia.
  2. Nella finestra Inspector, trascina il GameObject LCCManager sulla proprietà Manager dello script.
  3. Trascina i GameObject Camera01 e Camera02 rispettivamente sulle proprietà Camera01 e Camera02 dello script.
  4. Inserisci il percorso del file LCC nella proprietà File Path01 dello script.
Associa lo script MultiCamera e imposta le sue proprietà

Associa lo script MultiCamera e imposta le sue proprietà nell'Inspector

Passaggio 4: esegui

Fai clic sul pulsante Play nella finestra Game per vedere l'effetto di rendering in tempo reale di più telecamere di rendering nella scena.

Più telecamere che eseguono il rendering simultaneamente dopo l'esecuzione

Più telecamere di rendering che eseguono il rendering simultaneamente dopo l'esecuzione

Passaggi chiave

I passaggi chiave per implementare il rendering multi-camera:

  1. Assicurati che la scena sia in modalità di rendering completo a scena singola (SwitchRenderPass(ActiveRenderMode.SingleRender) e che i dati passino dal percorso Full Load).
  2. La camera principale viene impostata tramite SetMainCamera; le telecamere secondarie vengono registrate tramite AddCamera dopo il completamento del caricamento della scena (nel callback onComplete).
  3. Controlla l'area di rendering di ogni telecamera sullo schermo tramite il suo Viewport Rect.
  4. Quando l'oggetto viene distrutto (OnDestroy), rimuovi le telecamere secondarie tramite RemoveCamera per evitare riferimenti pendenti.

Note sul rendering multi-camera

  • È supportata solo la modalità di rendering completo. L'LCC SDK attualmente supporta il rendering multi-camera solo nella modalità di rendering completo in una singola scena. Per l'ottimizzazione delle prestazioni, nella modalità di rendering a blocchi l'SDK carica e renderizza solo i dati visibili all'interno del frustum della camera; inoltre, per perseguire prestazioni elevate, il filtraggio dei dati dei nodi della scena lato CPU, l'assemblaggio dei dati e il caricamento dei dati da CPU a GPU sono tutti asincroni, quindi non può elaborare e renderizzare i dati per più telecamere separatamente nello stesso frame.

  • Assicurati che la scena sia nello stato di rendering completo. Per usare la funzionalità completa di rendering multi-camera, configura la scena in modalità di rendering completo (Full Load): usa ActiveRenderMode.SingleRender e abilita il rendering completo sul Renderer (Renderer.SetRenderAll(true), che ha effetto al successivo Load()). Per i dettagli sulle modalità di rendering e sui parametri delle prestazioni, vedi Guida rapida per PC.

  • Più telecamere, più alto il costo delle prestazioni. Ogni telecamera di rendering aggiuntiva aggiunge un passaggio di rendering completo, quindi le prestazioni peggiorano di conseguenza. Il rendering multi-camera è consigliato su dispositivi computer ad alte prestazioni.

  • Supportato solo su PC/Mac. AddCamera / RemoveCamera hanno effetto solo sulle piattaforme PC/Mac.

API multi-camera

L'LCC Unity SDK fornisce le seguenti API relative alle telecamere tramite LCCManager. Le telecamere secondarie devono essere registrate tramite AddCamera dopo il completamento del caricamento della scena LCC (ovvero nel callback onComplete).

SetMainCamera

// Valore restituito: void
public void SetMainCamera(Camera _cam)

Imposta la camera di rendering principale. LCC usa questa camera per il frustum culling, la selezione LOD, l'ordinamento e altre operazioni.

ParametroTipoDescrizione
_camCameraCamera di rendering principale; passa null per cancellarla

Esempio di utilizzo:

m_manager.SetMainCamera(Camera.main);

Note:

  • Deve essere impostata prima di Renderer.Load().
  • Chiamala di nuovo quando cambi telecamera.
  • Supportata solo su PC/Mac.
  • Passa null per cancellare la camera principale.

AddCamera

// Valore restituito: void
public void AddCamera(Camera _cam)

Aggiunge una telecamera secondaria. Le telecamere secondarie partecipano al rendering ma non influenzano la selezione LOD.

ParametroTipoDescrizione
_camCameraTelecamera secondaria

Esempio di utilizzo:

m_manager.AddCamera(m_camera01);

Note:

  • Supportata solo su PC/Mac.
  • Non puoi aggiungere la camera principale come telecamera secondaria.
  • La selezione LOD è determinata solo dalla camera principale; le telecamere secondarie riutilizzano i dati filtrati dalla camera principale per il rendering.

RemoveCamera

// Valore restituito: void
public void RemoveCamera(Camera _cam)

Rimuove una telecamera secondaria aggiunta in precedenza.

ParametroTipoDescrizione
_camCameraLa telecamera secondaria da rimuovere

Esempio di utilizzo:

m_manager.RemoveCamera(m_camera01);

Note:

  • Supportata solo su PC/Mac.
  • Si consiglia di chiamarla quando l'oggetto viene distrutto (OnDestroy) per ripulire il riferimento alla telecamera secondaria.