Guida allo sviluppo per Quest 3
Il flusso di lavoro di sviluppo LCC per Quest 3 è leggermente diverso dal flusso di lavoro ufficiale Meta per la creazione di progetti VR: le modifiche ufficiali di Meta alla configurazione di Unity rendono il rendering LCC incompatibile con il flusso di lavoro consigliato nella loro documentazione di sviluppo. Consulta il flusso di lavoro ufficiale Meta in Set up Unity for XR development. Basandosi su tale flusso, questa guida spiega come integrare l'LCC Unity SDK per il rendering di scene 3DGS.
Requisiti di versione
Di seguito sono indicate le versioni di software e plugin utilizzate in questa guida. Si consiglia di sviluppare con le stesse versioni; altre versioni non testate potrebbero presentare problemi di compatibilità:
| Software / Plugin | Versione |
|---|---|
| Unity | v6000.0.69f1 |
| Meta XR All-in-One SDK | v205.0.0 |
| LCC Unity SDK | v2.1.35 e successive |
Nota:
- L'SDK Meta supporta solo lo spazio colore Linear di URP, e le scene LCC renderizzate in questo spazio colore appariranno leggermente slavate.
- La versione di Unity, la versione dell'SDK Meta e la versione dell'LCC SDK influiscono tutte sul rendering e sulle prestazioni, quindi cerca di mantenere ciascuna versione software coerente con questa guida.
Flusso di lavoro di sviluppo
Passaggio 1: Creare un progetto URP
Seleziona Universal 3D nel modello di progetto, come mostrato di seguito:

Crea un progetto Universal 3D (URP)
Passaggio 2: Cambiare la piattaforma
Dopo aver creato il progetto, seleziona File → Build Profiles dal menu di Unity per aprire la finestra di build e passa la piattaforma ad Android, come mostrato di seguito:

Passa la piattaforma ad Android in Build Profiles
Passaggio 3: Importare Unity OpenXR
Apri la finestra UPM tramite il menu di Unity Finestra → Gestione pacchetti, seleziona Unity Registry nell'elenco a sinistra, inserisci OpenXR nella casella di ricerca, seleziona OpenXR Plugin dai risultati della ricerca e installalo, come mostrato di seguito:

Installa l'OpenXR Plugin da Unity Registry
Passaggio 4: Importare XR Interaction Toolkit
Seleziona Unity Registry nell'elenco a sinistra, inserisci XR nella casella di ricerca, seleziona XR Interaction Toolkit dai risultati della ricerca e installalo, come mostrato di seguito:

Installa XR Interaction Toolkit da Unity Registry
Passaggio 5: Importare Meta XR All-in-One SDK
Il Meta XR All-in-One SDK è il toolkit di sviluppo XR di Meta; consulta Meta XR All-in-One SDK (UPM).
Prima di usare questo SDK, aggiungilo ai tuoi asset personali nell'Unity Asset Store: https://assetstore.unity.com/packages/tools/integration/meta-xr-all-in-one-sdk-269657. Quindi apri UPM tramite Finestra → Gestione pacchetti, seleziona My Assets a sinistra, inserisci Meta XR nella casella di ricerca e installa Meta XR All-in-One SDK, come mostrato di seguito:

Installa Meta XR All-in-One SDK da My Assets
Passaggio 6: 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
Dopo aver completato i passaggi precedenti, riavvia Unity prima di procedere con le impostazioni successive.
Passaggio 7: Configurare l'ambiente Unity
Configurare XR Plug-in Management
Seleziona File → Project Settings dalla barra dei menu di Unity, seleziona XR Plug-in Management a sinistra e spunta Initialize XR on Startup sia sulla piattaforma Desktop sia su Android, come mostrato di seguito:

Spunta Initialize XR on Startup sulla piattaforma Desktop

Spunta Initialize XR on Startup sulla piattaforma Android
Seleziona la voce OpenXR in XR Plug-in Management e imposta la Render Mode di entrambe le piattaforme Desktop e Android su Multi-pass, come mostrato di seguito:

Imposta la Render Mode OpenXR su Multi-pass
Nota: il Meta XR All-in-One SDK modificherà il valore della Render Mode; assicurati che questo valore sia Multi-pass prima di compilare.
Configurare Player (piattaforma Desktop)
Seleziona Player a sinistra di Project Settings, passa alla piattaforma Desktop, espandi la sezione Other Settings, deseleziona Auto Graphics API, imposta Graphics APIs su Vulkan, Direct3D12, Direct3D11 e rimuovi le altre API grafiche; imposta Color Space su Linear, come mostrato di seguito:

