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 allo sviluppo per Pico 4 Ultra

Il flusso di lavoro di sviluppo LCC per Pico 4 Ultra è essenzialmente uguale al flusso di lavoro ufficiale PICO per la creazione di progetti VR; consulta la documentazione del PICO Unity Integration SDK. Questa guida si basa su tale flusso per spiegare come integrare l'LCC Unity SDK per il rendering di scene 3DGS.

Requisiti di versione

Di seguito sono elencate le versioni di software e pacchetti utilizzate in questa guida. Si consiglia di sviluppare con le stesse versioni; altre versioni non testate potrebbero presentare problemi di compatibilità:

Software / PacchettoVersioneDescrizione
Unityv2022.3.62f3Utilizza Unity 2022 LTS
PICO Unity Integration SDKv3.4.0Ottenuto dal canale ufficiale PICO
LCC Unity SDKv2.1.27 e successiveLa versione che supporta la pipeline Built-in; scarica la versione compatibile con Unity 2022 LTS

Consulta Requisiti dell'ambiente di sviluppo per requisiti hardware e software più dettagliati.

Nota:

  1. Poiché il PICO Unity Integration SDK presenta seri problemi di prestazioni con la pipeline URP, si consiglia la pipeline di rendering Built-in; consulta i problemi noti.
  2. Se testando con Unity v6000.0.69f1 riscontri che l'app si blocca o va in crash, passa a Unity v2022.3 LTS: i dispositivi della serie PICO 4 presentano problemi di compatibilità con le app che usano insieme Unity 6 e Vulkan; consulta i problemi noti.
  3. La versione di Unity, la versione dell'SDK PICO e la versione dell'LCC SDK influiscono tutte sul rendering e sulle prestazioni; cerca di mantenere ciascuna versione software coerente con questa guida.

Flusso di lavoro di sviluppo

Passaggio 1: Creare il progetto

Nel modello di progetto, seleziona il tipo 3D (Built-in Render Pipeline). Poiché il PICO Unity Integration SDK presenta seri problemi di prestazioni con la pipeline URP, non selezionare la pipeline URP, come mostrato di seguito:

Crea un progetto 3D (Built-in Render Pipeline)

Crea un progetto 3D (Built-in Render Pipeline)

Passaggio 2: Cambiare la piattaforma

Nel menu di Unity, seleziona File → Build Profiles per aprire la finestra di build e passa la piattaforma ad Android, come mostrato di seguito:

Passa la piattaforma ad Android in Build Profiles

Passa la piattaforma ad Android in Build Profiles

Passaggio 3: Importare il PICO Unity Integration SDK

Scarica il PICO Unity Integration SDK dal sito ufficiale PICO e installalo seguendo il tutorial PICO; puoi anche importarlo direttamente da GitHub all'indirizzo https://github.com/Pico-Developer/PICO-Unity-Integration-SDK.git. Questa guida utilizza la versione v3.4.0, come mostrato di seguito:

Importa PICO Unity Integration SDK v3.4.0

Importa PICO Unity Integration SDK v3.4.0

Passaggio 4: Importare l'LCC Unity SDK

Apri la finestra UPM tramite il menu di Unity Finestra → Gestione pacchetti, fai clic su + a sinistra, seleziona Installa pacchetto da disco dal menu a discesa, individua l'LCC Unity SDK e seleziona il file package.json da importare, come mostrato di seguito:

Importa l'LCC Unity SDK tramite Installa pacchetto da disco

Importa l'LCC Unity SDK tramite Installa pacchetto da disco

Passaggio 5: Configurare l'ambiente Unity

Configurare XR Plug-in Management

Nella barra dei menu di Unity, seleziona File → Project Settings, seleziona XR Plug-in Management a sinistra e spunta Initialize XR on Startup nella scheda della piattaforma Android, come mostrato di seguito:

Spunta Initialize XR on Startup in XR Plug-in Management

Spunta Initialize XR on Startup in XR Plug-in Management

Seleziona la voce PICO in XR Plug-in Management e imposta la Render Mode della piattaforma Android su MultiView, come mostrato di seguito:

Imposta la Render Mode PICO su MultiView

Imposta la Render Mode PICO su MultiView

Seleziona la voce Project Validation in XR Plug-in Management e fai clic su Fix All per completare le impostazioni necessarie (puoi anche saltare questo passaggio e crearle manualmente in seguito), come mostrato di seguito:

Fai clic su Fix All in Project Validation

Fai clic su Fix All in Project Validation

