Przewodnik odbierania cieni
LCC Unity SDK obsługuje dynamiczne rzucanie cieni przez obiekty siatki na powierzchnie 3DGS dla lepszych efektów oświetlenia. Poniżej opisano kompletne kroki implementacji dynamicznych cieni.
Krok 1: Utwórz scenę i GameObjects
Utwórz zupełnie nową scenę w Unity. Unity domyślnie tworzy Kamerę główną i Światło kierunkowe.
Skonfiguruj Kamerę główną
Wybierz Kamerę główną w oknie Hierarchia i ustaw jej właściwości w oknie Inspektor, jak pokazano poniżej.

Ustaw właściwości Kamery głównej
Utwórz LCCManager
Kliknij prawym przyciskiem myszy pusty obszar w oknie Hierarchia, wybierz Utwórz pusty z menu podręcznego, aby utworzyć pusty GameObject, nazwij go LCCManager, znormalizuj jego Transform i dodaj do niego skrypt LCCManager przez Dodaj komponent.

Utwórz GameObject LCCManager i dodaj skrypt LCCManager
Utwórz LCCRenderer
Kliknij prawym przyciskiem myszy pusty obszar w oknie Hierarchia, wybierz Utwórz pusty, aby utworzyć pusty GameObject, nazwij go LCCRenderer i ustaw jego Transform na Rotation.x = -90 i Scale.x = -1.

Utwórz LCCRenderer i ustaw jego Transform (Rotation.x = -90, Scale.x = -1)
Uwaga:
Ustawienia Transform GameObject LCCRenderer (Rotation.x = -90, Scale.x = -1) wyrównują go z układem współrzędnych danych LCC. Szczegóły wyrównania układu współrzędnych znajdziesz w sekcji „Układ współrzędnych danych LCC" w Wprowadzenie do Unity SDK.
Włącz cienie Światła kierunkowego
Wybierz GameObject Światło kierunkowe w oknie Hierarchia i upewnij się, że cienie są włączone w oknie Inspektor.

Upewnij się, że cienie są włączone na Świetle kierunkowym
Krok 2: Dodaj Render Feature
- Na pasku menu Unity wybierz Plik → Ustawienia projektu, po lewej stronie wybierz Grafika i potwierdź bieżący Domyślny zasób potoku renderowania. Ten przykład używa URP (Universal Render Pipeline Asset).

Potwierdź Domyślny zasób potoku renderowania w ustawieniach Grafiki
Kliknij ten zasób, zlokalizuj odpowiedni plik zasobu w oknie Projekt i znajdź jego powiązany Renderer (
URP_Renderer.assetw tym przykładzie).Wybierz ten plik zasobu Renderer, kliknij Dodaj Render Feature w oknie Inspektor i dodaj Splat Shadow Mask Feature.

Dodaj funkcję Splat Shadow Mask Feature do renderera URP
Krok 3: Napisz skrypt, aby włączyć odbieranie cieni
Utwórz nowy skrypt C# o nazwie LCCShadow.cs z następującym kodem:
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("Uruchomiono ");
m_renderer = m_manager.GetRender(this.transform);
m_renderer.Load(m_FilePath, onProgress, onComplete);
}
private void onProgress(float _progress)
{
Debug.Log($"[LCCRenderer] postęp ładowania pliku: {_progress:P1}");
}
private void onComplete()
{
Debug.Log($"[LCCRenderer] plik załadowany");
m_manager.SetShadowReceive(true);
//m_manager.SetShadowColor(new Color(0, 0, 0, 1.0f));
//m_manager.SetShadowStrength(0.5f);
}
}
Uwaga:
Odbieranie cieni musi być włączone po zakończeniu ładowania sceny LCC, więc
SetShadowReceive(true)jest wywoływane w wywołaniu zwrotnymonComplete.
Krok 4: Dołącz skrypt i ustaw ścieżkę danych
- Dołącz skrypt
LCCShadow.csdo GameObject LCCRenderer w oknie Hierarchia. - W oknie Inspektor przeciągnij GameObject LCCManager na właściwość Manager skryptu.
- Wpisz ścieżkę pliku LCC we właściwości File Path skryptu.
Krok 5: Utwórz obiekt siatki rzucający cienie
- Utwórz w scenie obiekt Sześcian i upewnij się, że Rzucanie cieni = Włączone.
- Przesuń Sześcian w odpowiednie miejsce, aby móc obserwować cień, który rzuca na powierzchnię 3DGS.
Krok 6: Uruchom
Kliknij przycisk Odtwórz w oknie Gra i przesuwaj Sześcian w czasie rzeczywistym, aby obserwować dynamiczny cień, który rzuca.

