@zeewain/3d-avatar-sdk 1.2.4 → 2.1.1
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/README.md +253 -20
- package/dist/assets/Build/webgl.data.unityweb +0 -0
- package/dist/assets/Build/webgl.framework.js.unityweb +0 -0
- package/dist/assets/Build/webgl.wasm.unityweb +0 -0
- package/dist/examples/test-umd/index.html +2 -1
- package/dist/examples/test-vue2/package.json +1 -1
- package/dist/examples/test-vue2/src/App.vue +1 -0
- package/dist/examples/test-vue3/package.json +1 -1
- package/dist/examples/test-vue3/pnpm-lock.yaml +7 -7
- package/dist/examples/test-vue3/src/App.vue +35 -13
- package/dist/examples/test-vue3/src/components/BroadcastAPI.vue +78 -26
- package/dist/examples/test-vue3/src/components/GlobalConfig.vue +10 -6
- package/dist/examples/test-vue3/src/components/LogPanel.vue +5 -5
- package/dist/examples/test-vue3/src/components/MotionControlAPI.vue +44 -7
- package/dist/examples/test-vue3/src/types.ts +1 -1
- package/dist/examples/test-vue3/src/utils/index.ts +35 -0
- package/dist/index.d.ts +69 -48
- package/dist/index.es5.js +145 -124
- package/dist/index.es5.umd.js +145 -124
- package/dist/index.esm.js +194 -120
- package/dist/index.umd.cjs +194 -119
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -32,10 +32,29 @@
|
|
|
32
32
|
|
|
33
33
|
## 📦 安装方式
|
|
34
34
|
|
|
35
|
-
> **WebGL
|
|
35
|
+
> **WebGL文件与资源包说明**:
|
|
36
|
+
>
|
|
37
|
+
> **1. WebGL构建文件(必需)**
|
|
36
38
|
> - 所有WebGL构建文件(webgl.loader.js、webgl.data.unityweb、webgl.framework.js.unityweb、webgl.wasm.unityweb)均来源于SDK包(@zeewain/3d-avatar-sdk)的`dist/assets/Build/`目录。
|
|
37
39
|
> - 使用SDK前,请先将这些文件从 `node_modules/@zeewain/3d-avatar-sdk/dist/assets/Build/` 目录拷贝到你项目的静态资源目录,如 `public` 目录或你的CDN服务器上。
|
|
38
40
|
> - 然后在SDK初始化时,通过config参数设置这些WebGL文件的路径。
|
|
41
|
+
>
|
|
42
|
+
> **2. 数字人资源包(必需)**
|
|
43
|
+
> - **资源包获取**:从紫为云开放平台下载与SDK版本对应的数字人资源包(`版本号前两位必须一致`)。
|
|
44
|
+
> - **资源包内容**:包含数字人所需的形象资源、动作资源等完整资源文件。
|
|
45
|
+
> - **资源部署**:将下载的资源包解压后,部署到您的服务器或CDN服务器上。
|
|
46
|
+
> - **路径配置**:通过`assetsUrl`参数配置资源包的访问地址。
|
|
47
|
+
> - **路径格式**:`assetsUrl`通常格式为:`https://your-domain.com/<SDK版本号前两位>`
|
|
48
|
+
> - 示例:SDK版本为 2.1.3,则 `assetsUrl` 应配置为:`https://cdn.zeewain3d.com/webgl/2.1`
|
|
49
|
+
>
|
|
50
|
+
> **3. 动作资源扩展(可选)**
|
|
51
|
+
> - 动作资源可单独从开放平台下载**(版本号前两位也必须跟SDK版本号一致)**,下载后解压到资源包所在目录即可。
|
|
52
|
+
> - 新增的动作将自动集成到现有资源体系中。
|
|
53
|
+
>
|
|
54
|
+
> **⚠️ 版本兼容性要求**
|
|
55
|
+
> - SDK版本与资源包版本的前两位版本号必须一致。
|
|
56
|
+
> - 例如:SDK 2.1.x 必须使用 2.1.x 的资源包,不能使用 2.0.x 或 2.2.x 的资源包。
|
|
57
|
+
> - SDK在初始化时会自动检查版本兼容性,若不兼容会抛出 `ResourceErrorCode.VERSION_INCOMPATIBLE` 错误并自动卸载。
|
|
39
58
|
|
|
40
59
|
### npm/yarn 安装(推荐)
|
|
41
60
|
|
|
@@ -94,6 +113,9 @@ const sdk = new ZEEAvatarSDK({
|
|
|
94
113
|
frameworkUrl: './assets/Build/webgl.framework.js.unityweb',
|
|
95
114
|
codeUrl: './assets/Build/webgl.wasm.unityweb',
|
|
96
115
|
|
|
116
|
+
// 数字人资源包配置(必填)
|
|
117
|
+
assetsUrl: 'https://cdn.zeewain3d.com/webgl/2.1',
|
|
118
|
+
|
|
97
119
|
// 基础配置
|
|
98
120
|
containerId: 'unity-container',
|
|
99
121
|
token: 'your-auth-token',
|
|
@@ -178,6 +200,7 @@ class AvatarApp {
|
|
|
178
200
|
dataUrl: './assets/Build/webgl.data.unityweb',
|
|
179
201
|
frameworkUrl: './assets/Build/webgl.framework.js.unityweb',
|
|
180
202
|
codeUrl: './assets/Build/webgl.wasm.unityweb',
|
|
203
|
+
assetsUrl: 'https://cdn.zeewain3d.com/webgl/2.1',
|
|
181
204
|
containerId: 'unity-container',
|
|
182
205
|
token: 'your-auth-token',
|
|
183
206
|
env: 'prod',
|
|
@@ -480,17 +503,23 @@ interface IAvatarSDKConfig {
|
|
|
480
503
|
frameworkUrl: string; // Unity框架文件URL
|
|
481
504
|
codeUrl: string; // Unity代码文件URL
|
|
482
505
|
|
|
506
|
+
// 数字人资源包配置(必填)
|
|
507
|
+
assetsUrl: string; // 数字人资源包地址(必填)
|
|
508
|
+
// 从开放平台下载资源包并部署后的访问地址
|
|
509
|
+
// 格式:https://your-domain.com/<SDK版本号前两位>
|
|
510
|
+
// 示例:https://cdn.zeewain3d.com/webgl/2.1
|
|
511
|
+
// 注意:版本号前两位必须与SDK版本一致
|
|
512
|
+
|
|
483
513
|
// 基础配置
|
|
484
514
|
containerId?: string; // 容器DOM元素ID,默认'unity-container'
|
|
485
515
|
token?: string; // 用户认证令牌
|
|
486
516
|
env?: 'dev' | 'test' | 'prod' | 'custom'; // 运行环境,默认'prod'
|
|
487
517
|
apiUrl?: string; // 自定义API地址(env='custom'时需要)
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
idleMotionList?:string[]; // 待机动作编码列表,随机播放(排重方式),可选
|
|
518
|
+
idleMotionList?: string[]; // 待机动作编码列表,随机播放(排重方式),可选
|
|
519
|
+
|
|
491
520
|
// 回调函数
|
|
492
521
|
onProgress?: (progress: number) => void; // 加载进度回调,可选
|
|
493
|
-
broadcastCallbacks?:IBroadcastCallbacks; // 播报回调函数,可选
|
|
522
|
+
broadcastCallbacks?: IBroadcastCallbacks; // 播报回调函数,可选
|
|
494
523
|
}
|
|
495
524
|
```
|
|
496
525
|
|
|
@@ -750,7 +779,7 @@ updateBroadcastCallbacks(callbacks: IBroadcastCallbacks): void
|
|
|
750
779
|
```typescript
|
|
751
780
|
interface IBroadcastCallbacks {
|
|
752
781
|
onStart?: () => void; // 播报开始
|
|
753
|
-
onFinish?: () => void; //
|
|
782
|
+
onFinish?: () => void; // 播报完成(每调用一次`startBroadcast`,在播报结束后都会触发一次回调)
|
|
754
783
|
onError?: (error: Error) => void; // 播报错误
|
|
755
784
|
onPause?: () => void; // 播报暂停
|
|
756
785
|
onResume?: () => void; // 播报恢复
|
|
@@ -775,8 +804,6 @@ getBroadcastStatus(): {
|
|
|
775
804
|
isActive: boolean;
|
|
776
805
|
isGeneratingAudio: boolean;
|
|
777
806
|
hasReceivedAudio: boolean;
|
|
778
|
-
pendingCallbacks: number;
|
|
779
|
-
hasController: boolean;
|
|
780
807
|
queueInfo?: {
|
|
781
808
|
totalTasks: number; // 队列中总任务数
|
|
782
809
|
requestingTasks: number; // 正在请求中的任务数
|
|
@@ -788,14 +815,12 @@ getBroadcastStatus(): {
|
|
|
788
815
|
}
|
|
789
816
|
```
|
|
790
817
|
|
|
791
|
-
|
|
818
|
+
获取播报状态信息,包括队列状态监控。`当播报队列中最后一条音频播放完毕后,队列状态信息将被重置。`
|
|
792
819
|
|
|
793
820
|
**返回值说明:**
|
|
794
|
-
- `isActive`:
|
|
821
|
+
- `isActive`: 播报服务是否活跃(是否正在播报音频或正在生成音频)
|
|
795
822
|
- `isGeneratingAudio`: 是否正在生成音频
|
|
796
|
-
- `hasReceivedAudio`:
|
|
797
|
-
- `pendingCallbacks`: 待处理的回调数量
|
|
798
|
-
- `hasController`: 是否有活跃的请求控制器
|
|
823
|
+
- `hasReceivedAudio`: 是否已收到至少一条音频数据
|
|
799
824
|
- `queueInfo`: 队列详细信息
|
|
800
825
|
- `totalTasks`: 队列中的总任务数
|
|
801
826
|
- `requestingTasks`: 正在发起SSE请求的任务数
|
|
@@ -875,6 +900,121 @@ destroy(): void
|
|
|
875
900
|
|
|
876
901
|
销毁SDK实例,清理所有资源。**重要:页面卸载前务必调用此方法!**
|
|
877
902
|
|
|
903
|
+
## 🔄 版本兼容性管理
|
|
904
|
+
|
|
905
|
+
### 自动版本检查机制
|
|
906
|
+
|
|
907
|
+
SDK内置了严格的版本兼容性检查机制,确保SDK版本与资源包版本匹配,避免因版本不一致导致的运行异常。
|
|
908
|
+
|
|
909
|
+
#### 版本检查规则
|
|
910
|
+
|
|
911
|
+
- **检查时机**:在 `initializeAvatar()` 初始化数字人时自动进行
|
|
912
|
+
- **检查范围**:SDK版本号与资源包版本号的**前两位**必须一致
|
|
913
|
+
- **版本格式**:采用语义化版本号 `主版本号.次版本号.修订号`(如 2.1.3)
|
|
914
|
+
- **兼容规则**:
|
|
915
|
+
- ✅ SDK 2.1.3 + 资源包 2.1.0 → 兼容
|
|
916
|
+
- ✅ SDK 2.1.3 + 资源包 2.1.5 → 兼容
|
|
917
|
+
- ❌ SDK 2.1.3 + 资源包 2.0.0 → 不兼容
|
|
918
|
+
- ❌ SDK 2.1.3 + 资源包 2.2.0 → 不兼容
|
|
919
|
+
|
|
920
|
+
#### 版本不兼容时的行为
|
|
921
|
+
|
|
922
|
+
当检测到版本不兼容时,SDK会:
|
|
923
|
+
|
|
924
|
+
1. **抛出错误**:抛出 `ResourceErrorCode.VERSION_INCOMPATIBLE` (错误码: 3005) 错误
|
|
925
|
+
2. **自动卸载**:自动调用 `destroy()` 清理已初始化的资源
|
|
926
|
+
3. **详细信息**:错误消息包含SDK版本和资源包版本信息
|
|
927
|
+
|
|
928
|
+
**示例错误信息:**
|
|
929
|
+
```
|
|
930
|
+
资源版本不兼容: SDK版本为 2.1.3,WebGL资源版本为 2.0.5,前两位版本号必须一致
|
|
931
|
+
```
|
|
932
|
+
|
|
933
|
+
#### 版本兼容性处理示例
|
|
934
|
+
|
|
935
|
+
```javascript
|
|
936
|
+
import { ZEEAvatarSDK, ResourceErrorCode, SDKError } from '@zeewain/3d-avatar-sdk'
|
|
937
|
+
|
|
938
|
+
async function initAvatarWithVersionCheck() {
|
|
939
|
+
const sdk = new ZEEAvatarSDK({
|
|
940
|
+
loaderUrl: './assets/Build/webgl.loader.js',
|
|
941
|
+
dataUrl: './assets/Build/webgl.data.unityweb',
|
|
942
|
+
frameworkUrl: './assets/Build/webgl.framework.js.unityweb',
|
|
943
|
+
codeUrl: './assets/Build/webgl.wasm.unityweb',
|
|
944
|
+
assetsUrl: 'https://cdn.zeewain3d.com/webgl/2.1',
|
|
945
|
+
containerId: 'unity-container',
|
|
946
|
+
token: 'your-auth-token'
|
|
947
|
+
});
|
|
948
|
+
|
|
949
|
+
try {
|
|
950
|
+
const response = await sdk.initializeAvatar('avatar001');
|
|
951
|
+
|
|
952
|
+
if (response.success) {
|
|
953
|
+
console.log('✅ 数字人初始化成功,版本检查通过');
|
|
954
|
+
}
|
|
955
|
+
} catch (error) {
|
|
956
|
+
if (error instanceof SDKError && error.code === ResourceErrorCode.VERSION_INCOMPATIBLE) {
|
|
957
|
+
// 版本不兼容错误处理
|
|
958
|
+
console.error('❌ 版本不兼容:', error.message);
|
|
959
|
+
|
|
960
|
+
// 提示用户更新资源包
|
|
961
|
+
showUpdateNotification({
|
|
962
|
+
title: '资源包版本不匹配',
|
|
963
|
+
message: '请下载与当前SDK版本匹配的资源包',
|
|
964
|
+
action: '前往下载'
|
|
965
|
+
});
|
|
966
|
+
} else {
|
|
967
|
+
// 其他错误处理
|
|
968
|
+
console.error('初始化失败:', error);
|
|
969
|
+
}
|
|
970
|
+
}
|
|
971
|
+
}
|
|
972
|
+
|
|
973
|
+
// 显示更新提示
|
|
974
|
+
function showUpdateNotification(options) {
|
|
975
|
+
// 显示友好的UI提示
|
|
976
|
+
const notification = document.createElement('div');
|
|
977
|
+
notification.className = 'version-notification';
|
|
978
|
+
notification.innerHTML = `
|
|
979
|
+
<h3>${options.title}</h3>
|
|
980
|
+
<p>${options.message}</p>
|
|
981
|
+
<button onclick="window.open('https://open.zeewain3d.com/downloads', '_blank')">
|
|
982
|
+
${options.action}
|
|
983
|
+
</button>
|
|
984
|
+
`;
|
|
985
|
+
document.body.appendChild(notification);
|
|
986
|
+
}
|
|
987
|
+
```
|
|
988
|
+
|
|
989
|
+
#### 资源包下载与部署建议
|
|
990
|
+
|
|
991
|
+
1. **获取SDK版本号**
|
|
992
|
+
```javascript
|
|
993
|
+
import { SDK_VERSION } from '@zeewain/3d-avatar-sdk'
|
|
994
|
+
console.log('当前SDK版本:', SDK_VERSION); // 如: 2.1.3
|
|
995
|
+
```
|
|
996
|
+
|
|
997
|
+
2. **下载对应资源包**
|
|
998
|
+
- 访问紫为·AI开放平台
|
|
999
|
+
- 下载版本号前两位一致的资源包(如:2.1.x 系列)
|
|
1000
|
+
|
|
1001
|
+
3. **部署资源包**
|
|
1002
|
+
- 将资源包解压到服务器或CDN
|
|
1003
|
+
- 按版本号组织目录结构:`/webgl/2.1`
|
|
1004
|
+
- 配置 `assetsUrl: 'https://your-cdn.com/webgl/2.1'`
|
|
1005
|
+
|
|
1006
|
+
#### 版本升级策略
|
|
1007
|
+
|
|
1008
|
+
当需要升级SDK版本时:
|
|
1009
|
+
|
|
1010
|
+
**场景1:修订号升级(如 2.1.3 → 2.1.5)**
|
|
1011
|
+
- ✅ 资源包无需更新
|
|
1012
|
+
- ✅ 直接升级SDK即可
|
|
1013
|
+
|
|
1014
|
+
**场景2:主版本号或次版本号升级(如 2.1.3 → 2.2.0 或 2.1.3 → 3.0.0)**
|
|
1015
|
+
- ⚠️ 需要重新下载资源包(2.2.x 或 3.0.x)
|
|
1016
|
+
- ⚠️ 更新 `assetsUrl` 配置为新版本路径
|
|
1017
|
+
|
|
878
1018
|
## 🔧 高级功能
|
|
879
1019
|
|
|
880
1020
|
### 🎯 智能播报队列
|
|
@@ -969,6 +1109,7 @@ const sdk1 = new ZEEAvatarSDK({
|
|
|
969
1109
|
dataUrl: './assets/Build/webgl.data.unityweb',
|
|
970
1110
|
frameworkUrl: './assets/Build/webgl.framework.js.unityweb',
|
|
971
1111
|
codeUrl: './assets/Build/webgl.wasm.unityweb',
|
|
1112
|
+
assetsUrl: 'https://cdn.zeewain3d.com/webgl/2.1',
|
|
972
1113
|
containerId: 'unity-container-1',
|
|
973
1114
|
token: 'token1'
|
|
974
1115
|
});
|
|
@@ -978,6 +1119,7 @@ const sdk2 = new ZEEAvatarSDK({
|
|
|
978
1119
|
dataUrl: './assets/Build/webgl.data.unityweb',
|
|
979
1120
|
frameworkUrl: './assets/Build/webgl.framework.js.unityweb',
|
|
980
1121
|
codeUrl: './assets/Build/webgl.wasm.unityweb',
|
|
1122
|
+
assetsUrl: 'https://cdn.zeewain3d.com/webgl/2.1',
|
|
981
1123
|
containerId: 'unity-container-2',
|
|
982
1124
|
token: 'token2'
|
|
983
1125
|
});
|
|
@@ -1067,6 +1209,26 @@ function handleOperationError(error) {
|
|
|
1067
1209
|
}
|
|
1068
1210
|
}
|
|
1069
1211
|
|
|
1212
|
+
// 资源错误处理
|
|
1213
|
+
function handleResourceError(error) {
|
|
1214
|
+
switch (error.code) {
|
|
1215
|
+
case ResourceErrorCode.LOAD_FAILED:
|
|
1216
|
+
showUserMessage('资源加载失败,请检查网络或资源路径');
|
|
1217
|
+
break;
|
|
1218
|
+
case ResourceErrorCode.VERSION_INCOMPATIBLE:
|
|
1219
|
+
showUserMessage('资源版本不兼容,请下载与SDK版本匹配的资源包');
|
|
1220
|
+
// 显示详细版本信息
|
|
1221
|
+
console.error('版本不兼容:', error.message);
|
|
1222
|
+
break;
|
|
1223
|
+
case ResourceErrorCode.NOT_FOUND:
|
|
1224
|
+
showUserMessage('资源不存在,请检查assetsUrl配置');
|
|
1225
|
+
break;
|
|
1226
|
+
case ResourceErrorCode.FILE_CORRUPTED:
|
|
1227
|
+
showUserMessage('资源文件损坏,请重新下载资源包');
|
|
1228
|
+
break;
|
|
1229
|
+
}
|
|
1230
|
+
}
|
|
1231
|
+
|
|
1070
1232
|
// 在SDK操作中使用
|
|
1071
1233
|
try {
|
|
1072
1234
|
await sdk.initializeAvatar('avatar001');
|
|
@@ -1208,6 +1370,7 @@ document.addEventListener('visibilitychange', () => {
|
|
|
1208
1370
|
| 3002 | `ResourceErrorCode.FILE_CORRUPTED` | 资源文件损坏 | 重新下载资源文件 |
|
|
1209
1371
|
| 3003 | `ResourceErrorCode.NOT_FOUND` | 资源不存在 | 检查资源路径 |
|
|
1210
1372
|
| 3004 | `ResourceErrorCode.UNSUPPORTED_FORMAT` | 资源格式不支持 | 使用支持的格式 |
|
|
1373
|
+
| 3005 | `ResourceErrorCode.VERSION_INCOMPATIBLE` | 资源版本不兼容 | 下载与SDK版本匹配的资源包(前两位版本号一致) |
|
|
1211
1374
|
|
|
1212
1375
|
### 系统错误 (4xxx)
|
|
1213
1376
|
| 错误码 | 常量名 | 描述 | 处理建议 |
|
|
@@ -1384,6 +1547,7 @@ export const avatarConfig = {
|
|
|
1384
1547
|
dataUrl: './assets/Build/webgl.data.unityweb',
|
|
1385
1548
|
frameworkUrl: './assets/Build/webgl.framework.js.unityweb',
|
|
1386
1549
|
codeUrl: './assets/Build/webgl.wasm.unityweb',
|
|
1550
|
+
assetsUrl: 'https://cdn.zeewain3d.com/webgl/2.1',
|
|
1387
1551
|
containerId: 'unity-container',
|
|
1388
1552
|
env: 'dev',
|
|
1389
1553
|
token: 'dev-token'
|
|
@@ -1393,6 +1557,7 @@ export const avatarConfig = {
|
|
|
1393
1557
|
dataUrl: 'https://cdn.example.com/webgl.data.unityweb',
|
|
1394
1558
|
frameworkUrl: 'https://cdn.example.com/webgl.framework.js.unityweb',
|
|
1395
1559
|
codeUrl: 'https://cdn.example.com/webgl.wasm.unityweb',
|
|
1560
|
+
assetsUrl: 'https://cdn.zeewain3d.com/webgl/2.1',
|
|
1396
1561
|
containerId: 'unity-container',
|
|
1397
1562
|
env: 'prod',
|
|
1398
1563
|
token: process.env.AVATAR_TOKEN
|
|
@@ -1522,10 +1687,11 @@ class NewAvatarApp {
|
|
|
1522
1687
|
|
|
1523
1688
|
**A1:** 请按以下步骤排查:
|
|
1524
1689
|
|
|
1525
|
-
1. **检查文件路径**:确保Unity
|
|
1526
|
-
2.
|
|
1527
|
-
3.
|
|
1528
|
-
4.
|
|
1690
|
+
1. **检查文件路径**:确保Unity构建文件路径和资源包路径配置正确
|
|
1691
|
+
2. **检查assetsUrl**:确认资源包已正确部署且assetsUrl配置正确
|
|
1692
|
+
3. **CORS问题**:如果文件在不同域名,需要配置CORS
|
|
1693
|
+
4. **网络连接**:确认网络可以访问构建文件URL和资源包URL
|
|
1694
|
+
5. **浏览器兼容性**:确认浏览器支持WebGL 2.0
|
|
1529
1695
|
|
|
1530
1696
|
```javascript
|
|
1531
1697
|
// 检查资源可访问性
|
|
@@ -1534,17 +1700,20 @@ async function checkResourcesAvailability(config) {
|
|
|
1534
1700
|
config.loaderUrl,
|
|
1535
1701
|
config.dataUrl,
|
|
1536
1702
|
config.frameworkUrl,
|
|
1537
|
-
config.codeUrl
|
|
1703
|
+
config.codeUrl,
|
|
1704
|
+
config.assetsUrl // 检查资源包地址
|
|
1538
1705
|
];
|
|
1539
1706
|
|
|
1540
1707
|
for (const url of resources) {
|
|
1541
1708
|
try {
|
|
1542
1709
|
const response = await fetch(url, { method: 'HEAD' });
|
|
1543
1710
|
if (!response.ok) {
|
|
1544
|
-
console.error(
|
|
1711
|
+
console.error(`❌ 资源不可访问: ${url}`);
|
|
1712
|
+
} else {
|
|
1713
|
+
console.log(`✅ 资源可访问: ${url}`);
|
|
1545
1714
|
}
|
|
1546
1715
|
} catch (error) {
|
|
1547
|
-
console.error(
|
|
1716
|
+
console.error(`❌ 资源检查失败: ${url}`, error);
|
|
1548
1717
|
}
|
|
1549
1718
|
}
|
|
1550
1719
|
}
|
|
@@ -1722,6 +1891,70 @@ class AvatarManager {
|
|
|
1722
1891
|
}
|
|
1723
1892
|
```
|
|
1724
1893
|
|
|
1894
|
+
### Q6: 遇到版本不兼容错误怎么办?
|
|
1895
|
+
|
|
1896
|
+
**A6:** 版本不兼容错误(错误码3005)说明SDK版本与资源包版本不匹配,请按以下步骤解决:
|
|
1897
|
+
|
|
1898
|
+
**1. 确认版本信息**
|
|
1899
|
+
```javascript
|
|
1900
|
+
import { SDK_VERSION } from '@zeewain/3d-avatar-sdk'
|
|
1901
|
+
console.log('当前SDK版本:', SDK_VERSION); // 如: 2.1.3
|
|
1902
|
+
```
|
|
1903
|
+
|
|
1904
|
+
**2. 检查错误详情**
|
|
1905
|
+
```javascript
|
|
1906
|
+
try {
|
|
1907
|
+
await sdk.initializeAvatar('avatar001');
|
|
1908
|
+
} catch (error) {
|
|
1909
|
+
if (error.code === 3005) {
|
|
1910
|
+
// 错误消息会显示具体的版本信息
|
|
1911
|
+
console.error(error.message);
|
|
1912
|
+
// 示例: "资源版本不兼容: SDK版本为 2.1.3,WebGL资源版本为 2.0.5,前两位版本号必须一致"
|
|
1913
|
+
}
|
|
1914
|
+
}
|
|
1915
|
+
```
|
|
1916
|
+
|
|
1917
|
+
**3. 解决方案**
|
|
1918
|
+
|
|
1919
|
+
**方案A:更新资源包(推荐)**
|
|
1920
|
+
- 访问紫为·AI开放平台
|
|
1921
|
+
- 下载与SDK版本号前两位一致的资源包
|
|
1922
|
+
- 例如:SDK版本为 2.1.3,需下载 2.1.x 系列的资源包
|
|
1923
|
+
- 将资源包部署到服务器或CDN
|
|
1924
|
+
- 更新 `assetsUrl` 配置
|
|
1925
|
+
|
|
1926
|
+
**方案B:回退SDK版本**
|
|
1927
|
+
```bash
|
|
1928
|
+
# 如果资源包是 2.1.x 版本,回退SDK到对应版本
|
|
1929
|
+
npm install @zeewain/3d-avatar-sdk@2.1.x
|
|
1930
|
+
```
|
|
1931
|
+
|
|
1932
|
+
**4. 版本匹配示例**
|
|
1933
|
+
|
|
1934
|
+
| SDK版本 | 兼容的资源包版本 | 是否兼容 |
|
|
1935
|
+
|:--------|:----------------|:---------|
|
|
1936
|
+
| 2.1.3 | 2.1.0, 2.1.5, 2.1.10 | ✅ 兼容 |
|
|
1937
|
+
| 2.1.3 | 2.0.8, 2.2.0, 3.0.0 | ❌ 不兼容 |
|
|
1938
|
+
|
|
1939
|
+
**5. 预防措施**
|
|
1940
|
+
```javascript
|
|
1941
|
+
// 在配置文件中记录版本信息
|
|
1942
|
+
const config = {
|
|
1943
|
+
sdkVersion: '2.1.3', // SDK版本
|
|
1944
|
+
assetsVersion: '2.1', // 资源包版本
|
|
1945
|
+
assetsUrl: 'https://cdn.zeewain3d.com/webgl/2.1',
|
|
1946
|
+
// ... 其他配置
|
|
1947
|
+
};
|
|
1948
|
+
|
|
1949
|
+
// 定期检查版本一致性
|
|
1950
|
+
function checkVersionConsistency(config) {
|
|
1951
|
+
const sdkMajorMinor = config.sdkVersion.split('.').slice(0, 2).join('.');
|
|
1952
|
+
if (sdkMajorMinor !== config.assetsVersion) {
|
|
1953
|
+
console.warn('⚠️ 配置文件中SDK版本与资源包版本不匹配');
|
|
1954
|
+
}
|
|
1955
|
+
}
|
|
1956
|
+
```
|
|
1957
|
+
|
|
1725
1958
|
## 🆚 新旧版本对比
|
|
1726
1959
|
|
|
1727
1960
|
### 使用体验对比
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -441,10 +441,11 @@ function updateUnityPlaceholder(display)
|
|
|
441
441
|
// frameworkUrl: 'https://unpkg.com/@zeewain/3d-avatar-sdk@1.2.1/dist/assets/Build/webgl.framework.js.unityweb',
|
|
442
442
|
// codeUrl: 'https://unpkg.com/@zeewain/3d-avatar-sdk@1.2.1/dist/assets/Build/webgl.wasm.unityweb',
|
|
443
443
|
// 使用本地WebGL文件
|
|
444
|
-
|
|
444
|
+
loaderUrl: './public/assets/Build/webgl.loader.js',
|
|
445
445
|
dataUrl: './public/assets/Build/webgl.data.unityweb',
|
|
446
446
|
frameworkUrl: './public/assets/Build/webgl.framework.js.unityweb',
|
|
447
447
|
codeUrl: './public/assets/Build/webgl.wasm.unityweb',
|
|
448
|
+
assetsUrl: 'https://cdn.zeewain3d.com/webgl/2.1',
|
|
448
449
|
containerId: 'unity-container',
|
|
449
450
|
env: 'dev',
|
|
450
451
|
onProgress: (progress) =>
|
|
@@ -313,6 +313,7 @@ export default {
|
|
|
313
313
|
dataUrl: './assets/Build/webgl.data.unityweb',
|
|
314
314
|
frameworkUrl: './assets/Build/webgl.framework.js.unityweb',
|
|
315
315
|
codeUrl: './assets/Build/webgl.wasm.unityweb',
|
|
316
|
+
assetsUrl: 'https://cdn.zeewain3d.com/webgl/2.1',
|
|
316
317
|
containerId: 'unity-container',
|
|
317
318
|
|
|
318
319
|
// 认证配置
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"@element-plus/icons-vue": "^2.3.1",
|
|
25
25
|
"@vueuse/core": "^13.5.0",
|
|
26
26
|
"@vueuse/integrations": "^13.5.0",
|
|
27
|
-
"@zeewain/3d-avatar-sdk": "^1.
|
|
27
|
+
"@zeewain/3d-avatar-sdk": "^2.1.1",
|
|
28
28
|
"dayjs": "^1.11.13",
|
|
29
29
|
"element-plus": "^2.10.4",
|
|
30
30
|
"vite-plugin-html": "^3.2.2",
|
|
@@ -15,8 +15,8 @@ dependencies:
|
|
|
15
15
|
specifier: ^13.5.0
|
|
16
16
|
version: 13.5.0(vue@3.5.17)
|
|
17
17
|
'@zeewain/3d-avatar-sdk':
|
|
18
|
-
specifier: ^1.2.
|
|
19
|
-
version: 1.2.
|
|
18
|
+
specifier: ^1.2.4
|
|
19
|
+
version: 1.2.4
|
|
20
20
|
dayjs:
|
|
21
21
|
specifier: ^1.11.13
|
|
22
22
|
version: 1.11.13
|
|
@@ -1124,11 +1124,11 @@ packages:
|
|
|
1124
1124
|
- vue
|
|
1125
1125
|
dev: false
|
|
1126
1126
|
|
|
1127
|
-
/@zeewain/3d-avatar-sdk@1.2.
|
|
1128
|
-
resolution: {integrity: sha512-
|
|
1127
|
+
/@zeewain/3d-avatar-sdk@1.2.4:
|
|
1128
|
+
resolution: {integrity: sha512-a+y9HpUjbZgObzR+RfnfjxamdAa6Nk9CWkdHMejPIsYfSogCM6UtN/Jbh1A08RzIH9xrJnsUpTm1nXvvIsT6Vw==}
|
|
1129
1129
|
dependencies:
|
|
1130
1130
|
'@microsoft/fetch-event-source': 2.0.1
|
|
1131
|
-
core-js: 3.
|
|
1131
|
+
core-js: 3.45.1
|
|
1132
1132
|
dev: false
|
|
1133
1133
|
|
|
1134
1134
|
/acorn-jsx@5.3.2(acorn@8.15.0):
|
|
@@ -1493,8 +1493,8 @@ packages:
|
|
|
1493
1493
|
resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==}
|
|
1494
1494
|
dev: false
|
|
1495
1495
|
|
|
1496
|
-
/core-js@3.
|
|
1497
|
-
resolution: {integrity: sha512-
|
|
1496
|
+
/core-js@3.45.1:
|
|
1497
|
+
resolution: {integrity: sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg==}
|
|
1498
1498
|
requiresBuild: true
|
|
1499
1499
|
dev: false
|
|
1500
1500
|
|