XGRIDSDocs
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • Seria Lixel PortalCam

    • PortalCam P1

      • Przegląd produktu
      • Podstawowa obsługa
      • Korzystanie z aplikacji LCC Scan
      • Konserwacja i pielęgnacja
      • FAQ
  • Seria Lixel K

    • Lixel K1

      • Przegląd produktu
      • Podstawowa obsługa
      • Aktywacja i połączenie urządzenia
      • Przebieg skanowania
      • Pozyskiwanie danych chmury punktów ze współrzędnymi bezwzględnymi
      • Fuzja map
      • Zalecenia dotyczące planowania trasy dla typowych scen
      • Środki ostrożności
      • FAQ
    • Lixel K2

      • Przegląd produktu
      • Podstawowa obsługa
      • Aktywacja i połączenie urządzenia
      • Przebieg skanowania
      • Pozyskiwanie danych chmury punktów ze współrzędnymi bezwzględnymi
      • Fuzja map
      • Zalecenia dotyczące planowania trasy dla typowych scen
      • Środki ostrożności
      • FAQ
  • Seria Lixel L

    • Lixel L2 Pro

      • Przegląd produktu
      • Podstawowa obsługa
      • Aktywacja i połączenie urządzenia
      • Proces skanowania
      • Pozyskiwanie danych chmury punktów ze współrzędnymi bezwzględnymi
      • Punkt pomiarowy
      • Dodatek
      • FAQ
    • Lixel L3

      • Przegląd produktu
      • Podstawowe funkcje urządzenia
      • Aktywacja i połączenie urządzenia
      • Przechwytywanie danych
      • Przechwytywanie współrzędnych bezwzględnych
      • Dodatek
  • Akcesoria

    • Stick Light

      • Przewodnik instalacji
      • Podstawowa obsługa
      • Często zadawane pytania
  • Lixel Studio

    • Wersja i prawa autorskie
    • Instalacja i aktywacja
    • Interfejs oprogramowania
    • Operacje na plikach
    • Przetwarzanie projektu
    • Narzędzia
    • Rysowanie 2D
    • Zastosowania
    • Ustawienia
    • Połączenie z urządzeniem
  • 07-plugin-sdk

    • Unity

      • Wprowadzenie do Unity SDK
      • Funkcje techniczne
      • Wymagania środowiska deweloperskiego
      • Przewodnik szybkiego startu dla PC
      • Przewodnik optymalizacji ustawień projektu
      • Przewodnik deweloperski dla Pico 4 Ultra
      • Przewodnik strumieniowania PC dla Pico 4 Ultra
      • Przewodnik deweloperski dla Quest 3
      • Przewodnik strumieniowania PC dla Quest 3
      • Przewodnik deweloperski dla OpenXR
      • Przewodnik Business Streaming dla Pico 4 Ultra
      • Słownik
      • Często zadawane pytania (FAQ)
      • Skontaktuj się z nami
      • Przewodnik programowania funkcji

        • Przewodnik mieszanego renderowania wielu scen
        • Przewodnik odbierania cieni
        • Przewodnik oświetlenia w czasie rzeczywistym
        • Przewodnik renderowania wielokamerowego
        • Przewodnik renderowania obrazów wysokiej rozdzielczości
        • Przewodnik zgodności formatów danych LCC i LCC2
        • Przewodnik efektu ładowania
        • Przewodnik przełączania trybu renderowania Mip
        • Przewodnik przyciągania do krawędzi i narożników
        • Przewodnik dekala projekcyjnego
        • Przewodnik wideo dekala projekcyjnego
        • Przewodnik podświetlania
        • Przewodnik przycinania w czasie rzeczywistym
        • Przewodnik korekcji kolorów
        • Przewodnik pobierania danych siatki sceny
        • Przewodnik trybu edytora
        • Przewodnik konfiguracji parametrów wydajności renderowania
        • Przewodnik współpakowania aplikacji i danych
        • Przewodnik systemu kolizji
        • Przewodnik problemów z uprawnieniami w deweloperstwie na macOS
        • Przewodnik kompilacji i pakowania na urządzenia iOS
      • Dokumentacja API

        • LCCManager
        • Renderer
        • Typy danych
      • Dziennik zmian

        • v2.3.0
        • v2.2.10
        • v2.2.0
        • v2.1.19
        • v2.0.14

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

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 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

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

Upewnij się, że cienie są włączone na Świetle kierunkowym

Krok 2: Dodaj Render Feature

  1. 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

Potwierdź Domyślny zasób potoku renderowania w ustawieniach Grafiki

  1. Kliknij ten zasób, zlokalizuj odpowiedni plik zasobu w oknie Projekt i znajdź jego powiązany Renderer (URP_Renderer.asset w tym przykładzie).

  2. 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

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 zwrotnym onComplete.

Krok 4: Dołącz skrypt i ustaw ścieżkę danych

  1. Dołącz skrypt LCCShadow.cs do GameObject LCCRenderer w oknie Hierarchia.
  2. W oknie Inspektor przeciągnij GameObject LCCManager na właściwość Manager skryptu.
  3. Wpisz ścieżkę pliku LCC we właściwości File Path skryptu.

Krok 5: Utwórz obiekt siatki rzucający cienie

  1. Utwórz w scenie obiekt Sześcian i upewnij się, że Rzucanie cieni = Włączone.
  2. 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

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

Nie zaznaczaj trybu zgodności Render Graph (Render Graph wyłączony)

Kluczowe kroki

Kluczowe kroki rzucania cieni z obiektów siatki na powierzchnie 3DGS:

  1. Upewnij się, że scena ma Światło kierunkowe z włączonymi cieniami.
  2. Upewnij się, że scena ma obiekt siatki rzucający cienie z Rzucanie cieni = Włączone.
  3. Upewnij się, że Splat Shadow Mask Feature została dodana do renderera URP.
  4. 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.

ParametrTypOpis
enableboolCzy 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.

ParametrTypOpis
colorColorKolor 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ń.

ParametrTypOpis
strengthfloatSił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).