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

    • PortalCam P1

      • Produktübersicht
      • Grundlegende Bedienung
      • LCC Scan App verwenden
      • Wartung und Pflege
      • FAQ
  • Lixel K-Serie

    • Lixel K1

      • Produktübersicht
      • Grundlegende Bedienung
      • Geräteaktivierung und -verbindung
      • Scan-Workflow
      • Punktwolke mit absoluten Koordinaten erfassen
      • Kartenfusion
      • Empfehlungen zur Routenplanung für typische Szenen
      • Hinweise
      • FAQ
    • Lixel K2

      • Produktübersicht
      • Grundlegende Bedienung
      • Aktivierung und Verbindung
      • Scan-Workflow
      • Punktwolke mit absoluten Koordinaten erfassen
      • Kartenfusion
      • Empfehlungen zur Routenplanung für typische Szenen
      • Hinweise
      • FAQ
  • Lixel L-Serie

    • Lixel L2 Pro

      • Produktübersicht
      • Grundlegende Bedienung
      • Geräteaktivierung und -verbindung
      • Scan-Workflow
      • Punktwolke mit absoluten Koordinaten erfassen
      • Messpunkt
      • Anhang
      • FAQ
    • Lixel L3

      • Produktübersicht
      • Grundlegende Bedienung
      • Aktivierung und Verbindung
      • Scan-Workflow
      • Punktwolke mit absoluten Koordinaten erfassen
      • Anhang
  • Zubehör

    • Stick Light

      • Installationsanleitung
      • Grundlegende Bedienung
      • Häufige Fragen
  • Lixel Studio

    • Version und Copyright
    • Installation und Aktivierung
    • Softwareoberfläche
    • Dateioperationen
    • Projektverarbeitung
    • Werkzeuge
    • 2D-Zeichnung
    • Anwendungen
    • Einstellungen
    • Geräteverbindung
    • Häufige Fragen
  • Lixel CyberColor

    • LCC Studio

      • Erste Schritte
      • Version und Updates
      • Download und Installation
      • Oberfläche und Navigation
      • Vor der Rekonstruktion
      • Modellrekonstruktion
      • Einzelmodell-Rekonstruktion
      • Kartenfusion
      • Boden-Luft-Fusion
      • Luftbild-Rekonstruktion
      • Meine Modelle
      • Weitere Funktionen
      • Einstellungen und Konto
      • Converter
      • Videorekonstruktion
      • Häufige Fragen / FAQ
    • LCC Scene Editor

      • Version und Updates
      • Konto und Anmeldung
      • Produktübersicht und Startseite
      • Editor-Oberfläche
      • Navigationsmodi
      • Datei
      • Einstellungen
      • Bearbeiten
      • Fenster
      • Globale Symbolleiste
      • Assets und Eigenschaften
      • Linke Symbolleiste
      • Ansichtspunkte
      • Portal
      • Skybox
      • Markierungen
      • Messung
      • Flythrough
      • Szenenbericht
      • 3D-Layout
      • Minikarte
      • Vorschaumodus (Viewer)
      • Hilfe
      • Häufige Fragen (FAQ)
      • Spawn-Point
    • LCC Model Editor

      • Version und Updates
      • Benutzerhandbuch
      • Übersicht und Oberfläche
      • Dateioperationen
      • Selektoren
      • Modelle bearbeiten
      • Messung
      • Farbkorrektur
      • Asset-Verwaltung
      • Einstellungen und Hilfe
      • Häufige Fragen
    • Capture Guide

      • Überblick
      • Überblick über die Aufnahmegeräte
      • Allgemeine Aufnahmeprinzipien
      • Aufnahme von Innenszenen
      • Aufnahme von Außenszenen
      • Großflächige Aufnahme (Map Fusion)
      • Aerial-Ground Map Fusion – Aufnahme
      • Objektaufnahme
      • Personenaufnahme
      • Video-Rekonstruktionsaufnahme
      • HD Enhancement
      • Kontrollpunkte (Lixel P1)
      • FAQ und Fehlerbehebung
    • Best Practices

      • Zusammenführen mehrerer großer 3DGS-Modelle
    • Versionsgeschichte
  • Plugin & SDK

    • Unreal

      • Einführung
      • Schnellstart - Windows
      • Schnellstart - Linux
      • Schnellstart - Quest3
      • Editionen und Lizenzierung
      • Rendering
      • Tiled-Rasterisierung (experimentell)
      • Bildeinstellungen
      • Normalen und Beleuchtung
      • Szenenbearbeitung
      • Leistungsparameter
      • Leitfaden zur Leistung
      • Integration von Drittanbieter- und Engine-Plugins
      • Proxy Mesh
      • Ladeanimation
      • Kollision
      • Unterstützung des Navigation System
      • Unterstützung von Single Layer Water
      • Lokalisierung
      • FAQ
      • Fehlerbehebung
      • Logs und Diagnose
      • Kontakt
      • Bewährte Vorgehensweisen

        • 3DGS mit einem LixelStudio-Mesh neu beleuchten
      • API-Referenz

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • SOG- / SPZ- / PLY-Actors
        • ALCC2ProxyMesh
        • ALCCClippingVolume
        • ALCCSectionPlane
        • ALCCLoadVolume
        • ULCCUtilLibrary
        • Enums
        • Structs
      • Änderungsprotokoll

        • v3.4.0
        • v3.3.1
        • v3.0.0
        • v2.2.1
        • v1.0.0
        • v0.9.0
        • v0.8.0
        • v0.7.1
        • v0.6.1
        • v0.5.2
        • v0.4.1
        • v0.4.0
        • v0.3.0
        • v0.0.5
        • v0.0.4
        • v0.0.3
        • v0.0.2
        • v0.0.1
    • Unity

      • Einführung in das Unity SDK
      • Technische Funktionen
      • Anforderungen an die Entwicklungsumgebung
      • PC-Schnellstartanleitung
      • Leitfaden zur Optimierung der Projekteinstellungen
      • Pico 4 Ultra-Entwicklungsanleitung
      • Pico 4 Ultra-PC-Streaming-Anleitung
      • Quest 3-Entwicklungsanleitung
      • Quest 3-PC-Streaming-Anleitung
      • OpenXR-Entwicklungsanleitung
      • Pico 4 Ultra-Business-Streaming-Anleitung
      • Glossar
      • FAQ
      • Kontakt
      • Funktionsentwicklungsleitfaden

        • Entwicklungsanleitung für gemischtes Multi-Szenen-Rendering
        • Entwicklungsanleitung für Schattenempfang
        • Entwicklungsanleitung für Echtzeitbeleuchtung
        • Entwicklungsanleitung für Multi-Kamera-Rendering
        • Entwicklungsanleitung für hochauflösendes Bild-Rendering
        • Entwicklungsanleitung zur Kompatibilität der Datenformate LCC und LCC2
        • Entwicklungsanleitung für Ladeeffekte
        • Entwicklungsanleitung für das Umschalten des Mip-Rendering-Modus
        • Entwicklungsanleitung für Kanten- und Eckensnapping
        • Entwicklungsanleitung für projizierte Decals
        • Entwicklungsanleitung für projizierte Video-Decals
        • Entwicklungsanleitung für Hervorhebung
        • Entwicklungsanleitung für Echtzeit-Clipping
        • Entwicklungsanleitung für Farbanpassung
        • Entwicklungsanleitung für das Abrufen von Szenen-Mesh-Daten
        • Entwicklungsanleitung für den Editor-Modus
        • Konfigurationsanleitung für Render-Leistungsparameter
        • Entwicklungsanleitung zum gemeinsamen Paketieren von Anwendung und Daten
        • Entwicklungsanleitung für das Kollisionssystem
        • Anleitung zu macOS-Berechtigungsproblemen in der Entwicklung
        • Entwicklungsanleitung für Kompilierung und Paketierung auf iOS-Geräten
      • API-Referenz

        • LCCManager
        • Renderer
        • Datentypen
      • Changelog

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

      • Einführung
      • Leitfaden zur Rendering-Leistungsoptimierung
      • Grafikkonfiguration
      • Häufige Fragen
      • API-Referenz

        • LCCRender::clearIndexDB
        • LCCRender::dispose
        • LCCRender::load
        • LCCRender::setCamera
        • LCCRender::unload
        • LCCRender::update
        • LCCObject::checkRenderNextFrame
        • LCCObject::clearRenderNextFrame
        • LCCObject::ecef2Prj
        • LCCObject::getBounds
        • LCCObject::getEnvInstancedMesh
        • LCCObject::getInstancedMesh
        • LCCObject::getLodInfos
        • LCCObject::getOriginPosition
        • LCCObject::getProjectionCoordinateSystemInfos
        • LCCObject::hasCollision
        • LCCObject::hasEnvironment
        • LCCObject::hasShcoef
        • LCCObject::intersectsCapsule
        • LCCObject::intersectsRayExt
        • LCCObject::intersectsRayFromOriginExt
        • LCCObject::intersectsSphere
        • LCCObject::lowerToBottom
        • LCCObject::prj2Ecef
        • LCCObject::raiseToTop
        • LCCObject::raycast
        • LCCObject::raycastFromOrigin
        • LCCObject::setAlpha
        • LCCObject::setClipBox
        • LCCObject::setClipPlane
        • LCCObject::setEndLod
        • LCCObject::setLodAutoLevelUp
        • LCCObject::setMaxDistance
        • LCCObject::setMaxNodeSplats
        • LCCObject::setMaxSplats
        • LCCObject::setOriginPosition
        • LCCObject::setPointsColor
        • LCCObject::setRenderState
        • LCCObject::setRotation
        • LCCObject::setScale
        • LCCObject::setSemantic
        • LCCObject::setSemanticColor
        • LCCObject::setSmooth
        • LCCObject::setStartLod
        • LCCObject::setTranslation
        • LCCObject::setVisible
        • LCCObject::togglePointsDisplayMode
        • LCCObject::useEnvironment
        • LCCObject::useShcoef
      • Änderungsprotokoll

        • v0.6.3
        • v0.6.2
        • v0.6.1
        • v0.6.0
        • v0.5.5
        • v0.5.4
        • v0.5.3
        • v0.5.2
        • v0.5.1
        • v0.5.0
        • v0.4.1
        • v0.4.0
        • v0.3.1
        • v0.3.0
        • v0.2.0

