@spatialwalk/avatarkit
Version:
SPAvatar SDK - 3D Gaussian Splatting Avatar Rendering SDK
159 lines • 4.35 kB
TypeScript
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