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

    • PortalCam P1

      • Product Overview
      • Basic Operation
      • Using the LCC Scan App
      • Maintenance and Care
      • FAQ
  • Lixel K Series

    • Lixel K1

      • Product Overview
      • Basic Operation
      • Device Activation and Connection
      • Scanning Workflow
      • Acquire Point Cloud Data with Absolute Coordinate
      • Map Fusion
      • Route Planning Suggestions for Typical Scenes
      • Precautions
      • FAQ
    • Lixel K2

      • Product Overview
      • Basic Operation
      • Device Activation and Connection
      • Scanning Workflow
      • Acquire Point Cloud Data with Absolute Coordinate
      • Map Fusion
      • Route Planning Suggestions for Typical Scenes
      • Precautions
      • FAQ
  • Lixel L Series

    • Lixel L2 Pro

      • Product Overview
      • Basic Operation
      • Device Activation and Connection
      • Scanning Workflow
      • Acquire Point Cloud Data with Absolute Coordinate
      • Measure Point
      • Appendix
      • FAQ
    • Lixel L3

      • Product Overview
      • Basic Device Functions
      • Device Activation and Connection
      • Data Capture
      • Capturing Absolute Coordinates
      • Appendix
  • Lixel Studio

    • Version and Copyright
    • Installation and Activation
    • Software Interface
    • File Operations
    • Project Processing
    • Tools
    • 2D Drawing
    • Applications
    • Settings
    • Device Connection
    • FAQ
  • Lixel CyberColor

    • LCC Studio

      • Getting Started
      • Version and Updates
      • Download and Installation
      • Interface Overview and Navigation
      • Before Reconstruction
      • Model Reconstruction
      • Single Model Reconstruction
      • Map Fusion
      • Aerial-Ground Fusion
      • Aerial Reconstruction
      • My Models
      • Other Features
      • Settings and Account
      • Converter
      • Video Reconstruction
      • FAQ
    • LCC Scene Editor

      • Version & Updates
      • Account & Login
      • Product Overview & Home
      • Editor Interface
      • Scene Navigation Modes
      • File
      • Settings
      • Edit Operations
      • Window
      • Global Toolbar
      • Assets & Properties
      • Left Toolbar
      • Viewpoints
      • Portal
      • Skybox
      • Annotations
      • Measurement
      • Flythrough
      • Scene Report
      • 3D Layout
      • Mini-Map
      • Preview Mode (Viewer)
      • Help
      • FAQ
      • Spawn Point
    • LCC Model Editor

      • Version and Updates
      • User Guide
      • Overview and Interface
      • File Operations
      • Selectors
      • Editing Models
      • Measurement
      • Color Grading
      • Asset Management
      • Settings and Help
      • FAQ
    • Capture Guide

      • Overview
      • Capture Devices Overview
      • General Capture Principles
      • Indoor Scene Capture
      • Outdoor Scene Capture
      • Large-Scale Capture (Map Fusion)
      • Aerial-Ground Map Fusion Capture
      • Object Capture
      • People Capture
      • Video Reconstruction Capture
      • HD Enhancement
      • Control Points (Lixel P1)
      • FAQ and Troubleshooting
    • LCC Studio Linux

      • Product Overview
      • Architecture Guide
      • Installation and Deployment Guide
      • Container Startup Parameters Guide
      • CodeMeter Offline Licensing Deployment Guide
      • API Reference
      • Appendix - Developer Data Guide
      • Appendix - Error Code List
      • Single-Machine Multi-GPU Cluster Deployment QuickStart
    • Best Practices

      • Merging Multiple Large 3DGS Models
    • Version History
  • Plugin & SDK

    • Unreal

      • Introduction
      • Quick Start - Windows
      • Quick Start - Linux
      • Quick Start - Quest3
      • Editions and Licensing
      • Rendering
      • Tiled Rasterization (Experimental)
      • Visual Settings
      • Normals and Lighting
      • Scene Editing
      • Performance Parameters
      • Performance Guide
      • Third-party and Engine Plugin Integration
      • Proxy Mesh
      • Loading Animation
      • Collision
      • Navigation System Support
      • Single Layer Water Support
      • Localization
      • FAQ
      • Troubleshooting
      • Logging and Diagnostics
      • Contact Us
      • Best Practices

        • Relighting 3DGS with a LixelStudio Mesh
      • API Reference

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • SOG / SPZ / PLY Actors
        • ALCC2ProxyMesh
        • ALCCClippingVolume
        • ALCCSectionPlane
        • ALCCLoadVolume
        • ULCCUtilLibrary
        • Enums
        • Structs
      • Changelog

        • v3.4.0
        • v3.3.1
        • v3.0.0
        • v2.2.1
        • v1.0.0
        • v0.9.0
        • v0.8.0
        • v0.7.1
        • v0.6.1
        • v0.5.2
        • v0.4.1
        • v0.4.0
        • v0.3.0
        • v0.0.5
        • v0.0.4
        • v0.0.3
        • v0.0.2
        • v0.0.1
    • Unity

      • Unity SDK Introduction
      • Technical Features
      • Development Environment Requirements
      • PC Quick Start Guide
      • Project Settings Optimization Guide
      • Pico 4 Ultra Development Guide
      • Pico 4 Ultra PC Streaming Guide
      • Quest 3 Development Guide
      • Quest 3 PC Streaming Guide
      • OpenXR Development Guide
      • Pico 4 Ultra Business Streaming Guide
      • Glossary
      • FAQ
      • Contact Us
      • Feature Development Guide

        • Multi-Scene Mixed Rendering Development Guide
        • Shadow Receiving Development Guide
        • Real-Time Lighting Development Guide
        • Multi-Camera Rendering Development Guide
        • High-Resolution Image Rendering Development Guide
        • LCC and LCC2 Data Format Compatibility Development Guide
        • Loading Effect Development Guide
        • Mip Rendering Mode Switching Development Guide
        • Edge and Corner Snapping Development Guide
        • Projected Decal Development Guide
        • Video Projected Decal Development Guide
        • Highlight Development Guide
        • Real-Time Clipping Development Guide
        • Color Adjustment Development Guide
        • Getting Scene Mesh Data Development Guide
        • Editor Mode Development Guide
        • Render Performance Parameter Configuration Guide
        • Application and Data Co-packaging Development Guide
        • Collision System Development Guide
        • macOS Development Permission Issue Guide
        • iOS Device Compilation and Packaging Development Guide
      • API Reference

        • LCCManager
        • Renderer
        • Data Types
      • Changelog

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

      • Introduction
      • Rendering Performance Optimization Guide
      • Graphics Configuration
      • FAQ
      • API Reference

        • LCCRender::clearIndexDB
        • LCCRender::dispose
        • LCCRender::load
        • LCCRender::setCamera
        • LCCRender::unload
        • LCCRender::update
        • LCCObject::checkRenderNextFrame
        • LCCObject::clearRenderNextFrame
        • LCCObject::ecef2Prj
        • LCCObject::getBounds
        • LCCObject::getEnvInstancedMesh
        • LCCObject::getInstancedMesh
        • LCCObject::getLodInfos
        • LCCObject::getOriginPosition
        • LCCObject::getProjectionCoordinateSystemInfos
        • LCCObject::hasCollision
        • LCCObject::hasEnvironment
        • LCCObject::hasShcoef
        • LCCObject::intersectsCapsule
        • LCCObject::intersectsRayExt
        • LCCObject::intersectsRayFromOriginExt
        • LCCObject::intersectsSphere
        • LCCObject::lowerToBottom
        • LCCObject::prj2Ecef
        • LCCObject::raiseToTop
        • LCCObject::raycast
        • LCCObject::raycastFromOrigin
        • LCCObject::setAlpha
        • LCCObject::setClipBox
        • LCCObject::setClipPlane
        • LCCObject::setEndLod
        • LCCObject::setLodAutoLevelUp
        • LCCObject::setMaxDistance
        • LCCObject::setMaxNodeSplats
        • LCCObject::setMaxSplats
        • LCCObject::setOriginPosition
        • LCCObject::setPointsColor
        • LCCObject::setRenderState
        • LCCObject::setRotation
        • LCCObject::setScale
        • LCCObject::setSemantic
        • LCCObject::setSemanticColor
        • LCCObject::setSmooth
        • LCCObject::setStartLod
        • LCCObject::setTranslation
        • LCCObject::setVisible
        • LCCObject::togglePointsDisplayMode
        • LCCObject::useEnvironment
        • LCCObject::useShcoef
      • Changelog

        • v0.6.3
        • v0.6.2
        • v0.6.1
        • v0.6.0
        • v0.5.5
        • v0.5.4
        • v0.5.3
        • v0.5.2
        • v0.5.1
        • v0.5.0
        • v0.4.1
        • v0.4.0
        • v0.3.1
        • v0.3.0
        • v0.2.0
    • Lixel OpenAPI

      • Overview
      • Connection & Authentication
      • Message Model & Codec
      • Interface Catalog
      • Real-time Data
      • Project File Access
      • Error Codes
      • Python

        • Quick Start
        • Client Wrapper & Tools
        • FAQ
      • C++

        • Quick Start
        • Client & Examples
        • FAQ

