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

    • PortalCam P1

      • Productoverzicht
      • Basisbediening
      • De LCC Scan App gebruiken
      • Onderhoud en verzorging
      • Veelgestelde vragen
  • Lixel K-serie

    • Lixel K1

      • Productoverzicht
      • Basisbediening
      • Apparaat activeren en verbinden
      • Scanworkflow
      • Puntenwolkgegevens met absolute coördinaten verkrijgen
      • Kaartfusie
      • Suggesties voor routeplanning bij typische scènes
      • Voorzorgsmaatregelen
      • FAQ
    • Lixel K2

      • Productoverzicht
      • Basisbediening
      • Apparaat activeren en verbinden
      • Scanworkflow
      • Puntenwolkgegevens met absolute coördinaten verkrijgen
      • Kaartfusie
      • Suggesties voor routeplanning bij typische scènes
      • Voorzorgsmaatregelen
      • FAQ
  • Lixel L-serie

    • Lixel L2 Pro

      • Productoverzicht
      • Basisbediening
      • Apparaatactivering en -verbinding
      • Scanworkflow
      • Puntenwolkgegevens met absolute coördinaten opnemen
      • Meetpunt
      • Appendix
      • FAQ
    • Lixel L3

      • Productoverzicht
      • Basisfuncties van het apparaat
      • Apparaatactivering en -verbinding
      • Gegevensopname
      • Absolute coördinaten opnemen
      • Appendix
  • Lixel Studio

    • Versie en copyright
    • Installatie en activering
    • Software-interface
    • Bestandsbewerkingen
    • Projectverwerking
    • Gereedschappen
    • 2D-tekenen
    • Toepassingen
    • Instellingen
    • Apparaatverbinding
  • 07-plugin-sdk

    • Unity

      • LCC Unity SDK Introductie
      • Technische functies
      • Vereisten voor de ontwikkelomgeving
      • Snelstartgids voor pc
      • Optimalisatiegids voor projectinstellingen
      • Ontwikkelgids voor Pico 4 Ultra
      • Pc-streaminggids voor Pico 4 Ultra
      • Ontwikkelgids voor Quest 3
      • Pc-streaminggids voor Quest 3
      • Ontwikkelgids voor OpenXR
      • Business Streaming-gids voor Pico 4 Ultra
      • Woordenlijst
      • Veelgestelde vragen
      • Contact opnemen
      • Ontwikkelingshandleiding voor functies

        • Ontwikkelgids voor gemengde rendering van meerdere scènes
        • Ontwikkelgids voor het ontvangen van schaduwen
        • Ontwikkelgids voor realtime belichting
        • Ontwikkelgids voor multi-camera rendering
        • Ontwikkelgids voor het renderen van afbeeldingen met hoge resolutie
        • Ontwikkelgids voor compatibiliteit van de gegevensformaten LCC en LCC2
        • Ontwikkelgids voor laadeffecten
        • Ontwikkelgids voor het schakelen tussen Mip-renderingmodi
        • Ontwikkelgids voor rand- en hoeksnapping
        • Ontwikkelgids voor geprojecteerde decal
        • Ontwikkelgids voor video-geprojecteerde decal
        • Ontwikkelgids voor markeren
        • Ontwikkelgids voor realtime knippen
        • Ontwikkelgids voor kleuraanpassing
        • Ontwikkelgids voor het ophalen van scène-Meshgegevens
        • Ontwikkelgids voor de Editor-modus
        • Configuratiegids voor renderprestatieparameters
        • Ontwikkelgids voor het samen verpakken van de applicatie en de gegevens
        • Ontwikkelgids voor het botsingssysteem
        • Gids voor macOS-ontwikkelingsmachtigingsproblemen
        • Ontwikkelgids voor compilatie en verpakking voor iOS-apparaten
      • API-referentie

        • LCCManager
        • Renderer
        • Gegevenstypen
      • Wijzigingslogboek

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

Configuratiegids voor renderprestatieparameters

Overzicht

Om je aan te passen aan apparaten met verschillende prestatieniveaus, biedt de LCC Unity SDK verschillende renderprestatieconfiguratieparameters. Deze zijn verdeeld over de LCCManager-klasse en de Renderer-klasse en hebben voornamelijk betrekking op de volgende methoden:

KlasseMethodeDoelAanroeptijdstip
LCCManagerSetMaxBufferSplatStel de maximale Buffercapaciteit in (eenmalig op de GPU toegewezen)Moet vóór elke Renderer.Load()
LCCManagerSetFullRenderSplatStel de Splat-aantaldrempel tussen volledige/chunked rendering inMoet vóór Load()
LCCManagerSetMaxRenderSplatsStel het totale aantal Splats in dat bij chunked rendering op het scherm wordt gerenderdElk moment tijdens chunked rendering
LCCManagerSetStartLodStel het start-LOD-niveau inWordt tijdens runtime van kracht, na Load()
LCCManagerSetDetailLevelStel het renderingdetailniveau in (fijnafstelling van de renderingprecisie)Kan tijdens runtime dynamisch worden aangepast
RendererSetRenderAllStel in of volledige rendering moet worden geforceerdMoet vóór Load()