LCCManager: Zentraler Manager

Der zentrale Manager des LCC Unity SDK, verantwortlich für die Verwaltung aller Renderer-Instanzen, Kameras, des globalen Rendering-Zustands sowie für Bearbeitungsoperationen (Clipping / Hervorhebung / Farbton), Decal-Projektion, Snapping und Interaktionsabfragen (Raycast / Kollision). In der gesamten Szene sollte es nur eine LCCManager-Instanz geben.

NamespaceLCCCore
BasisklasseMonoBehaviour

LCCManager besitzt keine öffentlichen Eigenschaften; alle Funktionen werden über Methoden angesprochen. Die Methoden sind nach Zweck gruppiert:

  • Initialisierung und Konfiguration
  • Laufzeit-Rendering-Steuerung
  • Beleuchtung und Schatten
  • Kameraverwaltung
  • Clipping / Hervorhebung / Farbton
  • Decal-Projektion
  • Snapping
  • Raycasting und Kollisionsabfragen
  • Visuelle Effekte
  • Instanzabfragen

Initialisierung und Konfiguration

Die folgenden Methoden dienen dazu, vor dem Laden der Daten die Vorkonfiguration von Plattform, Rendering-Modus, Kapazität usw. abzuschließen. Die meisten Methoden müssen vor jedem Renderer.Load() aufgerufen werden.

SetPlatformType

public void SetPlatformType(PlatformType _type)

Legt die Ziel-Laufzeitplattform des SDK fest, was die interne Rendering-Strategie und Ressourcenzuweisung beeinflusst.

ParameterTypBeschreibung
_typePlatformTypeZielplattform; siehe PlatformType

Hinweise:

  • Muss vor jedem GetRender()-Aufruf ausgeführt werden.

Beispiel:

lccManager.SetPlatformType(PlatformType.PC);

SwitchRenderPass

public void SwitchRenderPass(ActiveRenderMode _mode)

Legt den globalen Rendering-Architekturmodus fest. MultiRender verwendet einen gemeinsamen GPU-Puffer und kann bis zu 255 Renderer gleichzeitig rendern; SingleRender lässt das SDK den Rendering-Pfad anhand der Datengröße automatisch auswählen.

ParameterTypBeschreibung
_modeActiveRenderModeRendering-Modus; siehe ActiveRenderMode

Hinweise:

  • Muss vor jedem Renderer.Load() aufgerufen werden.
  • Nur auf PC-/Mac-Plattformen wirksam; Mobil-/VR-Plattformen übernehmen automatisch eine adaptive Strategie, und der Aufruf dieser Methode wird abgelehnt.
  • Der Modus MultiRender unterstützt keine HTTP-Datenquellen; für HTTP-Daten SingleRender verwenden.
  • Sobald ein Renderer Load() abgeschlossen hat, ist der Modus gesperrt und kann nicht erneut gewechselt werden.

Beispiel:

lccManager.SwitchRenderPass(ActiveRenderMode.MultiRender);

GetRender (Überladung 1: Transform binden)

// Rückgabewert: Renderer, null bei Fehler
public Renderer GetRender(Transform _transform)

Erstellt eine neue Rendering-Instanz und bindet sie an die angegebene Transform. Nach der Erstellung muss Renderer.Load() aufgerufen werden, um Daten zu laden.

ParameterTypBeschreibung
_transformTransformDie Transform, an die die Rendering-Instanz angehängt wird

Hinweise:

  • SetPlatformType() und SetMainCamera() müssen zuerst aufgerufen werden.
  • Im Modus MultiRender werden bis zu 255 Renderer unterstützt.

Beispiel:

var go = new GameObject("LCCScene");
var renderer = lccManager.GetRender(go.transform);
renderer.Load(filePath, null, () => Debug.Log("Geladen"));

GetRender (Überladung 2: GameObject automatisch erstellen)

// Rückgabewert: Renderer, null bei Fehler
public Renderer GetRender(out GameObject gameObject)

Erstellt automatisch ein GameObject namens LCCRenderer und bindet die Rendering-Instanz an dessen Transform.

ParameterTypBeschreibung
gameObjectout GameObjectGibt das automatisch erstellte GameObject aus, null bei Fehler

Beispiel:

var renderer = lccManager.GetRender(out GameObject go);
renderer.Load(filePath, null, () => Debug.Log("Geladen"));

SetMaxBufferSplat

public void SetMaxBufferSplat(int _count)

Legt die maximale Kapazität des GPU-Puffers fest (Splat-Anzahl). Einmalig allokiert und kann nicht dynamisch geändert werden.

ParameterTypBeschreibung
_countintMaximale Splat-Anzahl, Einheit: Zehntausend (Wert × 10000 = tatsächliche Anzahl)

