import { Fetcher } from "../../utils/ajax"; import { LoadResultType } from './shared'; import type { PBMGaussianSplattingObject } from '../objects/pbmGaussianSplattingObject'; /** Convert a float16 stored as a uint16 number back to a float32 */ export declare function fromHalf(h: number): number; export interface DecodedSpz { numPoints: number; shDegree: number; /** * SPZ header flags 的 bit0(FLAG_ANTIALIASED)。 * true 表示这份数据在训练期启用了 Mip-Splatting / gsplat 的抗锯齿模式 * (rasterize_mode="antialiased"):其 opacity 是在「渲染端会做 2D 低通 + * opacity 补偿」的前提下拟合出来的,因此渲染端必须做同样的补偿才能得到 * 正确亮度;若不做补偿,远景 splat 会偏亮。 * false 表示原始 3DGS 训练,渲染端应改用纯 dilation(不补偿 opacity)。 */ flagAntiAlias: boolean; positions: Float32Array; colors: Uint8Array; scales: Float32Array; rotations: Float32Array; sh1?: Float32Array; sh2?: Float32Array; sh3?: Float32Array; /** worker 中 pack 好的 GPU 数据(8 uint32/splat),主线程构造 PBMGSObject 后可直接用于上传 */ packedData?: Uint32Array; } /** 解码 SPZ 字节流为原始属性数组(gunzip + 逐字段解析) */ export declare function decodeSpz(fileBytes: Uint8Array | ArrayBuffer): Promise; /** * 加载 spz 格式的数据,解码在 Worker 中完成,主线程不阻塞。 */ export declare function parseSpz(fileBytes: Uint8Array | ArrayBuffer): Promise; export declare function loadSpz(url: string, options?: { modelUpAxis?: 'Y' | 'Z'; upAxis?: 'Y' | 'Z'; fetcher?: Fetcher; onDownloadProgress?: (percent: number, loaded?: number, total?: number) => void; }): Promise;