Opmerking:

Van de bovenstaande parameters zijn de eenheden van de methoden die met het aantal Splats te maken hebben (SetMaxBufferSplat, SetFullRenderSplat, SetMaxRenderSplats) allemaal in tienduizenden, d.w.z. doorgegeven waarde × 10000 = werkelijke aantal Splats.

Opmerking:

SetMaxBufferSplat stelt de maximale bufferruimte in CPU-geheugen en GPU-videogeheugen in die beschikbaar is voor rendering, terwijl SetMaxRenderSplats het aantal Splat-primitieven instelt dat tijdens chunked streamingrendering op het scherm wordt gerenderd. Daarom wordt de waarde afgekapt als de door SetMaxRenderSplats ingestelde waarde de door SetMaxBufferSplat ingestelde waarde overschrijdt.

Rendermodi van de SDK

Om zich aan te passen aan verschillende gegevens en platformen, heeft de SDK 3 belangrijke rendermodi. Het begrijpen van de rendermodi is de voorwaarde voor het correct instellen van prestatieparameters, omdat verschillende parameters alleen in specifieke modi van kracht worden.

  • SingleRender-modus (standaard): voornamelijk gebruikt op pc/Mac. Deze modus staat het aanmaken van meerdere Renderers niet toe, wat betekent dat er telkens slechts één LCC-scène kan worden gerenderd. Wanneer het gegevensvolume klein is en aan de vereisten voldoet, worden de gegevens volledig gerenderd (volledige LOD0-gegevens worden geladen, geen dynamische LOD-wisseling, beste renderingkwaliteit); wanneer de LOD0-Splat-primitieven de totale hoeveelheid overschrijden die volledig kan worden gerenderd, worden de gegevens chunked gerenderd, waarbij een dynamisch LOD-streamingrenderingmechanisme tijdens runtime wordt gebruikt om de rendering van zeer grote scènes mogelijk te maken.
  • MultiRender-modus: voornamelijk gebruikt op pc/Mac. Deze modus maakt realtime gemengde rendering van meerdere LCC-scènes mogelijk; alle scènegegevens worden chunked gerenderd met behulp van het dynamische LOD-mechanisme.
  • Chunked renderingpad: op mobiele (iOS / Android) en VR-platformen (Pico 4 / Quest 3), evenals bij HTTP-gegevensbronnen op pc/Mac, wordt het chunked renderingpad gebruikt, met behulp van het dynamische LOD-mechanisme.
Relatie tussen de drie rendermodi van de SDK en de volledige/chunked renderingpaden

Relatie tussen de drie rendermodi van de SDK en de volledige / chunked renderingpaden

Volledige rendering versus chunked rendering:

  • Volledige rendering: laadt en rendert de volledige LOD0-gegevens in één keer, beste beeldkwaliteit, alleen ingeschakeld in de pc/Mac-SingleRender-modus wanneer het LOD0-gegevensvolume aan de voorwaarden voldoet.
  • Chunked rendering: laadt LOD-niveaugegevens dynamisch op basis van het frustum van de rendercamera, regelt het aantal Splats op het scherm en past zich aan hardwareomgevingen met beperkt videogeheugen en beperkte prestaties aan.

Standaardwaarden van de SDK

De standaardwaarden, minimaal toegestane waarden en maximaal toegestane waarden voor elk platform zijn als volgt (eenheid: tienduizenden):

ItemStandaardwaardeMinimaal toegestane waardeMaximaal toegestane waardeOpmerkingen
Globale BufferPC/Mac: 3000
Mobiel: 300
VR: 100
100PC/Mac: 4450
Mobiel: 600
VR: 200
Beheerd via SetMaxBufferSplat()
Drempel voor volledige rendering25001004450Beheerd via SetFullRenderSplat(); alleen van kracht voor de pc/Mac-SingleRender-modus
Aantal op het scherm gerenderde bij chunked renderingPC/Mac: 2000
Mobiel: 200
VR: 60
10——Beheerd via SetMaxRenderSplats(); de maximale waarde wordt beperkt door de hoeveelheid van de globale Buffer
Of volledig moet worden geforceerdNee————Alleen van kracht op pc/Mac, en alleen voor de SingleRender-modus

Configuratiestrategie voor pc/Mac

Voor pc/Mac wordt aanbevolen om parameters te configureren volgens de volgende kwaliteitsklassen (eenheid van het aantal Splats: tienduizenden):