Imposta le API grafiche e lo spazio colore Linear sulla piattaforma Desktop
Configurare Player (piattaforma Android)
Seleziona Player a sinistra di Project Settings, passa alla piattaforma Android, espandi la sezione Other Settings, deseleziona Auto Graphics API, imposta Graphics APIs su Vulkan e rimuovi le altre API grafiche; imposta Color Space su Linear (l'SDK Meta supporta solo lo spazio colore Linear), come mostrato di seguito:

Imposta l'API grafica su Vulkan e lo spazio colore Linear sulla piattaforma Android
Impostare Company Name e Product Name
Nella scheda Player, imposta correttamente Company Name e Product Name, come mostrato di seguito:

Imposta Company Name e Product Name
Impostare lo scripting backend e l'input della piattaforma Android
Scorri verso il basso nella scheda Other Settings della piattaforma Android e imposta Minimum API Level = Android 12L (API Level 32) o superiore, Scripting Backend = IL2CPP, Target Architectures = ARM64, Active Input Handling = Input System Package (New), come mostrato di seguito:

Imposta Minimum API Level, Scripting Backend, Target Architectures e Active Input Handling
Controllare Graphics e Quality
Seleziona Graphics a sinistra di Project Settings e controlla il Render Asset corrispondente alla Default Render Pipeline usata dalla piattaforma Mobile, Mobile_RPAsset in questo esempio, come mostrato di seguito:

Controlla il Render Asset della Default Render Pipeline sulla piattaforma Mobile
Seleziona Quality a sinistra di Project Settings, controlla il Render Asset corrispondente alla Default Render Pipeline usata dalla piattaforma Mobile (Mobile_RPAsset in questo esempio), imposta Resolution Scaling Fixed DPI Factor = 0.7, VSync Count = Don't Sync, come mostrato di seguito:

Imposta DPI Factor e VSync in Quality
Configurare il Render Asset
Trova il Render Asset corrispondente alla Default Render Pipeline usata dalla piattaforma Mobile (Mobile_RPAsset in questo esempio). Dopo avervi fatto clic, l'Asset verrà individuato nella finestra Progetto. Seleziona l'Asset, poi nella finestra delle proprietà (Inspector): deseleziona Depth Texture, Opaque Texture, HDR; imposta Anti Aliasing (MSAA) = Disabled, Render Scale = 0.7, Upscaling Filter = Automatic, come mostrato di seguito:

Disattiva Depth/Opaque Texture, HDR, MSAA e imposta Render Scale = 0.7 nel Render Asset
Trova il Renderer corrispondente a questo Render Asset, Mobile_Renderer (Universal Renderer Data) in questo esempio, e impostane le relative proprietà nella finestra delle proprietà (Inspector), come mostrato di seguito:

Configura le proprietà di Mobile_Renderer (Universal Renderer Data)
Project Validation
Seleziona XR Plug-in Management a sinistra di Project Settings, poi seleziona Project Validation. Correggi gli elementi di validazione contrassegnati in rosso — fai clic sul pulsante Fix a destra di ogni elemento rosso per correggerlo; gli elementi di avviso gialli possono essere corretti secondo necessità o lasciati non gestiti per ora. Prima dell'elaborazione, come mostrato di seguito:

Project Validation prima dell'elaborazione (elementi contrassegnati in rosso presenti)
Dopo l'elaborazione, come mostrato di seguito:

Project Validation dopo l'elaborazione (elementi contrassegnati in rosso corretti)
Passaggio 8: Creare la scena
Questo esempio parte da una scena completamente nuova (Scene). Dopo aver creato una scena Unity, elimina il GameObject Camera principale nella finestra Gerarchia, quindi fai clic con il pulsante destro in un'area vuota della finestra e seleziona XR → XR Origin (VR) dal menu a comparsa, come mostrato di seguito:

Crea XR Origin (VR) tramite il menu contestuale
Passaggio 9: Configurare la scena
Seleziona il GameObject XR Origin (VR) nella finestra Gerarchia e, nel componente XR Origin della finestra delle proprietà (Inspector), imposta Tracking Origin Mode su Floor, come mostrato di seguito:

Imposta Tracking Origin Mode di XR Origin su Floor
Seleziona il GameObject Camera principale sotto XR Origin (VR) nella finestra Gerarchia e imposta le proprietà della Camera nella finestra delle proprietà (Inspector):
| Proprietà | Valore consigliato | Descrizione |
|---|---|---|
| Campo visivo (FOV) | 60 | FOV |
| Piani di ritaglio → Vicino | 0.2 ~ 0.3 | Piano di ritaglio vicino |
| Piani di ritaglio → Lontano | 3000 ~ 5000 | Piano di ritaglio lontano, per coprire scene su larga scala |
| Anti-aliasing | Nessun anti-aliasing | Anti-aliasing disabilitato per impostazione predefinita |
| Opaque Texture | Off | Off per impostazione predefinita |
| Depth Texture | Off | Off per impostazione predefinita |
| Tipo di sfondo | Colore uniforme | Si consiglia un colore uniforme |
| Sfondo | Nero | Si consiglia il colore nero come sfondo predefinito |
| Rendering HDR | Off | Off per impostazione predefinita |
| MSAA | Off | Off per impostazione predefinita |
| Risoluzione dinamica URP | Off | Off per impostazione predefinita |
Le altre proprietà sono come mostrato di seguito:

Imposta le proprietà del componente Camera della Camera principale sotto XR Origin (VR)
Passaggio 10: Scrivere il codice per caricare la scena
Fai clic con il pulsante destro su Crea vuoto nella finestra Gerarchia per creare un oggetto vuoto, denominalo LCCManager, normalizza il suo Transform e collega lo script LCCManager, come mostrato di seguito:

Crea un oggetto vuoto LCCManager e collega lo script LCCManager
Fai clic con il pulsante destro su Crea vuoto nella finestra Gerarchia per creare un altro oggetto vuoto, denominalo LCCRenderer e imposta il suo Transform con Rotation.x = -90, Scale.x = -1, come mostrato di seguito:

Crea un oggetto vuoto LCCRenderer e imposta Rotation.x = -90 e Scale.x = -1 per allineare i sistemi 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;
public class LCCRenderer : MonoBehaviour
{
public LCCManager m_manager;
public string m_FilePath;
private LCCCore.Renderer m_renderer;
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.Quest);
m_renderer = m_manager.GetRender(this.gameObject.transform);
m_renderer.Load(m_FilePath, onProgress, onLoaded);
//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 lo script al GameObject LCCRenderer nella finestra Gerarchia, quindi trascina il GameObject LCCManager sulla proprietà Manager dello script nella finestra delle proprietà (Inspector), infine inserisci il percorso del file LCC, poi compila ed esegui.

Collega lo script LCCRenderer all'oggetto 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: usa la piattaforma PC nell'Editor di Unity e la piattaforma Quest su un dispositivo Quest.
Per i dispositivi Quest, si consiglia di collocare l'origine dati su un server; durante il test puoi anche usare l'origine dati direttamente sul dispositivo. I passaggi specifici sono:
- Esegui l'app compilata sul dispositivo Quest una volta.
- Dopo l'installazione dell'app, accedi alla sua directory dati (generalmente memoria del dispositivo Quest → Android → data → BundleID dell'app → Files; consulta il percorso di installazione delle app Android per la directory specifica) e crea una cartella
LccDatanella sottodirectory Files. - Copia tutte le origini dati LCC nella cartella
LccData.
Nota:
- In pratica, si consiglia di collocare l'origine dati dell'app Quest su un server invece di pacchettizzarla direttamente nell'app.
- La capacità di rendering su schermo del dispositivo Quest 3 per la 3DGS è di circa 700.000 primitive gaussiane, circa due ordini di grandezza in meno rispetto alla capacità lato PC di circa 25 milioni. È consigliata principalmente per il rendering e la visualizzazione di scene piccole e oggetti singoli; le scene grandi saranno più fluide con lo streaming PC.
- Quando si renderizzano scene LCC grandi, si consiglia di impostare StartLOD su
2e di disabilitare la visualizzazione dei dati ambiente (come mostrato nel codice di esempio).
Riferimenti correlati
- Per le impostazioni di progetto e l'ottimizzazione delle prestazioni, consulta i capitoli Guida all'ottimizzazione delle impostazioni di progetto e Guida ai parametri di prestazione del rendering.
- Per altri flussi di lavoro di sviluppo Meta, consulta la documentazione ufficiale: Documentazione per sviluppatori Meta.
- Durante lo sviluppo Quest, imposta la Render Mode della piattaforma Desktop su Multi-pass in Project Settings → OpenXR; altrimenti le scene LCC non possono essere renderizzate normalmente in Unity (inclusi sia l'Editor sia il Runtime).