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 de la réception des ombres

Le LCC Unity SDK prend en charge la projection dynamique d'ombres depuis des objets Mesh sur les surfaces 3DGS pour de meilleurs effets d'éclairage. Ce qui suit décrit les étapes complètes pour implémenter les ombres dynamiques.

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

Activer les ombres de la Lumière directionnelle

Sélectionnez le GameObject Lumière directionnelle dans la fenêtre Hiérarchie, et assurez-vous que les ombres sont activées dans la fenêtre Inspecteur.

S'assurer que les ombres sont activées sur la Lumière directionnelle

S'assurer que les ombres sont activées sur la Lumière directionnelle

Étape 2 : Ajouter une Render Feature

  1. Dans la barre de menus Unity, sélectionnez Fichier → Paramètres du projet, choisissez Graphismes à gauche, et confirmez le Default Render Pipeline Asset actuel. Cet exemple utilise URP (Universal Render Pipeline Asset).
Confirmer le Default Render Pipeline Asset dans les paramètres Graphismes

Confirmer le Default Render Pipeline Asset dans les paramètres Graphismes

  1. Cliquez sur cet Asset, localisez le fichier d'asset correspondant dans la fenêtre Projet, et trouvez son Renderer associé (URP_Renderer.asset dans cet exemple).

  2. Sélectionnez ce fichier d'asset Renderer, cliquez sur Add Renderer Feature dans la fenêtre Inspecteur, et ajoutez la Splat Shadow Mask Feature.

Ajouter la Splat Shadow Mask Feature au Renderer URP

Ajouter la Splat Shadow Mask Feature au Renderer URP

Étape 3 : Écrire un script pour activer la réception des ombres

Créez un nouveau script C# nommé LCCShadow.cs avec le code suivant :

using LCCCore;
using UnityEngine;

public class LCCShadow : MonoBehaviour
{
    public LCCManager m_manager;
    public string m_FilePath;
    private LCCCore.Renderer m_renderer;

    void Start()
    {
        m_manager.SetPlatformType(PlatformType.PC);
        m_manager.SwitchRenderPass(ActiveRenderMode.SingleRender);

        Debug.Log("Démarré ");
        m_renderer = m_manager.GetRender(this.transform);
        m_renderer.Load(m_FilePath, onProgress, onComplete);
    }

    private void onProgress(float _progress)
    {
        Debug.Log($"[LCCRenderer] progression du chargement du fichier : {_progress:P1}");
    }

    private void onComplete()
    {
        Debug.Log($"[LCCRenderer] fichier chargé");
        m_manager.SetShadowReceive(true);
        //m_manager.SetShadowColor(new Color(0, 0, 0, 1.0f));
        //m_manager.SetShadowStrength(0.5f);
    }
}

Remarque :

La réception des ombres doit être activée après la fin du chargement de la scène LCC, donc SetShadowReceive(true) est appelé dans le callback onComplete.

Étape 4 : Attacher le script et définir le chemin des données

  1. Attachez le script LCCShadow.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. Renseignez le chemin du fichier LCC dans la propriété File Path du script.

Étape 5 : Créer un objet Mesh projetant une ombre

  1. Créez un objet Cube dans la scène et assurez-vous que Cast Shadows = On.
  2. Déplacez le Cube vers une position appropriée pour pouvoir observer l'ombre qu'il projette sur la surface 3DGS.

Étape 6 : Exécuter

Cliquez sur le bouton Play dans la fenêtre Jeu et déplacez le Cube en temps réel pour observer l'ombre dynamique qu'il projette.

Le Cube projetant une ombre dynamique sur la surface 3DGS après l'exécution

Le Cube projetant une ombre dynamique sur la surface 3DGS après l'exécution

FAQ : Désactiver le mode de compatibilité

Si la fenêtre Console de Unity signale des erreurs et qu'aucune ombre n'apparaît, désactivez le mode de compatibilité : ouvrez le panneau des paramètres via Édition → Paramètres du projet → Graphismes, sélectionnez l'onglet URP, et ne cochez pas la case après Render Graph → Compatibility Mode (Render Graph Disabled).

Ne pas cocher le mode de compatibilité Render Graph

Ne pas cocher le mode de compatibilité Render Graph (Render Graph Disabled)

Étapes clés

Les étapes clés pour projeter des ombres depuis des objets Mesh sur les surfaces 3DGS :

  1. Assurez-vous que la scène comporte une Lumière directionnelle avec les ombres activées.
  2. Assurez-vous que la scène comporte un objet Mesh qui projette des ombres avec Cast Shadows = On.
  3. Assurez-vous que la Splat Shadow Mask Feature a été ajoutée au Renderer URP.
  4. Assurez-vous que la réception des ombres est activée dans le code après la fin du chargement de la scène LCC (SetShadowReceive(true)).

API liées aux ombres

Le LCC Unity SDK fournit les trois API liées aux ombres suivantes via LCCManager. Elles doivent toutes être appelées après la fin du chargement de la scène LCC (c'est-à-dire dans le callback onComplete), et SetShadowColor() / SetShadowStrength() ne prennent effet qu'après l'activation de SetShadowReceive(true).

SetShadowReceive

// Valeur de retour : void
public void SetShadowReceive(bool enable)

Active/désactive la réception des ombres du nuage de points. Lorsqu'elle est activée, les ombres des objets Mesh de la scène peuvent être projetées sur la surface du nuage de points 3DGS.

ParamètreTypeDescription
enableboolS'il faut recevoir les ombres

Exemple d'utilisation :

m_manager.SetShadowReceive(true);

Remarques :

  • Désactivé par défaut.
  • Nécessite un objet Mesh projetant une ombre et une Lumière directionnelle dans la scène.
  • Lorsqu'il est activé, le mot-clé de shader _SPLAT_SHADOW_ON est activé.

SetShadowColor

// Valeur de retour : void
public void SetShadowColor(Color color)

Définit la couleur de la zone d'ombre.

ParamètreTypeDescription
colorColorCouleur de l'ombre (RGBA)

Exemple d'utilisation :

m_manager.SetShadowColor(new Color(0.3f, 0.3f, 0.3f, 1f));

Remarques :

  • La valeur par défaut est (0.3, 0.3, 0.3, 1).
  • Nécessite que SetShadowReceive(true) soit d'abord activé.

SetShadowStrength

// Valeur de retour : void
public void SetShadowStrength(float strength)

Définit la force de l'ombre. 0 signifie aucune ombre et 1 signifie l'ombre la plus forte.

ParamètreTypeDescription
strengthfloatForce de l'ombre, dans la plage [0, 1]

Exemple d'utilisation :

m_manager.SetShadowStrength(0.8f);

Remarques :

  • La valeur par défaut est 1.0.
  • Plage [0, 1] ; les valeurs hors plage sont automatiquement bornées.
  • Nécessite que SetShadowReceive(true) soit d'abord activé.