Hinweise:

  • Muss vor jedem Renderer.Load() aufgerufen werden, und SetPlatformType() muss zuerst aufgerufen werden.
  • Größere Kapazität bedeutet höhere Grafikspeichernutzung; nach Bedarf setzen.
  • Plattformgrenzen: PC/Mac/PCVR 45 Millionen, Android/iOS 6 Millionen, VR (Pico/Quest/PicoSwan/AVP/OpenXR) 2 Millionen.
  • Standardwerte: PC/Mac 30 Millionen, Android/iOS 3 Millionen, VR 1 Million.

Beispiel:

lccManager.SetMaxBufferSplat(3000); // 30 Millionen Punkte

SetFullRenderSplat

public void SetFullRenderSplat(int _count)

Legt die Obergrenze für das vollständige Rendering auf PC/Mac fest. Liegt die Datengröße unter diesem Wert, wird der vollständige Rendering-Pfad verwendet; andernfalls der chunk-basierte Rendering-Pfad.

ParameterTypBeschreibung
_countintObergrenze des vollständigen Renderings, Einheit: Zehntausend, Bereich [100, 4500]

Hinweise:

  • Nur auf PC-/Mac-/PCVR-Plattformen unterstützt.
  • Muss vor jedem Renderer.Load() aufgerufen werden, und SetPlatformType() muss zuerst aufgerufen werden.

Beispiel:

lccManager.SetFullRenderSplat(2500); // 25 Millionen Punkte

SetMaxRenderSplats

public void SetMaxRenderSplats(int _count)

Legt die maximale Anzahl der zur Laufzeit pro Frame gerenderten Splats fest. Kann nach Load() dynamisch aufgerufen werden.

ParameterTypBeschreibung
_countintMaximale Anzahl der zur Laufzeit gerenderten Splats, Einheit: Zehntausend

Hinweise:

  • Kann zur Laufzeit dynamisch angepasst werden.
  • Darf die von SetMaxBufferSplat() gesetzte Kapazität nicht überschreiten; bei Überschreitung wird automatisch begrenzt.
  • Keine Wirkung im vollständigen Rendering-Modus.

Beispiel:

lccManager.SetMaxRenderSplats(2500); // 25 Millionen Punkte

GetLoadRatio

// Rückgabewert: float, [0,1] aktueller Datenladefortschritt
public float GetLoadRatio()

Fragt den Ladefortschritt der aktuellen Szenendaten ab.

Hinweise:

  • Gibt im vollständigen Rendering-Modus stets 1.0 zurück.
  • Gibt im chunk-basierten Rendering-Modus das Verhältnis der geladenen Knoten unter der aktuellen Ansicht zurück; der Wert ändert sich in Echtzeit mit der Kamerabewegung und ist kein monoton steigender Gesamtfortschritt.

Beispiel:

float ratio = lccManager.GetLoadRatio();
progressBar.value = ratio;

SetSelectionMode

public void SetSelectionMode(SelectionMode mode)

Legt die Knotenauswahl-Strategie fest.

ParameterTypBeschreibung
modeSelectionModeAuswahlstrategie; siehe SelectionMode

Hinweise:

  • Auto (Standard): automatisch anhand der Gesamt-Bounding-Box der Szene entschieden; überschreitet die maximale Szenenausdehnung etwa 380 Meter, wird automatisch auf Large hochgestuft.
  • Normal: geeignet für kleine und mittlere Szenen.
  • Large: geeignet für sehr große Szenen (über 1000 Meter).
  • Wirkt sofort beim Umschalten.

Beispiel:

lccManager.SetSelectionMode(SelectionMode.Auto);

Laufzeit-Rendering-Steuerung

Die folgenden Methoden können zur Laufzeit dynamisch aufgerufen werden, um Rendering-Präzision, Anzeigeeffekte und Rendering-Schalter anzupassen.

SetDetailLevel

public void SetDetailLevel(float sse)

Legt die Rendering-Präzisionsstufe fest. Ein größerer Wert bedeutet feineres Rendering und höheren Leistungsverbrauch.

ParameterTypBeschreibung
ssefloatPräzisionsstufe, Bereich [1, 100], bei Überschreitung automatisch begrenzt

Hinweise:

  • Verwendet logarithmische Abbildung: Änderungen sind im Niedrigwert-Bereich empfindlich und im Hochwert-Bereich sanft.
  • Kann zur Laufzeit dynamisch angepasst werden.
  • Wirkt nur im Auswahlmodus Normal.

Beispiel:

lccManager.SetDetailLevel(50f); // Mittlere Präzision

SetStartLod

public void SetStartLod(int lod)

Legt den LOD-Expansionsstartpunkt fest (0-basiert). 0 ist am feinsten, und eine größere Zahl bedeutet ein gröberes Level.

ParameterTypBeschreibung
lodintLOD-Startlevel, Bereich [0, 10], bei Überschreitung automatisch begrenzt

Hinweise:

  • Die tatsächliche wirksame Obergrenze ist durch die Gesamtzahl der Datenlevel beschränkt.

Beispiel:

lccManager.SetStartLod(0);

SetAutoFov

public void SetAutoFov(bool _auto)

Legt fest, ob das Rendering-FOV automatisch verwaltet wird. Wenn aktiviert (Standard), sperrt das SDK im ersten Frame eine Pixel-Brennweiten-Basislinie, invertiert dann in jedem Frame das vertikale FOV aus der aktuellen Viewport-Höhe und schreibt es in Camera.fieldOfView zurück; wenn deaktiviert, wird fieldOfView extern gesteuert (SetFOV() oder direktes Ändern der Kamera).

ParameterTypBeschreibung
_autoboolOb Auto-FOV verwendet werden soll

Hinweise:

  • Standardmäßig aktiviert.
  • Wenn aktiviert, wird das Camera.fieldOfView der Hauptkamera kontinuierlich überschrieben, sodass der Aufruf von SetFOV() ignoriert wird.
  • Wenn deaktiviert, muss SetFOV() manuell aufgerufen werden, um Parameter zu setzen.

Beispiel:

lccManager.SetAutoFov(true);

SetFOV

public void SetFOV(int _width, int _height, float _verticalFov, float _aspect)

Legt das vertikale FOV manuell fest (in Grad). Überschreibt direkt das Camera.fieldOfView der Hauptkamera, sodass das FOV im Inspektor dem tatsächlich für das Rendering verwendeten FOV entspricht. _width / _height / _aspect sind übernommene Signaturparameter; die tatsächliche Projektion verwendet den eigenen Viewport der Hauptkamera (für Offscreen-Ausgabe mit anderer Größe / anderem FOV SetRecordMode() verwenden).

ParameterTypBeschreibung
_widthintPixelbreite
_heightintPixelhöhe
_verticalFovfloatVertikales FOV (Grad)
_aspectfloatSeitenverhältnis

Hinweise:

  • SetAutoFov(false) muss zuerst aufgerufen werden, andernfalls überschreibt die Auto-FOV-Invertierung pro Frame den manuellen Wert.
  • Das vertikale FOV wird auf [1, 179] Grad begrenzt.
  • Der Aufruf auf VR-/PCVR-Plattformen, während der Aufnahme oder unter einer orthographischen Kamera wird abgelehnt (warnt und kehrt zurück).

Beispiel:

lccManager.SetFOV(1920, 1080, 60f, 1.778f);

SetRenderEnable

public void SetRenderEnable(Renderer _renderer, bool _isEnable)

Steuert den Rendering-Schalter des angegebenen Renderers zur Laufzeit. Wenn deaktiviert, nimmt er nicht an Traversierung und Zeichnung teil.

ParameterTypBeschreibung
_rendererRendererZiel-Rendering-Instanz
_isEnableboolOb Rendering aktiviert werden soll

Beispiel:

lccManager.SetRenderEnable(renderer, false); // Ausblenden

SetEnvironment

public void SetEnvironment(Renderer _renderer, bool _isRender)

