@spatialwalk/avatarkit 1.0.0-beta.3 → 1.0.0-beta.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +441 -0
- package/README.md +328 -138
- package/dist/StreamingAudioPlayer-B07iPxK4.js +398 -0
- package/dist/animation/AnimationWebSocketClient.d.ts +6 -24
- package/dist/animation/utils/eventEmitter.d.ts +0 -4
- package/dist/animation/utils/flameConverter.d.ts +3 -11
- package/dist/audio/AnimationPlayer.d.ts +5 -29
- package/dist/audio/StreamingAudioPlayer.d.ts +8 -66
- package/dist/avatar_core_wasm-i0Ocpx6q.js +2693 -0
- package/dist/avatar_core_wasm.wasm +0 -0
- package/dist/config/app-config.d.ts +4 -13
- package/dist/config/constants.d.ts +18 -11
- package/dist/config/sdk-config-loader.d.ts +2 -9
- package/dist/core/Avatar.d.ts +0 -15
- package/dist/core/AvatarController.d.ts +49 -109
- package/dist/core/AvatarDownloader.d.ts +0 -95
- package/dist/core/AvatarManager.d.ts +7 -18
- package/dist/core/AvatarSDK.d.ts +21 -0
- package/dist/core/AvatarView.d.ts +25 -119
- package/dist/core/NetworkLayer.d.ts +1 -0
- package/dist/generated/driveningress/v1/driveningress.d.ts +1 -12
- package/dist/generated/driveningress/v2/driveningress.d.ts +0 -3
- package/dist/generated/google/protobuf/struct.d.ts +5 -39
- package/dist/generated/google/protobuf/timestamp.d.ts +1 -103
- package/dist/index-CCBBCJi2.js +7915 -0
- package/dist/index.d.ts +1 -6
- package/dist/index.js +17 -17
- package/dist/renderer/RenderSystem.d.ts +1 -77
- package/dist/renderer/covariance.d.ts +0 -12
- package/dist/renderer/renderer.d.ts +0 -1
- package/dist/renderer/sortSplats.d.ts +0 -11
- package/dist/renderer/webgl/reorderData.d.ts +0 -13
- package/dist/renderer/webgl/webglRenderer.d.ts +3 -40
- package/dist/renderer/webgpu/webgpuRenderer.d.ts +3 -28
- package/dist/types/character-settings.d.ts +0 -5
- package/dist/types/character.d.ts +3 -21
- package/dist/types/index.d.ts +38 -18
- package/dist/utils/animation-interpolation.d.ts +3 -13
- package/dist/utils/client-id.d.ts +1 -0
- package/dist/utils/cls-tracker.d.ts +11 -0
- package/dist/utils/conversationId.d.ts +1 -0
- package/dist/utils/error-utils.d.ts +1 -25
- package/dist/utils/heartbeat-manager.d.ts +18 -0
- package/dist/utils/id-manager.d.ts +37 -0
- package/dist/utils/logger.d.ts +5 -11
- package/dist/utils/usage-tracker.d.ts +5 -0
- package/dist/vanilla/vite.config.d.ts +2 -0
- package/dist/wasm/avatarCoreAdapter.d.ts +11 -97
- package/dist/wasm/avatarCoreMemory.d.ts +5 -54
- package/package.json +10 -4
- package/dist/StreamingAudioPlayer-BeLlDiwE.js +0 -288
- package/dist/StreamingAudioPlayer-BeLlDiwE.js.map +0 -1
- package/dist/animation/AnimationWebSocketClient.d.ts.map +0 -1
- package/dist/animation/utils/eventEmitter.d.ts.map +0 -1
- package/dist/animation/utils/flameConverter.d.ts.map +0 -1
- package/dist/audio/AnimationPlayer.d.ts.map +0 -1
- package/dist/audio/StreamingAudioPlayer.d.ts.map +0 -1
- package/dist/avatar_core_wasm-DmkU6dYn.js +0 -1666
- package/dist/avatar_core_wasm-DmkU6dYn.js.map +0 -1
- package/dist/config/app-config.d.ts.map +0 -1
- package/dist/config/constants.d.ts.map +0 -1
- package/dist/config/sdk-config-loader.d.ts.map +0 -1
- package/dist/core/Avatar.d.ts.map +0 -1
- package/dist/core/AvatarController.d.ts.map +0 -1
- package/dist/core/AvatarDownloader.d.ts.map +0 -1
- package/dist/core/AvatarKit.d.ts +0 -60
- package/dist/core/AvatarKit.d.ts.map +0 -1
- package/dist/core/AvatarManager.d.ts.map +0 -1
- package/dist/core/AvatarView.d.ts.map +0 -1
- package/dist/generated/driveningress/v1/driveningress.d.ts.map +0 -1
- package/dist/generated/driveningress/v2/driveningress.d.ts.map +0 -1
- package/dist/generated/google/protobuf/struct.d.ts.map +0 -1
- package/dist/generated/google/protobuf/timestamp.d.ts.map +0 -1
- package/dist/index-NmYXWJnL.js +0 -9712
- package/dist/index-NmYXWJnL.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/renderer/RenderSystem.d.ts.map +0 -1
- package/dist/renderer/covariance.d.ts.map +0 -1
- package/dist/renderer/renderer.d.ts.map +0 -1
- package/dist/renderer/sortSplats.d.ts.map +0 -1
- package/dist/renderer/webgl/reorderData.d.ts.map +0 -1
- package/dist/renderer/webgl/webglRenderer.d.ts.map +0 -1
- package/dist/renderer/webgpu/webgpuRenderer.d.ts.map +0 -1
- package/dist/types/character-settings.d.ts.map +0 -1
- package/dist/types/character.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/utils/animation-interpolation.d.ts.map +0 -1
- package/dist/utils/error-utils.d.ts.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/posthog-tracker.d.ts +0 -82
- package/dist/utils/posthog-tracker.d.ts.map +0 -1
- package/dist/utils/reqId.d.ts +0 -20
- package/dist/utils/reqId.d.ts.map +0 -1
- package/dist/wasm/avatarCoreAdapter.d.ts.map +0 -1
- package/dist/wasm/avatarCoreMemory.d.ts.map +0 -1
|
Binary file
|
|
@@ -2,19 +2,8 @@ export declare const APP_CONFIG: {
|
|
|
2
2
|
testEnv: boolean;
|
|
3
3
|
readonly debug: boolean;
|
|
4
4
|
rendering: {
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* 排序模式
|
|
8
|
-
* - 'balance': 性能优先,首帧排序后复用(默认)
|
|
9
|
-
* - 'quality': 质量优先,每帧重新排序
|
|
10
|
-
*/
|
|
5
|
+
|
|
11
6
|
sortMode: "balance" | "quality";
|
|
12
|
-
/**
|
|
13
|
-
* 背景显示模式
|
|
14
|
-
* - 'cover': 保持宽高比,覆盖整个画布(默认)
|
|
15
|
-
* - 'stretch': 拉伸填充整个画布
|
|
16
|
-
*/
|
|
17
|
-
backgroundMode: "cover" | "stretch";
|
|
18
7
|
};
|
|
19
8
|
camera: {
|
|
20
9
|
position: [number, number, number];
|
|
@@ -26,6 +15,9 @@ export declare const APP_CONFIG: {
|
|
|
26
15
|
animation: {
|
|
27
16
|
fps: number;
|
|
28
17
|
};
|
|
18
|
+
audio: {
|
|
19
|
+
sampleRate: number;
|
|
20
|
+
};
|
|
29
21
|
avatar: {
|
|
30
22
|
baseAssetsPath: string;
|
|
31
23
|
wasmPath: string;
|
|
@@ -45,4 +37,3 @@ export declare const APP_CONFIG: {
|
|
|
45
37
|
enablePerformanceMetrics: boolean;
|
|
46
38
|
};
|
|
47
39
|
};
|
|
48
|
-
//# sourceMappingURL=app-config.d.ts.map
|
|
@@ -1,13 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const
|
|
3
|
-
|
|
1
|
+
import { Environment } from '../types';
|
|
2
|
+
export declare const CLS_TRACK_EVENTS: boolean;
|
|
3
|
+
|
|
4
|
+
export declare function getCLSConfig(environment: Environment): {
|
|
5
|
+
endpoint: string;
|
|
6
|
+
topicId: string;
|
|
7
|
+
secretId: string;
|
|
8
|
+
secretKey: string;
|
|
9
|
+
token: string;
|
|
10
|
+
};
|
|
11
|
+
export declare const CLS_CONFIG: {
|
|
12
|
+
endpoint: string;
|
|
13
|
+
topicId: string;
|
|
14
|
+
secretId: string;
|
|
15
|
+
secretKey: string;
|
|
16
|
+
token: string;
|
|
17
|
+
};
|
|
4
18
|
export declare const ENV_TEST: boolean;
|
|
5
|
-
|
|
6
|
-
* Comprehensive debug mode check
|
|
7
|
-
* Returns true if:
|
|
8
|
-
* - VITE_ENV_TEST is 'true', OR
|
|
9
|
-
* - Running in DEV mode, OR
|
|
10
|
-
* - URL has debug=1 parameter
|
|
11
|
-
*/
|
|
19
|
+
|
|
12
20
|
export declare function isDebugMode(): boolean;
|
|
13
|
-
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
import { Environment } from '../types';
|
|
2
|
-
|
|
3
|
-
* 从远程配置接口获取 SDK 配置
|
|
4
|
-
* @param version SDK 版本号
|
|
5
|
-
* @returns 解析后的配置映射
|
|
6
|
-
*/
|
|
2
|
+
|
|
7
3
|
export declare function fetchSdkConfig(version: string): Promise<Partial<Record<Environment, string>>>;
|
|
8
|
-
|
|
9
|
-
* 清除配置缓存(用于测试或重新加载)
|
|
10
|
-
*/
|
|
4
|
+
|
|
11
5
|
export declare function clearSdkConfigCache(): void;
|
|
12
|
-
//# sourceMappingURL=sdk-config-loader.d.ts.map
|
package/dist/core/Avatar.d.ts
CHANGED
|
@@ -4,20 +4,5 @@ export declare class Avatar {
|
|
|
4
4
|
readonly id: string;
|
|
5
5
|
private characterMeta;
|
|
6
6
|
private resources;
|
|
7
|
-
/**
|
|
8
|
-
* 构造函数(内部使用)
|
|
9
|
-
* @param id 数字人 ID
|
|
10
|
-
* @param characterMeta 角色元数据
|
|
11
|
-
* @param resources 资源数据
|
|
12
|
-
*/
|
|
13
7
|
constructor(id: string, characterMeta: CharacterMeta, resources: PreloadResult);
|
|
14
|
-
/**
|
|
15
|
-
* 获取角色元数据(内部使用)
|
|
16
|
-
*/
|
|
17
|
-
getCharacterMeta(): CharacterMeta;
|
|
18
|
-
/**
|
|
19
|
-
* 获取资源数据(内部使用)
|
|
20
|
-
*/
|
|
21
|
-
getResources(): PreloadResult;
|
|
22
8
|
}
|
|
23
|
-
//# sourceMappingURL=Avatar.d.ts.map
|
|
@@ -1,125 +1,65 @@
|
|
|
1
1
|
import { Flame } from '../generated/driveningress/v1/driveningress';
|
|
2
2
|
import { Avatar } from './Avatar';
|
|
3
3
|
import { AnimationPlayer } from '../audio/AnimationPlayer';
|
|
4
|
-
import { AvatarState, ConnectionState } from '../types';
|
|
4
|
+
import { AvatarState, ConnectionState, DrivingServiceMode, ConversationState } from '../types';
|
|
5
5
|
export declare class AvatarController {
|
|
6
|
+
private networkLayer?;
|
|
7
|
+
private readonly playbackMode;
|
|
6
8
|
protected avatar: Avatar;
|
|
7
|
-
protected isConnected: boolean;
|
|
8
|
-
protected isMuted: boolean;
|
|
9
|
-
protected currentState: AvatarState;
|
|
10
9
|
protected animationPlayer: AnimationPlayer | null;
|
|
11
10
|
protected currentKeyframes: Flame[];
|
|
12
|
-
protected
|
|
13
|
-
|
|
11
|
+
protected pendingAudioChunks: Array<{
|
|
12
|
+
data: Uint8Array;
|
|
13
|
+
isLast: boolean;
|
|
14
|
+
}>;
|
|
14
15
|
protected isPlaying: boolean;
|
|
15
|
-
|
|
16
|
+
protected isConnected: boolean;
|
|
17
|
+
protected currentState: AvatarState;
|
|
18
|
+
private currentConversationId;
|
|
19
|
+
private reqEnd;
|
|
16
20
|
onConnectionState: ((state: ConnectionState) => void) | null;
|
|
17
|
-
|
|
21
|
+
onConversationState: ((state: ConversationState) => void) | null;
|
|
18
22
|
onError: ((error: Error) => void) | null;
|
|
19
23
|
private eventListeners;
|
|
20
|
-
private
|
|
21
|
-
private
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
private renderCallback?;
|
|
25
|
+
private characterHandle;
|
|
26
|
+
private playbackLoopId;
|
|
27
|
+
private lastRenderedFrameIndex;
|
|
28
|
+
private keyframesOffset;
|
|
29
|
+
private readonly MAX_KEYFRAMES;
|
|
30
|
+
private readonly KEYFRAMES_CLEANUP_THRESHOLD;
|
|
31
|
+
private isAudioOnlyMode;
|
|
32
|
+
private hostModeMetrics;
|
|
33
|
+
private readonly audioBytesPerSecond;
|
|
34
|
+
constructor(avatar: Avatar, options?: {
|
|
35
|
+
playbackMode?: DrivingServiceMode;
|
|
36
|
+
});
|
|
37
|
+
getCurrentConversationId(): string | null;
|
|
26
38
|
start(): Promise<void>;
|
|
27
|
-
|
|
28
|
-
* 发送音频数据
|
|
29
|
-
*/
|
|
30
|
-
send(audioData: ArrayBuffer, end?: boolean): void;
|
|
31
|
-
/**
|
|
32
|
-
* 发送文字消息(Animation Only 模式不支持文字输入)
|
|
33
|
-
*/
|
|
34
|
-
sendText(_text: string): void;
|
|
35
|
-
/**
|
|
36
|
-
* 打断当前对话
|
|
37
|
-
*/
|
|
38
|
-
interrupt(): void;
|
|
39
|
-
/**
|
|
40
|
-
* 关闭服务(断开连接)
|
|
41
|
-
*/
|
|
39
|
+
send(audioData: ArrayBuffer, end?: boolean): string | null;
|
|
42
40
|
close(): void;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* 获取连接状态
|
|
63
|
-
*/
|
|
64
|
-
get connected(): boolean;
|
|
65
|
-
/**
|
|
66
|
-
* 为 AvatarView 提供注册内部事件的接口
|
|
67
|
-
* @internal
|
|
68
|
-
*/
|
|
69
|
-
setupInternalEventListeners(callbacks: {
|
|
70
|
-
onKeyframesUpdate?: (keyframes: Flame[]) => void;
|
|
71
|
-
onStartRendering?: () => void;
|
|
72
|
-
onStopRendering?: () => void;
|
|
73
|
-
}): void;
|
|
74
|
-
/**
|
|
75
|
-
* 初始化播放器和客户端
|
|
76
|
-
*/
|
|
77
|
-
protected initializePlayers(): Promise<void>;
|
|
78
|
-
/**
|
|
79
|
-
* 清理播放器和客户端
|
|
80
|
-
*/
|
|
81
|
-
protected cleanupPlayers(): void;
|
|
82
|
-
/**
|
|
83
|
-
* 停止播放
|
|
84
|
-
*/
|
|
41
|
+
yieldAudioData(data: Uint8Array, isLast?: boolean): string | null;
|
|
42
|
+
yieldFramesData(keyframes: Flame[], conversationId: string): void;
|
|
43
|
+
pause(): void;
|
|
44
|
+
resume(): Promise<void>;
|
|
45
|
+
interrupt(): void;
|
|
46
|
+
clear(): void;
|
|
47
|
+
private generateAndLogNewConversationId;
|
|
48
|
+
private clearPlaybackData;
|
|
49
|
+
private resetConversationIdState;
|
|
50
|
+
private getEffectiveConversationId;
|
|
51
|
+
setVolume(volume: number): void;
|
|
52
|
+
getVolume(): number;
|
|
53
|
+
private startStreamingPlaybackInternal;
|
|
54
|
+
private startPlaybackLoop;
|
|
55
|
+
private stopPlaybackLoop;
|
|
56
|
+
private enableAudioOnlyMode;
|
|
57
|
+
private startAudioOnlyPlayback;
|
|
58
|
+
private startAudioMonitoringLoop;
|
|
85
59
|
protected stopPlayback(): void;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
*/
|
|
89
|
-
protected startPlayback(): Promise<void>;
|
|
90
|
-
/**
|
|
91
|
-
* 注册内部事件监听器(仅供内部使用)
|
|
92
|
-
*/
|
|
60
|
+
protected cleanupPlayers(): void;
|
|
61
|
+
private addAudioChunkToBuffer;
|
|
93
62
|
private registerEventListener;
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
*/
|
|
97
|
-
private emit;
|
|
98
|
-
/**
|
|
99
|
-
* 处理接收到的消息
|
|
100
|
-
*/
|
|
101
|
-
private handleMessage;
|
|
102
|
-
/**
|
|
103
|
-
* 处理动画消息(从服务器接收)
|
|
104
|
-
*/
|
|
105
|
-
private handleAnimationMessage;
|
|
106
|
-
/**
|
|
107
|
-
* 开始流式播放(准备播放器、添加音频数据、开始播放动画)
|
|
108
|
-
*/
|
|
109
|
-
private startStreamingPlayback;
|
|
110
|
-
/**
|
|
111
|
-
* 开始同步播放(用户音频 + 动画)
|
|
112
|
-
* 注意:流式模式下,这个方法由 startStreamingPlayback() 调用
|
|
113
|
-
*/
|
|
114
|
-
private startSynchronizedPlayback;
|
|
115
|
-
/**
|
|
116
|
-
* 将 PCM 数据转换为 WAV Blob URL
|
|
117
|
-
* 注意:流式模式下不再需要此方法,保留用于兼容性
|
|
118
|
-
*/
|
|
119
|
-
private createAudioBlobURL;
|
|
120
|
-
/**
|
|
121
|
-
* 设置 WebSocket 事件监听器
|
|
122
|
-
*/
|
|
123
|
-
private setupWebSocketListeners;
|
|
63
|
+
protected emit(event: string, data?: any): void;
|
|
64
|
+
private reportDrivingLatency;
|
|
124
65
|
}
|
|
125
|
-
//# sourceMappingURL=AvatarController.d.ts.map
|
|
@@ -1,100 +1,5 @@
|
|
|
1
|
-
import { CharacterMeta, PreloadCameraSettings } from '../types/character';
|
|
2
|
-
import { CharacterSettings } from '../types/character-settings';
|
|
3
|
-
interface ProgressInfo {
|
|
4
|
-
stage: string;
|
|
5
|
-
filename: string;
|
|
6
|
-
loaded: number;
|
|
7
|
-
total: number;
|
|
8
|
-
progress: number;
|
|
9
|
-
}
|
|
10
|
-
type ProgressCallback = (info: ProgressInfo) => void;
|
|
11
|
-
interface TemplateResources {
|
|
12
|
-
[key: string]: ArrayBuffer;
|
|
13
|
-
}
|
|
14
|
-
interface FlameResources {
|
|
15
|
-
flameModel?: {
|
|
16
|
-
remote?: string;
|
|
17
|
-
};
|
|
18
|
-
flameTemplate?: {
|
|
19
|
-
remote?: string;
|
|
20
|
-
};
|
|
21
|
-
teethPb?: {
|
|
22
|
-
remote?: string;
|
|
23
|
-
};
|
|
24
|
-
teethNpz?: {
|
|
25
|
-
remote?: string;
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
interface CharacterDataResult {
|
|
29
|
-
shape: ArrayBuffer;
|
|
30
|
-
pointCloud: ArrayBuffer;
|
|
31
|
-
idleAnimation?: ArrayBuffer;
|
|
32
|
-
monoAnimation?: ArrayBuffer;
|
|
33
|
-
monoAudioUrl?: string;
|
|
34
|
-
}
|
|
35
|
-
export interface PreloadResult {
|
|
36
|
-
templateResources: TemplateResources;
|
|
37
|
-
characterData: CharacterDataResult;
|
|
38
|
-
preloadCameraSettings?: PreloadCameraSettings;
|
|
39
|
-
characterSettings?: CharacterSettings;
|
|
40
|
-
}
|
|
41
1
|
export declare class AvatarDownloader {
|
|
42
2
|
private baseAssetsPath;
|
|
43
|
-
private characterAssets;
|
|
44
3
|
constructor(baseAssetsPath?: string);
|
|
45
|
-
/**
|
|
46
|
-
* Load template resources from CharacterMeta flame CDN URLs
|
|
47
|
-
* Falls back to global CDN config if not provided by API
|
|
48
|
-
*/
|
|
49
|
-
loadTemplateResources(flameResources?: FlameResources, progressCallback?: ProgressCallback | null): Promise<TemplateResources>;
|
|
50
|
-
/**
|
|
51
|
-
* Load global FLAME template resources from CDN
|
|
52
|
-
* Uses centralized FLAME CDN config (shared across all characters)
|
|
53
|
-
*/
|
|
54
|
-
private loadGlobalFlameResources;
|
|
55
|
-
/**
|
|
56
|
-
* Load camera settings from CharacterMeta (optional)
|
|
57
|
-
*/
|
|
58
|
-
loadCameraSettings(characterMeta: CharacterMeta): Promise<PreloadCameraSettings | undefined>;
|
|
59
|
-
/**
|
|
60
|
-
* Load character data from CharacterMeta (iOS compatible)
|
|
61
|
-
*/
|
|
62
|
-
loadCharacterData(characterMeta: CharacterMeta, options?: {
|
|
63
|
-
loadMonologue?: boolean;
|
|
64
|
-
progressCallback?: ProgressCallback | null;
|
|
65
|
-
}): Promise<CharacterDataResult>;
|
|
66
|
-
/**
|
|
67
|
-
* Preload all resources (template + character data + camera info + settings)
|
|
68
|
-
*/
|
|
69
|
-
preloadResources(characterMeta: CharacterMeta, options?: {
|
|
70
|
-
loadMonologue?: boolean;
|
|
71
|
-
progressCallback?: ProgressCallback | null;
|
|
72
|
-
}): Promise<PreloadResult>;
|
|
73
|
-
/**
|
|
74
|
-
* Get loaded character asset by key
|
|
75
|
-
*/
|
|
76
|
-
getCharacterAsset(key: string): ArrayBuffer | undefined;
|
|
77
|
-
/**
|
|
78
|
-
* Clear cached assets
|
|
79
|
-
*/
|
|
80
|
-
clear(): void;
|
|
81
|
-
/**
|
|
82
|
-
* Get Main App API Client (enjoi.spatialwalk.top)
|
|
83
|
-
* Used for: character list, auth, customization, etc.
|
|
84
|
-
*/
|
|
85
|
-
private getMainAppClient;
|
|
86
|
-
/**
|
|
87
|
-
* Get SPAvatarKit SDK API Client (api.spatialwalk.top)
|
|
88
|
-
* Used for: character details and resource URLs (public endpoints, no auth required)
|
|
89
|
-
*/
|
|
90
4
|
private getSdkApiClient;
|
|
91
|
-
/**
|
|
92
|
-
* Get single character by ID from SPAvatarKit SDK API (v2, iOS compatible)
|
|
93
|
-
* Domain: api.spatialwalk.top
|
|
94
|
-
* Auth: Public endpoint, no authentication required
|
|
95
|
-
* Returns CharacterMeta with nested resource structure
|
|
96
|
-
*/
|
|
97
|
-
getCharacterById(characterId: string): Promise<CharacterMeta>;
|
|
98
5
|
}
|
|
99
|
-
export {};
|
|
100
|
-
//# sourceMappingURL=AvatarDownloader.d.ts.map
|
|
@@ -3,24 +3,13 @@ import { Avatar } from './Avatar';
|
|
|
3
3
|
export declare class AvatarManager {
|
|
4
4
|
private static _instance;
|
|
5
5
|
private avatarDownloader;
|
|
6
|
-
private
|
|
7
|
-
|
|
8
|
-
* 通过全局单例来访问
|
|
9
|
-
*/
|
|
6
|
+
private avatarCache;
|
|
7
|
+
private loadingPromises;
|
|
10
8
|
static get shared(): AvatarManager;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* @returns Promise<Avatar>
|
|
17
|
-
*/
|
|
18
|
-
load(id: string, onProgress?: (progress: LoadProgressInfo) => void, options?: {
|
|
19
|
-
enableMonologue?: boolean;
|
|
20
|
-
}): Promise<Avatar>;
|
|
21
|
-
/**
|
|
22
|
-
* 清理资源加载器缓存
|
|
23
|
-
*/
|
|
9
|
+
load(id: string, onProgress?: (progress: LoadProgressInfo) => void): Promise<Avatar>;
|
|
10
|
+
private doLoad;
|
|
11
|
+
retrieve(id: string): Avatar | undefined;
|
|
12
|
+
clear(id: string): void;
|
|
13
|
+
clearAll(): void;
|
|
24
14
|
clearCache(): void;
|
|
25
15
|
}
|
|
26
|
-
//# sourceMappingURL=AvatarManager.d.ts.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Configuration } from '../types';
|
|
2
|
+
export declare class AvatarSDK {
|
|
3
|
+
private static _isInitialized;
|
|
4
|
+
private static _configuration;
|
|
5
|
+
private static readonly _version;
|
|
6
|
+
private static _avatarCore;
|
|
7
|
+
private static _dynamicSdkConfig;
|
|
8
|
+
static initialize(appId: string, configuration: Configuration): Promise<void>;
|
|
9
|
+
private static initializeWASMModule;
|
|
10
|
+
private static initializeTemplateResources;
|
|
11
|
+
static setSessionToken(token: string): void;
|
|
12
|
+
static setUserId(userId: string): void;
|
|
13
|
+
static get isInitialized(): boolean;
|
|
14
|
+
static get appId(): string | null;
|
|
15
|
+
static get configuration(): Configuration | null;
|
|
16
|
+
static get sessionToken(): string | null;
|
|
17
|
+
static get userId(): string | null;
|
|
18
|
+
static get version(): string;
|
|
19
|
+
static cleanup(): void;
|
|
20
|
+
private static _fetchSdkConfig;
|
|
21
|
+
}
|
|
@@ -1,158 +1,64 @@
|
|
|
1
|
-
import { CameraConfig, RenderPerformanceStats } from '../types';
|
|
2
1
|
import { Avatar } from './Avatar';
|
|
3
2
|
import { AvatarController } from './AvatarController';
|
|
4
3
|
export declare class AvatarView {
|
|
5
|
-
readonly avatarController
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
private readonly avatarController;
|
|
5
|
+
private readonly avatar;
|
|
6
|
+
readonly ready: Promise<void>;
|
|
8
7
|
private canvas;
|
|
9
8
|
private renderSystem;
|
|
10
9
|
private isInitialized;
|
|
11
10
|
private cameraConfig;
|
|
12
|
-
private
|
|
11
|
+
private renderingState;
|
|
13
12
|
private currentKeyframes;
|
|
14
13
|
private lastRenderedFrameIndex;
|
|
15
|
-
private realtimeStartTime;
|
|
16
14
|
private lastRealtimeProtoFrame;
|
|
17
|
-
private idleResumeIndexPending;
|
|
18
15
|
private idleAnimationLoopId;
|
|
19
16
|
private realtimeAnimationLoopId;
|
|
20
17
|
private resizeObserver;
|
|
21
18
|
private onWindowResize;
|
|
19
|
+
private frameCount;
|
|
20
|
+
private lastFpsUpdate;
|
|
21
|
+
private currentFPS;
|
|
22
22
|
private transitionKeyframes;
|
|
23
|
-
private isTransitioning;
|
|
24
23
|
private transitionStartTime;
|
|
25
24
|
private readonly transitionDurationMs;
|
|
26
|
-
private endToIdleAfterTransition;
|
|
27
25
|
private cachedIdleFirstFrame;
|
|
28
26
|
private idleCurrentFrameIndex;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
private characterHandle;
|
|
28
|
+
private characterId;
|
|
29
|
+
private _isOpaque;
|
|
32
30
|
private alignFlamePair;
|
|
33
|
-
/**
|
|
34
|
-
* 判断是否为空 Flame(用于跳过 isLast=true 的哨兵帧)
|
|
35
|
-
*/
|
|
36
|
-
private isEmptyFlame;
|
|
37
|
-
/**
|
|
38
|
-
* 生成并对齐过渡帧,确保首尾帧与起止帧完全一致
|
|
39
|
-
*/
|
|
40
31
|
private generateAndAlignTransitionFrames;
|
|
41
|
-
/**
|
|
42
|
-
* 获取缓存的 Idle 首帧,如果未缓存则获取并缓存
|
|
43
|
-
*/
|
|
44
32
|
private getCachedIdleFirstFrame;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
* 使用 AvatarController(纯动画驱动模式)
|
|
48
|
-
*/
|
|
49
|
-
constructor(avatar: Avatar, canvasContainer?: HTMLElement);
|
|
50
|
-
/**
|
|
51
|
-
* 创建canvas元素
|
|
52
|
-
*/
|
|
33
|
+
constructor(avatar: Avatar, container: HTMLElement);
|
|
34
|
+
get controller(): AvatarController;
|
|
53
35
|
private createCanvas;
|
|
54
|
-
/**
|
|
55
|
-
* 获取canvas元素(供外部访问)
|
|
56
|
-
*/
|
|
57
|
-
getCanvas(): HTMLCanvasElement;
|
|
58
|
-
/**
|
|
59
|
-
* 初始化视图系统
|
|
60
|
-
*/
|
|
61
36
|
private initializeView;
|
|
62
|
-
/**
|
|
63
|
-
* 初始化渲染系统
|
|
64
|
-
*/
|
|
65
37
|
private initializeRenderSystem;
|
|
66
|
-
/**
|
|
67
|
-
* 获取默认相机配置
|
|
68
|
-
*/
|
|
69
38
|
private getDefaultCameraConfig;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
*/
|
|
73
|
-
private convertPreloadCameraToConfig;
|
|
74
|
-
/**
|
|
75
|
-
* 渲染第一帧
|
|
76
|
-
*/
|
|
39
|
+
private resolveCameraConfig;
|
|
40
|
+
private deriveCameraConfigFromSettings;
|
|
77
41
|
private renderFirstFrame;
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
*/
|
|
42
|
+
private updateFPS;
|
|
43
|
+
private initFPS;
|
|
81
44
|
private startIdleAnimationLoop;
|
|
82
|
-
/**
|
|
83
|
-
* 开始实时对话动画循环
|
|
84
|
-
*/
|
|
85
45
|
private startRealtimeAnimationLoop;
|
|
86
|
-
/**
|
|
87
|
-
* 停止idle动画循环
|
|
88
|
-
*/
|
|
89
46
|
private stopIdleAnimationLoop;
|
|
90
|
-
/**
|
|
91
|
-
* 停止实时对话动画循环
|
|
92
|
-
*/
|
|
93
47
|
private stopRealtimeAnimationLoop;
|
|
94
|
-
/**
|
|
95
|
-
* 停止所有动画循环
|
|
96
|
-
*/
|
|
97
48
|
private stopAllAnimationLoops;
|
|
98
|
-
/**
|
|
99
|
-
* 渲染实时对话帧
|
|
100
|
-
*/
|
|
101
49
|
private renderRealtimeFrame;
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
50
|
+
private setState;
|
|
51
|
+
private get isRealtimePlaying();
|
|
52
|
+
private get isTransitioning();
|
|
53
|
+
private get endToIdleAfterTransition();
|
|
54
|
+
private handleInterrupt;
|
|
105
55
|
private setupControllerEventListeners;
|
|
106
|
-
|
|
107
|
-
* 设置当前关键帧数据
|
|
108
|
-
*/
|
|
109
|
-
private setCurrentKeyframes;
|
|
110
|
-
/**
|
|
111
|
-
* 开始实时对话渲染
|
|
112
|
-
*/
|
|
56
|
+
private prepareRealtimeRendering;
|
|
113
57
|
private startRealtimeRendering;
|
|
114
|
-
/**
|
|
115
|
-
* 停止实时对话渲染
|
|
116
|
-
*/
|
|
117
58
|
private stopRealtimeRendering;
|
|
118
|
-
/**
|
|
119
|
-
* 设置背景图
|
|
120
|
-
* 支持开发者来设置渲染数字人背景图
|
|
121
|
-
*/
|
|
122
|
-
setBackgroundImage(imageUrl: string | null): void;
|
|
123
|
-
/**
|
|
124
|
-
* 设置背景是否不透明
|
|
125
|
-
* 支持开发者来设置是否背景不透明
|
|
126
|
-
*/
|
|
127
|
-
setBackgroundOpaque(opaque: boolean): void;
|
|
128
|
-
/**
|
|
129
|
-
* 清理视图资源
|
|
130
|
-
* 关闭 avatarController 并清理所有相关资源
|
|
131
|
-
*/
|
|
132
59
|
dispose(): void;
|
|
133
|
-
/**
|
|
134
|
-
* 获取相机配置
|
|
135
|
-
*/
|
|
136
|
-
getCameraConfig(): CameraConfig | null;
|
|
137
|
-
/**
|
|
138
|
-
* 更新相机配置
|
|
139
|
-
*/
|
|
140
|
-
updateCameraConfig(cameraConfig: CameraConfig): void;
|
|
141
|
-
/**
|
|
142
|
-
* 处理尺寸变化:通知渲染系统更新视口与投影
|
|
143
|
-
*/
|
|
144
60
|
private handleResize;
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
*/
|
|
149
|
-
getPerformanceStats(): RenderPerformanceStats | null;
|
|
150
|
-
/**
|
|
151
|
-
* 将 CameraInfo 转换为 CameraConfig
|
|
152
|
-
*/
|
|
153
|
-
/**
|
|
154
|
-
* 设置 canvas 的 CSS 背景(与 app 对齐)
|
|
155
|
-
*/
|
|
156
|
-
private setCanvasBackground;
|
|
61
|
+
get isOpaque(): boolean;
|
|
62
|
+
set isOpaque(value: boolean);
|
|
63
|
+
setBackgroundImage(image: HTMLImageElement | string | null): void;
|
|
157
64
|
}
|
|
158
|
-
//# sourceMappingURL=AvatarView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -9,29 +9,19 @@ export declare enum MessageType {
|
|
|
9
9
|
}
|
|
10
10
|
export declare function messageTypeFromJSON(object: any): MessageType;
|
|
11
11
|
export declare function messageTypeToJSON(object: MessageType): string;
|
|
12
|
-
|
|
13
|
-
* 兼容流式传输,只要 req_id 相同,客户端可以将音频分段发若干个 ClientAudioInputData
|
|
14
|
-
* 新 req_id 出现后,老 req_id 的请求将被忽略
|
|
15
|
-
*/
|
|
12
|
+
|
|
16
13
|
export interface ClientAudioInputData {
|
|
17
14
|
reqId: string;
|
|
18
15
|
audio: Uint8Array;
|
|
19
16
|
end: boolean;
|
|
20
17
|
}
|
|
21
18
|
export interface Flame {
|
|
22
|
-
/** 平移 */
|
|
23
19
|
translation: number[];
|
|
24
|
-
/** 旋转 */
|
|
25
20
|
rotation: number[];
|
|
26
|
-
/** 脖子 */
|
|
27
21
|
neckPose: number[];
|
|
28
|
-
/** 下巴 */
|
|
29
22
|
jawPose: number[];
|
|
30
|
-
/** 眼睛 */
|
|
31
23
|
eyePose: number[];
|
|
32
|
-
/** 眼皮 */
|
|
33
24
|
eyeLid: number[];
|
|
34
|
-
/** 表情参数 */
|
|
35
25
|
expression: number[];
|
|
36
26
|
}
|
|
37
27
|
export interface FlameAnimation {
|
|
@@ -77,4 +67,3 @@ export interface MessageFns<T> {
|
|
|
77
67
|
fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
|
|
78
68
|
}
|
|
79
69
|
export {};
|
|
80
|
-
//# sourceMappingURL=driveningress.d.ts.map
|
|
@@ -5,9 +5,7 @@ export interface GetCharacterInfoRequest {
|
|
|
5
5
|
characterId: string;
|
|
6
6
|
}
|
|
7
7
|
export interface CharacterAsset {
|
|
8
|
-
/** 资产ID,例如 "v1/xxx" */
|
|
9
8
|
characterId: string;
|
|
10
|
-
/** 资产版本,例如 "1.0.0" */
|
|
11
9
|
version: string;
|
|
12
10
|
createdAt?: Timestamp | undefined;
|
|
13
11
|
updatedAt?: Timestamp | undefined;
|
|
@@ -78,4 +76,3 @@ export interface MessageFns<T> {
|
|
|
78
76
|
fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
|
|
79
77
|
}
|
|
80
78
|
export {};
|
|
81
|
-
//# sourceMappingURL=driveningress.d.ts.map
|