@playcanvas/splat-transform
Version:
Library and CLI tool for 3D Gaussian splat format conversion and transformation
41 lines (40 loc) • 1.49 kB
TypeScript
import { Vec3 } from 'playcanvas';
import { DataTable } from './data-table';
/**
* Bounds specification with min/max Vec3.
*/
interface Bounds {
min: Vec3;
max: Vec3;
}
/**
* Result of computing Gaussian extents.
*/
interface GaussianExtentsResult {
/**
* DataTable containing extent_x, extent_y, extent_z columns.
* To compute AABB for Gaussian i:
* minX = x[i] - extent_x[i], maxX = x[i] + extent_x[i]
* minY = y[i] - extent_y[i], maxY = y[i] + extent_y[i]
* minZ = z[i] - extent_z[i], maxZ = z[i] + extent_z[i]
*/
extents: DataTable;
/** Scene bounds (union of all Gaussian AABBs) */
sceneBounds: Bounds;
/** Number of Gaussians skipped due to invalid values */
invalidCount: number;
}
/**
* Compute axis-aligned bounding box half-extents for all Gaussians in a DataTable.
*
* Each Gaussian is an oriented ellipsoid defined by position, rotation (quaternion),
* and scale (log scale). This function computes the AABB that encloses each
* rotated ellipsoid and stores only the half-extents. The full AABB can be
* reconstructed at runtime using: min = position - extent, max = position + extent.
*
* @param dataTable - DataTable containing Gaussian splat data
* @returns GaussianExtentsResult with extents DataTable and scene bounds
*/
declare const computeGaussianExtents: (dataTable: DataTable) => GaussianExtentsResult;
export { computeGaussianExtents };
export type { Bounds, GaussianExtentsResult };