UNPKG

@playcanvas/splat-transform

Version:

Library and CLI tool for 3D Gaussian splat format conversion and transformation

43 lines (42 loc) 1.74 kB
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 };