UNPKG

@spatialwalk/avatarkit

Version:

SPAvatar SDK - 3D Gaussian Splatting Avatar Rendering SDK

159 lines 4.35 kB
import { RenderPerformanceStats, AvatarViewOptions, AvatarPlaybackMode } from '../types'; import { Avatar } from './Avatar'; import { AvatarController } from './AvatarController'; export declare class AvatarView { private readonly avatarController; readonly playbackMode: AvatarPlaybackMode; private readonly avatar; private canvas; private renderSystem; private isInitialized; private cameraConfig; private renderingState; private currentKeyframes; private lastRenderedFrameIndex; private lastRealtimeProtoFrame; private idleAnimationLoopId; private realtimeAnimationLoopId; private resizeObserver; private onWindowResize; private transitionKeyframes; private transitionStartTime; private readonly transitionDurationMs; private cachedIdleFirstFrame; private idleCurrentFrameIndex; /** * 对齐两端 Flame 维度:标量统一长度,expression 取最大长度并零填充 */ private alignFlamePair; /** * 判断是否为空 Flame(用于跳过 isLast=true 的哨兵帧) */ private isEmptyFlame; /** * 生成并对齐过渡帧,确保首尾帧与起止帧完全一致 */ private generateAndAlignTransitionFrames; /** * 获取缓存的 Idle 首帧,如果未缓存则获取并缓存 */ private getCachedIdleFirstFrame; /** * 构造函数 * 创建统一的 AvatarController,内部根据配置自动组合网络层 */ constructor(avatar: Avatar, options?: AvatarViewOptions); /** * 获取控制器(公共接口) */ get controller(): AvatarController; /** * 创建canvas元素 */ private createCanvas; /** * 初始化视图系统 */ private initializeView; /** * 初始化渲染系统 */ private initializeRenderSystem; /** * 获取默认相机配置 */ private getDefaultCameraConfig; /** * 根据资源解析最终的相机配置,优先使用角色设置,其次 camera.json */ private resolveCameraConfig; /** * 从角色设置中推导相机配置 */ private deriveCameraConfigFromSettings; /** * 渲染第一帧 */ private renderFirstFrame; /** * 开始idle动画循环 */ private startIdleAnimationLoop; /** * 开始实时对话动画循环 */ private startRealtimeAnimationLoop; /** * 停止idle动画循环 */ private stopIdleAnimationLoop; /** * 停止实时对话动画循环 */ private stopRealtimeAnimationLoop; /** * 停止所有动画循环 */ private stopAllAnimationLoops; /** * 渲染实时帧(由播放层回调调用) */ private renderRealtimeFrame; /** * 过渡完成回调(通知播放层启动音频) */ private onTransitionComplete; /** * 状态转换方法 * 统一管理状态转换,确保状态一致性 */ private setState; /** * 检查是否在实时播放状态(Speaking 或过渡到 Speaking) */ private get isRealtimePlaying(); /** * 检查是否在过渡中 */ private get isTransitioning(); /** * 检查过渡结束后是否回到 Idle */ private get endToIdleAfterTransition(); /** * 处理打断 * 打断时应该生成过渡动画,而不是直接跳回 Idle */ private handleInterrupt; /** * 设置 AvatarController 事件监听器 */ private setupControllerEventListeners; /** * 准备实时渲染(生成 Idle -> Speaking 过渡) */ private prepareRealtimeRendering; /** * 开始实时渲染循环 */ private startRealtimeRendering; /** * 停止实时对话渲染 */ private stopRealtimeRendering; /** * 清理视图资源 * 关闭 avatarController 并清理所有相关资源 */ dispose(): void; /** * 处理尺寸变化:通知渲染系统更新视口与投影 */ private handleResize; /** * 获取渲染性能统计 * @returns 渲染性能统计数据,如果渲染系统未初始化则返回 null */ getPerformanceStats(): RenderPerformanceStats | null; } //# sourceMappingURL=AvatarView.d.ts.map