Steuert das Rendering der Umgebungsdaten des angegebenen Renderers. Umgebungsdaten sind eine niederpräzise Hintergrund-Punktwolke zum Auffüllen entfernter Ansichten.

ParameterTypBeschreibung
_rendererRendererZiel-Rendering-Instanz
_isRenderboolOb Umgebungsdaten gerendert werden sollen

Hinweise:

  • Die Daten müssen Umgebungsknoten enthalten.

Beispiel:

lccManager.SetEnvironment(renderer, true);

SetZDepth

public void SetZDepth(bool zwrite)

Schaltet das Z-Tiefenschreiben um und passt die Render-Warteschlange entsprechend an.

ParameterTypBeschreibung
zwriteboolOb Z-Tiefenschreiben aktiviert werden soll

Beispiel:

lccManager.SetZDepth(true);

SetAlpha

public void SetAlpha(float alpha)

Legt die globale Deckkraft fest.

ParameterTypBeschreibung
alphafloatGlobale Deckkraft, Bereich [0, 1], bei Überschreitung automatisch begrenzt

Beispiel:

lccManager.SetAlpha(0.8f);

SetLightIntensity

public void SetLightIntensity(float intensity)

Legt die globale Lichtintensität fest.

ParameterTypBeschreibung
intensityfloatLichtintensität, Bereich [0, 1], bei Überschreitung automatisch begrenzt

Beispiel:

lccManager.SetLightIntensity(0.7f);

SetLowPassFilter

public void SetLowPassFilter(float _filter)

Legt die globale Tiefpassfilter-Stärke fest, um hochfrequentes Aliasing / Rauschen zu unterdrücken.

ParameterTypBeschreibung
_filterfloatTiefpassfilter-Stärke, Bereich [0, 1], bei Überschreitung automatisch begrenzt

Beispiel:

lccManager.SetLowPassFilter(0.3f);

SetLockFPS

public void SetLockFPS(bool _isLock)

Schaltet die Bildratensperre um (statischer / dynamischer Bildratenwechsel).

ParameterTypBeschreibung
_isLockboolOb die Bildrate gesperrt werden soll

Beispiel:

lccManager.SetLockFPS(true);

SetRenderLayer

public void SetRenderLayer(int _layer)

Legt die vom LCC-Rendering verwendete Unity-Layer fest, für die Sichtbarkeitssteuerung über die Kamera-CullingMask.

ParameterTypBeschreibung
_layerintUnity-Rendering-Layer, Bereich [0, 31]

Hinweise:

  • Kann zur Laufzeit dynamisch angepasst werden.

Beispiel:

lccManager.SetRenderLayer(8); // Layer 8 verwenden

SetForceRefresh

public void SetForceRefresh()

Erzwingt eine Rendering-Aktualisierung. Löscht den internen Kamera-Info-Cache, sodass Frustum, LOD und weitere Parameter im nächsten Frame neu berechnet werden. Geeignet für Fälle, in denen extern geänderte Kameraparameter sofort wirken müssen.

Beispiel:

lccManager.SetForceRefresh();

SetMipMode

public void SetMipMode(MipMode _mipMode)

Schaltet den Mip-Rendering-Modus um. Der Modus Mip verwendet Mipmap-Sampling (Standard), und der Modus Non_Mip deaktiviert Mipmap.

ParameterTypBeschreibung
_mipModeMipModeZielmodus; siehe MipMode

Hinweise:

  • Kehrt sofort zurück, wenn der aktuelle Modus mit dem übergebenen Modus übereinstimmt.
  • Wirkt sofort beim Umschalten.

Beispiel:

lccManager.SetMipMode(MipMode.Non_Mip);

SetGraphicsAPI

public void SetGraphicsAPI(GraphicsDeviceType type)

Legt den Grafik-API-Typ fest. Im DX11-Modus wird HDR aktiviert.

ParameterTypBeschreibung
typeGraphicsDeviceTypeGrafik-API-Typ (integriertes Unity-Enum)

Beispiel:

lccManager.SetGraphicsAPI(GraphicsDeviceType.Direct3D11);

SetDebugMode

public void SetDebugMode(bool debug)

Schaltet den Debug-Modus um.

ParameterTypBeschreibung
debugboolOb der Debug-Modus aktiviert werden soll

Hinweise:

  • Nur auf PC-/Mac-Plattformen unterstützt.

Beispiel:

lccManager.SetDebugMode(true);

SetEditorMode

public void SetEditorMode(bool _isEditor)

Schaltet den Editor-Modus um.

ParameterTypBeschreibung
_isEditorboolOb der Editor-Modus aktiviert werden soll

Hinweise:

  • Nur auf PC-/Mac-Plattformen unterstützt.

Beispiel:

lccManager.SetEditorMode(true);

SetAECMode

public void SetAECMode(bool _aec)

Schaltet den AEC-Modus (Architecture / Engineering / Construction) um.

ParameterTypBeschreibung
_aecboolOb der AEC-Modus aktiviert werden soll

Hinweise:

  • Nur auf PC-/Mac-Plattformen unterstützt.

Beispiel:

lccManager.SetAECMode(true);

SetSemantic

// Rückgabewert: bool, false=ungültiger Parameter
public bool SetSemantic(bool enable, Vector4[] color = null)

Schaltet den semantischen Rendering-Modus um. Wenn aktiviert, kann ein Farb-Array übergeben werden, um die Anzeigefarbe jeder semantischen Kategorie zu definieren.

ParameterTypBeschreibung
enableboolOb semantisches Rendering aktiviert werden soll
colorVector4[]Semantisches Farb-Array, Länge muss 100 sein, andernfalls wird false zurückgegeben; null übergeben, um Standardfarben zu verwenden

Beispiel:

Vector4[] colors = new Vector4[100];
colors[0] = new Vector4(1, 0, 0, 1); // Kategorie 0 = rot
lccManager.SetSemantic(true, colors);

SwitchRenderMode

public void SwitchRenderMode(RenderMode mode, Texture2D tex = null)

Wechselt zwischen Punktwolken-Rendering und 3DGS-Rendering. Im Punktwolken-Modus kann eine Höhenfarbverlauf-Textur bereitgestellt werden.

ParameterTypBeschreibung
modeRenderModeRendering-Modus; siehe RenderMode
texTexture2DHöhenfarbverlauf-Textur (optional)

Hinweise:

  • Nur auf PC-/Mac-Plattformen unterstützt.

Beispiel:

lccManager.SwitchRenderMode(RenderMode.PointCloud, elevationTex);

SetRecordMode

public void SetRecordMode(bool isRecord, Vector2 renderSize, float verticalFov)

Legt den Aufnahmemodus fest. Im Aufnahmemodus wird mit fester Auflösung und festem FOV gerendert, geeignet für die HD-Videoaufnahme.

ParameterTypBeschreibung
isRecordboolOb der Aufnahmemodus verwendet werden soll
renderSizeVector2Aufnahmeauflösung
verticalFovfloatVertikales FOV (Grad)

Hinweise:

  • Nur auf PC-/Mac-Plattformen unterstützt.
  • Im Aufnahmemodus ist die Kamerabrennweite fest und ändert sich nicht mit der Camera-Komponente.
  • Nach der Aufnahme SetRecordMode(false, ...) aufrufen, um wiederherzustellen.

Beispiel:

lccManager.SetRecordMode(true, new Vector2(3840, 2160), 60f);

SetVRPerformance

public void SetVRPerformance(bool _enabled)

Legt den VR-Hochleistungs-Sortiermodus fest. true verwendet GPU-Radix-Sortierung (GpuSorter), und false fällt auf CPU / BitonicSorter zurück.

