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

Renderer: renderinginstantie

Een LCC-renderinginstantie, verantwoordelijk voor het laden van gegevens en het beheer van de rendering van één enkele 3DGS-scène. Deze wordt aangemaakt via LCCManager.GetRender() en kan niet rechtstreeks worden geïnstantieerd.

NaamruimteLCCCore

Eigenschappen

EigenschapTypeToegangBeschrijving
TransformTransformAlleen-lezenDe Transform-component waaraan de renderinginstantie is gekoppeld
IsEnableboolAlleen-lezenOf de renderinginstantie actief is; standaard true
IsRenderAllboolAlleen-lezenOf de volledige LOD0-gegevens worden gerenderd (versus streaming / LOD-traversaalmodus); standaard false

Methoden

De methoden zijn gegroepeerd naar doel:

  • Gegevens laden en levenscyclus
  • Runtime-beheer en query's

Gegevens laden en levenscyclus

Load

public void Load(string _filePath, Action<float> _onProgress, Action _onComplete, Action<string> _onError = null)

Laadt een 3DGS-gegevensbestand. Ondersteunt .lcc2 (lokaal bestand of HTTP op afstand) en de native indelingen .ply / .sog / .spz / .splat / .ksplat (alleen lokale bestanden).

ParameterTypeBeschrijving
_filePathstringPad van het gegevensbestand (lokaal pad of HTTP-URL)
_onProgressAction<float>Laadvoortgangscallback, mag null zijn
_onCompleteActionLaadvoltooiingscallback, mag null zijn
_onErrorAction<string>Laadfoutcallback (optioneel), met de foutbeschrijving als parameter

Opmerkingen:

  • De _onComplete-callback wordt geactiveerd nadat de gegevens daadwerkelijk op de GPU zijn aangekomen.
  • Bewerkingen zoals het ontvangen van schaduwen en het activeren van effecten moeten binnen de _onComplete-callback worden aangeroepen.
  • Native indelingen gebruiken altijd het SingleRender-pad voor volledig laden (geen LOD-chunking); de voortgang wordt gerapporteerd via _onProgress en fouten via _onError.
  • De MultiRender-modus staat geen HTTP-gegevensbronnen of native indelingen toe.
  • HTTP ondersteunt alleen .lcc2; native indelingen zijn alleen lokale paden en alleen de SingleRender-modus.
  • SetPlatformType() / SwitchRenderPass() / SetMainCamera() en andere vereisten moeten eerst worden voltooid.
  • Je moet Unload() of Dispose() aanroepen voordat je Load() opnieuw aanroept; Load() aanroepen terwijl het laden bezig is, wordt geweigerd en activeert _onError.

Voorbeeld:

renderer.Load("D:/data/scene.lcc2",
    p => Debug.Log($"Laden {p:P0}"),
    () => {
        Debug.Log("Laden voltooid");
        lccManager.SetShadowReceive(true);
    });

Unload

public void Unload()

Geeft de momenteel geladen gegevens vrij en keert terug naar de status "aangemaakt maar niet geladen", waarbij de managerregistratie van de instantie behouden blijft. Dezelfde Renderer-instantie kan opnieuw worden gebruikt door herhaaldelijk Load → Unload → Load te doorlopen.

Opmerkingen:

  • Verschil met Dispose(): de managerregistratie wordt niet verwijderd en de instantie kan opnieuw worden gebruikt.
  • Na Unload() is IsEnable false; het opnieuw aanroepen van Load() zet alle gegevensstatus terug.
  • Wordt alleen uitgevoerd wanneer de gegevens klaar zijn met laden; retourneert direct wanneer er niets is geladen of er al Dispose() is uitgevoerd.

Voorbeeld:

renderer.Unload();
renderer.Load(newFilePath, null, () => Debug.Log("Opnieuw geladen"));

Dispose

public void Dispose()

Vernietigt de renderinginstantie en geeft alle GPU-bronnen en geheugen vrij. De instantie kan na vernietiging niet meer worden gebruikt en alle openbare methoden worden automatisch onwerkzaam.

Opmerkingen:

  • Stelt de LCCManager na de aanroep automatisch op de hoogte om de verwijzing te verwijderen.

Voorbeeld:

renderer.Dispose();
renderer = null;

Runtime-beheer en query's

SetEnable

public void SetEnable(bool _enable)

Stelt de activeringsstatus van de renderinginstantie in. Wanneer deze is uitgeschakeld, neemt deze niet deel aan rendering of LOD-selectie.

ParameterTypeBeschrijving
_enableboolOf deze moet worden geactiveerd

Opmerkingen:

  • Geeft geen bronnen vrij en kan op elk moment opnieuw worden geactiveerd.

Voorbeeld:

renderer.SetEnable(false); // Verbergen
renderer.SetEnable(true);  // Weergeven

SetAlpha

public void SetAlpha(float alpha)

Stelt de onafhankelijke opaciteit van de huidige Renderer in. In tegenstelling tot de globale alpha op procesniveau van LCCManager.SetAlpha(), heeft deze API alleen invloed op de huidige Renderer. Eindalpha = splatdekking × globale alpha van LCCManager × de alpha van deze Renderer.

ParameterTypeBeschrijving
alphafloatOnafhankelijke opaciteit van de huidige Renderer, bereik [0, 1], automatisch begrensd bij overschrijding

Opmerkingen:

  • Wordt alleen van kracht op het MultiRender / RenderCore-pad (pc / Mac); op dat pad draagt elke splat een renderID en indexeert de shader de per-Renderer alpha-array op basis van renderID.
  • Het FullRender / mobiele pad heeft geen renderID, dus deze API is daar een no-op (de waarde wordt in de cache opgeslagen en automatisch toegepast wanneer later naar het RenderCore-pad wordt overgeschakeld).

Voorbeeld:

renderer.SetAlpha(0.5f);

SetRenderAll

public void SetRenderAll(bool _renderAll)

Stelt in of de volledige rendermodus moet worden gebruikt (LOD0-gegevens volledig renderen). Wordt van kracht bij de volgende Load()-aanroep en heeft geen invloed op de momenteel geladen gegevensset.

ParameterTypeBeschrijving
_renderAllboolOf volledig moet worden gerenderd

Opmerkingen:

  • Alleen ondersteund op pc-/Mac-platformen; geen effect op mobiel / VR.
  • Vraag de huidige status op met de eigenschap IsRenderAll.

Voorbeeld:

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

SetColliderEnable

// Retourwaarde: bool, true=succesvol ingesteld, false=de gegevens hebben geen collider of de instantie is inactief
public bool SetColliderEnable(bool _enable)

Schakelt de colliderfunctie in of uit. Zodra deze is ingeschakeld, worden IntersectsSphere() / IntersectsCapsule() en RaycastMesh() beschikbaar.

ParameterTypeBeschrijving
_enableboolOf de collider moet worden ingeschakeld

Opmerkingen:

  • De gegevens moeten een Collider-knooppunt bevatten, anders wordt false geretourneerd.
  • De Renderer moet actief zijn.

Voorbeeld:

bool ok = renderer.SetColliderEnable(true);
if (!ok) Debug.LogWarning("De gegevens bevatten geen collider");

SetEnvironment

public void SetEnvironment(bool _env)

Schakelt de rendering van omgevingsgegevens in of uit. Omgevingsgegevens zijn een achtergrondpuntenwolk met lage precisie die wordt gebruikt om verre uitzichten op te vullen.

ParameterTypeBeschrijving
_envboolOf omgevingsgegevens moeten worden gerenderd

Opmerkingen:

  • De gegevens moeten omgevingsknooppunten bevatten.
  • Omgevingsgegevens zijn onafhankelijk van het LOD-systeem van de hoofdgegevens.

Voorbeeld:

renderer.SetEnvironment(true);

GetBounds

public void GetBounds(out Vector3 max, out Vector3 min)

Haalt het as-uitgelijnde begrenzingskader (wereldcoördinaten) van de gerenderde gegevens op.

ParameterTypeBeschrijving
maxout Vector3Maximumpunt van het begrenzingskader (wereldcoördinaten)
minout Vector3Minimumpunt van het begrenzingskader (wereldcoördinaten)

Opmerkingen:

  • Retourneert Vector3.zero wanneer de gegevens niet volledig zijn geladen.
  • Kan worden gebruikt voor camerapositionering en het berekenen van de kijkhoek.

Voorbeeld:

renderer.GetBounds(out Vector3 max, out Vector3 min);
Vector3 center = (max + min) / 2f;
Vector3 size = max - min;

GetSourceType

// Retourwaarde: SourceType
public SourceType GetSourceType()

Haalt het brontype van de geladen gegevens op; zie SourceType.

Opmerkingen:

  • Retourneert SourceType.None wanneer de gegevens niet zijn geladen.

GetDataType

// Retourwaarde: DataType
public DataType GetDataType()

Haalt het indelingstype van de geladen gegevens op; zie DataType.

Opmerkingen:

  • Retourneert DataType.None wanneer de gegevens niet zijn geladen.

GetMeta (vanuit bestandspad)

// Retourwaarde: bool, true=succesvol gelezen
public bool GetMeta(string _filePath, out SplatMeta _metaData)

Leest de metadata van de 3DGS-gegevens vanaf het opgegeven bestandspad zonder de gegevens volledig te laden.

ParameterTypeBeschrijving
_filePathstringPad van het gegevensbestand
_metaDataout SplatMetaUitvoermetadata

