Guida allo sviluppo della ricezione delle ombre
L'LCC Unity SDK supporta la proiezione dinamica delle ombre dagli oggetti Mesh sulle superfici 3DGS per ottenere migliori effetti di illuminazione. Di seguito vengono descritti i passaggi completi per implementare le ombre dinamiche.
Passaggio 1: crea la scena e i GameObject
Crea una scena completamente nuova in Unity. Unity crea Camera principale e Luce direzionale per impostazione predefinita.
Configura la Camera principale
Seleziona Camera principale nella finestra Gerarchia e imposta le sue proprietà nella finestra Inspector come mostrato di seguito.

Imposta le proprietà della Camera principale
Crea LCCManager
Fai clic con il pulsante destro su un'area vuota nella finestra Gerarchia, seleziona Crea vuoto dal menu a comparsa per creare un GameObject vuoto, assegna il nome LCCManager, normalizza il suo Transform e aggiungi lo script LCCManager tramite Aggiungi componente.

Crea il GameObject LCCManager e aggiungi lo script LCCManager
Crea LCCRenderer
Fai clic con il pulsante destro su un'area vuota nella finestra Gerarchia, seleziona Crea vuoto per creare un GameObject vuoto, assegna il nome LCCRenderer e imposta il suo Transform su Rotation.x = -90 e Scale.x = -1.

Crea LCCRenderer e imposta il suo Transform (Rotation.x = -90, Scale.x = -1)
Nota:
Le impostazioni Transform del GameObject LCCRenderer (Rotation.x = -90, Scale.x = -1) lo allineano al sistema di coordinate dei dati LCC. Per i dettagli sull'allineamento del sistema di coordinate, vedi "Sistema di coordinate dei dati LCC" in Introduzione all'Unity SDK.
Abilita le ombre della Luce direzionale
Seleziona il GameObject Luce direzionale nella finestra Gerarchia e assicurati che le ombre siano abilitate nella finestra Inspector.

Assicurati che le ombre siano abilitate sulla Luce direzionale
Passaggio 2: aggiungi una Render Feature
- Nella barra dei menu di Unity, seleziona File → Impostazioni progetto, scegli Grafica sulla sinistra e conferma l'attuale Render Pipeline Asset predefinita. Questo esempio usa URP (Universal Render Pipeline Asset).

Conferma la Render Pipeline Asset predefinita nelle impostazioni Grafica
Fai clic su quell'Asset, individua il file asset corrispondente nella finestra Progetto e trova il relativo Renderer associato (
URP_Renderer.assetin questo esempio).Seleziona quel file asset del Renderer, fai clic su Aggiungi Renderer Feature nella finestra Inspector e aggiungi la Splat Shadow Mask Feature.

Aggiungi la Splat Shadow Mask Feature al Renderer URP
Passaggio 3: scrivi uno script per abilitare la ricezione delle ombre
Crea un nuovo script C# denominato LCCShadow.cs con il seguente codice:
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("Avviato ");
m_renderer = m_manager.GetRender(this.transform);
m_renderer.Load(m_FilePath, onProgress, onComplete);
}
private void onProgress(float _progress)
{
Debug.Log($"[LCCRenderer] avanzamento caricamento file: {_progress:P1}");
}
private void onComplete()
{
Debug.Log($"[LCCRenderer] file caricato");
m_manager.SetShadowReceive(true);
//m_manager.SetShadowColor(new Color(0, 0, 0, 1.0f));
//m_manager.SetShadowStrength(0.5f);
}
}
Nota:
La ricezione delle ombre deve essere abilitata dopo il completamento del caricamento della scena LCC, quindi
SetShadowReceive(true)viene chiamato nel callbackonComplete.
Passaggio 4: associa lo script e imposta il percorso dati
- Associa lo script
LCCShadow.csal GameObject LCCRenderer nella finestra Gerarchia. - Nella finestra Inspector, trascina il GameObject LCCManager sulla proprietà Manager dello script.
- Inserisci il percorso del file LCC nella proprietà File Path dello script.
Passaggio 5: crea un oggetto Mesh che proietta ombre
- Crea un oggetto Cube nella scena e assicurati che Proietta ombre = On.
- Sposta il Cube in una posizione adatta in modo da poter osservare l'ombra che proietta sulla superficie 3DGS.
Passaggio 6: esegui
Fai clic sul pulsante Play nella finestra Game e sposta il Cube in tempo reale per osservare l'ombra dinamica che proietta.

