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
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.
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
Étape 2 : Ajouter une Render Feature
- 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
Cliquez sur cet Asset, localisez le fichier d'asset correspondant dans la fenêtre Projet, et trouvez son Renderer associé (
URP_Renderer.assetdans cet exemple).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
É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 callbackonComplete.
Étape 4 : Attacher le script et définir le chemin des données
- Attachez le script
LCCShadow.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.
- Renseignez le chemin du fichier LCC dans la propriété File Path du script.
Étape 5 : Créer un objet Mesh projetant une ombre
- Créez un objet Cube dans la scène et assurez-vous que Cast Shadows = On.
- 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
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 (Render Graph Disabled)
Étapes clés
Les étapes clés pour projeter des ombres depuis des objets Mesh sur les surfaces 3DGS :
- Assurez-vous que la scène comporte une Lumière directionnelle avec les ombres activées.
- Assurez-vous que la scène comporte un objet Mesh qui projette des ombres avec Cast Shadows = On.
- Assurez-vous que la Splat Shadow Mask Feature a été ajoutée au Renderer URP.
- 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ètre | Type | Description |
|---|---|---|
enable | bool | S'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_ONest activé.
SetShadowColor
// Valeur de retour : void
public void SetShadowColor(Color color)
Définit la couleur de la zone d'ombre.
| Paramètre | Type | Description |
|---|---|---|
color | Color | Couleur 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ètre | Type | Description |
|---|---|---|
strength | float | Force 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é.