Opmerkingen:

  • Ondersteunt lokale paden en HTTP-URL's.
  • Leest alleen de bestandskopmetadata en laadt geen puntenwolkgegevens.
  • Retourneert false wanneer het pad leeg is of het bestand niet bestaat.

Voorbeeld:

if (renderer.GetMeta(filePath, out SplatMeta meta))
{
    Debug.Log(meta.source);
    Debug.Log(meta.dataType);
}

GetMeta (vanuit geladen gegevens)

// Retourwaarde: bool, true=succesvol gelezen
public bool GetMeta(out SplatMeta _metaData)

Haalt de metadata van de momenteel geladen gegevens op. Als de gegevens nog niet klaar zijn met laden, wordt geprobeerd vanaf het bestandspad te lezen.

ParameterTypeBeschrijving
_metaDataout SplatMetaUitvoermetadata

Voorbeeld:

if (renderer.GetMeta(out SplatMeta meta))
{
    Debug.Log(meta.source);
}

GetMeshBlockInfos

// Retourwaarde: List<LCCMeshBlockInfo>, metadata van botsings-Mesh-blokken; null wanneer er geen Mesh is of deze niet beschikbaar is
public List<LCCMeshBlockInfo> GetMeshBlockInfos()

Retourneert de metadata van alle botsings-Mesh-blokken (id, wereld- / lokaal begrenzingskader, aantal hoekpunten, aantal vlakken). Nul I/O, nul parsing — leest alleen de metadata die al in het geheugen aanwezig is. Zie LCCMeshBlockInfo.

Opmerkingen:

  • Alleen pc-/Mac-platform + lokale gegevensbron; moet op de hoofdthread worden aangeroepen.
  • Typisch gebruik: gebruik het eerst om het wereldbegrenzingskader van elk blok op te halen, selecteer de benodigde id's en roep vervolgens GetMeshes(ids) aan om alleen die blokken te lezen.
  • Native indelingen (PLY / SOG / SPZ / splat / ksplat) hebben geen Mesh en retourneren null (normaal, geen log).

Voorbeeld:

var infos = renderer.GetMeshBlockInfos();
foreach (var info in infos)
{
    Debug.Log($"{info.id}: verts={info.vertexCount}, faces={info.faceCount}");
}

GetMeshes

// Retourwaarde: List<LCCMeshBlock>, alle geometriegegevens van botsings-Mesh; null wanneer niet beschikbaar
public List<LCCMeshBlock> GetMeshes()

Retourneert synchroon de geometriegegevens van alle botsings-Mesh-blokken (hoekpunten + driehoeksindices, in lokale coördinaten). Dit is een zware bewerking (synchrone schijflezing + parsing + toewijzing), dus roep deze één keer aan en cache deze zelf — roep deze nooit elke frame aan. Zie LCCMeshBlock.

Opmerkingen:

  • Alleen pc-/Mac-platform + lokale gegevensbron; moet op de hoofdthread worden aangeroepen.
  • Gebruik voor grote scènes GetMeshBlockInfos() om id's te selecteren + GetMeshes(ids) om te voorkomen dat in één keer een enorme hoeveelheid beheerd geheugen wordt toegewezen.
  • Een enkel blok kan meer dan 65535 hoekpunten hebben, dus mesh.indexFormat = IndexFormat.UInt32 moet worden ingesteld vóór het bouwen van de Mesh.

Voorbeeld:

var meshes = renderer.GetMeshes();
foreach (var block in meshes)
{
    // block.vertices / block.triangles bevinden zich in het lokale coördinatensysteem van het object
}

GetMeshes (op id)

// Retourwaarde: List<LCCMeshBlock>, geometriegegevens van de botsings-Mesh van de opgegeven id's; null wanneer er geen treffer is
public List<LCCMeshBlock> GetMeshes(IEnumerable<string> _ids)

Retourneert synchroon de geometriegegevens van de botsings-Mesh-blokken (in lokale coördinaten) van de opgegeven id's. De id's worden geleverd door GetMeshBlockInfos().

ParameterTypeBeschrijving
_idsIEnumerable<string>De set doelblok-id's (geleverd door GetMeshBlockInfos())

Opmerkingen:

  • Onbekende id's worden overgeslagen met een waarschuwing; dubbele id's worden gededupliceerd (geen herhaalde schijflezingen); de retourvolgorde is de doorloopvolgorde van de id's (na deduplicatie).
  • Retourneert null met een waarschuwing wanneer de invoer null of leeg is of geen treffers bevat.
  • De overige beperkingen zijn hetzelfde als bij GetMeshes().

Voorbeeld:

var ids = new List<string> { "block-0", "block-3" };
var meshes = renderer.GetMeshes(ids);