Guide de développement Quest 3
Le flux de travail de développement LCC pour le Quest 3 est légèrement différent du flux de travail officiel de création de projet VR de Meta : les modifications officielles de Meta apportées à la configuration Unity rendent le rendu LCC incompatible avec le flux de travail recommandé dans leur documentation de développement. Voir le flux de travail officiel de Meta sur Set up Unity for XR development. En s'appuyant sur ce flux de travail, ce guide explique comment intégrer le LCC Unity SDK pour rendre des scènes 3DGS.
Exigences de version
Les versions de logiciels et de plugins utilisées dans ce guide sont les suivantes. Il est recommandé de développer avec les mêmes versions ; d'autres versions non testées peuvent présenter des problèmes de compatibilité :
| Logiciel / Plugin | Version |
|---|---|
| Unity | v6000.0.69f1 |
| Meta XR All-in-One SDK | v205.0.0 |
| LCC Unity SDK | v2.1.35 et versions ultérieures |
Remarque :
- Le Meta SDK ne prend en charge que l'espace colorimétrique Linear d'URP, et les scènes LCC rendues dans cet espace colorimétrique paraîtront légèrement délavées.
- La version de Unity, la version du Meta SDK et la version du LCC SDK affectent toutes le rendu et les performances ; essayez donc de garder chaque version logicielle cohérente avec ce guide.
Flux de travail de développement
Étape 1 : Créer un projet URP
Sélectionnez Universal 3D dans le modèle de projet, comme illustré ci-dessous :

Créer un projet Universal 3D (URP)
Étape 2 : Basculer de plateforme
Une fois le projet créé, sélectionnez Fichier → Build Profiles dans le menu Unity pour ouvrir la fenêtre de compilation, et basculez la plateforme vers Android, comme illustré ci-dessous :

Basculer la plateforme vers Android dans Build Profiles
Étape 3 : Importer Unity OpenXR
Ouvrez la fenêtre UPM via le menu Unity Fenêtre → Package Manager, sélectionnez Unity Registry dans la liste de gauche, saisissez OpenXR dans la zone de recherche, sélectionnez OpenXR Plugin dans les résultats et installez-le, comme illustré ci-dessous :

Installer l'OpenXR Plugin depuis Unity Registry
Étape 4 : Importer XR Interaction Toolkit
Sélectionnez Unity Registry dans la liste de gauche, saisissez XR dans la zone de recherche, sélectionnez XR Interaction Toolkit dans les résultats et installez-le, comme illustré ci-dessous :

Installer XR Interaction Toolkit depuis Unity Registry
Étape 5 : Importer le Meta XR All-in-One SDK
Le Meta XR All-in-One SDK est la boîte à outils de développement XR de Meta ; voir Meta XR All-in-One SDK (UPM).
Avant d'utiliser ce SDK, ajoutez-le à vos actifs personnels dans l'Unity Asset Store : https://assetstore.unity.com/packages/tools/integration/meta-xr-all-in-one-sdk-269657. Ensuite, ouvrez l'UPM via Fenêtre → Package Manager, sélectionnez My Assets à gauche, saisissez Meta XR dans la zone de recherche, et installez Meta XR All-in-One SDK, comme illustré ci-dessous :

Installer Meta XR All-in-One SDK depuis My Assets
Étape 6 : Importer le LCC Unity SDK
Ouvrez la fenêtre UPM via le menu Unity Fenêtre → Package Manager, cliquez sur + à gauche, sélectionnez Install package from disk dans le menu déroulant, localisez le LCC Unity SDK, puis sélectionnez le fichier package.json pour l'importer, comme illustré ci-dessous :

Importer le LCC Unity SDK via Install package from disk
Après avoir terminé les étapes ci-dessus, redémarrez Unity avant de procéder aux réglages suivants.
Étape 7 : Configurer l'environnement Unity
Configurer XR Plug-in Management
Sélectionnez Fichier → Paramètres du projet dans la barre de menus Unity, sélectionnez XR Plug-in Management à gauche, et cochez Initialize XR on Startup sous les plateformes Desktop et Android, comme illustré ci-dessous :

Cocher Initialize XR on Startup sur la plateforme Desktop

Cocher Initialize XR on Startup sur la plateforme Android
Sélectionnez l'élément OpenXR sous XR Plug-in Management, et définissez le Render Mode des plateformes Desktop et Android sur Multi-pass, comme illustré ci-dessous :

Définir le Render Mode OpenXR sur Multi-pass
Remarque : le Meta XR All-in-One SDK modifiera la valeur du Render Mode ; assurez-vous que cette valeur est Multi-pass avant la compilation.
Configurer Player (plateforme Desktop)
Sélectionnez Player à gauche de Paramètres du projet, basculez vers la plateforme Desktop, déployez la section Other Settings, décochez Auto Graphics API, définissez Graphics APIs sur Vulkan, Direct3D12, Direct3D11, et supprimez les autres API graphiques ; définissez Color Space sur Linear, comme illustré ci-dessous :

