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

    • PortalCam P1

      • Productoverzicht
      • Basisbediening
      • De LCC Scan App gebruiken
      • Onderhoud en verzorging
      • Veelgestelde vragen
  • Lixel K-serie

    • Lixel K1

      • Productoverzicht
      • Basisbediening
      • Apparaat activeren en verbinden
      • Scanworkflow
      • Puntenwolkgegevens met absolute coördinaten verkrijgen
      • Kaartfusie
      • Suggesties voor routeplanning bij typische scènes
      • Voorzorgsmaatregelen
      • FAQ
    • Lixel K2

      • Productoverzicht
      • Basisbediening
      • Apparaat activeren en verbinden
      • Scanworkflow
      • Puntenwolkgegevens met absolute coördinaten verkrijgen
      • Kaartfusie
      • Suggesties voor routeplanning bij typische scènes
      • Voorzorgsmaatregelen
      • FAQ
  • Lixel L-serie

    • Lixel L2 Pro

      • Productoverzicht
      • Basisbediening
      • Apparaatactivering en -verbinding
      • Scanworkflow
      • Puntenwolkgegevens met absolute coördinaten opnemen
      • Meetpunt
      • Appendix
      • FAQ
    • Lixel L3

      • Productoverzicht
      • Basisfuncties van het apparaat
      • Apparaatactivering en -verbinding
      • Gegevensopname
      • Absolute coördinaten opnemen
      • Appendix
  • Accessoires

    • Stick Light

      • Installatiegids
      • Basisbediening
      • FAQ
  • Lixel Studio

    • Versie en copyright
    • Installatie en activering
    • Software-interface
    • Bestandsbewerkingen
    • Projectverwerking
    • Gereedschappen
    • 2D-tekenen
    • Toepassingen
    • Instellingen
    • Apparaatverbinding
  • 07-plugin-sdk

    • Unity

      • LCC Unity SDK Introductie
      • Technische functies
      • Vereisten voor de ontwikkelomgeving
      • Snelstartgids voor pc
      • Optimalisatiegids voor projectinstellingen
      • Ontwikkelgids voor Pico 4 Ultra
      • Pc-streaminggids voor Pico 4 Ultra
      • Ontwikkelgids voor Quest 3
      • Pc-streaminggids voor Quest 3
      • Ontwikkelgids voor OpenXR
      • Business Streaming-gids voor Pico 4 Ultra
      • Woordenlijst
      • Veelgestelde vragen
      • Contact opnemen
      • Ontwikkelingshandleiding voor functies

        • Ontwikkelgids voor gemengde rendering van meerdere scènes
        • Ontwikkelgids voor het ontvangen van schaduwen
        • Ontwikkelgids voor realtime belichting
        • Ontwikkelgids voor multi-camera rendering
        • Ontwikkelgids voor het renderen van afbeeldingen met hoge resolutie
        • Ontwikkelgids voor compatibiliteit van de gegevensformaten LCC en LCC2
        • Ontwikkelgids voor laadeffecten
        • Ontwikkelgids voor het schakelen tussen Mip-renderingmodi
        • Ontwikkelgids voor rand- en hoeksnapping
        • Ontwikkelgids voor geprojecteerde decal
        • Ontwikkelgids voor video-geprojecteerde decal
        • Ontwikkelgids voor markeren
        • Ontwikkelgids voor realtime knippen
        • Ontwikkelgids voor kleuraanpassing
        • Ontwikkelgids voor het ophalen van scène-Meshgegevens
        • Ontwikkelgids voor de Editor-modus
        • Configuratiegids voor renderprestatieparameters
        • Ontwikkelgids voor het samen verpakken van de applicatie en de gegevens
        • Ontwikkelgids voor het botsingssysteem
        • Gids voor macOS-ontwikkelingsmachtigingsproblemen
        • Ontwikkelgids voor compilatie en verpakking voor iOS-apparaten
      • API-referentie

        • LCCManager
        • Renderer
        • Gegevenstypen
      • Wijzigingslogboek

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

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

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

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

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

Zorg ervoor dat schaduwen zijn ingeschakeld op de Directional Light

Stap 2: Een Render Feature toevoegen

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

Controleer de Default Render Pipeline Asset in de grafische instellingen

  1. Klik op dat Asset, zoek het bijbehorende assetbestand in het Project-venster en zoek de bijbehorende Renderer (in dit voorbeeld URP_Renderer.asset).

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

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 de onComplete-callback.

Stap 4: Het script toevoegen en het gegevenspad instellen

  1. Voeg het LCCShadow.cs-script toe aan het LCCRenderer-GameObject in het Hiërarchie-venster.
  2. Sleep in het Inspector-venster het LCCManager-GameObject naar de eigenschap Manager van het script.
  3. Vul het LCC-bestandspad in bij de eigenschap File Path van het script.

Stap 5: Een schaduwwerpend Mesh-object aanmaken

  1. Maak een Cube-object aan in de scène en zorg ervoor dat Cast Shadows = On is.
  2. 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

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

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:

  1. Zorg ervoor dat de scène een Directional Light heeft met schaduwen ingeschakeld.
  2. Zorg ervoor dat de scène een Mesh-object heeft dat schaduwen werpt met Cast Shadows = On.
  3. Zorg ervoor dat de Splat Shadow Mask Feature is toegevoegd aan de URP Renderer.
  4. 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.

ParameterTypeBeschrijving
enableboolOf 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_ON ingeschakeld.

SetShadowColor

// Retourwaarde: void
public void SetShadowColor(Color color)

Stelt de kleur van het schaduwgebied in.

ParameterTypeBeschrijving
colorColorSchaduwkleur (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.

ParameterTypeBeschrijving
strengthfloatSchaduwsterkte, 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.