Entwicklungsanleitung für Schattenempfang
Das LCC Unity SDK unterstützt das dynamische Werfen von Schatten durch Mesh-Objekte auf 3DGS-Oberflächen für bessere Beleuchtungseffekte. Im Folgenden werden die vollständigen Schritte zur Implementierung dynamischer Schatten beschrieben.
Schritt 1: Szene und GameObjects erstellen
Erstellen Sie eine brandneue Szene in Unity. Unity erstellt standardmäßig Hauptkamera und Richtungslicht.
Hauptkamera einrichten
Wählen Sie die Hauptkamera im Fenster Hierarchie aus und legen Sie deren Eigenschaften im Fenster Inspektor wie unten dargestellt fest.

Die Eigenschaften der Hauptkamera festlegen
LCCManager erstellen
Klicken Sie mit der rechten Maustaste in einen leeren Bereich des Fensters Hierarchie, wählen Sie im Popup-Menü Leeres GameObject erstellen, um ein leeres GameObject zu erstellen, benennen Sie es LCCManager, normalisieren Sie dessen Transform und fügen Sie über Komponente hinzufügen das Skript LCCManager hinzu.

Das GameObject LCCManager erstellen und das Skript LCCManager hinzufügen
LCCRenderer erstellen
Klicken Sie mit der rechten Maustaste in einen leeren Bereich des Fensters Hierarchie, wählen Sie Leeres GameObject erstellen, um ein leeres GameObject zu erstellen, benennen Sie es LCCRenderer und setzen Sie dessen Transform auf Rotation.x = -90 und Scale.x = -1.

LCCRenderer erstellen und dessen Transform festlegen (Rotation.x = -90, Scale.x = -1)
Hinweis:
Die Transform-Einstellungen des GameObject LCCRenderer (Rotation.x = -90, Scale.x = -1) richten es am LCC-Daten-Koordinatensystem aus. Details zur Ausrichtung am Koordinatensystem finden Sie unter „LCC-Daten-Koordinatensystem“ in Einführung in das Unity SDK.
Richtungslicht-Schatten aktivieren
Wählen Sie das GameObject Richtungslicht im Fenster Hierarchie aus und stellen Sie im Fenster Inspektor sicher, dass Schatten aktiviert sind.

Sicherstellen, dass Schatten auf dem Richtungslicht aktiviert sind
Schritt 2: Ein Renderer-Feature hinzufügen
- Wählen Sie in der Unity-Menüleiste Datei → Projekteinstellungen, wählen Sie links Grafik und bestätigen Sie das aktuelle Standard-Render-Pipeline-Asset. Dieses Beispiel verwendet URP (Universal Render Pipeline Asset).

Das Standard-Render-Pipeline-Asset in den Grafikeinstellungen bestätigen
Klicken Sie auf dieses Asset, suchen Sie im Fenster Projekt die zugehörige Asset-Datei und finden Sie den damit verbundenen Renderer (in diesem Beispiel
URP_Renderer.asset).Wählen Sie diese Renderer-Asset-Datei aus, klicken Sie im Fenster Inspektor auf Renderer-Feature hinzufügen und fügen Sie das Splat Shadow Mask Feature hinzu.

Das Splat Shadow Mask Feature zum URP-Renderer hinzufügen
Schritt 3: Ein Skript zum Aktivieren des Schattenempfangs schreiben
Erstellen Sie ein neues C#-Skript namens LCCShadow.cs mit folgendem 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("Gestartet ");
m_renderer = m_manager.GetRender(this.transform);
m_renderer.Load(m_FilePath, onProgress, onComplete);
}
private void onProgress(float _progress)
{
Debug.Log($"[LCCRenderer] Datei-Ladefortschritt: {_progress:P1}");
}
private void onComplete()
{
Debug.Log($"[LCCRenderer] Datei geladen");
m_manager.SetShadowReceive(true);
//m_manager.SetShadowColor(new Color(0, 0, 0, 1.0f));
//m_manager.SetShadowStrength(0.5f);
}
}
Hinweis:
Der Schattenempfang muss nach Abschluss des Ladens der LCC-Szene aktiviert werden, daher wird
SetShadowReceive(true)im CallbackonCompleteaufgerufen.
Schritt 4: Das Skript anhängen und den Datenpfad festlegen
- Hängen Sie das Skript
LCCShadow.csim Fenster Hierarchie an das GameObject LCCRenderer. - Ziehen Sie im Fenster Inspektor das GameObject LCCManager auf die Eigenschaft Manager des Skripts.
- Tragen Sie den LCC-Dateipfad in die Eigenschaft File Path des Skripts ein.
Schritt 5: Ein schattenwerfendes Mesh-Objekt erstellen
- Erstellen Sie ein Würfel-Objekt in der Szene und stellen Sie sicher, dass Schatten werfen = Ein gilt.
- Verschieben Sie den Würfel an eine geeignete Position, damit Sie den Schatten beobachten können, den er auf die 3DGS-Oberfläche wirft.
Schritt 6: Ausführen
Klicken Sie im Fenster Spiel auf die Schaltfläche Play und bewegen Sie den Würfel in Echtzeit, um den von ihm geworfenen dynamischen Schatten zu beobachten.

