@playcanvas/splat-transform
Version:
Library and CLI tool for 3D Gaussian splat format conversion and transformation
43 lines (42 loc) • 1.74 kB
TypeScript
import { type BlockGridParams } from './voxel-query';
import { DataTable, type Bounds, type GaussianExtentsResult, type GaussianColumns } from '../data-table';
import { GpuVoxelization } from '../gpu';
import { GaussianBVH } from '../spatial';
import type { DeviceCreator } from '../types';
/**
* Context produced by the shared voxel filter setup pipeline.
*/
interface VoxelFilterContext {
pcDataTable: DataTable;
extentsResult: GaussianExtentsResult;
sceneBounds: Bounds;
bvh: GaussianBVH;
gpuVoxelization: GpuVoxelization | null;
}
/**
* Set up the common voxelization pipeline used by both filterCluster and filterFloaters.
*
* Transforms columns to world space, computes Gaussian extents, builds a BVH,
* creates a GPU device, and uploads all Gaussians.
*
* @param dataTable - Input Gaussian splat data.
* @param createDevice - Function to create a GPU device for voxelization.
* @returns Context containing all shared resources.
*/
declare const setupVoxelFilter: (dataTable: DataTable, createDevice: DeviceCreator) => Promise<VoxelFilterContext>;
/**
* Build GaussianColumns from a VoxelFilterContext.
*
* @param ctx - Voxel filter context.
* @returns Column arrays for Gaussian evaluation.
*/
declare const buildGaussianColumns: (ctx: VoxelFilterContext) => GaussianColumns;
/**
* Build BlockGridParams from grid bounds and voxel size.
*
* @param gridBounds - Block-aligned grid bounds.
* @param voxelResolution - Size of each voxel in world units.
* @returns Block grid parameters.
*/
declare const buildBlockGridParams: (gridBounds: Bounds, voxelResolution: number) => BlockGridParams;
export { setupVoxelFilter, buildGaussianColumns, buildBlockGridParams, type VoxelFilterContext };