import * as THREE from "three"; import type { SplatMesh } from "./SplatMesh"; import { CovSplat, DynoUniform, type DynoVal, Gsplat } from "./dyno"; export declare enum SplatSkinningMode { DUAL_QUATERNION = "dual_quaternion", LINEAR_BLEND = "linear_blend" } export type SplatSkinningOptions = { mesh: SplatMesh; numSplats?: number; numBones?: number; mode?: SplatSkinningMode; }; export declare class SplatSkinning { mesh: SplatMesh; numSplats: number; mode: SplatSkinningMode; skinData: Uint16Array; skinTexture: THREE.DataArrayTexture; numBones: number; boneData: Float32Array; boneTexture: THREE.DataTexture; boneRestQuatPosScale: { quat: THREE.Quaternion; pos: THREE.Vector3; scale: THREE.Vector3; }[]; boneRestInvMats: THREE.Matrix4[]; uniform: DynoUniform; constructor(options: SplatSkinningOptions); modify(gsplat: DynoVal): DynoVal; modifyCov(covsplat: DynoVal): DynoVal; setRestQuatPos(boneIndex: number, quat: THREE.Quaternion, pos: THREE.Vector3): void; getRestQuatPos(boneIndex: number, quat: THREE.Quaternion, pos: THREE.Vector3): void; setRestQuatPosScale(boneIndex: number, quat: THREE.Quaternion, pos: THREE.Vector3, scale: THREE.Vector3): void; getRestQuatPosScale(boneIndex: number, quat: THREE.Quaternion, pos: THREE.Vector3, scale: THREE.Vector3): void; setRestMatrix(boneIndex: number, matrix: THREE.Matrix4): void; getRestMatrix(boneIndex: number, matrix: THREE.Matrix4): void; setBoneQuatPos(boneIndex: number, quat: THREE.Quaternion, pos: THREE.Vector3): void; setBoneQuatPosScale(boneIndex: number, quat: THREE.Quaternion, pos: THREE.Vector3, scale: THREE.Vector3): void; setBoneMatrix(boneIndex: number, matrix: THREE.Matrix4): void; setSplatBones(splatIndex: number, boneIndices: THREE.Vector4, weights: THREE.Vector4): void; updateBones(): void; private static readonly UNIT_SCALE; private static readonly relQuat; private static readonly relPos; private static readonly dual; private static readonly skinMat; } export declare const GsplatSkinning: { type: "GsplatSkinning"; }; export declare const defineGsplatSkinning: string; export declare const defineApplyGsplatSkinning: string; export declare const defineApplyCovSplatDQSkinning: string; export declare const defineApplyCovSplatLBSkinning: string;