ParameterTypBeschreibung
_enabledboolOb die GPU-Hochleistungs-Sortierung aktiviert werden soll

Hinweise:

  • Beeinflusst nur den Sortierpfad von VR-Headsets (Pico/Quest/PicoSwan/OpenXR); standardmäßig aktiviert.
  • Wenn kein Compute-Gerät vorhanden ist (wie Mali), fällt die Sortierung vorgeschaltet automatisch auf CPU zurück, unbeeinflusst von diesem Schalter.

Beispiel:

lccManager.SetVRPerformance(true);

Beleuchtung und Schatten

Die folgenden Methoden steuern Schattenempfang und benutzerdefinierte Punktlichter auf 3DGS-Oberflächen. Schattenbezogene Methoden müssen nach Abschluss des Ladens der LCC-Szene aufgerufen werden.

SetShadowReceive

public void SetShadowReceive(bool enable)

Schaltet den Schattenempfang der Punktwolke um. Wenn aktiviert, können Schatten von Mesh-Objekten in der Szene auf 3DGS-Punktwolkenoberflächen geworfen werden.

ParameterTypBeschreibung
enableboolOb Schatten empfangen werden sollen

Hinweise:

  • Standardmäßig deaktiviert.
  • Erfordert schattenwerfende Mesh-Objekte und ein Richtungslicht in der Szene.

Beispiel:

lccManager.SetShadowReceive(true);

SetShadowColor

public void SetShadowColor(Color color)

Legt die Farbe des Schattenbereichs fest.

ParameterTypBeschreibung
colorColorSchattenfarbe (RGBA)

Hinweise:

  • Standard (0.3, 0.3, 0.3, 1).
  • SetShadowReceive(true) muss zuerst aktiviert werden.

Beispiel:

lccManager.SetShadowColor(new Color(0.3f, 0.3f, 0.3f, 1f));

SetShadowStrength

public void SetShadowStrength(float strength)

Legt die Schattenstärke fest. 0 ist kein Schatten, 1 der stärkste Schatten.

ParameterTypBeschreibung
strengthfloatSchattenstärke, Bereich [0, 1], bei Überschreitung automatisch begrenzt

Hinweise:

  • Standard 1.0.
  • SetShadowReceive(true) muss zuerst aktiviert werden.

Beispiel:

lccManager.SetShadowStrength(0.8f);

SetLights

// Rückgabewert: int, 0=Erfolg, -1=Maximalanzahl-Grenze überschritten
public int SetLights(List<PointLightData> lights)

Legt die benutzerdefinierte Punktlichtliste fest. Die Übergabe von null oder einer leeren Liste schaltet die benutzerdefinierte Beleuchtung aus.

ParameterTypBeschreibung
lightsList<PointLightData>Punktlichtliste; siehe PointLightData

Hinweise:

  • PointLightData.lightType: 0 ist ein Punktlicht (direction / spotAngle ignoriert), 1 ist ein Spotlight (direction / spotAngle erforderlich).
  • Die Übergabe von null oder einer leeren Liste schaltet die benutzerdefinierte Beleuchtung aus.

Beispiel:

using Unity.Mathematics; // float3

var lights = new List<PointLightData>();
lights.Add(new PointLightData {
    position = new float3(0, 5, 0),
    lightType = 0,              // 0=Punktlicht, 1=Spotlight
    color = new float3(1, 1, 1),
    intensity = 2f,
    range = 10f
});
lccManager.SetLights(lights);

Kameraverwaltung

SetMainCamera

public void SetMainCamera(Camera _cam)

Legt die Haupt-Rendering-Kamera fest. LCC verwendet diese Kamera für Frustum-Culling, LOD-Auswahl, Sortierung und weitere Operationen.

ParameterTypBeschreibung
_camCameraHaupt-Rendering-Kamera; null übergeben, um zu löschen

Hinweise:

  • Muss vor Renderer.Load() gesetzt werden.
  • Nur auf PC-/Mac-Plattformen unterstützt.

Beispiel:

lccManager.SetMainCamera(Camera.main);

AddCamera

public void AddCamera(Camera _cam)

Fügt eine sekundäre Kamera hinzu. Die sekundäre Kamera nimmt am Rendering teil, beeinflusst aber nicht die LOD-Auswahl.

ParameterTypBeschreibung
_camCameraSekundäre Kamera

Hinweise:

  • Nur auf PC-/Mac-Plattformen unterstützt.
  • Die Hauptkamera kann nicht als sekundäre Kamera hinzugefügt werden.

Beispiel:

lccManager.AddCamera(secondCamera);

RemoveCamera

public void RemoveCamera(Camera _cam)

Entfernt eine hinzugefügte sekundäre Kamera.

ParameterTypBeschreibung
_camCameraDie zu entfernende sekundäre Kamera

Hinweise:

  • Nur auf PC-/Mac-Plattformen unterstützt.

Beispiel:

lccManager.RemoveCamera(secondCamera);

Clipping / Hervorhebung / Farbton

Clipping, Hervorhebung und Farbton sind drei Arten von Bearbeitungsoperationen, die alle die Definition des betroffenen Bereichs über 2D-Textur, 3D-Geometrie oder eine Mischung aus beidem unterstützen. Siehe Data2D, Data3D, DataMix und ToneMix.

SetClip (Ebenen-Clipping)

// Rückgabewert: int, 0=Erfolg
public int SetClip(Vector3 planePoint, Vector3 planeNormal, bool inside = true)

Schneidet die Punktwolke mit einer unendlichen Ebene und behält Punkte auf der Normalenseite oder der gegenüberliegenden Seite.

ParameterTypBeschreibung
planePointVector3Ein Punkt auf der Ebene
planeNormalVector3Ebenennormale
insidebooltrue behält die Normalenseite

Hinweise:

  • Schließt sich mit anderen Clipping-Modi gegenseitig aus.

Beispiel:

lccManager.SetClip(Vector3.zero, Vector3.up, true); // Oberhalb des Bodens behalten

SetClip (2D-Textur-Clipping)

// Rückgabewert: int, 0=Erfolg, 1=leere Liste, 2=Maximalanzahl überschritten
public int SetClip(List<Data2D> _2Ds)

Schneidet die Punktwolke mit einer 2D-projizierten Texturmaske.

ParameterTypBeschreibung
_2DsList<Data2D>2D-Texturauswahlliste

Beispiel:

var clips = new List<Data2D>();
clips.Add(new Data2D {
    texture = maskTex,
    mv = modelViewMatrix,
    mvp = mvpMatrix,
    mode = SelectMode.normal
});
lccManager.SetClip(clips);

SetClip (3D-Geometrie-Clipping)

// Rückgabewert: int, 0=Erfolg, 1=leere Liste, 2=Maximalanzahl überschritten, 3=null gültige Geometrie
public int SetClip(List<Data3D> _3Ds)

Schneidet die Punktwolke mit 3D-Geometrie und unterstützt boolesche Operationen zur Kombination mehrerer Geometrien.

ParameterTypBeschreibung
_3DsList<Data3D>3D-Geometrieliste

Hinweise:

  • Mindestens eine Geometrie mit operation == normal ist erforderlich.

Beispiel:

var clips = new List<Data3D>();
clips.Add(new Data3D {
    type = ShapeType.box,
    invMat = boxInverseMatrix,
    operation = OperationMode.normal,
    mode = SelectMode.normal
});
lccManager.SetClip(clips);

SetClip (Gemischtes Clipping)

// Rückgabewert: int, 0=Erfolg, 1=leere Liste, 2=Maximalanzahl überschritten
public int SetClip(List<DataMix> mix)

Definiert den Clipping-Bereich mit einer Mischung aus 2D-Texturen und 3D-Geometrien. Jeder Eintrag gibt seinen Typ über editType an.