Der Würfel, der nach dem Ausführen einen dynamischen Schatten auf die 3DGS-Oberfläche wirft
FAQ: Kompatibilitätsmodus deaktivieren
Wenn das Fenster Konsole von Unity Fehler meldet und kein Schatten erscheint, deaktivieren Sie den Kompatibilitätsmodus: Öffnen Sie das Einstellungsfenster über Bearbeiten → Projekteinstellungen → Grafik, wählen Sie den Tab URP und aktivieren Sie nicht das Kontrollkästchen nach Render Graph → Compatibility Mode (Render Graph Disabled).

Den Render-Graph-Kompatibilitätsmodus nicht aktivieren (Render Graph Disabled)
Schlüsselschritte
Die Schlüsselschritte zum Werfen von Schatten durch Mesh-Objekte auf 3DGS-Oberflächen:
- Sicherstellen, dass die Szene ein Richtungslicht mit aktivierten Schatten besitzt.
- Sicherstellen, dass die Szene ein Mesh-Objekt besitzt, das mit Schatten werfen = Ein Schatten wirft.
- Sicherstellen, dass das Splat Shadow Mask Feature zum URP-Renderer hinzugefügt wurde.
- Sicherstellen, dass der Schattenempfang im Code nach Abschluss des Ladens der LCC-Szene aktiviert wird (
SetShadowReceive(true)).
Schattenbezogene APIs
Das LCC Unity SDK stellt über LCCManager die folgenden drei schattenbezogenen APIs bereit. Sie müssen alle nach Abschluss des Ladens der LCC-Szene (d. h. im Callback onComplete) aufgerufen werden, und SetShadowColor() / SetShadowStrength() wirken erst, nachdem SetShadowReceive(true) aktiviert wurde.
SetShadowReceive
// Rückgabewert: void
public void SetShadowReceive(bool enable)
Schaltet den Punktwolken-Schattenempfang um. Bei Aktivierung können Schatten von Mesh-Objekten in der Szene auf die 3DGS-Punktwolkenoberfläche geworfen werden.
| Parameter | Typ | Beschreibung |
|---|---|---|
enable | bool | Ob Schatten empfangen werden sollen |
Verwendungsbeispiel:
m_manager.SetShadowReceive(true);
Hinweise:
- Standardmäßig deaktiviert.
- Erfordert ein schattenwerfendes Mesh-Objekt und ein Richtungslicht in der Szene.
- Bei Aktivierung wird das Shader-Keyword
_SPLAT_SHADOW_ONaktiviert.
SetShadowColor
// Rückgabewert: void
public void SetShadowColor(Color color)
Legt die Farbe des Schattenbereichs fest.
| Parameter | Typ | Beschreibung |
|---|---|---|
color | Color | Schattenfarbe (RGBA) |
Verwendungsbeispiel:
m_manager.SetShadowColor(new Color(0.3f, 0.3f, 0.3f, 1f));
Hinweise:
- Der Standardwert ist
(0.3, 0.3, 0.3, 1). - Erfordert, dass zuvor
SetShadowReceive(true)aktiviert wurde.
SetShadowStrength
// Rückgabewert: void
public void SetShadowStrength(float strength)
Legt die Schattenstärke fest. 0 bedeutet kein Schatten und 1 bedeutet den stärksten Schatten.
| Parameter | Typ | Beschreibung |
|---|---|---|
strength | float | Schattenstärke, im Bereich [0, 1] |
Verwendungsbeispiel:
m_manager.SetShadowStrength(0.8f);
Hinweise:
- Der Standardwert ist
1.0. - Bereich
[0, 1]; Werte außerhalb des Bereichs werden automatisch begrenzt. - Erfordert, dass zuvor
SetShadowReceive(true)aktiviert wurde.