Il Cube che proietta un'ombra dinamica sulla superficie 3DGS dopo l'esecuzione
FAQ: disattiva la modalità compatibilità
Se la finestra Console di Unity segnala errori e non compare alcuna ombra, disattiva la modalità compatibilità: apri il pannello delle impostazioni tramite Modifica → Impostazioni progetto → Grafica, seleziona la scheda URP e non selezionare la casella dopo Render Graph → Modalità compatibilità (Render Graph disabilitato).

Non selezionare la modalità compatibilità del Render Graph (Render Graph disabilitato)
Passaggi chiave
I passaggi chiave per proiettare ombre dagli oggetti Mesh sulle superfici 3DGS:
- Assicurati che la scena abbia una Luce direzionale con le ombre abilitate.
- Assicurati che la scena abbia un oggetto Mesh che proietta ombre con Proietta ombre = On.
- Assicurati che la Splat Shadow Mask Feature sia stata aggiunta al Renderer URP.
- Assicurati che la ricezione delle ombre sia abilitata nel codice dopo il completamento del caricamento della scena LCC (
SetShadowReceive(true)).
API relative alle ombre
L'LCC Unity SDK fornisce le seguenti tre API relative alle ombre tramite LCCManager. Devono essere tutte chiamate dopo il completamento del caricamento della scena LCC (ovvero nel callback onComplete) e SetShadowColor() / SetShadowStrength() hanno effetto solo dopo che SetShadowReceive(true) è stato abilitato.
SetShadowReceive
// Valore restituito: void
public void SetShadowReceive(bool enable)
Attiva/disattiva la ricezione delle ombre della nuvola di punti. Quando è abilitata, le ombre degli oggetti Mesh nella scena possono essere proiettate sulla superficie della nuvola di punti 3DGS.
| Parametro | Tipo | Descrizione |
|---|---|---|
enable | bool | Indica se ricevere le ombre |
Esempio di utilizzo:
m_manager.SetShadowReceive(true);
Note:
- Disabilitata per impostazione predefinita.
- Richiede un oggetto Mesh che proietta ombre e una Luce direzionale nella scena.
- Quando è abilitata, viene abilitata la parola chiave shader
_SPLAT_SHADOW_ON.
SetShadowColor
// Valore restituito: void
public void SetShadowColor(Color color)
Imposta il colore dell'area in ombra.
| Parametro | Tipo | Descrizione |
|---|---|---|
color | Color | Colore dell'ombra (RGBA) |
Esempio di utilizzo:
m_manager.SetShadowColor(new Color(0.3f, 0.3f, 0.3f, 1f));
Note:
- Il valore predefinito è
(0.3, 0.3, 0.3, 1). - Richiede che
SetShadowReceive(true)sia abilitato prima.
SetShadowStrength
// Valore restituito: void
public void SetShadowStrength(float strength)
Imposta l'intensità dell'ombra. 0 significa nessuna ombra e 1 significa l'ombra più forte.
| Parametro | Tipo | Descrizione |
|---|---|---|
strength | float | Intensità dell'ombra, nell'intervallo [0, 1] |
Esempio di utilizzo:
m_manager.SetShadowStrength(0.8f);
Note:
- Il valore predefinito è
1.0. - Intervallo
[0, 1]; i valori fuori dall'intervallo vengono limitati automaticamente. - Richiede che
SetShadowReceive(true)sia abilitato prima.