Définir les API graphiques et l'espace colorimétrique Linear sur la plateforme Desktop
Configurer Player (plateforme Android)
Sélectionnez Player à gauche de Paramètres du projet, basculez vers la plateforme Android, déployez la section Other Settings, décochez Auto Graphics API, définissez Graphics APIs sur Vulkan, et supprimez les autres API graphiques ; définissez Color Space sur Linear (le Meta SDK ne prend en charge que l'espace colorimétrique Linear), comme illustré ci-dessous :

Définir l'API graphique sur Vulkan et l'espace colorimétrique Linear sur la plateforme Android
Définir Company Name et Product Name
Dans l'onglet Player, définissez correctement Company Name et Product Name, comme illustré ci-dessous :

Définir Company Name et Product Name
Définir le backend de script et la saisie de la plateforme Android
Faites défiler l'onglet Other Settings de la plateforme Android vers le bas, et définissez Minimum API Level = Android 12L (API Level 32) ou supérieur, Scripting Backend = IL2CPP, Target Architectures = ARM64, Active Input Handling = Input System Package (New), comme illustré ci-dessous :

Définir Minimum API Level, Scripting Backend, Target Architectures et Active Input Handling
Vérifier Graphismes et Qualité
Sélectionnez Graphismes à gauche de Paramètres du projet, et vérifiez le Render Asset correspondant au Default Render Pipeline utilisé par la plateforme Mobile, Mobile_RPAsset dans cet exemple, comme illustré ci-dessous :

Vérifier le Render Asset du Default Render Pipeline sur la plateforme Mobile
Sélectionnez Qualité à gauche de Paramètres du projet, vérifiez le Render Asset correspondant au Default Render Pipeline utilisé par la plateforme Mobile (Mobile_RPAsset dans cet exemple), définissez Resolution Scaling Fixed DPI Factor = 0.7, VSync Count = Don't Sync, comme illustré ci-dessous :

Définir le DPI Factor et VSync dans Qualité
Configurer le Render Asset
Trouvez le Render Asset correspondant au Default Render Pipeline utilisé par la plateforme Mobile (Mobile_RPAsset dans cet exemple). Après avoir cliqué dessus, l'Asset sera localisé dans la fenêtre de projet (Projet). Sélectionnez l'Asset, puis dans la fenêtre de propriétés (Inspecteur) : décochez Depth Texture, Opaque Texture, HDR ; définissez Anti Aliasing (MSAA) = Disabled, Render Scale = 0.7, Upscaling Filter = Automatic, comme illustré ci-dessous :

Désactiver Depth/Opaque Texture, HDR, MSAA et définir Render Scale = 0.7 dans le Render Asset
Trouvez le Renderer correspondant à ce Render Asset, Mobile_Renderer (Universal Renderer Data) dans cet exemple, et définissez ses propriétés pertinentes dans la fenêtre de propriétés (Inspecteur), comme illustré ci-dessous :

Configurer les propriétés de Mobile_Renderer (Universal Renderer Data)
Project Validation
Sélectionnez XR Plug-in Management à gauche de Paramètres du projet, puis sélectionnez Project Validation. Corrigez les éléments de validation marqués en rouge — cliquez sur le bouton Fix à droite de chaque élément rouge pour le corriger ; les éléments d'avertissement jaunes peuvent être corrigés selon les besoins ou laissés non traités pour l'instant. Avant traitement, comme illustré ci-dessous :

Project Validation avant traitement (éléments marqués en rouge présents)
Après traitement, comme illustré ci-dessous :

Project Validation après traitement (éléments marqués en rouge corrigés)
Étape 8 : Créer la scène
Cet exemple part d'une toute nouvelle scène (Scène). Après avoir créé une scène Unity, supprimez le GameObject Caméra principale dans la fenêtre de hiérarchie (Hiérarchie), puis faites un clic droit dans une zone vide de la fenêtre et sélectionnez XR → XR Origin (VR) dans le menu contextuel, comme illustré ci-dessous :

Créer XR Origin (VR) via le menu contextuel
Étape 9 : Configurer la scène
Sélectionnez le GameObject XR Origin (VR) dans la fenêtre de hiérarchie (Hiérarchie), et dans le composant XR Origin de la fenêtre de propriétés (Inspecteur), définissez Tracking Origin Mode sur Floor, comme illustré ci-dessous :

Définir le Tracking Origin Mode de XR Origin sur Floor
Sélectionnez le GameObject Caméra principale sous XR Origin (VR) dans la fenêtre de hiérarchie (Hiérarchie), et définissez les propriétés de la caméra dans la fenêtre de propriétés (Inspecteur) :
| Propriété | Valeur recommandée | Description |
|---|---|---|
| Field of View | 60 | FOV |
| Clipping Planes → Near | 0.2 ~ 0.3 | Plan de découpe proche |
| Clipping Planes → Far | 3000 ~ 5000 | Plan de découpe lointain, couvrant les scènes à grande échelle |
| Anti-aliasing | No Anti-aliasing | Anti-aliasing désactivé par défaut |
| Opaque Texture | Off | Désactivé par défaut |
| Depth Texture | Off | Désactivé par défaut |
| Background Type | Solid Color | Une couleur unie est recommandée |
| Background | Black | La couleur d'arrière-plan par défaut recommandée est le noir |
| HDR Rendering | Off | Désactivé par défaut |
| MSAA | Off | Désactivé par défaut |
| URP Dynamic Resolution | Off | Désactivé par défaut |
Les autres propriétés sont comme illustré ci-dessous :

Définir les propriétés du composant Camera de la Caméra principale sous XR Origin (VR)
Étape 10 : Écrire le code pour charger la scène
Faites un clic droit Créer vide dans la fenêtre de hiérarchie (Hiérarchie) pour créer un objet vide, nommez-le LCCManager, normalisez son Transform, et attachez-y le script LCCManager, comme illustré ci-dessous :

Créer un objet vide LCCManager et attacher le script LCCManager
Faites un clic droit Créer vide dans la fenêtre de hiérarchie (Hiérarchie) pour créer un autre objet vide, nommez-le LCCRenderer, et définissez son Transform Rotation.x = -90, Scale.x = -1, comme illustré ci-dessous :

Créer un objet vide LCCRenderer, et définir Rotation.x = -90 et Scale.x = -1 pour aligner les systèmes de coordonnées
Rotation.x = -90 et Scale.x = -1 constituent la transformation d'alignement du système de coordonnées des données LCC (axe Z vers le haut, droitier) vers le système de coordonnées Unity (axe Y vers le haut, gaucher) ; voir « Système de coordonnées des données LCC » dans Introduction au SDK Unity.
Écrivez un script C# nommé LCCRenderer.cs avec le code suivant :
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("progression :" + v);
}
private void onLoaded()
{
m_manager.SetStartLod(2);
m_renderer.SetEnvironment(false);
Debug.Log("Données chargées");
}
}
Attachez le script au GameObject LCCRenderer dans la fenêtre de hiérarchie (Hiérarchie), puis faites glisser le GameObject LCCManager sur la propriété Manager du script dans la fenêtre de propriétés (Inspecteur), et enfin renseignez le chemin du fichier LCC, puis compilez et exécutez.

