import * as THREE from 'three/webgpu'; import { PointsNodeMaterial } from 'three/webgpu'; export interface GaussianSplatsPointsOptions { pointSize?: number | undefined; useColors?: boolean | undefined; color?: THREE.ColorRepresentation | undefined; sizeAttenuation?: boolean | undefined; } export interface GaussianSplatsPointsSourceResource { readPositionsCPU?(): Float32Array | null; readColorsCPU?(): Float32Array | null; } export interface GaussianSplatsPointsSource { count: number; maxSplats: number; _sourceResource?: GaussianSplatsPointsSourceResource | null | undefined; buffers: { positionsScales?: unknown; rotationsColors?: unknown; }; _coordTransform: THREE.Matrix4 | null; matrixWorld: THREE.Matrix4; updateMatrixWorld(force?: boolean): void; } /** * Visualizes Gaussian Splat positions as a point cloud. * * Provides a lightweight point cloud overlay showing the center positions * of all splats in a GaussianSplats instance. * * @class GaussianSplatsPoints * @extends THREE.Points * @short Point cloud visualization of Gaussian Splat centers. * @category Helpers * @tags WebGPU * * @example * const splats = await loader.loadAsync('/model.ply'); * scene.add(splats); * * // Coordinate transform is applied internally to match splats visual output * const points = new GaussianSplatsPoints(splats); * scene.add(points); */ export declare class GaussianSplatsPoints extends THREE.Points { /** Runtime type guard that is always `true` for this point-cloud helper. */ readonly isGaussianSplatsPoints: true; _splats: GaussianSplatsPointsSource; _pointSize: number; _useColors: boolean; _color: THREE.Color; _sizeAttenuation: boolean; /** Stable helper type name. */ static get type(): 'GaussianSplatsPoints'; /** * Create a GaussianSplatsPoints visualization. * * @param {GaussianSplats} splats The GaussianSplats instance to visualize. * @param {Object} [options={}] Options. * @param {number} [options.pointSize=0.01] Size of the points in world units. * @param {boolean} [options.useColors=false] Use splat colors for points. * @param {number} [options.color=0xffffff] Fallback color if useColors is false. * @param {boolean} [options.sizeAttenuation=true] Scale points with distance. */ constructor(splats: GaussianSplatsPointsSource, options?: GaussianSplatsPointsOptions); /** * Update point positions when splat data changes. */ update(): void; /** * Extract positions from packed positionsScales buffer. * Format: [pos0.xyz, –, scale0.xyz, –, pos1.xyz, ...] (vec4 slots; w is padding) * @private * @static * @param {Float32Array} packedArray - The packed positionsScales array * @param {number} count - Number of splats * @returns {Float32Array} Extracted positions (count * 3 floats) */ static _extractPositions(packedArray: Float32Array, count: number): Float32Array; static _getPositionsArray(splats: GaussianSplatsPointsSource, count: number): Float32Array; static _getColorsArray(splats: GaussianSplatsPointsSource, count: number): Float32Array; /** * Extract array from various buffer formats. * @private * @static */ static _getBufferArray(buffer: unknown, fallbackSize: number): Float32Array; /** * Dispose of resources. */ dispose(): void; }