Ontwikkelgids voor het ontvangen van schaduwen
De LCC Unity SDK ondersteunt het dynamisch werpen van schaduwen van Mesh-objecten op 3DGS-oppervlakken voor betere belichtingseffecten. Hieronder worden de volledige stappen beschreven om dynamische schaduwen te implementeren.
Stap 1: De scène en GameObjects aanmaken
Maak een gloednieuwe scène aan in Unity. Unity maakt standaard Main Camera en Directional Light aan.
Main Camera instellen
Selecteer Main Camera in het Hiërarchie-venster en stel de eigenschappen in het Inspector-venster in zoals hieronder wordt weergegeven.

Stel de eigenschappen van Main Camera in
LCCManager aanmaken
Klik met de rechtermuisknop op een leeg gebied in het Hiërarchie-venster, selecteer Create Empty in het pop-upmenu om een leeg GameObject aan te maken, geef het de naam LCCManager, normaliseer de Transform en voeg het LCCManager-script eraan toe via Component toevoegen.

Maak het LCCManager-GameObject aan en voeg het LCCManager-script toe
LCCRenderer aanmaken
Klik met de rechtermuisknop op een leeg gebied in het Hiërarchie-venster, selecteer Create Empty om een leeg GameObject aan te maken, geef het de naam LCCRenderer en stel de Transform in op Rotation.x = -90 en Scale.x = -1.

Maak LCCRenderer aan en stel de Transform in (Rotation.x = -90, Scale.x = -1)
Opmerking:
De Transform-instellingen van het LCCRenderer-GameObject (Rotation.x = -90, Scale.x = -1) lijnen het uit met het coördinatensysteem van de LCC-gegevens. Zie "Coördinatensysteem van LCC-gegevens" in LCC Unity SDK Introductie voor meer informatie over de uitlijning van het coördinatensysteem.
Schaduwen van de Directional Light inschakelen
Selecteer het Directional Light-GameObject in het Hiërarchie-venster en zorg ervoor dat schaduwen zijn ingeschakeld in het Inspector-venster.

Zorg ervoor dat schaduwen zijn ingeschakeld op de Directional Light
Stap 2: Een Render Feature toevoegen
- Selecteer in de Unity-menubalk Bestand → Projectinstellingen, kies links Grafisch en controleer de huidige Default Render Pipeline Asset. Dit voorbeeld gebruikt URP (Universal Render Pipeline Asset).

Controleer de Default Render Pipeline Asset in de grafische instellingen
Klik op dat Asset, zoek het bijbehorende assetbestand in het Project-venster en zoek de bijbehorende Renderer (in dit voorbeeld
URP_Renderer.asset).Selecteer dat Renderer-assetbestand, klik in het Inspector-venster op Add Renderer Feature en voeg de Splat Shadow Mask Feature toe.

Voeg de Splat Shadow Mask Feature toe aan de URP Renderer
Stap 3: Een script schrijven om schaduwontvangst in te schakelen
Maak een nieuw C#-script aan met de naam LCCShadow.cs met de volgende code:
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("Gestart ");
m_renderer = m_manager.GetRender(this.transform);
m_renderer.Load(m_FilePath, onProgress, onComplete);
}
private void onProgress(float _progress)
{
Debug.Log($"[LCCRenderer] laadvoortgang van het bestand: {_progress:P1}");
}
private void onComplete()
{
Debug.Log($"[LCCRenderer] bestand geladen");
m_manager.SetShadowReceive(true);
//m_manager.SetShadowColor(new Color(0, 0, 0, 1.0f));
//m_manager.SetShadowStrength(0.5f);
}
}
Opmerking:
Schaduwontvangst moet worden ingeschakeld nadat de LCC-scène is geladen, dus
SetShadowReceive(true)wordt aangeroepen in deonComplete-callback.
Stap 4: Het script toevoegen en het gegevenspad instellen
- Voeg het
LCCShadow.cs-script toe aan het LCCRenderer-GameObject in het Hiërarchie-venster. - Sleep in het Inspector-venster het LCCManager-GameObject naar de eigenschap Manager van het script.
- Vul het LCC-bestandspad in bij de eigenschap File Path van het script.
Stap 5: Een schaduwwerpend Mesh-object aanmaken
- Maak een Cube-object aan in de scène en zorg ervoor dat Cast Shadows = On is.
- Verplaats de Cube naar een geschikte positie zodat je de schaduw kunt waarnemen die hij op het 3DGS-oppervlak werpt.
Stap 6: Uitvoeren
Klik op de knop Play in het Game-venster en verplaats de Cube in realtime om de dynamische schaduw waar te nemen die hij werpt.