Attacher le script LCCRenderer à l'objet, et lier le Manager et le chemin du fichier
Pour faciliter le débogage dans l'éditeur Unity et la compilation directe vers un appareil Android, le code utilise des macros de compilation pour distinguer l'environnement d'exécution : utilisez la plateforme PC dans l'éditeur Unity, et la plateforme Quest sur un appareil Quest.
Pour les appareils Quest, il est recommandé de placer la source de données sur un serveur ; pendant les tests, vous pouvez également utiliser directement la source de données sur l'appareil. Les étapes spécifiques sont :
- Exécutez l'application compilée sur l'appareil Quest une fois.
- Une fois l'application installée, entrez dans son répertoire de données (généralement Stockage de l'appareil Quest → Android → data → app BundleID → Files ; reportez-vous au chemin d'installation de l'application Android pour le répertoire spécifique), et créez un dossier
LccDatasous le sous-répertoire Files. - Copiez toutes les sources de données LCC dans le dossier
LccData.
Remarque :
- En pratique, il est recommandé de placer la source de données de l'application Quest sur un serveur plutôt que de la packager directement dans l'application.
- La capacité de rendu à l'écran du Quest 3 pour le 3DGS est d'environ 700 000 primitives gaussiennes, soit environ deux ordres de grandeur de moins que la capacité côté PC d'environ 25 millions. Il est recommandé principalement pour le rendu et l'affichage de petites scènes et d'objets uniques ; les grandes scènes seront plus fluides avec le streaming PC.
- Lors du rendu de grandes scènes LCC, il est recommandé de définir StartLOD sur
2et de désactiver l'affichage des données d'environnement (comme illustré dans le code d'exemple).
Référence associée
- Pour les paramètres de projet et l'optimisation des performances, voir les chapitres Guide d'optimisation des paramètres de projet et Guide des paramètres de performance de rendu.
- Pour d'autres flux de travail de développement Meta, reportez-vous à la documentation officielle : Documentation développeur Meta.
- Pendant le développement Quest, définissez le Render Mode de la plateforme Desktop sur Multi-pass dans Paramètres du projet → OpenXR ; sinon les scènes LCC ne peuvent pas être rendues normalement dans Unity (y compris à la fois dans l'éditeur et à l'exécution).