Konfigurationsanleitung für Render-Leistungsparameter
Überblick
Um sich an Geräte mit unterschiedlichem Leistungsniveau anzupassen, stellt das LCC Unity SDK mehrere Render-Leistungskonfigurationsparameter bereit. Sie verteilen sich auf die Klasse LCCManager und die Klasse Renderer und betreffen hauptsächlich die folgenden Methoden:
| Klasse | Methode | Zweck | Aufrufzeitpunkt |
|---|---|---|---|
LCCManager | SetMaxBufferSplat | Legt die maximale Buffer-Kapazität fest (einmalig auf der GPU zugewiesen) | Muss vor jedem Renderer.Load() liegen |
LCCManager | SetFullRenderSplat | Legt den Splat-Anzahl-Schwellenwert zwischen Voll-/Chunk-Rendering fest | Muss vor Load() liegen |
LCCManager | SetMaxRenderSplats | Legt die Gesamtzahl der auf dem Bildschirm gerenderten Splats im Chunk-Rendering fest | Jederzeit während des Chunk-Renderings |
LCCManager | SetStartLod | Legt das Start-LOD-Level fest | Wirkt zur Laufzeit, nach Load() |
LCCManager | SetDetailLevel | Legt das Rendering-Detail-Level fest (Feinabstimmung der Rendering-Präzision) | Kann zur Laufzeit dynamisch angepasst werden |
Renderer | SetRenderAll | Legt fest, ob Vollrendering erzwungen werden soll | Muss vor Load() liegen |
Hinweis:
Bei den obigen Parametern liegen die Einheiten der splat-anzahlbezogenen Methoden (
SetMaxBufferSplat,SetFullRenderSplat,SetMaxRenderSplats) alle in Zehntausenden, d. h. übergebener Wert × 10000 = tatsächliche Splat-Anzahl.
Hinweis:
SetMaxBufferSplat legt den maximalen CPU-Speicher- und GPU-Grafikspeicher-Pufferplatz fest, der für das Rendering verfügbar ist, während SetMaxRenderSplats die Anzahl der auf dem Bildschirm gerenderten Splat-Primitive während des chunk-basierten Streaming-Renderings festlegt. Wenn der von SetMaxRenderSplats gesetzte Wert daher den von SetMaxBufferSplat gesetzten Wert überschreitet, wird er abgeschnitten.
SDK-Rendermodi
Um sich an verschiedene Daten und Plattformen anzupassen, verfügt das SDK über 3 Hauptrendermodi. Das Verständnis der Rendermodi ist die Voraussetzung für das korrekte Festlegen der Leistungsparameter, da unterschiedliche Parameter nur in bestimmten Modi wirksam werden.
- SingleRender-Modus (Standard): Hauptsächlich auf PC/Mac verwendet. Dieser Modus erlaubt das Erstellen mehrerer Renderer nicht, d. h. es kann nur eine LCC-Szene gleichzeitig gerendert werden. Wenn das Datenvolumen klein ist und die Anforderungen erfüllt, werden die Daten vollständig gerendert (vollständige LOD0-Daten werden geladen, kein dynamisches LOD-Umschalten, beste Rendering-Qualität); wenn die LOD0-Splat-Primitive die vollständig renderbare Gesamtmenge überschreiten, werden die Daten chunk-basiert gerendert, wobei ein dynamischer LOD-Streaming-Rendering-Mechanismus zur Laufzeit verwendet wird, um sich an das Rendering sehr großer Szenen anzupassen.
- MultiRender-Modus: Hauptsächlich auf PC/Mac verwendet. Dieser Modus erlaubt das gemischte Echtzeit-Rendering mehrerer LCC-Szenen; alle Szenendaten werden mit dem dynamischen LOD-Mechanismus chunk-basiert gerendert.
- Chunk-basierter Rendering-Pfad: Auf Mobil- (iOS / Android), VR- (Pico 4 / Quest 3) Plattformen sowie bei HTTP-Datenquellen auf PC/Mac wird der chunk-basierte Rendering-Pfad mit dem dynamischen LOD-Mechanismus verwendet.

