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

Datentypen: Enums und Structs

Die vom LCC Unity SDK bereitgestellten Enums und Structs, verwendet von den Methoden des LCCManager und des Renderer.

Enums

PlatformType

Ziel-Laufzeitplattform. Verwendet von SetPlatformType().

public enum PlatformType { PC, Mac, Android, iOS, Pico, Quest, AVP, PicoSwan, OpenXR, PCVR }

ActiveRenderMode

Globaler Rendering-Architekturmodus. Verwendet von SwitchRenderPass().

public enum ActiveRenderMode { MultiRender, SingleRender }
WertBeschreibung
MultiRenderVerwendet einen gemeinsamen GPU-Puffer und kann bis zu 255 Renderer gleichzeitig rendern
SingleRenderDas SDK wählt den Rendering-Pfad automatisch anhand der Datengröße

Gilt nur für PC-/Mac-Plattformen; Mobil-/VR-Plattformen übernehmen automatisch eine adaptive Strategie, und der Aufruf von SwitchRenderPass() wird abgelehnt.

SourceType

Datenquellentyp. Zurückgegeben von Renderer.GetSourceType().

public enum SourceType { LCC, PLY, SPLAT, TYY, None, SOG, SPZ, KSPLAT }

DataType

Datenformattyp. Zurückgegeben von Renderer.GetDataType().

public enum DataType { L1, L2, L2Pro, K1, K2, Drone, Drone_L2, PortalCam, None }

MipMode

Mip-Rendering-Modus. Verwendet von SetMipMode().

public enum MipMode { Mip, Non_Mip }
WertBeschreibung
MipVerwendet Mipmap-Sampling (Standard)
Non_MipDeaktiviert Mipmap, mit feineren Rendering-Details, aber höherem Leistungs-Overhead

SnapType

Snap-Typ. Verwendet von HitResult.snapType und SnapPreviewState.snapType.

public enum SnapType { None, Edge, Corner }

SelectionMode

Knotenauswahl-Strategie. Verwendet von SetSelectionMode().

public enum SelectionMode { Auto, Normal, Large }
WertBeschreibung
AutoAutomatisch anhand der Gesamt-Bounding-Box der Szene entschieden (Standard)
NormalGeeignet für kleine und mittlere Szenen
LargeGeeignet für sehr große Szenen (über 1000 Meter)

RenderMode

Punktwolken-/3DGS-Rendering-Modus. Verwendet von SwitchRenderMode().

public enum RenderMode { PointCloud, LCCGS }
WertBeschreibung
PointCloudPunktwolken-Rendering
LCCGS3DGS-Rendering

SelectMode

Auswahl-Aufnahme-/Ausschlussmodus. Verwendet von Auswahldaten wie Data2D und Data3D.

public enum SelectMode { normal, invert, clip }

OperationMode

Boolescher Operationsmodus für mehrere Geometrien. Verwendet von Auswahldaten wie Data3D und DataMix.

public enum OperationMode { normal = 0, erase = 1 }
WertBeschreibung
normalVereinigung
eraseSubtraktion

EditType

Eintragstyp in einer gemischten Auswahl. Verwendet von DataMix und ToneMix.

public enum EditType { Edit2D, Edit3D }

ShapeType

3D-Clipping-/Hervorhebungs-Geometrietyp. Verwendet von Data3D, DataMix und ToneMix.

public enum ShapeType { box, sphere }

Structs

HitResult

Raycast-Trefferergebnis. Zurückgegeben von Raycast(), RaycastMesh() und RaycastWithSnap().

public struct HitResult {
    public bool isHit;             // Ob ein Treffer aufgetreten ist
    public float distance;         // Distanz
    public Vector3 hitPos;         // Trefferpunkt in Weltkoordinaten
    public Vector3 normal;         // Treffernormale
    public float hitAlpha;         // Alpha des getroffenen Ellipsoids
    public float dist2Origin;      // Distanz zum Strahlursprung
    public float scale;            // Ellipsoid-Skalierung
    public SnapType snapType;      // Snap-Typ (None / Edge / Corner)
    public Vector3 originalHitPos; // Ursprünglicher Trefferpunkt vor dem Snapping
}