ParameterTypBeschreibung
mixList<DataMix>Gemischte Auswahlliste (2D + 3D)

Beispiel:

var mix = new List<DataMix>();
mix.Add(new DataMix {
    editType = EditType.Edit3D,
    type = ShapeType.box,
    invMat = matrix,
    operation = OperationMode.normal,
    mode = SelectMode.normal
});
lccManager.SetClip(mix);

QuitClipMode

public void QuitClipMode()

Beendet den Clipping-Modus und stellt die vollständige Punktwolkenanzeige wieder her.

Beispiel:

lccManager.QuitClipMode();

SetHighlight (2D-Textur-Hervorhebung)

// Rückgabewert: int, 0=Erfolg, 1=leere Liste, 2=Maximalanzahl überschritten
public int SetHighlight(List<Data2D> _2Ds)

Hebt die Punktwolke mit einer 2D-projizierten Texturmaske hervor; die Punktwolke außerhalb des hervorgehobenen Bereichs wird abgedunkelt.

ParameterTypBeschreibung
_2DsList<Data2D>2D-Texturauswahlliste

Hinweise:

  • Schließt sich mit 3D-Hervorhebung und gemischter Hervorhebung gegenseitig aus.

Beispiel:

var highlights = new List<Data2D>();
highlights.Add(new Data2D {
    texture = maskTex,
    mv = modelViewMatrix,
    mvp = mvpMatrix,
    mode = SelectMode.normal
});
lccManager.SetHighlight(highlights);

SetHighlight (3D-Geometrie-Hervorhebung)

// Rückgabewert: int, 0=Erfolg, 1=leere Liste, 2=Maximalanzahl überschritten, 3=null gültige Geometrie
public int SetHighlight(List<Data3D> _3Ds)

Definiert den hervorgehobenen Bereich mit 3D-Geometrie und unterstützt boolesche Operationen zum Kombinieren.

ParameterTypBeschreibung
_3DsList<Data3D>3D-Geometrieliste

Hinweise:

  • Mindestens eine Geometrie mit operation == normal ist erforderlich.

Beispiel:

var highlights = new List<Data3D>();
highlights.Add(new Data3D {
    type = ShapeType.box,
    invMat = boxInverseMatrix,
    operation = OperationMode.normal,
    mode = SelectMode.normal
});
lccManager.SetHighlight(highlights);

SetHighlight (Gemischte Hervorhebung)

// Rückgabewert: int, 0=Erfolg, 1=leere Liste, 2=Maximalanzahl überschritten
public int SetHighlight(List<DataMix> mix)

Definiert den hervorgehobenen Bereich mit einer Mischung aus 2D-Texturen und 3D-Geometrien.

ParameterTypBeschreibung
mixList<DataMix>Gemischte Auswahlliste

Beispiel:

var mix = new List<DataMix>();
mix.Add(new DataMix {
    editType = EditType.Edit3D,
    type = ShapeType.box,
    invMat = matrix,
    operation = OperationMode.normal,
    mode = SelectMode.normal
});
lccManager.SetHighlight(mix);

QuitHighlightMode

public void QuitHighlightMode()

Beendet den Hervorhebungsmodus und stellt die normale Punktwolkenanzeige wieder her.

Beispiel:

lccManager.QuitHighlightMode();

SetTone

// Rückgabewert: int, 0=Erfolg, 1=leere Liste, 2=Maximalanzahl überschritten
public int SetTone(List<ToneMix> mix)

Wendet eine Farbtonanpassung auf den ausgewählten Bereich an und unterstützt Helligkeit, Sättigung, Kontrast und LUT-Filter. Der Farbtonbereich kann über 2D-Textur oder 3D-Geometrie definiert werden.

ParameterTypBeschreibung
mixList<ToneMix>Farbton-Mischliste

Hinweise:

  • brightness / saturation / contrast sind standardmäßig 1.0.
  • lutid ist der LUT-Filterindex; 0 bedeutet nicht verwendet.

Beispiel:

var tones = new List<ToneMix>();
tones.Add(new ToneMix {
    editType = EditType.Edit3D,
    type = ShapeType.box,
    invMat = boxMatrix,
    operation = OperationMode.normal,
    mode = SelectMode.normal,
    brightness = 1.2f,
    saturation = 1.0f,
    contrast = 1.1f,
    lutid = 0
});
lccManager.SetTone(tones);

QuitToneMode

public void QuitToneMode()

Beendet den Farbton-Modus und stellt die ursprüngliche Punktwolkenfarbe wieder her.

Beispiel:

lccManager.QuitToneMode();

Decal-Projektion

Die Decal-Projektion projiziert eine Textur entlang der Projektorrichtung auf 3DGS-Oberflächen. Das Decal ist ein weltfester globaler Zustand, konsistent für alle Kameras. Der typische Workflow ist: Decal aktivieren → Textur setzen → Projektor-Pose setzen. Die folgenden Methoden werden nur auf PC-/Mac-Plattformen unterstützt.

SetDecalEnabled

public void SetDecalEnabled(bool enable)

Schaltet die Decal-Projektion um. SetDecalTexture() und SetDecalProjection() müssen separat aufgerufen werden, um Inhalt und Projektor-Pose festzulegen.

ParameterTypBeschreibung
enableboolOb die Decal-Projektion aktiviert werden soll

Hinweise:

  • Das Deaktivieren löscht die zwischengespeicherte Textur / Parameter nicht.

Beispiel:

lccManager.SetDecalEnabled(true);
lccManager.SetDecalTexture(decalTex);
lccManager.SetDecalProjection(projectorPos, projectorRot, 60f, 1.778f, 0.1f, 20f);

SetDecalTexture

public void SetDecalTexture(Texture2D tex)

Legt die Decal-Textur fest. RGB ist die Farbe und A die eigene Maske des Decals, die mit der globalen Deckkraft und der Kantenverblassung multipliziert wird.

ParameterTypBeschreibung
texTexture2DDecal-Textur; null übergeben löscht die Referenz

Beispiel:

lccManager.SetDecalTexture(logoTex);

SetDecalProjection

public void SetDecalProjection(Vector3 pos, Quaternion rot, float fov, float aspect, float near, float far)

Legt Pose und perspektivische Parameter des Decal-Projektors fest. Der Projektor projiziert entlang seiner Vorwärtsrichtung (+Z), und Punkte innerhalb des Frustums werden vom Decal überdeckt.

ParameterTypBeschreibung
posVector3Weltposition des Projektors
rotQuaternionAusrichtung des Projektors
fovfloatVertikales FOV (Grad), begrenzt auf [1, 179]
aspectfloatSeitenverhältnis, Minimum 1e-4
nearfloatNahe Clipping-Ebene, Minimum 1e-3
farfloatFerne Clipping-Ebene, Minimum near + 1e-3

Beispiel:

lccManager.SetDecalProjection(new Vector3(0, 10, 0), Quaternion.Euler(90, 0, 0), 60f, 1.778f, 0.1f, 20f);

SetDecalOpacity

public void SetDecalOpacity(float opacity)

Legt die Gesamtdeckkraft des Decals fest.

ParameterTypBeschreibung
opacityfloatGesamtdeckkraft des Decals, Bereich [0, 1], bei Überschreitung automatisch begrenzt

Beispiel:

lccManager.SetDecalOpacity(0.8f);

SetDecalEdgeFade

public void SetDecalEdgeFade(float edgeFade)

Legt die Breite der Decal-Kantenverblassung fest. 0 ist eine harte Kante, und ein größerer Wert macht den Kantenübergang weicher.

