Ogc3dTilesLayer

open class Ogc3dTilesLayer(val source: TilesetSource, displayName: String? = source.displayName, blobStore: BlobStore = NoOpBlobStore, fetchConcurrency: Int = 8, byteSource: TileByteSource = HttpTileByteSource()) : AbstractLayer

OGC / Cesium 3D Tiles layer. Streams b3dm / i3dm / cmpt / pnts / glTF / Gaussian-splat payloads from a self-hosted endpoint, Cesium Ion, Google Photorealistic, or any custom-headers / Bearer-authenticated endpoint via TilesetSource.authProvider.

Inheritors

SlpkLayer

Constructors

Link copied to clipboard
constructor(source: TilesetSource, displayName: String? = source.displayName, blobStore: BlobStore = NoOpBlobStore, fetchConcurrency: Int = 8, byteSource: TileByteSource = HttpTileByteSource())

Types

Link copied to clipboard
object Companion

Properties

Link copied to clipboard

Geographic anchor for altitudeMode. null (default) → root tile's bounding-volume centre, resolved on first render after parse. Set explicitly when the root centre isn't representative (e.g. a long-strip drone capture whose centre is over open water; a wide-area tileset where the anchor should be near the camera).

Link copied to clipboard
Link copied to clipboard

Vertical correction in meters, applied along the ellipsoid normal at altitudeAnchor (or the root tile's bounding-volume centre by default). Interpretation depends on altitudeMode. Common case: the tileset's vertical datum doesn't match WGS84 ellipsoid (geoid offset, local survey datum) — a constant offset realigns it.

Link copied to clipboard
open override var displayName: String?
Link copied to clipboard

Gaussian-splat decoder. Defaults to GltfGaussianLoader (glb-wrapped SPZ via KHR_gaussian_splatting, plus raw .spz). Set to null to disable splat decoding or swap for a different GaussianLoader. Payloads not matching b3dm/i3dm/cmpt/pnts/glTF/tileset.json are offered to GaussianLoader.supports.

Link copied to clipboard

Per-fragment Gaussian-alpha discard threshold; raise to trim the soft splat fringe and cut blend-ROP fillrate.

Link copied to clipboard

Concurrent splat-parse cap. Each in-flight SPZ parse holds tens of MB transient (compressed buffer + decoded position/scale/rot/SH FloatArrays before GPU upload), so the general fetchConcurrency would peak at ~2 GB on a splat tileset. Mesh fetches on the same layer keep fetchConcurrency's budget — only the Gaussian branch gates here. Setter rebinds the semaphore.

Link copied to clipboard

Gaussian-splat offscreen render scale in (0, 1]. Values < 1 draw all splat tiles into a reduced-resolution target and composite-upsample — splat rendering is blended-fill bound, so 0.5 costs ~1/4 the GPU fragment work at slightly softer splat edges. 1.0 restores direct full-resolution drawing. See DrawableGaussianPass.

Link copied to clipboard
open override var isDynamic: Boolean
Link copied to clipboard
open override var isEnabled: Boolean
Link copied to clipboard
open override var isPickEnabled: Boolean
Link copied to clipboard

Whether surface shapes drape onto this layer's mesh tiles the way they drape onto terrain. Mesh content only — point clouds and Gaussian splats never receive shapes.

Link copied to clipboard
open override var maxActiveAltitude: Double
Link copied to clipboard

Hard cap on draw distance in meters. 0 disables.

Link copied to clipboard

Soft GPU-byte budget for the working set. Effective SSE drifts up past this and back down under 70 %.

Link copied to clipboard

Pixel error floor for tile refinement. Setter also resets the effective SSE so changes take effect immediately.

Link copied to clipboard
open override var minActiveAltitude: Double
Link copied to clipboard
open override var opacity: Float
Link copied to clipboard

Base pnts point size in pixels (size-attenuated by the shader). Matches CesiumJS' default; bump for sparse datasets where 1-px points are hard to see.

Link copied to clipboard

Geographic lat/lon envelope of the tileset's root bounding volume. null until the root tileset.json has been fetched, parsed, and rendered at least once. Safe to read from any thread.

Link copied to clipboard

Cast + receive shadows by default. ShadowMode.RECEIVE_ONLY for unlit-from-above datasets; ShadowMode.DISABLED to skip the integration.

Link copied to clipboard

When true, REPLACE parents un-render as soon as ANY child loads (transient gaps); when false (default), parent waits for every visible sibling.

Link copied to clipboard
Link copied to clipboard

Global multiplier on Gaussian-splat projected size.

Link copied to clipboard

3D Tiles 1.0 declarative style; needs an Ogc3dDecoderRegistry.tilesetStyleEvaluator registered to do anything. Setter rebinds eagerly.

Functions

Link copied to clipboard
open override fun getUserProperty(key: Any): Any?
Link copied to clipboard
open override fun hasUserProperty(key: Any): Boolean
Link copied to clipboard
Link copied to clipboard
open override fun putUserProperty(key: Any, value: Any): Any?
Link copied to clipboard
open override fun removeUserProperty(key: Any): Any?
Link copied to clipboard
open override fun render(rc: RenderContext)
Link copied to clipboard

Reset the permanent-failure latch so the next render retries the root fetch.

Link copied to clipboard

Reset a single tile's FAILED state so the next traversal re-fetches it.

Link copied to clipboard
fun shutdown()

Stop fetch coroutines + close the HTTP client.