XGRIDSDocumentation
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • Lixel CyberColor

    • LCC Studio

      • Prise en main
      • Version et mises à jour
      • Téléchargement et installation
      • Aperçu de l’interface et navigation
      • Avant la reconstruction
      • Reconstruction du modèle
      • Reconstruction d’un modèle unique
      • Fusion cartographique
      • Fusion aérienne-terrestre
      • Reconstruction aérienne
      • Mes modèles
      • Autres fonctionnalités
      • Paramètres et compte
      • Convertisseur
      • Reconstruction vidéo
      • Questions fréquentes
    • LCC Scene Editor

      • Version et mises à jour
      • Compte et connexion
      • Présentation du produit et accueil
      • Interface de l’éditeur
      • Modes de navigation de scène
      • Fichier
      • Paramètres
      • Opérations d’édition
      • Fenêtre
      • Barre d’outils globale
      • Ressources et propriétés
      • Barre d’outils gauche
      • Points de vue
      • Portail
      • Skybox
      • Annotations
      • Mesure
      • Parcours
      • Rapport de scène
      • 3D Layout
      • Mini-carte
      • Mode Prévisualisation, Viewer
      • Aide
      • FAQ
      • Point d’apparition
    • LCC Model Editor

      • Version et mises à jour
      • Guide de l’utilisateur
      • Aperçu et interface
      • Opérations sur les fichiers
      • Sélecteurs
      • Modification des modèles
      • Mesure
      • Réglage des couleurs
      • Gestion des ressources
      • Paramètres et aide
      • Questions fréquentes
    • Bonnes Pratiques

      • Fusion de plusieurs modèles 3DGS de grande taille
  • Plugin & SDK

    • Unreal

      • Introduction
      • Démarrage rapide - Windows
      • Démarrage rapide - Linux
      • Démarrage rapide - Quest3
      • Éditions et licences
      • Rendu
      • Rastérisation Tiled (expérimental)
      • Réglages visuels
      • Normales et éclairage
      • Édition de scène
      • Paramètres de performance
      • Guide d'optimisation des performances
      • Intégration avec les plugins tiers et moteur
      • Maillage proxy
      • Animation de chargement
      • Collision
      • Prise en charge du système de navigation
      • Prise en charge de l'eau à couche unique
      • Localisation
      • Questions fréquentes
      • Dépannage
      • Journaux et diagnostics
      • Nous contacter
      • Bonnes pratiques

        • Rééclairer un 3DGS avec un maillage LixelStudio
      • Référence API

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • Actors SOG / SPZ / PLY
        • ALCC2ProxyMesh
        • ALCCClippingVolume
        • ALCCSectionPlane
        • ALCCLoadVolume
        • ULCCUtilLibrary
        • Enums
        • Structs
      • Journal des modifications

        • 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

      • Introduction au SDK Unity
      • Fonctionnalités techniques
      • Exigences de l'environnement de développement
      • Guide de démarrage rapide PC
      • Guide d'optimisation des paramètres de projet
      • Guide de développement Pico 4 Ultra
      • Guide de streaming PC du Pico 4 Ultra
      • Guide de développement Quest 3
      • Guide de streaming PC du Quest 3
      • Guide de développement OpenXR
      • Guide Business Streaming du Pico 4 Ultra
      • Glossaire
      • FAQ
      • Nous contacter
      • Guide de développement des fonctionnalités

        • Guide de développement du rendu mixte multi-scènes
        • Guide de développement de la réception des ombres
        • Guide de développement de l'éclairage en temps réel
        • Guide de développement du rendu multi-caméras
        • Guide de développement du rendu d'images haute résolution
        • Guide de développement de la compatibilité des formats de données LCC et LCC2
        • Guide de développement de l'effet de chargement
        • Guide de développement du basculement du mode de rendu Mip
        • Guide de développement de l'accrochage aux arêtes et aux coins
        • Guide de développement du décalque projeté
        • Guide de développement du décalque projeté vidéo
        • Guide de développement du surlignage
        • Guide de développement de la découpe en temps réel
        • Guide de développement du réglage des couleurs
        • Guide de développement de l'obtention des données Mesh de la scène
        • Guide de développement du mode éditeur
        • Guide de configuration des paramètres de performance de rendu
        • Guide de développement du co-packageage de l'application et des données
        • Guide de développement du système de collision
        • Guide des problèmes d'autorisation de développement macOS
        • Guide de développement de la compilation et du packageage sur appareil iOS
      • Référence de l'API

        • LCCManager
        • Renderer
        • Types de données
      • Journal des modifications

        • v2.3.0
        • v2.2.10
        • v2.2.0
        • v2.1.19
        • v2.0.14

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

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 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

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 Camera01

Définir les propriétés de Camera02

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 AddCamera est appelé dans le callback onComplete.
  • Le nom du fichier de script doit correspondre au nom de la classe (MultiCamera.cs correspond à 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 via AddCamera ; 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

  1. Attachez le script MultiCamera.cs au GameObject LCCRenderer dans la fenêtre Hiérarchie.
  2. Dans la fenêtre Inspecteur, faites glisser le GameObject LCCManager sur la propriété Manager du script.
  3. Faites glisser les GameObjects Camera01 et Camera02 sur les propriétés Camera01 et Camera02 du script respectivement.
  4. 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

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 rendant simultanément après l'exécution

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 :

  1. 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).
  2. La caméra principale est définie via SetMainCamera ; les caméras secondaires sont enregistrées via AddCamera après la fin du chargement de la scène (dans le callback onComplete).
  3. Contrôlez la zone de rendu de chaque caméra à l'écran via son Viewport Rect.
  4. Lorsque l'objet est détruit (OnDestroy), supprimez les caméras secondaires via RemoveCamera pour é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.SingleRender et activez le rendu complet sur le Renderer (Renderer.SetRenderAll(true), qui prend effet au prochain Load()). 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 / RemoveCamera ne 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ètreTypeDescription
_camCameraCamé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 null pour 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ètreTypeDescription
_camCameraCamé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ètreTypeDescription
_camCameraLa 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.