De Cube die na het uitvoeren een dynamische schaduw op het 3DGS-oppervlak werpt
Veelgestelde vraag: Compatibiliteitsmodus uitschakelen
Als het Console-venster van Unity fouten meldt en er geen schaduw verschijnt, schakel dan de compatibiliteitsmodus uit: open het instellingenpaneel via Bewerken → Projectinstellingen → Grafisch, selecteer het tabblad URP en vink niet het selectievakje aan na Render Graph → Compatibility Mode (Render Graph Disabled).

Vink de compatibiliteitsmodus van Render Graph niet aan (Render Graph Disabled)
Belangrijkste stappen
De belangrijkste stappen voor het werpen van schaduwen van Mesh-objecten op 3DGS-oppervlakken:
- Zorg ervoor dat de scène een Directional Light heeft met schaduwen ingeschakeld.
- Zorg ervoor dat de scène een Mesh-object heeft dat schaduwen werpt met Cast Shadows = On.
- Zorg ervoor dat de Splat Shadow Mask Feature is toegevoegd aan de URP Renderer.
- Zorg ervoor dat schaduwontvangst in code is ingeschakeld nadat de LCC-scène is geladen (
SetShadowReceive(true)).
Schaduwgerelateerde API's
De LCC Unity SDK biedt via LCCManager de volgende drie schaduwgerelateerde API's. Ze moeten allemaal worden aangeroepen nadat de LCC-scène is geladen (dat wil zeggen in de onComplete-callback), en SetShadowColor() / SetShadowStrength() worden pas van kracht nadat SetShadowReceive(true) is ingeschakeld.
SetShadowReceive
// Retourwaarde: void
public void SetShadowReceive(bool enable)
Schakelt de schaduwontvangst van de puntenwolk in of uit. Wanneer ingeschakeld, kunnen schaduwen van Mesh-objecten in de scène op het oppervlak van de 3DGS-puntenwolk worden geworpen.
| Parameter | Type | Beschrijving |
|---|---|---|
enable | bool | Of schaduwen moeten worden ontvangen |
Gebruiksvoorbeeld:
m_manager.SetShadowReceive(true);
Opmerkingen:
- Standaard uitgeschakeld.
- Vereist een schaduwwerpend Mesh-object en een Directional Light in de scène.
- Wanneer ingeschakeld, wordt het shader-keyword
_SPLAT_SHADOW_ONingeschakeld.
SetShadowColor
// Retourwaarde: void
public void SetShadowColor(Color color)
Stelt de kleur van het schaduwgebied in.
| Parameter | Type | Beschrijving |
|---|---|---|
color | Color | Schaduwkleur (RGBA) |
Gebruiksvoorbeeld:
m_manager.SetShadowColor(new Color(0.3f, 0.3f, 0.3f, 1f));
Opmerkingen:
- De standaardwaarde is
(0.3, 0.3, 0.3, 1). - Vereist dat
SetShadowReceive(true)eerst is ingeschakeld.
SetShadowStrength
// Retourwaarde: void
public void SetShadowStrength(float strength)
Stelt de schaduwsterkte in. 0 betekent geen schaduw en 1 betekent de sterkste schaduw.
| Parameter | Type | Beschrijving |
|---|---|---|
strength | float | Schaduwsterkte, in het bereik [0, 1] |
Gebruiksvoorbeeld:
m_manager.SetShadowStrength(0.8f);
Opmerkingen:
- De standaardwaarde is
1.0. - Bereik
[0, 1]; waarden buiten het bereik worden automatisch afgekapt. - Vereist dat
SetShadowReceive(true)eerst is ingeschakeld.