Das Weltkoordinaten-Feld des Trefferpunkts heißt hitPos.

SnapPreviewState

Snap-Vorschau-Zustand. Zurückgegeben von GetSnapPreviewState().

public struct SnapPreviewState {
    public bool hasTarget;          // Ob ein Snap-Ziel vorhanden ist
    public SnapType snapType;       // None / Edge / Corner
    public Vector2 screenPos;       // Bildschirmkoordinaten des Snap-Ziels
    public float distanceToMouse;   // Pixeldistanz zur Mausposition
}

screenPos ist in Bildschirmkoordinaten (Pixel), nicht in Weltkoordinaten. Wenn Weltkoordinaten benötigt werden, RaycastWithSnap() verwenden, um HitResult.hitPos zu erhalten.

Data2D

2D-Texturprojektions-Auswahl. Verwendet für 2D-Textur-Clipping/-Hervorhebung.

public struct Data2D {
    public Texture2D texture;  // R8 1024x1024-Maskentextur
    public Matrix4x4 mv;       // ModelView-Matrix
    public Matrix4x4 mvp;      // ModelViewProjection-Matrix
    public SelectMode mode;    // normal / invert
}

Data3D

3D-Geometrieauswahl. Verwendet für 3D-Geometrie-Clipping/-Hervorhebung.

public struct Data3D {
    public ShapeType type;          // box / sphere
    public Matrix4x4 invMat;        // Inverse Transform-Matrix der Geometrie
    public OperationMode operation; // normal=Vereinigung, erase=Subtraktion
    public SelectMode mode;         // normal / invert / clip
}

DataMix

2D + 3D-gemischte Auswahl. Verwendet für gemischtes Clipping / Hervorhebung.

public struct DataMix {
    public EditType editType;       // Edit2D / Edit3D
    public ShapeType type;          // 3D-Geometrietyp
    public Matrix4x4 invMat;        // 3D-Inverse-Transform-Matrix
    public Texture2D texture;       // 2D-Maskentextur
    public Matrix4x4 mv;            // 2D-ModelView
    public Matrix4x4 mvp;           // 2D-MVP
    public OperationMode operation;
    public SelectMode mode;
}

ToneMix

Farbton-Auswahl, die zusätzlich zu DataMix Farbtonparameter ergänzt. Verwendet von SetTone().

public struct ToneMix {
    public EditType editType;       // Edit2D / Edit3D
    public ShapeType type;          // 3D-Geometrietyp
    public Matrix4x4 invMat;        // 3D-Inverse-Transform-Matrix
    public Texture2D texture;       // 2D-Maskentextur
    public Matrix4x4 mv;            // 2D-ModelView
    public Matrix4x4 mvp;           // 2D-MVP
    public OperationMode operation;
    public SelectMode mode;
    public float brightness;        // Helligkeit (Standard 1.0)
    public float saturation;        // Sättigung (Standard 1.0)
    public float contrast;          // Kontrast (Standard 1.0)
    public int lutid;               // LUT-Filterindex (0 = nicht verwendet)
}

PointLightData

Benutzerdefinierte Punktlicht-/Spotlight-Daten. Verwendet von SetLights().

public struct PointLightData {
    public float3 position;    // Weltkoordinaten
    public int lightType;      // 0=Punktlicht, 1=Spotlight
    public float3 color;       // RGB-Farbe (keine Alpha-Komponente)
    public float intensity;    // Lichtintensität
    public float3 direction;   // Spotlight-Richtung (für Punktlicht ignoriert)
    public float range;        // Lichtreichweite
    public float spotAngle;    // Spotlight-Kegelwinkel (Grad, für Punktlicht ignoriert)
    public float3 pad;         // Ausrichtungspadding, keine Zuweisung erforderlich
}

Der Feldtyp ist Unity.Mathematics.float3, nicht Vector4; color hat keine Alpha-Komponente. Wenn lightType 0 ist, handelt es sich um ein Punktlicht (direction / spotAngle werden ignoriert), und wenn es 1 ist, um ein Spotlight.

DecalOcclusionSettings

