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

    • 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 Studio

    • Version and Copyright
    • Installation and Activation
    • Software Interface
    • File Operations
    • Project Processing
    • Tools
    • 2D Drawing
    • Applications
    • Settings
    • Device Connection
  • 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
    • Version History
  • Plugin & SDK

    • Unreal

      • Introduction
      • Quick Start - Windows
      • Quick Start - Linux
      • Quick Start - Quest3
      • Editions and Licensing
      • Rendering
      • 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
      • API Reference

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

        • 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

Walking in a 3DGS Scene: Collision Support

LCC4Unreal supports dynamic collision data loading, so characters can move and interact freely in the 3DGS world.

Prerequisites

Collision relies on the collision file shipped with the data, and the requirements differ per format:

FormatCollision dataSupport
.lcccollision.lci in the data directory, collision.bin in older versionsSupported
.lcc2.ply files in data/mesh/ under the data directorySupported
.sog / .spz / .plyNoneNot supported

The plugin checks in the order collision.lci → collision.bin → data/mesh/*.ply, and prints a warning and disables collision when none of them exist. After loading data, use HaveValidCollisionData() to confirm whether the current data contains usable collision data.

Note: collision.lci requires export from LCC Studio v1.6.1 or above; data exported by earlier versions uses collision.bin.

Alternatives for Single-file Formats

.sog, .spz, and .ply are single-file formats that carry no collision data, so the plugin cannot generate collision for them. Build it in the scene when collision is needed:

  • Blocking Volume: use engine blocking volumes to build the ground, walls, and other areas that need to block. Suited to regular shapes and the cheapest option
  • Approximate mesh: place a mesh that matches the 3DGS shape and enable its collision. Suited to scenes with complex shapes. This mesh can reuse the proxy mesh by changing its collision preset to block

Neither approach involves the LCC collision loading mechanism, so they are unaffected by CollisionLoadMaxDistance and are not swapped in and out as the camera moves.

Loading Mechanism

Collision data is stored in spatial chunks just like render data. The plugin does not load all collision at once: it loads only the chunks within a certain range around the camera and swaps them in and out dynamically as the camera moves.

Camera position changes
      │
      ▼
Compute the set of collision chunks that should be loaded in range
      │
      ▼
Compare with the previous set ── same ──▶ skip, do nothing
      │ different
      ▼
Load the new chunks → hand them to the physics system for baking → generate collision bodies

A few implementation points:

  • The load range is controlled by Max Load Collision Distance(m), and areas beyond that distance have no collision
  • The first load is synchronous, which prevents the character from falling through the ground before collision is ready; every later update is asynchronous and does not block the main thread
  • Updates are throttled, so collision is not rebuilt every frame while the camera moves continuously
  • Updates are skipped when the visible chunk set is unchanged, so small movements in place do not trigger a rebuild
  • Only the main camera is used for the calculation, and SceneCapture does not take part in collision loading

Advantages

  • Memory usage depends only on the load range, not on the total data size, so collision works even for large scenes
  • The number of collision bodies the physics system has to process stays under control and does not slow physics down as the scene grows

Costs and Mitigations

IssueCauseMitigation
The character falls through the ground the instant the game startsCollision is not built yetRaise PlayerStart a little, or enable character movement only after collision is ready
Stutter when the character enters the 3DGS scene range from far awayThe character spawned outside the collision load range; the first synchronous load is triggered on entryPlace the spawn point within the collision load range, or load all collision at once
No collision in the distance, so line traces missAreas beyond the load range have no collision bodiesRaise Max Load Collision Distance(m), or switch to a check that does not rely on collision
No collision for a short time after teleporting or moving fastThe collision chunks of the new area are still loadingLoad all collision at once
Stutter while moving, with a high Update Collision costCollision chunks are swapped in and out and rebaked frequentlyReduce the load range, or confirm collision is really needed
The navigation mesh keeps rebuilding when used with navigationCollision changes trigger NavMesh updatesRaise the load range so the target area loads in one pass, and use Static baking, see Navigation System Support

Loading All Collision at Once

Most of the costs above come from swapping chunks in and out at runtime. When the scene size is limited and memory allows, raise Max Load Collision Distance(m) high enough to cover the whole scene, so all collision is built in one pass while the data loads.

Runtime swapping of collision chunks then disappears, and none of the earlier issues occur: falling through the ground, missing collision after teleporting, stutter while moving, and repeated navigation rebuilds. This is especially recommended when using the navigation system.

The cost is a longer load time at startup and a fixed memory usage equal to the collision of the whole scene. To judge whether it is feasible, check Collision Data Usage in stat xgrids and confirm the memory usage after a full load is acceptable.

Enabling

LCCComponent->SetLCCCollisionEnable(true);

Or tick bEnableCollision in the Details panel.

Enabling LCC collision in the Details panel

Enabling LCC collision in the Details panel

Demonstration of LCC dynamic collision

Dynamic collision of a character in an LCC scene

Verification

Use the view mode settings and select player collision or visibility collision to observe whether collision is enabled.

Showing collision bodies in view mode

Verifying collision bodies with the player collision or visibility collision mode

Related Properties

PropertyDescription
bEnableCollisionEnables collision
CollisionLoadMaxDistanceMaximum load distance of collision data (300 meters by default)
Collision enable and maximum load distance properties

Configuring the collision enable state and the maximum load distance

Notes

  • Once collision is enabled, the LineTrace of the Unreal Engine itself can be used for ray tests against collision bodies, and the test range is limited by the load range as well
  • The memory used by collision data can be viewed in Collision Data Usage of stat xgrids, the update cost in Update Collision, and the meaning of the items in Performance Parameters
Prev
Loading Animation
Next
Navigation System Support