ParameterTypBeschreibung
edgeFadefloatBreite der Kantenverblassung (Verhältnis im UV-Raum), Bereich [0, 0.5), bei Überschreitung automatisch begrenzt

Beispiel:

lccManager.SetDecalEdgeFade(0.1f);

SetDecalOcclusion

public void SetDecalOcclusion(bool enable)

Schaltet das Decal-Verdeckungs-Culling um (basierend auf der Projektor-Tiefenkarte). Wenn aktiviert, werden verdeckte Oberflächen nicht vom Decal überdeckt.

ParameterTypBeschreibung
enableboolOb das Decal-Verdeckungs-Culling aktiviert werden soll

Hinweise:

  • Nur PC-/Mac-Plattform und nur URP-Pipeline.
  • Vor dem Aktivieren sollte SetDecalProjection() aufgerufen worden sein, um den Projektor zu setzen.
  • Hängt von den über SetDecalOcclusionSettings() konfigurierten Qualitätsparametern ab.

Beispiel:

lccManager.SetDecalOcclusion(true);

SetDecalOcclusionSettings

public void SetDecalOcclusionSettings(DecalOcclusionSettings settings)

Legt alle Qualitätsparameter des Decal-Verdeckungs-Cullings auf einmal fest. Siehe DecalOcclusionSettings.

ParameterTypBeschreibung
settingsDecalOcclusionSettingsQualitätsparameter des Verdeckungs-Cullings

Hinweise:

  • Kann jederzeit angepasst werden; die Parameter wirken sofort.

Beispiel:

lccManager.SetDecalOcclusionSettings(DecalOcclusionSettings.Default);
lccManager.SetDecalOcclusionSettings(new DecalOcclusionSettings {
    opacityCutoff = 0.1f,
    depthBias = 0.05f,
    footprintMaxPx = 2,
    resolution = 1024
});

Snapping

Die Snapping-Funktion sucht beim Raycasting automatisch nach nahegelegenen Kanten/Ecken zum Ausrichten und wird häufig für präzise Interaktion wie Messung und Annotation verwendet. Die folgenden Methoden werden nur auf PC-/Mac-Plattformen unterstützt.

SetSnapEnabled

public void SetSnapEnabled(bool enable)

Schaltet die Snapping-Funktion um. Wenn aktiviert, sucht RaycastWithSnap() automatisch nach nahegelegenen Kanten/Ecken zum Einrasten.

ParameterTypBeschreibung
enableboolOb Snapping aktiviert werden soll

Hinweise:

  • Standardmäßig deaktiviert.
  • Keine Wirkung auf Mobil/VR, und eine Warnung wird ausgegeben.

Beispiel:

lccManager.SetSnapEnabled(true);

SetSnapRadius

public void SetSnapRadius(float pixels)

Legt den Snapping-Suchradius fest. Sucht innerhalb dieses Pixelbereichs nach der nächstgelegenen Kante/Ecke.

ParameterTypBeschreibung
pixelsfloatSnapping-Suchradius (Pixel)

Hinweise:

  • Standard 20 Pixel.
  • Ein größerer Wert bedeutet einen breiteren Suchbereich, kann aber zu unbeabsichtigten Zielen einrasten.

Beispiel:

lccManager.SetSnapRadius(30f);

SetEdgeThreshold

public void SetEdgeThreshold(float threshold)

Legt den Kantenerkennungs-Schwellenwert fest. Ein kleinerer Wert erkennt mehr Kanten.

ParameterTypBeschreibung
thresholdfloatKantenerkennungs-Schwellenwert, empfohlener Bereich [0.1, 0.8]

Hinweise:

  • Standard 0.3.
  • Ein zu kleiner Wert erzeugt eine große Menge Rauschkanten.

Beispiel:

lccManager.SetEdgeThreshold(0.2f);

SetSnapPreviewEnabled

public void SetSnapPreviewEnabled(bool enable)

Schaltet die Snap-Vorschau-Funktion um. Wenn aktiviert, wird der Indikator des nächstgelegenen Snap-Ziels in Echtzeit angezeigt, während sich die Maus bewegt.

ParameterTypBeschreibung
enableboolOb die Snap-Vorschau aktiviert werden soll

Hinweise:

  • SetSnapEnabled(true) muss zuerst aufgerufen werden.
  • Die Vorschau verbraucht kontinuierlich GPU-Ressourcen (Erkennung in jedem Frame).

Beispiel:

lccManager.SetSnapPreviewEnabled(true);

UpdateSnapPreview

public void UpdateSnapPreview(Vector2 mousePos, Camera cam)

Aktualisiert den Zustand der Snap-Vorschau. Bei Mausbewegung aufrufen, um die Position des Vorschau-Indikators zu aktualisieren.

ParameterTypBeschreibung
mousePosVector2Aktuelle Maus-Bildschirmkoordinaten
camCameraKamera

Hinweise:

  • SetSnapPreviewEnabled(true) muss zuerst aufgerufen werden.
  • Empfohlen, kontinuierlich in Update aufzurufen.

Beispiel:

void Update()
{
    lccManager.UpdateSnapPreview(Input.mousePosition, Camera.main);
}

GetSnapPreviewState

// Rückgabewert: SnapPreviewState
public SnapPreviewState GetSnapPreviewState()

Ruft den aktuellen Zustand der Snap-Vorschau ab, einschließlich ob ein Snap-Ziel vorhanden ist, des Zieltyps, der Bildschirmposition des Ziels und der Pixeldistanz zur Maus. Siehe SnapPreviewState.

Hinweise:

  • SetSnapPreviewEnabled(true) und UpdateSnapPreview() müssen zuerst aufgerufen werden.
  • Gibt default(SnapPreviewState) zurück, wenn kein Ziel vorhanden ist.
  • screenPos ist in Bildschirmkoordinaten, nicht in Weltkoordinaten; für Weltkoordinaten RaycastWithSnap() verwenden, um HitResult.hitPos zu erhalten.

Beispiel:

var state = lccManager.GetSnapPreviewState();
if (state.hasTarget)
{
    // state.snapType: Corner / Edge
    // state.screenPos: Bildschirmkoordinaten des Snap-Ziels
    // state.distanceToMouse: Pixeldistanz
}

Raycasting und Kollisionsabfragen

Raycasting wird verwendet, um Punkte auf 3DGS-Oberflächen auszuwählen, und Kollisionsabfragen dienen der physischen Interaktion zwischen Figuren/Objekten und der Punktwolke. Das Trefferergebnis wird über HitResult zurückgegeben.

Hinweis:

Das Weltkoordinaten-Feld des Trefferpunkts von HitResult heißt hitPos (nicht position).

Raycast (Bildschirmkoordinaten)

// Rückgabewert: bool, true=Treffer
public bool Raycast(Vector3 mousePos, out HitResult _finalResult)

Sendet einen Strahl aus Bildschirmkoordinaten, um Punktwolkentreffer zu erkennen. Der Strahl wird mit der durch SetMainCamera() gesetzten Hauptkamera erzeugt.

ParameterTypBeschreibung
mousePosVector3Bildschirmkoordinaten
_finalResultout HitResultTrefferergebnis

Hinweise:

  • SetMainCamera() muss zuerst aufgerufen werden, um die Hauptkamera zu setzen.
  • Gibt den der Kamera am nächsten gelegenen Trefferpunkt zurück.
  • Die Präzision wird durch SetRaycastDelta() beeinflusst, und die maximale Distanz wird durch SetMaxRaycastDistance() gesteuert.

Beispiel:

if (lccManager.Raycast(Input.mousePosition, out HitResult hit))
{
    Debug.Log(hit.hitPos);
}

Raycast (Ray)

// Rückgabewert: bool, true=Treffer
public bool Raycast(Ray _ray, out HitResult _finalResult)