Nota:

  • Facendo clic su Fix All vengono creati i GameObject necessari nella scena attualmente aperta, quindi è necessario eliminare la Camera principale e la Luce direzionale nella scena.
  • Questo esempio corregge solo UIOrientation.LandscapeLeft; tutto il resto viene creato manualmente.

Configurare il Keystore

Lo sviluppo PICO richiede un Keystore. Vai a Player → scheda Android → Publishing Settings → Keystore Manager, crea un nuovo Keystore e completa le impostazioni, come mostrato di seguito:

Crea un nuovo Keystore in Keystore Manager

Crea un nuovo Keystore in Keystore Manager

Impostare il nome dell'azienda e il nome del prodotto

Lo sviluppo PICO non consente il valore predefinito defaultCompany. Nella scheda Player, imposta correttamente Company Name e Product Name, come mostrato di seguito:

Imposta Company Name e Product Name

Imposta Company Name e Product Name

Configurare le opzioni di qualità

In Project Settings, seleziona la scheda Quality e imposta Anti Aliasing = Disabled, Resolution Scaling Fixed DPI Factor = 0.7 e VSync Count = Don't Sync, come mostrato di seguito:

Disattiva l'anti-aliasing e imposta DPI Factor e VSync nella scheda Quality

Disattiva l'anti-aliasing e imposta DPI Factor e VSync nella scheda Quality

Inserire l'AppID

Nel menu di Unity, seleziona PICO → Platform → Platform Setting per aprire il pannello delle impostazioni e inserisci l'AppID richiesto sulla piattaforma per sviluppatori PICO in Paste your App ID here; consulta Creare un account sviluppatore, un'organizzazione e un'app.

Inserisci l'AppID in PICO Platform Setting

Inserisci l'AppID in PICO Platform Setting

Configurare la grafica

In Project Settings, seleziona la scheda Graphics, seleziona la piattaforma Android e configura come mostrato di seguito:

Configura la piattaforma Android nella scheda Graphics

Configura la piattaforma Android nella scheda Graphics

Configurare Player

In Project Settings, seleziona la scheda Player, seleziona la piattaforma Android, imposta Color Space = Gamma, deseleziona Auto Graphics API e mantieni solo Vulkan, con le altre impostazioni come mostrato di seguito:

Imposta Color Space su Gamma e mantieni solo Vulkan per l'API grafica

Imposta Color Space su Gamma e mantieni solo Vulkan per l'API grafica

Scorri verso il basso nella scheda corrente e imposta Minimum API Level = Android 10.0, Scripting Backend = IL2CPP, API Compatibility Level = .NET Standard 2.1 e Target Architectures = ARM64, con le altre impostazioni come mostrato di seguito:

Imposta Minimum API Level, Scripting Backend, API Compatibility Level e Target Architectures

Imposta Minimum API Level, Scripting Backend, API Compatibility Level e Target Architectures

Continua a scorrere verso il basso nella scheda corrente e imposta Active Input Handling = Input System Package (New), con le altre impostazioni come mostrato di seguito:

Imposta Active Input Handling su Input System Package (New)

Imposta Active Input Handling su Input System Package (New)

Passaggio 6: Creare la scena

Crea una scena completamente nuova in Unity ed elimina la Camera principale e la Luce direzionale. Fai clic con il pulsante destro in un'area vuota della finestra Gerarchia e seleziona XR → XR Origin (VR) dal menu a comparsa per creare gli oggetti XR necessari.

Seleziona l'oggetto XR Origin (VR) e aggiungi il componente PXR_Manager tramite Aggiungi componente nella finestra Inspector, e configurane le relative proprietà come mostrato di seguito:

Aggiungi e configura il componente PXR_Manager su XR Origin (VR)

Aggiungi e configura il componente PXR_Manager su XR Origin (VR)

Seleziona l'oggetto XR Origin (VR) e, nel componente XR Origin della finestra Inspector, imposta Tracking Origin Mode su Floor, con le altre proprietà come mostrato di seguito:

Imposta Tracking Origin Mode del componente XR Origin su Floor

Imposta Tracking Origin Mode del componente XR Origin su Floor

Seleziona la Camera principale (figlia di secondo livello di XR Origin (VR)) e imposta le relative proprietà del componente Camera nella finestra Inspector, come mostrato di seguito:

Imposta le proprietà del componente Camera della Camera principale sotto XR Origin (VR)

Imposta le proprietà del componente Camera della Camera principale sotto XR Origin (VR)

Nella finestra Gerarchia, fai clic con il pulsante destro su Crea vuoto per creare un oggetto vuoto denominato LCCManager, normalizza il suo Transform e collega lo script LCCManager tramite Aggiungi componente, come mostrato di seguito:

Crea l'oggetto vuoto LCCManager e collega lo script LCCManager

Crea l'oggetto vuoto LCCManager e collega lo script LCCManager

Nella finestra Gerarchia, fai clic con il pulsante destro su Crea vuoto per creare un altro oggetto vuoto denominato LCCRenderer e imposta il suo Transform con Rotation.x = -90 e Scale.x = -1, come mostrato di seguito:

Crea l'oggetto vuoto LCCRenderer e imposta il Transform allineato alle coordinate

Crea l'oggetto vuoto LCCRenderer e imposta Rotation.x = -90 e Scale.x = -1 per allineare il sistema di coordinate

Rotation.x = -90 e Scale.x = -1 sono la trasformazione di allineamento dal sistema di coordinate dei dati LCC (Z in alto, destrorso) al sistema di coordinate di Unity (Y in alto, sinistrorso); vedi "Sistema di coordinate dei dati LCC" in Introduzione all'Unity SDK.

Scrivi uno script C# denominato LCCRenderer.cs con il seguente codice:

using LCCCore;
using UnityEngine;
using UnityEngine.XR;

public class LCCRenderer : MonoBehaviour
{
    public LCCManager m_manager;
    public string m_FilePath;

    private LCCCore.Renderer m_renderer;

    private void Awake()
    {
        XRSettings.eyeTextureResolutionScale = 0.8f; // Abbassa la risoluzione della texture per migliorare le prestazioni
    }

    void Start()
    {
#if UNITY_EDITOR
        m_manager.SetPlatformType(PlatformType.PC);
        m_renderer = m_manager.GetRender(this.gameObject.transform);
        m_renderer.Load(m_FilePath, onProgress, onLoaded);
#else
        m_manager.SetPlatformType(PlatformType.Pico);
        m_renderer = m_manager.GetRender(this.gameObject.transform);
        m_renderer.Load($"{Application.persistentDataPath}/LccData/meta.lcc2", onProgress, onLoaded);
#endif
    }

    private void onProgress(float v)
    {
        Debug.Log("avanzamento:" + v);
    }

    private void onLoaded()
    {
        m_manager.SetStartLod(2);
        m_renderer.SetEnvironment(false);
        Debug.Log("Dati caricati");
    }
}

Collega questo script al GameObject LCCRenderer nella finestra Gerarchia, quindi trascina il GameObject LCCManager sulla proprietà Manager dello script nella finestra Inspector e infine inserisci il percorso del file LCC.

Collega lo script LCCRenderer e associa Manager e il percorso del file

Collega lo script LCCRenderer e associa Manager e il percorso del file

Per facilitare il debug nell'Editor di Unity e la creazione diretta del pacchetto per un dispositivo Android, il codice usa macro di compilazione per distinguere l'ambiente di runtime: nell'Editor usa il percorso specificato da m_FilePath; sul dispositivo Android usa l'origine dati sul dispositivo. I dati sul dispositivo vengono collocati come segue:

  1. Prima esegui una volta l'app pacchettizzata sul dispositivo PICO.
  2. Dopo l'installazione dell'app, vai alla sua directory dati (generalmente memoria del dispositivo PICO → Android → data → BundleID dell'app → Files; consulta il percorso di installazione delle app Android per la directory specifica) e crea una cartella LccData nella sottodirectory Files.
  3. Copia tutta l'origine dati LCC nella cartella LccData.

Nota:

  1. In pratica, si consiglia di collocare l'origine dati dell'app PICO su un server invece di pacchettizzarla direttamente nell'app.
  2. Il dispositivo Pico 4 Ultra renderizza circa 700.000 primitive gaussiane sullo schermo alla volta, circa due ordini di grandezza in meno rispetto ai ~25 milioni su PC. È consigliato principalmente per il rendering e la visualizzazione di scene piccole e oggetti singoli; le scene grandi risultano più fluide tramite lo streaming PC.
  3. Quando si renderizzano scene LCC grandi, si consiglia di impostare StartLOD su 2 e di disabilitare la visualizzazione dei dati ambiente (come nel codice di esempio).

Riferimenti correlati

  • Per la configurazione del progetto e l'ottimizzazione delle prestazioni, consulta Guida all'ottimizzazione delle impostazioni di progetto e Guida alle impostazioni dei parametri di prestazione del rendering.
  • Per altri flussi di lavoro di sviluppo PICO, consulta la documentazione ufficiale: Documentazione per sviluppatori PICO.