Renderer: Rendering Instance

An LCC rendering instance, responsible for data loading and rendering control of a single 3DGS scene. It is created via LCCManager.GetRender() and cannot be instantiated directly.

NamespaceLCCCore

Properties

PropertyTypeAccessDescription
TransformTransformRead-onlyThe Transform component to which the rendering instance is attached
IsEnableboolRead-onlyWhether the rendering instance is active; default true
IsRenderAllboolRead-onlyWhether the full LOD0 data is being rendered (vs. streaming / LOD traversal mode); default false

Methods

The methods are grouped by purpose:

  • Data Loading and Lifecycle
  • Runtime Control and Queries

Data Loading and Lifecycle

Load

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

Loads a 3DGS data file. Supports .lcc2 (local file or HTTP remote) and the native formats .ply / .sog / .spz / .splat / .ksplat (local files only).

ParameterTypeDescription
_filePathstringData file path (local path or HTTP URL)
_onProgressAction<float>Loading progress callback, can be null
_onCompleteActionLoading complete callback, can be null
_onErrorAction<string>Loading failure callback (optional), with the error description as the parameter

Notes:

  • The _onComplete callback fires after the data actually lands on the GPU.
  • Operations such as shadow reception and effect triggering must be called inside the _onComplete callback.
  • Native formats always use the SingleRender full-load path (no LOD chunking); progress is reported via _onProgress and failures via _onError.
  • The MultiRender mode does not allow HTTP data sources or native formats.
  • HTTP supports only .lcc2; native formats are local paths only and SingleRender mode only.
  • SetPlatformType() / SwitchRenderPass() / SetMainCamera() and other prerequisites must be completed first.
  • You must call Unload() or Dispose() before calling Load() again; calling Load() while loading is in progress is rejected and triggers _onError.

