@realsee/five
Version:
Realsee Renderer SDK
40 lines (39 loc) • 1.88 kB
TypeScript
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<DecodedSpz>;
/**
* 加载 spz 格式的数据,解码在 Worker 中完成,主线程不阻塞。
*/
export declare function parseSpz(fileBytes: Uint8Array | ArrayBuffer): Promise<PBMGaussianSplattingObject>;
export declare function loadSpz(url: string, options?: {
modelUpAxis?: 'Y' | 'Z';
upAxis?: 'Y' | 'Z';
fetcher?: Fetcher;
onDownloadProgress?: (percent: number, loaded?: number, total?: number) => void;
}): Promise<LoadResultType>;