Guide de développement du rendu multi-caméras
Le LCC Unity SDK prend en charge le rendu avec plusieurs caméras simultanément en mode de rendu complet à scène unique. Ce qui suit utilise l'exemple d'une caméra principale plus deux caméras secondaires pour décrire les étapes complètes de mise en œuvre du rendu multi-caméras.
Étape 1 : Créer la scène et les GameObjects
Créez une toute nouvelle scène dans Unity. Unity crée Caméra principale et Lumière directionnelle par défaut.
Configurer la Caméra principale
Sélectionnez Caméra principale dans la fenêtre Hiérarchie, et définissez ses propriétés dans la fenêtre Inspecteur comme illustré ci-dessous.

Définir les propriétés de la Caméra principale
Créer LCCManager
Faites un clic droit dans une zone vide de la fenêtre Hiérarchie, sélectionnez Créer vide dans le menu contextuel pour créer un GameObject vide, nommez-le LCCManager, normalisez son Transform, et ajoutez-y le script LCCManager via Ajouter un composant.

Créer le GameObject LCCManager et ajouter le script LCCManager
Créer LCCRenderer
Faites un clic droit dans une zone vide de la fenêtre Hiérarchie, sélectionnez Créer vide pour créer un GameObject vide, nommez-le LCCRenderer, et définissez son Transform sur Rotation.x = -90 et Scale.x = -1.

Créer LCCRenderer et définir son Transform (Rotation.x = -90, Scale.x = -1)
Remarque :
Les réglages de Transform du GameObject LCCRenderer (Rotation.x = -90, Scale.x = -1) l'alignent avec le système de coordonnées des données LCC. Pour plus de détails sur l'alignement du système de coordonnées, voir « Système de coordonnées des données LCC » dans Introduction au SDK Unity.
Créer des caméras de rendu secondaires
Faites un clic droit dans une zone vide de la fenêtre Hiérarchie pour créer deux caméras de rendu supplémentaires, nommez-les respectivement Camera01 et Camera02, et définissez les propriétés de ces deux caméras comme illustré ci-dessous.

Définir les propriétés de Camera01

Définir les propriétés de Camera02
Dans cet exemple, le Viewport Rect des deux caméras est configuré pour les placer respectivement dans le coin inférieur gauche et le coin inférieur droit de la fenêtre de rendu principale.
Étape 2 : Écrire le script multi-caméras
Créez un nouveau script C# nommé MultiCamera.cs avec le code suivant :
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("Démarré ");
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] progression du chargement du fichier {m_currentFileIndex} : {_progress:P1}");
}
private void onComplete()
{
Debug.Log($"[LCCRenderer] fichier {m_currentFileIndex} chargé");
m_manager.AddCamera(m_camera01);
m_manager.AddCamera(m_camera02);
}
private void OnDestroy()
{
m_manager.RemoveCamera(m_camera01);
m_manager.RemoveCamera(m_camera02);
}
}
Remarque :
- Les caméras secondaires doivent être enregistrées après la fin du chargement de la scène LCC, donc
AddCameraest appelé dans le callbackonComplete.- Le nom du fichier de script doit correspondre au nom de la classe (
MultiCamera.cscorrespond àclass MultiCamera), sinon il ne peut pas être attaché à un GameObject.- La caméra principale est définie via
SetMainCamera, et les caméras secondaires sont ajoutées viaAddCamera; vous ne pouvez pas ajouter la caméra principale comme caméra secondaire.
Étape 3 : Attacher le script et définir les propriétés
- Attachez le script
MultiCamera.csau GameObject LCCRenderer dans la fenêtre Hiérarchie. - Dans la fenêtre Inspecteur, faites glisser le GameObject LCCManager sur la propriété Manager du script.
- Faites glisser les GameObjects Camera01 et Camera02 sur les propriétés Camera01 et Camera02 du script respectivement.
- Renseignez le chemin du fichier LCC dans la propriété File Path01 du script.

Attacher le script MultiCamera et définir ses propriétés dans l'Inspecteur
Étape 4 : Exécuter
Cliquez sur le bouton Play dans la fenêtre Jeu pour voir l'effet de rendu en temps réel de plusieurs caméras de rendu dans la scène.

