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.
| Namespace | LCCCore |
| Basisklasse | MonoBehaviour |
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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_type | PlatformType | Zielplattform; 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_mode | ActiveRenderMode | Rendering-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
MultiRenderunterstützt keine HTTP-Datenquellen; für HTTP-DatenSingleRenderverwenden. - 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_transform | Transform | Die Transform, an die die Rendering-Instanz angehängt wird |
Hinweise:
SetPlatformType()undSetMainCamera()müssen zuerst aufgerufen werden.- Im Modus
MultiRenderwerden 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
gameObject | out GameObject | Gibt 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_count | int | Maximale Splat-Anzahl, Einheit: Zehntausend (Wert × 10000 = tatsächliche Anzahl) |
Hinweise:
- Muss vor jedem
Renderer.Load()aufgerufen werden, undSetPlatformType()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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_count | int | Obergrenze 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, undSetPlatformType()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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_count | int | Maximale 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.0zurü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.
| Parameter | Typ | Beschreibung |
|---|---|---|
mode | SelectionMode | Auswahlstrategie; siehe SelectionMode |
Hinweise:
Auto(Standard): automatisch anhand der Gesamt-Bounding-Box der Szene entschieden; überschreitet die maximale Szenenausdehnung etwa 380 Meter, wird automatisch aufLargehochgestuft.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.
| Parameter | Typ | Beschreibung |
|---|---|---|
sse | float | Prä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.
| Parameter | Typ | Beschreibung |
|---|---|---|
lod | int | LOD-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).
| Parameter | Typ | Beschreibung |
|---|---|---|
_auto | bool | Ob Auto-FOV verwendet werden soll |
Hinweise:
- Standardmäßig aktiviert.
- Wenn aktiviert, wird das
Camera.fieldOfViewder Hauptkamera kontinuierlich überschrieben, sodass der Aufruf vonSetFOV()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).
| Parameter | Typ | Beschreibung |
|---|---|---|
_width | int | Pixelbreite |
_height | int | Pixelhöhe |
_verticalFov | float | Vertikales FOV (Grad) |
_aspect | float | Seitenverhä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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_renderer | Renderer | Ziel-Rendering-Instanz |
_isEnable | bool | Ob 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_renderer | Renderer | Ziel-Rendering-Instanz |
_isRender | bool | Ob 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
zwrite | bool | Ob Z-Tiefenschreiben aktiviert werden soll |
Beispiel:
lccManager.SetZDepth(true);
SetAlpha
public void SetAlpha(float alpha)
Legt die globale Deckkraft fest.
| Parameter | Typ | Beschreibung |
|---|---|---|
alpha | float | Globale 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
intensity | float | Lichtintensitä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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_filter | float | Tiefpassfilter-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).
| Parameter | Typ | Beschreibung |
|---|---|---|
_isLock | bool | Ob 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_layer | int | Unity-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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_mipMode | MipMode | Zielmodus; 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
type | GraphicsDeviceType | Grafik-API-Typ (integriertes Unity-Enum) |
Beispiel:
lccManager.SetGraphicsAPI(GraphicsDeviceType.Direct3D11);
SetDebugMode
public void SetDebugMode(bool debug)
Schaltet den Debug-Modus um.
| Parameter | Typ | Beschreibung |
|---|---|---|
debug | bool | Ob 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_isEditor | bool | Ob 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_aec | bool | Ob 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
enable | bool | Ob semantisches Rendering aktiviert werden soll |
color | Vector4[] | 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
mode | RenderMode | Rendering-Modus; siehe RenderMode |
tex | Texture2D | Hö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.
| Parameter | Typ | Beschreibung |
|---|---|---|
isRecord | bool | Ob der Aufnahmemodus verwendet werden soll |
renderSize | Vector2 | Aufnahmeauflösung |
verticalFov | float | Vertikales 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_enabled | bool | Ob 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
enable | bool | Ob 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
color | Color | Schattenfarbe (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.
| Parameter | Typ | Beschreibung |
|---|---|---|
strength | float | Schattenstä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.
| Parameter | Typ | Beschreibung |
|---|---|---|
lights | List<PointLightData> | Punktlichtliste; siehe PointLightData |
Hinweise:
PointLightData.lightType:0ist ein Punktlicht (direction / spotAngle ignoriert),1ist ein Spotlight (direction / spotAngle erforderlich).- Die Übergabe von
nulloder 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_cam | Camera | Haupt-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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_cam | Camera | Sekundä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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_cam | Camera | Die 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
planePoint | Vector3 | Ein Punkt auf der Ebene |
planeNormal | Vector3 | Ebenennormale |
inside | bool | true 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_2Ds | List<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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_3Ds | List<Data3D> | 3D-Geometrieliste |
Hinweise:
- Mindestens eine Geometrie mit
operation == normalist 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
mix | List<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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_2Ds | List<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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_3Ds | List<Data3D> | 3D-Geometrieliste |
Hinweise:
- Mindestens eine Geometrie mit
operation == normalist 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
mix | List<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.
| Parameter | Typ | Beschreibung |
|---|---|---|
mix | List<ToneMix> | Farbton-Mischliste |
Hinweise:
brightness/saturation/contrastsind standardmäßig1.0.lutidist der LUT-Filterindex;0bedeutet 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
enable | bool | Ob 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
tex | Texture2D | Decal-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.
| Parameter | Typ | Beschreibung |
|---|---|---|
pos | Vector3 | Weltposition des Projektors |
rot | Quaternion | Ausrichtung des Projektors |
fov | float | Vertikales FOV (Grad), begrenzt auf [1, 179] |
aspect | float | Seitenverhältnis, Minimum 1e-4 |
near | float | Nahe Clipping-Ebene, Minimum 1e-3 |
far | float | Ferne 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
opacity | float | Gesamtdeckkraft 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
edgeFade | float | Breite 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
enable | bool | Ob 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
settings | DecalOcclusionSettings | Qualitä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.
| Parameter | Typ | Beschreibung |
|---|---|---|
enable | bool | Ob 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
pixels | float | Snapping-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.
| Parameter | Typ | Beschreibung |
|---|---|---|
threshold | float | Kantenerkennungs-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.
| Parameter | Typ | Beschreibung |
|---|---|---|
enable | bool | Ob 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
mousePos | Vector2 | Aktuelle Maus-Bildschirmkoordinaten |
cam | Camera | Kamera |
Hinweise:
SetSnapPreviewEnabled(true)muss zuerst aufgerufen werden.- Empfohlen, kontinuierlich in
Updateaufzurufen.
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)undUpdateSnapPreview()müssen zuerst aufgerufen werden.- Gibt
default(SnapPreviewState)zurück, wenn kein Ziel vorhanden ist. screenPosist in Bildschirmkoordinaten, nicht in Weltkoordinaten; für WeltkoordinatenRaycastWithSnap()verwenden, umHitResult.hitPoszu 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
HitResultheißthitPos(nichtposition).
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.
| Parameter | Typ | Beschreibung |
|---|---|---|
mousePos | Vector3 | Bildschirmkoordinaten |
_finalResult | out HitResult | Trefferergebnis |
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 durchSetMaxRaycastDistance()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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_ray | Ray | Strahl |
_finalResult | out HitResult | Trefferergebnis |
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.
| Parameter | Typ | Beschreibung |
|---|---|---|
mousePos | Vector3 | Bildschirmkoordinaten |
_finalResult | out HitResult | Trefferergebnis |
_distance | float | Maximale 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
ray | Ray | Strahl |
result | out HitResult | Trefferergebnis |
hitBounds | out Bounds | Bounding Box des getroffenen Knotens |
maxDist | float | Maximale 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
screenPos | Vector2 | Bildschirmkoordinaten |
cam | Camera | Kamera |
result | out HitResult | Trefferergebnis (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.snapTypeist der Snap-Typ,HitResult.hitPosist die Weltkoordinate nach dem Snapping, undHitResult.originalHitPosist 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.
| Parameter | Typ | Beschreibung |
|---|---|---|
delta | float | Raycasting-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.
| Parameter | Typ | Beschreibung |
|---|---|---|
_distance | float | Maximale Raycast-Distanz, Bereich [10, 10000], bei Überschreitung automatisch begrenzt |
Hinweise:
- Beeinflusst die Überladungen
Raycast(Vector3)/Raycast(Ray); beeinflusstRaycastMesh()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.
| Parameter | Typ | Beschreibung |
|---|---|---|
sphere | Sphere | Kugel |
delta | out Vector3 | Durchdringungsvektor (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.
| Parameter | Typ | Beschreibung |
|---|---|---|
capsule | Capsule | Kapsel |
delta | out Vector3 | Durchdringungsvektor |
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.
| Parameter | Typ | Beschreibung |
|---|---|---|
vfxOriginW | Vector3 | Weltkoordinaten-Ursprung des Effekts |
vfxid | int | Effekt-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) { /* ... */ }