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 co-impacchettamento di applicazione e dati

L'LCC Unity SDK supporta la separazione dell'applicazione dai dati. Tuttavia, nello sviluppo reale delle applicazioni, a volte è necessario impacchettare e pubblicare l'applicazione insieme ai dati della scena 3DGS. Questo documento illustra gli approcci di co-impacchettamento per PC e Android.

Caricamento dinamico dei dati in fase di esecuzione su PC

L'SDK carica i dati in fase di esecuzione tramite il metodo Load(); il percorso specificato deve essere un percorso assoluto, ad esempio G:\Data\xxx.lcc2.

Per distribuire insieme l'applicazione e i dati, puoi concatenare il percorso di esecuzione dell'applicazione con il percorso relativo dei dati della scena LCC in un percorso assoluto, come segue:

  1. Ottieni il percorso di esecuzione dell'applicazione tramite Application.dataPath di Unity.
  2. Concatena il percorso relativo dei dati con il percorso di esecuzione nel percorso assoluto dei dati della scena 3DGS.

L'esempio di codice è il seguente:

using UnityEngine;
using LCCCore;
using XGrids.LCC;

public class LCCRenderer : MonoBehaviour
{
    public LCCManager m_manager;
    public string m_FilePath;
    private LCCCore.Renderer m_renderer;

    void Start()
    {
        m_renderer = m_manager.GetRender(this.transform);

#if !UNITY_EDITOR
        string _dataPath = Application.dataPath;
        string _dataPath2 = _dataPath + "/data/meta.lcc2";   // Concatena il percorso relativo del file LCC
        m_FilePath = _dataPath2.Replace('/', '\\');
#endif

        m_renderer.Load(m_FilePath, onLoadProgress, onLoadCallback);
    }
}

Nota:

  • La concatenazione del percorso sopra è racchiusa in #if !UNITY_EDITOR: nello stato Editor di Unity, il m_FilePath specificato nell'Inspector (dati di sviluppo locali) viene usato direttamente; solo nel runtime pubblicato viene concatenato il percorso relativo sotto la directory di esecuzione dell'applicazione.
  • In una build PC, Application.dataPath punta alla cartella <AppName>_Data sotto la directory dell'applicazione, quindi il percorso relativo dei dati deve corrispondere alla posizione in cui i dati verranno copiati in seguito.
  • I percorsi Windows usano le barre rovesciate \; l'esempio usa Replace('/', '\\') per convertirle.

Copia i dati della scena LCC in una directory specificata

Dopo aver compilato normalmente il progetto Unity e aver compilato/pubblicato l'applicazione, la struttura della directory dell'applicazione generata è mostrata di seguito.

Struttura della directory dell'applicazione generata dopo la build e la pubblicazione di Unity

Struttura della directory dell'applicazione generata dopo la build e la pubblicazione di Unity

Secondo il percorso relativo LCC data/meta.lcc2 nel codice, devi copiare i dati della scena LCC nella posizione corrispondente sotto la directory generata dell'applicazione, come mostrato di seguito.

Copia i dati della scena LCC nella directory dell'applicazione secondo il percorso relativo

Copia i dati della scena LCC nella directory dell'applicazione secondo il percorso relativo

Impacchetta l'intera directory

Impacchetta l'intera directory dell'applicazione (compressione Zip) e distribuiscila agli utenti che ne hanno bisogno. Dopo che l'utente l'ha estratta ed esegue il Viewer, i dati della scena nella directory specificata possono essere caricati.

Flusso di lavoro di impacchettamento Android

Android usa lo stesso approccio del PC, ma il percorso dei dati necessita di una piccola modifica: usa Application.persistentDataPath come directory radice dei dati.

Modifica lo script di rendering per concatenare il percorso dei dati con persistentDataPath. Nota che il tipo di piattaforma viene impostato separatamente tramite SetPlatformType() (prima di GetRender()), e Load() riceve solo il percorso e i callback:

void Start()
{
    // Il tipo di piattaforma deve essere impostato prima di GetRender()
    m_manager.SetPlatformType(PlatformType.Pico);

    m_renderer = m_manager.GetRender(this.transform);
    m_renderer.Load(
        $"{Application.persistentDataPath}/LccData/meta.lcc2",
        onLoadProgress,
        onLoadCallback);
}

Passaggi di impacchettamento e distribuzione:

  1. Salva il codice e collega il dispositivo mobile al computer in cui si trova il progetto Unity usando un cavo USB 3.0.
  2. Nella barra dei menu di Unity, seleziona File → Impostazioni build → Build per ottenere l'APK.
  3. Copia l'APK sul dispositivo mobile e installalo.
  4. Dopo l'installazione, apri prima l'app una volta affinché il sistema crei la directory per il nome del pacchetto corrispondente, poi chiudi l'app.
  5. Crea una cartella LccData sotto la directory per il nome del pacchetto corrispondente e copia i dati LCC in quella cartella (il percorso è generalmente archiviazione del dispositivo Android → Android → data → BundleID dell'app → Files; consulta il percorso di installazione dell'app Android per la directory specifica).
  6. Apri di nuovo l'app e il contenuto LCC verrà presentato sul telefono o sul dispositivo VR.
Crea una cartella LccData sotto la directory del nome del pacchetto dell'app Android e copia i dati

Crea una cartella LccData sotto la directory del nome del pacchetto dell'app Android e copia i dati LCC

Note

  • iOS non supporta l'approccio di caricamento dinamico da directory locale descritto sopra. iOS non consente a un'applicazione di leggere tutti i file sotto una cartella specificata; può leggere solo un singolo file specificato.
  • Su mobile e VR, si consiglia di posizionare i dati su un server e di prelevarli dal server in fase di esecuzione, piuttosto che impacchettare direttamente i dati nel pacchetto dell'applicazione APK — quest'ultimo rende il pacchetto dell'applicazione molto grande e gonfio.