Beziehung zwischen den drei Rendermodi des SDK und den Voll-/Chunk-Rendering-Pfaden
Vollrendering im Vergleich zu Chunk-Rendering:
- Vollrendering: lädt und rendert vollständige LOD0-Daten auf einmal, beste Bildqualität, nur im PC/Mac-SingleRender-Modus aktiviert, wenn das LOD0-Datenvolumen die Bedingungen erfüllt.
- Chunk-Rendering: lädt LOD-Level-Daten dynamisch entsprechend dem Frustum der Render-Kamera, steuert die Anzahl der Splats auf dem Bildschirm und passt sich Hardware-Umgebungen mit begrenztem Grafikspeicher und begrenzter Leistung an.
SDK-Standardwerte
Die Standardwerte, zulässigen Mindestwerte und zulässigen Höchstwerte für jede Plattform lauten wie folgt (Einheit: Zehntausende):
| Element | Standardwert | Zulässiger Mindestwert | Zulässiger Höchstwert | Anmerkungen |
|---|---|---|---|---|
| Globaler Buffer | PC/Mac: 3000 Mobil: 300 VR: 100 | 100 | PC/Mac: 4450 Mobil: 600 VR: 200 | Gesteuert über SetMaxBufferSplat() |
| Vollständige-Rendering-Schwellenwert | 2500 | 100 | 4450 | Gesteuert über SetFullRenderSplat(); nur wirksam für den PC/Mac-SingleRender-Modus |
| Chunk-Anzahl für das On-Screen-Rendering | PC/Mac: 2000 Mobil: 200 VR: 60 | 10 | —— | Gesteuert über SetMaxRenderSplats(); der Höchstwert wird durch die globale Buffer-Menge begrenzt |
| Ob Vollrendering erzwungen wird | Nein | —— | —— | Nur auf PC/Mac wirksam, und nur für den SingleRender-Modus |
PC/Mac-Konfigurationsstrategie
Für PC/Mac wird empfohlen, die Parameter gemäß den folgenden Qualitätsstufen zu konfigurieren (Splat-Anzahl-Einheit: Zehntausende):
| Stufe | Globaler Buffer | Vollständige-Rendering-Schwellenwert | Chunk-On-Screen-Anzahl | StartLOD | Vollrendering erzwingen |
|---|---|---|---|---|---|
| Sehr niedrig | 300 | 300 | 300 | 2 | Nein |
| Niedrig | 1000 | 1000 | 1000 | 1 | Nein |
| Mittel | 3000 | 1900 | 1900 | 1 | Nein |
| Hoch | 3000 | 2500 | 2500 | 0 | Nein |
| Sehr hoch | 3000 | 3000 | 3000 | 0 | Nein |
Hinweise zum Umschalten der Stufen zur Laufzeit
- Beim Umschalten zwischen den Stufen Mittel / Hoch / Sehr hoch können Sie den globalen Buffer unverändert lassen, und die Verarbeitungslogik ist sehr einfach: Sie müssen nur den Vollständige-Rendering-Schwellenwert, die On-Screen-Rendering-Anzahl und StartLOD festlegen.
- Beim Umschalten zwischen den Stufen Sehr niedrig / Niedrig und anderen Stufen ist die Situation komplexer: Da der globale Buffer möglicherweise bereits zugewiesen wurde, müssen Sie zuerst den ursprünglichen globalen Buffer zerstören und dann einen neuen Buffer erstellen. Diese Operation erfordert das Freigeben aller Renderer mit
Dispose()und das Freigeben des Buffers sowie anschließendes erneutes Abrufen des Renderer überGetRender(). - Aktuelle Empfehlung: Legen Sie die Standardstufe auf Hoch fest; lassen Sie beim Umschalten der Stufen den globalen Buffer unverändert, behandeln Sie aber weiterhin das Umschalten zwischen Voll- und Chunk-Rendering.
Hinweise
SetMaxBufferSplat()muss ganz am Anfang gesetzt werden, idealerweise vorGetRender(). Wenn Sie diesen Wert setzen, nachdem die Szene bereits läuft, müssen Sie alle Renderer mitDispose()freigeben und den Renderer anschließend erneut abrufen, damit er wirksam wird.SetFullRenderSplat()ist nur für den PC/Mac-SingleRender-Modus wirksam und muss vorLoad()gesetzt werden.SetMaxRenderSplats()gilt für das gesamte Chunk-Rendering und kann jederzeit gesetzt werden, muss jedoch nachSetMaxBufferSplat()liegen (falls diese Methode aufgerufen wird).
APIs für Render-Leistung
SetMaxBufferSplat
// Rückgabewert: void
public void SetMaxBufferSplat(int _count)
Legt die maximale GPU-Buffer-Kapazität (Splat-Anzahl) fest. Im RenderCore-Pfad (MultiRender / SingleRender-Chunk) bestimmt sie die Größe des gemeinsamen globalen Buffers; im SingleRender-Voll-Load-Modus wird sie entsprechend dem tatsächlichen Datenvolumen zugewiesen und bezieht sich nicht auf diesen Wert. Einmalig zugewiesen und kann nicht dynamisch geändert werden.
| Parameter | Typ | Beschreibung |
|---|---|---|
_count | int | Globale einheitliche Buffer-Größe, in 3DGS-Splat-Anzahl, Einheit: Zehntausende |
Verwendungsbeispiel:
lccManager.SetMaxBufferSplat(3000); // 30 Millionen Punkte (PC/Mac-Standard)
lccManager.SetMaxBufferSplat(4450); // 44,5 Millionen Punkte (PC/Mac-Maximum)
Beschreibung:
- Die Einheit ist „Zehntausende“; übergebener Wert × 10000 = tatsächliche Splat-Anzahl.
- Muss vor jedem
Renderer.Load()aufgerufen werden, andernfalls wird ein Fehler ausgegeben und zurückgekehrt. - Muss zuerst
SetPlatformTypeaufrufen. - Je größer die Kapazität, desto höher der Grafikspeicherverbrauch; nach Bedarf festlegen.
- Plattformgrenzen: PC/Mac 44,5 Millionen, Android/iOS 6 Millionen, VR 2 Millionen; Minimum 1 Million.
- Standardwerte: PC/Mac 30 Millionen, Android/iOS 3 Millionen, VR 1 Million.
SetFullRenderSplat
// Rückgabewert: void
public void SetFullRenderSplat(int _count)
Legt den Splat-Anzahl-Schwellenwert zwischen Voll- und Chunk-Rendering im PC/Mac-SingleRender-Modus fest. Wenn die LOD0-Splat-Anzahl der Daten kleiner als dieser Wert ist, wird der Vollrendering-Pfad verwendet (dedizierter GPU-Buffer); andernfalls wird der Chunk-Rendering-Pfad verwendet.
| Parameter | Typ | Beschreibung |
|---|---|---|
_count | int | 3DGS-Splat-Anzahl, Einheit: Zehntausende |
Verwendungsbeispiel:
lccManager.SetFullRenderSplat(2500); // 25 Millionen Punkte
Beschreibung:
- Die Einheit ist „Zehntausende“.
- Nur auf PC/Mac-Plattformen unterstützt; der Aufruf auf anderen Plattformen gibt einen Fehler aus und kehrt direkt zurück.
- Muss vor jedem
Renderer.Load()aufgerufen werden. - Muss zuerst
SetPlatformTypeaufrufen. - Wertebereich
[100, 4450](d. h. 1 Million ~ 44,5 Millionen).
SetMaxRenderSplats
// Rückgabewert: void
public void SetMaxRenderSplats(int _count)
Legt die maximale Anzahl der pro Frame auf dem Bildschirm gerenderten Splats im Chunk-Rendering fest. Kann nach Load() dynamisch aufgerufen werden und wird durch die von SetMaxBufferSplat gesetzte Obergrenze begrenzt. Der Aufruf im SingleRender-Vollrendering-Modus hat keine Wirkung (protokolliert eine Warnung und kehrt direkt zurück).
| Parameter | Typ | Beschreibung |
|---|---|---|
_count | int | 3DGS-Splat-Anzahl, Einheit: Zehntausende; Minimum 100 Tausend, Maximum nicht über die von SetMaxBufferSplat() gesetzte Buffer-Größe hinaus |
Verwendungsbeispiel:
lccManager.SetMaxRenderSplats(2000); // 20 Millionen Punkte
Beschreibung:
- Die Einheit ist „Zehntausende“; übergebener Wert × 10000 = tatsächliche Splat-Anzahl.
- Kann zur Laufzeit dynamisch angepasst werden.
- Darf die von
SetMaxBufferSplatgesetzte Kapazitätsobergrenze nicht überschreiten (bei Überschreitung wird sie automatisch begrenzt und eine Warnung protokolliert). - Laufzeitanpassung wird im SingleRender-Vollrendering-Modus nicht unterstützt.
SetStartLod
// Rückgabewert: void
public void SetStartLod(int lod)
Legt den Ausgangspunkt der LOD-Erweiterung fest (0-basiert). 0 bedeutet das feinste; je größer die Zahl, desto gröber das Level. Diese Methode wirkt zur Laufzeit und muss nach Load() aufgerufen werden.
| Parameter | Typ | Beschreibung |
|---|---|---|
lod | int | Start-LOD-Level, Bereich [0, 10], 0 ist das feinste |
Verwendungsbeispiel:
lccManager.SetStartLod(0);
Beschreibung:
- Nur für Chunk-Rendering wirksam, Bereich
[0, 10], bei Überschreitung automatisch begrenzt. - Die tatsächliche wirksame Obergrenze wird durch
totalLevelsder Daten eingeschränkt. - Das SDK wird sofort nach dem Aufruf wirksam.
SetDetailLevel
// Rückgabewert: void
public void SetDetailLevel(float sse)
Legt das Rendering-Detail-Level fest, das zur Feinabstimmung der Rendering-Präzision dient. Je größer der Wert, desto feiner das Rendering und desto höher der Leistungsaufwand.
| Parameter | Typ | Beschreibung |
|---|---|---|
sse | float | Subdivisionsfaktor, Bereich [1, 100]. 1 = gröbstes (keine Verfeinerung auch aus nächster Nähe), 100 = feinstes (alle Level bis zum niedrigsten verfeinert) |
Verwendungsbeispiel:
lccManager.SetDetailLevel(50f); // Mittlere Präzision
Beschreibung:
- Dieser Parameter dient zur Feinabstimmung des Szenendetails, gilt nur für Chunk-Rendering, Standard ist 40, Bereich
[1, 100], bei Überschreitung automatisch begrenzt. - Verwendet logarithmische Zuordnung: Der niedrige Wertebereich reagiert empfindlich auf Änderungen, und der hohe Wertebereich ändert sich sanft.
- Kann zur Laufzeit dynamisch angepasst werden.
SetRenderAll
// Rückgabewert: void
public void SetRenderAll(bool _renderAll)
Eine Methode der Klasse Renderer. Legt fest, ob dieser Renderer Vollrendering erzwingt, und muss vor Load() aufgerufen werden. Wird nur für den PC/Mac-SingleRender-Modus verwendet: Zur Ausführungszeit vergleicht sie das LOD0-Datenvolumen mit der Obergrenze von 44,5 Millionen; wenn LOD0 < 44,5 Millionen, werden vollständige LOD0-Daten direkt zum Rendering verwendet; wenn LOD0 > 44,5 Millionen, ist diese Einstellung unwirksam (begrenzt durch den maximalen GBuffer von Unity), und stattdessen wird Chunk-Rendering verwendet.
| Parameter | Typ | Beschreibung |
|---|---|---|
_renderAll | bool | Ob Vollrendering erzwungen werden soll |
Verwendungsbeispiel:
renderer.SetRenderAll(true);
renderer.Load(filePath, null, () => Debug.Log("Vollständig geladen"));
Beschreibung:
- Nur auf PC/Mac-Plattformen unterstützt; der Aufruf auf Mobil/VR protokolliert eine Warnung und kehrt zurück.
- Die Einstellung wird beim nächsten
Load()-Aufruf wirksam und wirkt sich nicht auf den aktuell geladenen Datensatz aus. - Kann zusammen mit der Eigenschaft
IsRenderAllverwendet werden, um den aktuellen Zustand abzufragen.