Example:

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

Unload

public void Unload()

Releases the currently loaded data and returns to the "created but not loaded" state, keeping the instance's manager registration. The same Renderer instance can be reused by repeatedly cycling Load → Unload → Load.

Notes:

  • Difference from Dispose(): the manager registration is not removed and the instance can be reused.
  • After Unload(), IsEnable is false; calling Load() again resets all data state.
  • Only executes when data has finished loading; returns immediately when not loaded or already Dispose()d.

Example:

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

Dispose

public void Dispose()

Destroys the rendering instance and releases all GPU resources and memory. The instance cannot be used after destruction, and all public methods become ineffective automatically.

Notes:

  • Automatically notifies the LCCManager to remove the reference after the call.

Example:

renderer.Dispose();
renderer = null;

Runtime Control and Queries

SetEnable

public void SetEnable(bool _enable)

Sets the activation state of the rendering instance. When disabled, it does not participate in rendering or LOD selection.

ParameterTypeDescription
_enableboolWhether to activate

Notes:

  • Does not release resources and can be reactivated at any time.

Example:

renderer.SetEnable(false); // Hide
renderer.SetEnable(true);  // Show

SetAlpha

public void SetAlpha(float alpha)

Sets the current Renderer's independent opacity. Unlike the process-level global alpha of LCCManager.SetAlpha(), this API only affects the current Renderer. Final alpha = splat coverage × LCCManager global alpha × this Renderer's alpha.

ParameterTypeDescription
alphafloatIndependent opacity of the current Renderer, range [0, 1], auto-clamped when exceeded

Notes:

  • Only takes effect on the MultiRender / RenderCore path (PC / Mac); on that path each splat carries a renderID, and the shader indexes the per-Renderer alpha array by renderID.
  • The FullRender / Mobile path has no renderID, so this API is a no-op there (the value is cached and automatically applied when switching to the RenderCore path later).

Example:

renderer.SetAlpha(0.5f);

SetRenderAll

public void SetRenderAll(bool _renderAll)

Sets whether to use the full rendering mode (fully render LOD0 data). It takes effect on the next Load() call and does not affect the currently loaded dataset.

ParameterTypeDescription
_renderAllboolWhether to fully render

Notes:

  • Supported only on PC / Mac platforms; no effect on mobile / VR.
  • Query the current state with the IsRenderAll property.

Example:

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

SetColliderEnable

// Return value: bool, true=set successfully, false=the data has no collider or the instance is inactive
public bool SetColliderEnable(bool _enable)

Toggles the collider feature. Once enabled, IntersectsSphere() / IntersectsCapsule() and RaycastMesh() become available.

ParameterTypeDescription
_enableboolWhether to enable the collider