KlasseGlobale BufferDrempel voor volledige renderingAantal op het scherm bij chunkedStartLODVolledig forceren
Zeer laag3003003002Nee
Laag1000100010001Nee
Gemiddeld3000190019001Nee
Hoog3000250025000Nee
Zeer hoog3000300030000Nee

Opmerkingen over het wisselen van klasse tijdens runtime

  • Bij het wisselen tussen de klassen Gemiddeld / Hoog / Zeer hoog kun je de globale Buffer ongewijzigd laten, en de afhandelingslogica is zeer eenvoudig: je hoeft alleen de drempel voor volledige rendering, het aantal op het scherm gerenderde en StartLOD in te stellen.
  • Bij het wisselen tussen de klassen Zeer laag / Laag en andere klassen is de situatie complexer: omdat de globale Buffer mogelijk al is toegewezen, moet je eerst de oorspronkelijke globale Buffer vernietigen en vervolgens een nieuwe Buffer aanmaken. Deze bewerking vereist het verwijderen van alle Renderers met Dispose() en het vrijgeven van de Buffer, en daarna het opnieuw verkrijgen van de Renderer via GetRender().
  • Huidige aanbeveling: stel de standaardklasse in op Hoog; laat bij het wisselen van klasse de globale Buffer ongewijzigd, maar handel de wisseling tussen volledige/chunked rendering nog steeds af.

Opmerkingen

  1. SetMaxBufferSplat() moet helemaal aan het begin worden ingesteld, idealiter vóór GetRender(). Als je deze waarde instelt nadat de scène al draait, moet je alle Renderers met Dispose() verwijderen en de Renderer opnieuw verkrijgen voordat deze van kracht wordt.
  2. SetFullRenderSplat() is alleen van kracht voor de pc/Mac-SingleRender-modus en moet vóór Load() worden ingesteld.
  3. SetMaxRenderSplats() geldt voor alle chunked rendering en kan op elk moment worden ingesteld, maar moet na SetMaxBufferSplat() komen (als die methode wordt aangeroepen).

Renderprestatie-API's

SetMaxBufferSplat

// Retourwaarde: void
public void SetMaxBufferSplat(int _count)

Stelt de maximale GPU-Buffercapaciteit (aantal Splats) in. In het RenderCore-pad (MultiRender / SingleRender-chunk) bepaalt het de grootte van de gedeelde Global Buffer; in de SingleRender Full Load-modus wordt deze toegewezen op basis van het werkelijke gegevensvolume en wordt deze waarde niet geraadpleegd. Wordt eenmalig toegewezen en kan niet dynamisch worden gewijzigd.

ParameterTypeBeschrijving
_countintGlobaal uniforme Buffergrootte, in aantal 3DGS-Splats, eenheid: tienduizenden

Gebruiksvoorbeeld:

lccManager.SetMaxBufferSplat(3000); // 30 miljoen punten (standaard pc/Mac)
lccManager.SetMaxBufferSplat(4450); // 44,5 miljoen punten (maximum pc/Mac)

Beschrijving:

  • De eenheid is "tienduizenden"; doorgegeven waarde × 10000 = werkelijke aantal Splats.
  • Moet vóór elke Renderer.Load() worden aangeroepen, anders treedt er een fout op en wordt geretourneerd.
  • Moet eerst SetPlatformType aanroepen.
  • Hoe groter de capaciteit, hoe hoger het videogeheugengebruik; stel deze in naar behoefte.
  • Platformlimieten: pc/Mac 44,5 miljoen, Android/iOS 6 miljoen, VR 2 miljoen; minimaal 1 miljoen.
  • Standaardwaarden: pc/Mac 30 miljoen, Android/iOS 3 miljoen, VR 1 miljoen.

SetFullRenderSplat

// Retourwaarde: void
public void SetFullRenderSplat(int _count)

Stelt de Splat-aantaldrempel in tussen volledige rendering en chunked rendering in de pc/Mac-SingleRender-modus. Wanneer het LOD0-Splat-aantal van de gegevens kleiner is dan deze waarde, wordt het volledige renderingpad gebruikt (speciale GPU-Buffer); anders wordt het chunked renderingpad gebruikt.

ParameterTypeBeschrijving
_countintAantal 3DGS-Splats, eenheid: tienduizenden

Gebruiksvoorbeeld:

lccManager.SetFullRenderSplat(2500); // 25 miljoen punten

Beschrijving:

  • De eenheid is "tienduizenden".
  • Alleen ondersteund op pc/Mac-platformen; aanroepen op andere platformen leidt tot een fout en retourneert direct.
  • Moet vóór elke Renderer.Load() worden aangeroepen.
  • Moet eerst SetPlatformType aanroepen.
  • Waardebereik [100, 4450] (d.w.z. 1 miljoen ~ 44,5 miljoen).

