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 }
| Wert | Beschreibung |
|---|---|
MultiRender | Verwendet einen gemeinsamen GPU-Puffer und kann bis zu 255 Renderer gleichzeitig rendern |
SingleRender | Das 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 }
| Wert | Beschreibung |
|---|---|
Mip | Verwendet Mipmap-Sampling (Standard) |
Non_Mip | Deaktiviert 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 }
| Wert | Beschreibung |
|---|---|
Auto | Automatisch anhand der Gesamt-Bounding-Box der Szene entschieden (Standard) |
Normal | Geeignet für kleine und mittlere Szenen |
Large | Geeignet für sehr große Szenen (über 1000 Meter) |
RenderMode
Punktwolken-/3DGS-Rendering-Modus. Verwendet von SwitchRenderMode().
public enum RenderMode { PointCloud, LCCGS }
| Wert | Beschreibung |
|---|---|
PointCloud | Punktwolken-Rendering |
LCCGS | 3DGS-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 }
| Wert | Beschreibung |
|---|---|
normal | Vereinigung |
erase | Subtraktion |
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
}
screenPosist in Bildschirmkoordinaten (Pixel), nicht in Weltkoordinaten. Wenn Weltkoordinaten benötigt werden, RaycastWithSnap() verwenden, umHitResult.hitPoszu 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, nichtVector4;colorhat keine Alpha-Komponente. WennlightType0ist, handelt es sich um ein Punktlicht (direction/spotAnglewerden ignoriert), und wenn es1ist, 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
}
| Feld | Beschreibung |
|---|---|
opacityCutoff | Nur Splats mit Deckkraft ≥ diesem Wert nehmen an der Tiefenkarte teil, wodurch schwebende/nebelartige Splats herausgefiltert werden können. Standard 0 (alle nehmen teil). |
depthBias | Relatives Tiefentoleranz-Verhältnis, das die Dicke der Punktwolkenoberfläche proportional zur Distanz absorbiert. Standard 0.05. Zu klein verursacht Selbstverdeckungsrauschen; zu groß verpasst Verdeckungen. |
footprintMaxPx | Konservativer 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. |
resolution | Tiefenkarten-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
}
| Feld | Typ | Beschreibung |
|---|---|---|
id | string | Knoten-ID, entspricht LCCMeshBlock.id |
boundsWorld | Bounds | Weltraum-AABB, zum Auswählen der IDs |
boundsLocal | Bounds | Lokalraum-AABB |
vertexCount | int | Vertexanzahl |
faceCount | int | Flä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
}
| Feld | Typ | Beschreibung |
|---|---|---|
id | string | Knoten-ID |
vertices | Vector3[] | Vertex-Array, im lokalen Koordinatensystem des Objekts |
triangles | int[] | Dreiecksindizes, drei pro Gruppe |
boundsLocal | Bounds | Bounding Box im selben Raum wie die Vertices |
vertices/boundsLocalliegen beide im lokalen Koordinatensystem des Objekts; das GameObject, das das Mesh trägt, unterRenderer.Transformzu platzieren, richtet sie automatisch aus. Ein einzelner Block kann mehr als 65535 Vertices haben, daher mussmesh.indexFormat = IndexFormat.UInt32vor dem Aufbau des Mesh gesetzt werden.