Notes:

  • The data must contain a Collider node, otherwise false is returned.
  • The Renderer must be active.

Example:

bool ok = renderer.SetColliderEnable(true);
if (!ok) Debug.LogWarning("Data does not contain a collider");

SetEnvironment

public void SetEnvironment(bool _env)

Toggles environment data rendering. Environment data is a low-precision background point cloud used to fill distant views.

ParameterTypeDescription
_envboolWhether to render environment data

Notes:

  • The data must contain environment nodes.
  • Environment data is independent of the main data's LOD system.

Example:

renderer.SetEnvironment(true);

GetBounds

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

Gets the axis-aligned bounding box (world coordinates) of the rendered data.

ParameterTypeDescription
maxout Vector3Maximum point of the bounding box (world coordinates)
minout Vector3Minimum point of the bounding box (world coordinates)

Notes:

  • Returns Vector3.zero when the data is not fully loaded.
  • Can be used for camera positioning and view angle calculation.

Example:

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

GetSourceType

// Return value: SourceType
public SourceType GetSourceType()

Gets the source type of the loaded data; see SourceType.

Notes:

  • Returns SourceType.None when the data is not loaded.

GetDataType

// Return value: DataType
public DataType GetDataType()

Gets the format type of the loaded data; see DataType.

Notes:

  • Returns DataType.None when the data is not loaded.

GetMeta (From File Path)

// Return value: bool, true=read successfully
public bool GetMeta(string _filePath, out SplatMeta _metaData)

Reads the metadata of 3DGS data from the specified file path without fully loading the data.

ParameterTypeDescription
_filePathstringData file path
_metaDataout SplatMetaOutput metadata

Notes:

  • Supports local paths and HTTP URLs.
  • Only reads the file header metadata and does not load point cloud data.
  • Returns false when the path is empty or the file does not exist.

Example:

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

GetMeta (From Loaded Data)

// Return value: bool, true=read successfully
public bool GetMeta(out SplatMeta _metaData)

Gets the metadata of the currently loaded data. If the data has not finished loading, it tries to read from the file path.

ParameterTypeDescription
_metaDataout SplatMetaOutput metadata

Example:

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

GetMeshBlockInfos

// Return value: List<LCCMeshBlockInfo>, collision Mesh block metadata; null when there is no Mesh or it is unavailable
public List<LCCMeshBlockInfo> GetMeshBlockInfos()

Returns the metadata of all collision Mesh blocks (id, world / local bounding box, vertex count, face count). Zero I/O, zero parsing — only reads the meta already in memory. See LCCMeshBlockInfo.

Notes:

  • PC / Mac platform + local data source only; must be called on the main thread.
  • Typical usage: first use it to get each block's world bounding box, pick the needed ids, then call GetMeshes(ids) to read only those blocks.
  • Native formats (PLY / SOG / SPZ / splat / ksplat) have no Mesh and return null (normal, no log).

Example:

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

GetMeshes

// Return value: List<LCCMeshBlock>, all collision Mesh geometry data; null when unavailable
public List<LCCMeshBlock> GetMeshes()

Synchronously returns the geometry data of all collision Mesh blocks (vertices + triangle indices, in local coordinates). This is a heavy operation (synchronous disk read + parsing + allocation), so call it once and cache it yourself — never call it every frame. See LCCMeshBlock.

Notes:

  • PC / Mac platform + local data source only; must be called on the main thread.
  • For large scenes, use GetMeshBlockInfos() to pick ids + GetMeshes(ids) to avoid allocating a huge amount of managed memory at once.
  • A single block can have more than 65535 vertices, so mesh.indexFormat = IndexFormat.UInt32 must be set before building the Mesh.

Example:

var meshes = renderer.GetMeshes();
foreach (var block in meshes)
{
    // block.vertices / block.triangles are in the object's local coordinate system
}

GetMeshes (By id)

// Return value: List<LCCMeshBlock>, collision Mesh geometry data of the specified ids; null when there is no hit
public List<LCCMeshBlock> GetMeshes(IEnumerable<string> _ids)

Synchronously returns the collision Mesh block geometry data (in local coordinates) of the specified ids. The ids are provided by GetMeshBlockInfos().

ParameterTypeDescription
_idsIEnumerable<string>The set of target block ids (provided by GetMeshBlockInfos())

Notes:

  • Unknown ids are skipped with a warning; duplicate ids are deduplicated (no repeated disk reads); the return order is the traversal order of ids (after deduplication).
  • Returns null with a warning when the input is null, empty, or has no hits.
  • Other constraints are the same as GetMeshes().

Example:

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