Sześcian rzucający dynamiczny cień na powierzchnię 3DGS po uruchomieniu
FAQ: Wyłącz tryb zgodności
Jeśli okno Konsola w Unity zgłasza błędy i nie pojawia się cień, wyłącz tryb zgodności: otwórz panel ustawień przez Edycja → Ustawienia projektu → Grafika, wybierz kartę URP i nie zaznaczaj pola wyboru po Render Graph → Tryb zgodności (Render Graph wyłączony).

Nie zaznaczaj trybu zgodności Render Graph (Render Graph wyłączony)
Kluczowe kroki
Kluczowe kroki rzucania cieni z obiektów siatki na powierzchnie 3DGS:
- Upewnij się, że scena ma Światło kierunkowe z włączonymi cieniami.
- Upewnij się, że scena ma obiekt siatki rzucający cienie z Rzucanie cieni = Włączone.
- Upewnij się, że Splat Shadow Mask Feature została dodana do renderera URP.
- Upewnij się, że odbieranie cieni jest włączone w kodzie po zakończeniu ładowania sceny LCC (
SetShadowReceive(true)).
API powiązane z cieniami
LCC Unity SDK udostępnia trzy poniższe API powiązane z cieniami przez LCCManager. Wszystkie muszą być wywoływane po zakończeniu ładowania sceny LCC (czyli w wywołaniu zwrotnym onComplete), a SetShadowColor() / SetShadowStrength() działają dopiero po włączeniu SetShadowReceive(true).
SetShadowReceive
// Wartość zwracana: void
public void SetShadowReceive(bool enable)
Przełącza odbieranie cieni przez chmurę punktów. Po włączeniu cienie z obiektów siatki w scenie mogą być rzucane na powierzchnię chmury punktów 3DGS.
| Parametr | Typ | Opis |
|---|---|---|
enable | bool | Czy odbierać cienie |
Przykład użycia:
m_manager.SetShadowReceive(true);
Uwagi:
- Domyślnie wyłączone.
- Wymaga obiektu siatki rzucającego cienie i Światła kierunkowego w scenie.
- Po włączeniu włączane jest słowo kluczowe shadera
_SPLAT_SHADOW_ON.
SetShadowColor
// Wartość zwracana: void
public void SetShadowColor(Color color)
Ustawia kolor obszaru cienia.
| Parametr | Typ | Opis |
|---|---|---|
color | Color | Kolor cienia (RGBA) |
Przykład użycia:
m_manager.SetShadowColor(new Color(0.3f, 0.3f, 0.3f, 1f));
Uwagi:
- Wartość domyślna to
(0.3, 0.3, 0.3, 1). - Wymaga wcześniejszego włączenia
SetShadowReceive(true).
SetShadowStrength
// Wartość zwracana: void
public void SetShadowStrength(float strength)
Ustawia siłę cienia. 0 oznacza brak cienia, a 1 oznacza najsilniejszy cień.
| Parametr | Typ | Opis |
|---|---|---|
strength | float | Siła cienia, w zakresie [0, 1] |
Przykład użycia:
m_manager.SetShadowStrength(0.8f);
Uwagi:
- Wartość domyślna to
1.0. - Zakres
[0, 1]; wartości spoza zakresu są automatycznie przycinane. - Wymaga wcześniejszego włączenia
SetShadowReceive(true).