Qualitätsparameter des Decal-Verdeckungs-Cullings. Verwendet von SetDecalOcclusionSettings().

public struct DecalOcclusionSettings {
    public float opacityCutoff;   // Mindestdeckkraft in [0,1] für die Teilnahme eines Splats an der Tiefenkarte, Standard 0 (alle nehmen teil)
    public float depthBias;       // relatives Tiefentoleranz-Verhältnis, Standard 0.05
    public int   footprintMaxPx;  // maximaler quadratischer Footprint-Radius (px), 0~16, Standard 2
    public int   resolution;      // Tiefenkarten-Auflösung (px, Zweierpotenz, 256~4096), Standard 1024

    public static DecalOcclusionSettings Default { get; } // cutoff=0, bias=0.05, footprint=2, resolution=1024
}
FeldBeschreibung
opacityCutoffNur Splats mit Deckkraft ≥ diesem Wert nehmen an der Tiefenkarte teil, wodurch schwebende/nebelartige Splats herausgefiltert werden können. Standard 0 (alle nehmen teil).
depthBiasRelatives Tiefentoleranz-Verhältnis, das die Dicke der Punktwolkenoberfläche proportional zur Distanz absorbiert. Standard 0.05. Zu klein verursacht Selbstverdeckungsrauschen; zu groß verpasst Verdeckungen.
footprintMaxPxKonservativer maximaler quadratischer Footprint-Radius (in Pixel), der zur Abdeckung der Nachbarschaft und zur Vermeidung von Durchdringungs-Leaks dient. 0 ist ein einzelnes Texel, Bereich 0~16, Standard 2. Zu groß verursacht Umriss-Erweiterung und Über-Verdeckung.
resolutionTiefenkarten-Auflösung (Pixel, Zweierpotenz, 256~4096). Das Verringern füllt spärliche Löcher auf Kosten etwas rauerer Verdeckungsgrenzen. Standard 1024.

SplatMeta

Metadaten der 3DGS-Daten. Ausgegeben von Renderer.GetMeta(), enthält Metadaten wie die Datenquelle (source) und das Datenformat (dataType) und kann ohne vollständiges Laden der Daten gelesen werden.

LCCMeshBlockInfo

Kollisions-Mesh-Blockmetadaten. Zurückgegeben von Renderer.GetMeshBlockInfos().

public struct LCCMeshBlockInfo {
    public string id;           // Knoten-ID, entspricht LCCMeshBlock.id
    public Bounds boundsWorld;  // Weltraum-AABB, zum Auswählen der IDs
    public Bounds boundsLocal;  // Lokalraum-AABB
    public int vertexCount;     // Vertexanzahl
    public int faceCount;       // Flächenanzahl
}
FeldTypBeschreibung
idstringKnoten-ID, entspricht LCCMeshBlock.id
boundsWorldBoundsWeltraum-AABB, zum Auswählen der IDs
boundsLocalBoundsLokalraum-AABB
vertexCountintVertexanzahl
faceCountintFlächenanzahl

LCCMeshBlock

Kollisions-Mesh-Block-Geometriedaten. Zurückgegeben von Renderer.GetMeshes().

public struct LCCMeshBlock {
    public string id;           // Knoten-ID
    public Vector3[] vertices;  // Vertices, in lokalen Koordinaten
    public int[] triangles;     // Dreiecksindizes, drei pro Gruppe
    public Bounds boundsLocal;  // Bounding Box im selben Raum wie die Vertices
}
FeldTypBeschreibung
idstringKnoten-ID
verticesVector3[]Vertex-Array, im lokalen Koordinatensystem des Objekts
trianglesint[]Dreiecksindizes, drei pro Gruppe
boundsLocalBoundsBounding Box im selben Raum wie die Vertices

vertices / boundsLocal liegen beide im lokalen Koordinatensystem des Objekts; das GameObject, das das Mesh trägt, unter Renderer.Transform zu platzieren, richtet sie automatisch aus. Ein einzelner Block kann mehr als 65535 Vertices haben, daher muss mesh.indexFormat = IndexFormat.UInt32 vor dem Aufbau des Mesh gesetzt werden.