Führt Raycasting mit einem benutzerdefinierten Ray aus, iteriert über alle aktiven Renderer und gibt den nächstgelegenen Treffer zurück.

ParameterTypBeschreibung
_rayRayStrahl
_finalResultout HitResultTrefferergebnis

Beispiel:

Ray ray = new Ray(origin, direction);
if (lccManager.Raycast(ray, out HitResult hit))
{
    Debug.Log(hit.hitPos);
}

RaycastMesh (Bildschirmkoordinaten)

// Rückgabewert: bool, true=Treffer
public bool RaycastMesh(Vector3 mousePos, out HitResult _finalResult, float _distance = 70.0f)

Sendet einen Strahl aus Bildschirmkoordinaten, um Treffer gegen das Kollisions-Mesh der Punktwolke zu erkennen. Verwendet Collider-Daten für die Erkennung, was schneller als Raycast(), aber weniger präzise ist.

ParameterTypBeschreibung
mousePosVector3Bildschirmkoordinaten
_finalResultout HitResultTrefferergebnis
_distancefloatMaximale Erkennungsdistanz, Standard 70.0

Hinweise:

  • Die Daten müssen Collider-Knoten enthalten, und Renderer.SetColliderEnable(true) muss zuerst aufgerufen werden.

Beispiel:

if (lccManager.RaycastMesh(Input.mousePosition, out HitResult hit))
{
    Debug.Log(hit.hitPos);
}

RaycastMesh (Ray + Bounds)

// Rückgabewert: bool, true=Treffer
public bool RaycastMesh(Ray ray, out HitResult result, out Bounds hitBounds, float maxDist = 70.0f)

Führt die Kollisions-Mesh-Erkennung mit einem benutzerdefinierten Ray aus und gibt zusätzlich die Bounding Box des getroffenen Knotens zurück.

ParameterTypBeschreibung
rayRayStrahl
resultout HitResultTrefferergebnis
hitBoundsout BoundsBounding Box des getroffenen Knotens
maxDistfloatMaximale Erkennungsdistanz, Standard 70.0

Hinweise:

  • Die Daten müssen Collider-Knoten enthalten.

Beispiel:

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (lccManager.RaycastMesh(ray, out HitResult hit, out Bounds bounds))
{
    Debug.Log(bounds.center);
}

RaycastWithSnap

// Rückgabewert: bool, true=Treffer
public bool RaycastWithSnap(Vector2 screenPos, Camera cam, out HitResult result)

Raycasting mit Snapping. Führt zunächst einen normalen Raycast aus und sucht dann nach Kanten/Ecken in der Nähe des Trefferpunkts zum Einrasten.

ParameterTypBeschreibung
screenPosVector2Bildschirmkoordinaten
camCameraKamera
resultout HitResultTrefferergebnis (einschließlich Snap-Informationen)

Hinweise:

  • SetSnapEnabled(true) muss zuerst aufgerufen werden.
  • Nur PC-/Mac-Plattformen; nicht auf Mobil/VR verfügbar.
  • Snap-Priorität: Corner > Edge > None.
  • HitResult.snapType ist der Snap-Typ, HitResult.hitPos ist die Weltkoordinate nach dem Snapping, und HitResult.originalHitPos ist der ursprüngliche Trefferpunkt vor dem Snapping.

Beispiel:

if (lccManager.RaycastWithSnap(mousePos, cam, out HitResult hit))
{
    // hit.snapType: Corner / Edge / None
    // hit.hitPos: Weltkoordinate nach dem Snapping
    // hit.originalHitPos: ursprünglicher Trefferpunkt vor dem Snapping
}

SetRaycastDelta

public void SetRaycastDelta(float delta)

Legt den Präzisionsparameter des Raycastings fest. Ein kleinerer Wert bedeutet höhere Präzision, aber höheren Leistungsverbrauch.

ParameterTypBeschreibung
deltafloatRaycasting-Präzision, Bereich [0.1, 10.0], bei Überschreitung automatisch begrenzt

Hinweise:

  • Standard 0.1.
  • Beeinflusst die Erkennungspräzision aller Raycast()-Methoden.

Beispiel:

lccManager.SetRaycastDelta(0.5f);

SetMaxRaycastDistance

public void SetMaxRaycastDistance(float _distance)

Legt die maximale Erkennungsdistanz der Raycast()-Methoden fest.

ParameterTypBeschreibung
_distancefloatMaximale Raycast-Distanz, Bereich [10, 10000], bei Überschreitung automatisch begrenzt

Hinweise:

  • Beeinflusst die Überladungen Raycast(Vector3) / Raycast(Ray); beeinflusst RaycastMesh() nicht (das einen eigenen Distanzparameter besitzt).

Beispiel:

lccManager.SetMaxRaycastDistance(500f);

IntersectsSphere

// Rückgabewert: bool, true=schneidet
public bool IntersectsSphere(Sphere sphere)

// Rückgabewert: bool, true=schneidet
public bool IntersectsSphere(Sphere sphere, out Vector3 delta)

Erkennt, ob eine Kugel den Punktwolken-Collider schneidet. Die zweite Überladung gibt zusätzlich den Durchdringungsvektor zurück, der zum physischen Herausdrücken verwendet werden kann.

ParameterTypBeschreibung
sphereSphereKugel
deltaout Vector3Durchdringungsvektor (Ausstoßrichtung und -distanz)

Hinweise:

  • Die Daten müssen Collider-Knoten enthalten, und Renderer.SetColliderEnable(true) muss zuerst aufgerufen werden.
  • Iteriert über alle aktiven Renderer.

Beispiel:

var sphere = new Sphere(transform.position, 0.5f);
if (lccManager.IntersectsSphere(sphere, out Vector3 delta))
{
    transform.position += delta;
}

IntersectsCapsule

// Rückgabewert: bool, true=schneidet
public bool IntersectsCapsule(Capsule capsule)

// Rückgabewert: bool, true=schneidet
public bool IntersectsCapsule(Capsule capsule, out Vector3 delta)

Erkennt, ob eine Kapsel den Punktwolken-Collider schneidet, häufig verwendet für die Kollisionserkennung eines Charakter-Controllers. Die zweite Überladung gibt den Durchdringungsvektor zurück.

ParameterTypBeschreibung
capsuleCapsuleKapsel
deltaout Vector3Durchdringungsvektor

Hinweise:

  • Die Daten müssen Collider-Knoten enthalten, und Renderer.SetColliderEnable(true) muss zuerst aufgerufen werden.

Beispiel:

var capsule = new Capsule(footPos, headPos, 0.3f);
if (lccManager.IntersectsCapsule(capsule, out Vector3 delta))
{
    characterController.Move(delta);
}

Visuelle Effekte

TriggerVFX

public void TriggerVFX(Vector3 vfxOriginW, int vfxid = 0)

Löst einen visuellen Effekt an der angegebenen Weltkoordinate aus und breitet sich von dieser Koordinate aus.

ParameterTypBeschreibung
vfxOriginWVector3Weltkoordinaten-Ursprung des Effekts
vfxidintEffekt-ID, Standard 0

Hinweise:

  • Muss nach Abschluss des Ladens der LCC-Szene aufgerufen werden.

Beispiel:

lccManager.TriggerVFX(hitPoint, 0);

Instanzabfragen

GetAllRenderers

// Rückgabewert: List<Renderer>, eine Kopie aller registrierten Renderer-Instanzen
public List<Renderer> GetAllRenderers()

Ruft die Liste aller aktuell registrierten Renderer-Instanzen ab (gibt eine Kopie zurück).

Beispiel:

var renderers = lccManager.GetAllRenderers();
foreach (var r in renderers) { /* ... */ }