Plusieurs caméras de rendu rendant simultanément après l'exécution
Étapes clés
Les étapes clés pour mettre en œuvre le rendu multi-caméras :
- Assurez-vous que la scène est en mode de rendu complet à scène unique (
SwitchRenderPass(ActiveRenderMode.SingleRender)et les données passent par le chemin de chargement complet). - La caméra principale est définie via
SetMainCamera; les caméras secondaires sont enregistrées viaAddCameraaprès la fin du chargement de la scène (dans le callbackonComplete). - Contrôlez la zone de rendu de chaque caméra à l'écran via son Viewport Rect.
- Lorsque l'objet est détruit (
OnDestroy), supprimez les caméras secondaires viaRemoveCamerapour éviter les références pendantes.
Remarques sur le rendu multi-caméras
Seul le mode de rendu complet est pris en charge. Le LCC SDK ne prend actuellement en charge le rendu multi-caméras qu'en mode de rendu complet sous une seule scène. Pour l'optimisation des performances, en mode de rendu par blocs, le SDK ne charge et ne rend que les données visibles à l'intérieur du frustum de la caméra ; et pour rechercher de hautes performances, le filtrage des données de nœuds de scène côté CPU, l'assemblage des données et le téléchargement des données du CPU vers le GPU sont tous asynchrones, de sorte qu'il ne peut pas traiter et rendre les données de plusieurs caméras séparément dans la même image.
Assurez-vous que la scène est en état de rendu complet. Pour utiliser la fonctionnalité complète de rendu multi-caméras, configurez la scène en mode de rendu complet (Full Load) : utilisez
ActiveRenderMode.SingleRenderet activez le rendu complet sur le Renderer (Renderer.SetRenderAll(true), qui prend effet au prochainLoad()). Pour plus de détails sur les modes de rendu et les paramètres de performance, voir Guide de démarrage rapide PC.Plus il y a de caméras, plus le coût de performance est élevé. Chaque caméra de rendu supplémentaire ajoute une passe de rendu complète, de sorte que les performances se dégradent en conséquence. Le rendu multi-caméras est recommandé sur les appareils informatiques haute performance.
Pris en charge uniquement sur PC/Mac.
AddCamera/RemoveCamerane sont efficaces que sur les plateformes PC/Mac.
API multi-caméras
Le LCC Unity SDK fournit les API liées aux caméras suivantes via LCCManager. Les caméras secondaires doivent être enregistrées via AddCamera après la fin du chargement de la scène LCC (c'est-à-dire dans le callback onComplete).
SetMainCamera
// Valeur de retour : void
public void SetMainCamera(Camera _cam)
Définit la caméra de rendu principale. LCC utilise cette caméra pour le frustum culling, la sélection LOD, le tri et d'autres opérations.
| Paramètre | Type | Description |
|---|---|---|
_cam | Camera | Caméra de rendu principale ; passez null pour l'effacer |
Exemple d'utilisation :
m_manager.SetMainCamera(Camera.main);
Remarques :
- Doit être défini avant
Renderer.Load(). - Appelez-la à nouveau lors du changement de caméra.
- Pris en charge uniquement sur PC/Mac.
- Passez
nullpour effacer la caméra principale.
AddCamera
// Valeur de retour : void
public void AddCamera(Camera _cam)
Ajoute une caméra secondaire. Les caméras secondaires participent au rendu mais n'affectent pas la sélection LOD.
| Paramètre | Type | Description |
|---|---|---|
_cam | Camera | Caméra secondaire |
Exemple d'utilisation :
m_manager.AddCamera(m_camera01);
Remarques :
- Pris en charge uniquement sur PC/Mac.
- Vous ne pouvez pas ajouter la caméra principale comme caméra secondaire.
- La sélection LOD n'est déterminée que par la caméra principale ; les caméras secondaires réutilisent les données filtrées par la caméra principale pour le rendu.
RemoveCamera
// Valeur de retour : void
public void RemoveCamera(Camera _cam)
Supprime une caméra secondaire précédemment ajoutée.
| Paramètre | Type | Description |
|---|---|---|
_cam | Camera | La caméra secondaire à supprimer |
Exemple d'utilisation :
m_manager.RemoveCamera(m_camera01);
Remarques :
- Pris en charge uniquement sur PC/Mac.
- Il est recommandé de l'appeler lorsque l'objet est détruit (
OnDestroy) pour nettoyer la référence de la caméra secondaire.