SetMaxRenderSplats

// Retourwaarde: void
public void SetMaxRenderSplats(int _count)

Stelt het maximale aantal Splats in dat bij chunked rendering per frame op het scherm wordt gerenderd. Kan dynamisch na Load() worden aangeroepen en wordt begrensd door de bovengrens die door SetMaxBufferSplat is ingesteld. Aanroepen in de SingleRender-volledige-rendermodus heeft geen effect (geeft een waarschuwing in het log en retourneert direct).

ParameterTypeBeschrijving
_countintAantal 3DGS-Splats, eenheid: tienduizenden; minimaal 100 duizend, maximaal niet meer dan de Buffergrootte die door SetMaxBufferSplat() is ingesteld

Gebruiksvoorbeeld:

lccManager.SetMaxRenderSplats(2000); // 20 miljoen punten

Beschrijving:

  • De eenheid is "tienduizenden"; doorgegeven waarde × 10000 = werkelijke aantal Splats.
  • Kan tijdens runtime dynamisch worden aangepast.
  • Mag de door SetMaxBufferSplat ingestelde capaciteitsbovengrens niet overschrijden (bij overschrijding wordt deze automatisch begrensd en wordt een waarschuwing gelogd).
  • Runtime-aanpassing wordt niet ondersteund in de SingleRender-volledige-rendermodus.

SetStartLod

// Retourwaarde: void
public void SetStartLod(int lod)

Stelt het startpunt van de LOD-expansie in (0-gebaseerd). 0 betekent het fijnst; hoe groter het getal, hoe grover het niveau. Deze methode wordt tijdens runtime van kracht en moet na Load() worden aangeroepen.

ParameterTypeBeschrijving
lodintStart-LOD-niveau, bereik [0, 10], 0 is het fijnst

Gebruiksvoorbeeld:

lccManager.SetStartLod(0);

Beschrijving:

  • Alleen van kracht voor chunked rendering, bereik [0, 10], automatisch begrensd bij overschrijding.
  • De daadwerkelijk van kracht zijnde bovengrens wordt beperkt door de totalLevels van de gegevens.
  • De SDK wordt direct na het aanroepen van kracht.

SetDetailLevel

// Retourwaarde: void
public void SetDetailLevel(float sse)

Stelt het renderingdetailniveau in, gebruikt om de renderingprecisie fijn af te stellen. Hoe groter de waarde, hoe fijner de rendering en hoe hoger de prestatiekosten.

ParameterTypeBeschrijving
ssefloatSubdivisiefactor, bereik [1, 100]. 1 = grofst (geen verfijning, zelfs niet van dichtbij), 100 = fijnst (alle niveaus verfijnd tot het laagste)

Gebruiksvoorbeeld:

lccManager.SetDetailLevel(50f); // Gemiddelde precisie

Beschrijving:

  • Deze parameter wordt gebruikt om scènedetail fijn af te stellen, geldt alleen voor chunked rendering, standaard is 40, bereik [1, 100], automatisch begrensd bij overschrijding.
  • Maakt gebruik van logaritmische toewijzing: het lage waardebereik is gevoelig voor veranderingen en het hoge waardebereik verandert geleidelijk.
  • Kan tijdens runtime dynamisch worden aangepast.

SetRenderAll

// Retourwaarde: void
public void SetRenderAll(bool _renderAll)

Een methode van de Renderer-klasse. Stelt in of deze Renderer volledige rendering forceert en moet vóór Load() worden aangeroepen. Wordt alleen gebruikt voor de pc/Mac-SingleRender-modus: op het uitvoeringstijdstip wordt het LOD0-gegevensvolume vergeleken met de bovengrens van 44,5 miljoen; als LOD0 < 44,5 miljoen, worden de volledige LOD0-gegevens rechtstreeks voor rendering gebruikt; als LOD0 > 44,5 miljoen, is deze instelling niet van kracht (beperkt door de maximale GBuffer van Unity) en wordt in plaats daarvan chunked rendering gebruikt.

ParameterTypeBeschrijving
_renderAllboolOf volledige rendering moet worden geforceerd

Gebruiksvoorbeeld:

renderer.SetRenderAll(true);
renderer.Load(filePath, null, () => Debug.Log("Volledig geladen"));

Beschrijving:

  • Alleen ondersteund op pc/Mac-platformen; aanroepen op mobiel / VR logt een waarschuwing en retourneert.
  • De instelling wordt van kracht bij de volgende Load()-aanroep en heeft geen invloed op de momenteel geladen gegevensset.
  • Kan samen met de eigenschap IsRenderAll worden gebruikt om de huidige status op te vragen.