zcw-shared 2.26.0 → 2.27.0
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/dist/constants/agentAvatar3d.d.ts +15 -0
- package/dist/constants/agentAvatar3d.js +64 -0
- package/dist/constants/agentAvatar3d.js.map +1 -0
- package/dist/constants/agentAvatar3dModular.d.ts +34 -0
- package/dist/constants/agentAvatar3dModular.js +93 -0
- package/dist/constants/agentAvatar3dModular.js.map +1 -0
- package/dist/constants/agentPresence3dLabels.d.ts +11 -0
- package/dist/constants/agentPresence3dLabels.js +12 -0
- package/dist/constants/agentPresence3dLabels.js.map +1 -0
- package/dist/constants/aiApiRoutes.d.ts +8 -0
- package/dist/constants/aiApiRoutes.js +23 -0
- package/dist/constants/aiApiRoutes.js.map +1 -0
- package/dist/functions/ai/agentAvatar3dArkitMorph.d.ts +14 -0
- package/dist/functions/ai/agentAvatar3dArkitMorph.js +149 -0
- package/dist/functions/ai/agentAvatar3dArkitMorph.js.map +1 -0
- package/dist/functions/ai/agentAvatar3dCapabilities.d.ts +44 -0
- package/dist/functions/ai/agentAvatar3dCapabilities.js +121 -0
- package/dist/functions/ai/agentAvatar3dCapabilities.js.map +1 -0
- package/dist/functions/ai/agentAvatar3dFacePresets.d.ts +13 -0
- package/dist/functions/ai/agentAvatar3dFacePresets.js +79 -0
- package/dist/functions/ai/agentAvatar3dFacePresets.js.map +1 -0
- package/dist/functions/ai/agentAvatar3dMaterialTint.d.ts +7 -0
- package/dist/functions/ai/agentAvatar3dMaterialTint.js +45 -0
- package/dist/functions/ai/agentAvatar3dMaterialTint.js.map +1 -0
- package/dist/functions/ai/agentAvatar3dMorphCatalog.d.ts +18 -0
- package/dist/functions/ai/agentAvatar3dMorphCatalog.js +222 -0
- package/dist/functions/ai/agentAvatar3dMorphCatalog.js.map +1 -0
- package/dist/functions/ai/applyAiAgentAvatar3dFace.d.ts +23 -0
- package/dist/functions/ai/applyAiAgentAvatar3dFace.js +140 -0
- package/dist/functions/ai/applyAiAgentAvatar3dFace.js.map +1 -0
- package/dist/functions/ai/getEffectiveAvatar3dMorphWeights.d.ts +3 -0
- package/dist/functions/ai/getEffectiveAvatar3dMorphWeights.js +28 -0
- package/dist/functions/ai/getEffectiveAvatar3dMorphWeights.js.map +1 -0
- package/dist/functions/ai/normalizeAiAgentAvatar3d.d.ts +4 -0
- package/dist/functions/ai/normalizeAiAgentAvatar3d.js +57 -0
- package/dist/functions/ai/normalizeAiAgentAvatar3d.js.map +1 -0
- package/dist/functions/ai/normalizeAiAgentAvatar3dFace.d.ts +4 -0
- package/dist/functions/ai/normalizeAiAgentAvatar3dFace.js +84 -0
- package/dist/functions/ai/normalizeAiAgentAvatar3dFace.js.map +1 -0
- package/dist/functions/ai/normalizeAiAgentAvatar3dModular.d.ts +14 -0
- package/dist/functions/ai/normalizeAiAgentAvatar3dModular.js +92 -0
- package/dist/functions/ai/normalizeAiAgentAvatar3dModular.js.map +1 -0
- package/dist/functions/ai/proceduralHumanoidMorph.d.ts +5 -0
- package/dist/functions/ai/proceduralHumanoidMorph.js +9 -0
- package/dist/functions/ai/proceduralHumanoidMorph.js.map +1 -0
- package/dist/functions/ai/randomizeAgentAvatar3dAppearance.d.ts +9 -0
- package/dist/functions/ai/randomizeAgentAvatar3dAppearance.js +108 -0
- package/dist/functions/ai/randomizeAgentAvatar3dAppearance.js.map +1 -0
- package/dist/functions/ai/randomizeModularAvatar3dAppearance.d.ts +7 -0
- package/dist/functions/ai/randomizeModularAvatar3dAppearance.js +60 -0
- package/dist/functions/ai/randomizeModularAvatar3dAppearance.js.map +1 -0
- package/dist/functions/ai/resolveAvatar3dModular.d.ts +4 -0
- package/dist/functions/ai/resolveAvatar3dModular.js +22 -0
- package/dist/functions/ai/resolveAvatar3dModular.js.map +1 -0
- package/dist/functions/api/createApiClient.d.ts +1 -6
- package/dist/functions/api/createApiClient.js +1 -55
- package/dist/functions/api/createApiClient.js.map +1 -1
- package/dist/functions/api/createPublicAuthRequest.js +3 -1
- package/dist/functions/api/createPublicAuthRequest.js.map +1 -1
- package/dist/functions/browser/readBrowserHost.d.ts +3 -0
- package/dist/functions/browser/readBrowserHost.js +42 -5
- package/dist/functions/browser/readBrowserHost.js.map +1 -1
- package/dist/functions/browser/readBrowserImageCompressDeps.js +11 -5
- package/dist/functions/browser/readBrowserImageCompressDeps.js.map +1 -1
- package/dist/functions/browser/readBrowserLassoSelectionEnvironment.js +3 -3
- package/dist/functions/browser/readBrowserLassoSelectionEnvironment.js.map +1 -1
- package/dist/functions/browser/readBrowserVueHookDeps.js +22 -4
- package/dist/functions/browser/readBrowserVueHookDeps.js.map +1 -1
- package/dist/functions/chat/chatMorePageConfig.js +8 -0
- package/dist/functions/chat/chatMorePageConfig.js.map +1 -1
- package/dist/functions/chat/chatShellTabConfig.d.ts +4 -1
- package/dist/functions/chat/chatShellTabConfig.js +14 -2
- package/dist/functions/chat/chatShellTabConfig.js.map +1 -1
- package/dist/functions/chat/createBrowserChatRootFontSizeAccess.js +1 -2
- package/dist/functions/chat/createBrowserChatRootFontSizeAccess.js.map +1 -1
- package/dist/functions/cloudDisk/buildCloudDiskListTabResult.d.ts +2 -2
- package/dist/functions/cloudDisk/extractCloudDiskPrivateFolderData.d.ts +3 -3
- package/dist/functions/cloudDisk/extractCloudDiskPrivateFolderData.js.map +1 -1
- package/dist/functions/cloudDisk/mapCloudDiskFileToNode.d.ts +2 -2
- package/dist/functions/cloudDisk/mapCloudDiskFileToNode.js.map +1 -1
- package/dist/functions/cloudDisk/sortCloudDiskNodes.js +4 -4
- package/dist/functions/cloudDisk/sortCloudDiskNodes.js.map +1 -1
- package/dist/functions/dom/readBrowserDomDeps.js +9 -7
- package/dist/functions/dom/readBrowserDomDeps.js.map +1 -1
- package/dist/functions/im/forwardBundleItemToChatMessage.js +9 -7
- package/dist/functions/im/forwardBundleItemToChatMessage.js.map +1 -1
- package/dist/functions/im/imChatMessageCopyPlain.js +2 -2
- package/dist/functions/im/imChatMessageCopyPlain.js.map +1 -1
- package/dist/functions/im/imForwardBundleTitle.js +2 -2
- package/dist/functions/im/imForwardBundleTitle.js.map +1 -1
- package/dist/functions/im/imForwardSnapshot.js +2 -2
- package/dist/functions/im/imForwardSnapshot.js.map +1 -1
- package/dist/functions/im/imMessageNormalize.d.ts +2 -2
- package/dist/functions/im/imPlaceholderSnippet.d.ts +1 -1
- package/dist/functions/im/imPlaceholderSnippet.js +1 -1
- package/dist/functions/im/imPlaceholderSnippet.js.map +1 -1
- package/dist/functions/qiankun/bootstrapQiankunDomPatch.d.ts +1 -0
- package/dist/functions/qiankun/bootstrapQiankunDomPatch.js +165 -0
- package/dist/functions/qiankun/bootstrapQiankunDomPatch.js.map +1 -0
- package/dist/functions/qiankun/createQiankunVueApp.d.ts +2 -0
- package/dist/functions/qiankun/createQiankunVueApp.js +4 -1
- package/dist/functions/qiankun/createQiankunVueApp.js.map +1 -1
- package/dist/functions/vue-router/normalizeWebHistoryBase.d.ts +1 -0
- package/dist/functions/vue-router/normalizeWebHistoryBase.js +19 -0
- package/dist/functions/vue-router/normalizeWebHistoryBase.js.map +1 -0
- package/dist/functions/vue-router/pushInAppRoute.d.ts +6 -0
- package/dist/functions/vue-router/pushInAppRoute.js +13 -0
- package/dist/functions/vue-router/pushInAppRoute.js.map +1 -0
- package/dist/permissions/catalog.d.ts +2 -0
- package/dist/permissions/catalog.js +11 -0
- package/dist/permissions/catalog.js.map +1 -1
- package/dist/schemas/auth.schema.d.ts +11 -358
- package/dist/schemas/auth.schema.js +5 -35
- package/dist/schemas/auth.schema.js.map +1 -1
- package/dist/schemas/video.schema.d.ts +98 -156
- package/dist/schemas/video.schema.js +9 -13
- package/dist/schemas/video.schema.js.map +1 -1
- package/dist/vue-hooks/dom/useLassoSelection.js +4 -3
- package/dist/vue-hooks/dom/useLassoSelection.js.map +1 -1
- package/package.json +29 -3
- package/types/address.d.ts +4 -35
- package/types/ai-admin.d.ts +33 -0
- package/types/ai-agent.d.ts +43 -0
- package/types/ai-chat.d.ts +39 -23
- package/types/api-contract-helpers.d.ts +24 -0
- package/types/api-contract.d.ts +6 -0
- package/types/auth.d.ts +15 -27
- package/types/cloud-disk.d.ts +38 -50
- package/types/community.d.ts +7 -0
- package/types/im-ai-agent.d.ts +1 -1
- package/types/im-api.d.ts +12 -8
- package/types/im-call.d.ts +4 -3
- package/types/lowcode.d.ts +10 -47
- package/types/music.d.ts +4 -30
- package/types/notification.d.ts +4 -34
- package/types/openapi.d.ts +25040 -0
- package/types/order.d.ts +5 -57
- package/types/org.d.ts +13 -0
- package/types/oss.d.ts +4 -23
- package/types/page-config.d.ts +14 -14
- package/types/payment.d.ts +10 -20
- package/types/performance.d.ts +4 -11
- package/types/product.d.ts +5 -37
- package/types/rbac.d.ts +11 -32
- package/types/recharge.d.ts +11 -0
- package/types/report.d.ts +7 -25
- package/types/review.d.ts +11 -13
- package/types/sticker-pack.d.ts +10 -25
- package/types/user.d.ts +11 -33
- package/types/video.d.ts +15 -66
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const DEFAULT_AGENT_AVATAR_3D_MODEL_PATH = "/models/agent-avatar-full-body.glb";
|
|
2
|
+
export declare const DEFAULT_AGENT_AVATAR_3D_MODEL_URL = "/models/agent-avatar-full-body.glb";
|
|
3
|
+
export type BuiltinAgentAvatar3dCategory = 'character' | 'outfit' | 'accessory';
|
|
4
|
+
export interface BuiltinAgentAvatar3dModelMeta {
|
|
5
|
+
id: string;
|
|
6
|
+
filename: string;
|
|
7
|
+
storagePath: string;
|
|
8
|
+
label: string;
|
|
9
|
+
category: BuiltinAgentAvatar3dCategory;
|
|
10
|
+
}
|
|
11
|
+
export declare const BUILTIN_AGENT_AVATAR_3D_MODELS: BuiltinAgentAvatar3dModelMeta[];
|
|
12
|
+
export declare function hasAgentAvatar3dDefaultModel(): boolean;
|
|
13
|
+
export declare function getBuiltinAgentAvatar3dModelById(id: string): BuiltinAgentAvatar3dModelMeta | undefined;
|
|
14
|
+
export declare function resolveBuiltinAgentAvatar3dStoragePath(url: string): string | undefined;
|
|
15
|
+
export declare function isBuiltinAgentAvatar3dModelUrl(url: string): boolean;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export const DEFAULT_AGENT_AVATAR_3D_MODEL_PATH = '/models/agent-avatar-full-body.glb';
|
|
2
|
+
export const DEFAULT_AGENT_AVATAR_3D_MODEL_URL = DEFAULT_AGENT_AVATAR_3D_MODEL_PATH;
|
|
3
|
+
export const BUILTIN_AGENT_AVATAR_3D_MODELS = [
|
|
4
|
+
{
|
|
5
|
+
id: 'full_body',
|
|
6
|
+
filename: 'agent-avatar-full-body.glb',
|
|
7
|
+
storagePath: '/models/agent-avatar-full-body.glb',
|
|
8
|
+
label: '全身底模',
|
|
9
|
+
category: 'character',
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
id: 'outfit_top_default',
|
|
13
|
+
filename: 'agent-avatar-outfit-top-default.glb',
|
|
14
|
+
storagePath: '/models/agent-avatar-outfit-top-default.glb',
|
|
15
|
+
label: '默认上装',
|
|
16
|
+
category: 'outfit',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: 'outfit_bottom_default',
|
|
20
|
+
filename: 'agent-avatar-outfit-bottom-default.glb',
|
|
21
|
+
storagePath: '/models/agent-avatar-outfit-bottom-default.glb',
|
|
22
|
+
label: '默认下装',
|
|
23
|
+
category: 'outfit',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
id: 'outfit_shoes_default',
|
|
27
|
+
filename: 'agent-avatar-outfit-shoes-default.glb',
|
|
28
|
+
storagePath: '/models/agent-avatar-outfit-shoes-default.glb',
|
|
29
|
+
label: '默认鞋靴',
|
|
30
|
+
category: 'outfit',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
id: 'headwear',
|
|
34
|
+
filename: 'agent-avatar-headwear.glb',
|
|
35
|
+
storagePath: '/models/agent-avatar-headwear.glb',
|
|
36
|
+
label: '头饰',
|
|
37
|
+
category: 'accessory',
|
|
38
|
+
},
|
|
39
|
+
];
|
|
40
|
+
export function hasAgentAvatar3dDefaultModel() {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
export function getBuiltinAgentAvatar3dModelById(id) {
|
|
44
|
+
return BUILTIN_AGENT_AVATAR_3D_MODELS.find((m) => m.id === id);
|
|
45
|
+
}
|
|
46
|
+
export function resolveBuiltinAgentAvatar3dStoragePath(url) {
|
|
47
|
+
const u = url.trim().toLowerCase();
|
|
48
|
+
if (!u)
|
|
49
|
+
return undefined;
|
|
50
|
+
for (const m of BUILTIN_AGENT_AVATAR_3D_MODELS) {
|
|
51
|
+
const fn = m.filename.toLowerCase();
|
|
52
|
+
const path = m.storagePath.toLowerCase();
|
|
53
|
+
if (u.includes(fn) || u.endsWith(path) || u === path)
|
|
54
|
+
return m.storagePath;
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
export function isBuiltinAgentAvatar3dModelUrl(url) {
|
|
59
|
+
const u = url.trim();
|
|
60
|
+
if (!u)
|
|
61
|
+
return true;
|
|
62
|
+
return resolveBuiltinAgentAvatar3dStoragePath(u) !== undefined;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=agentAvatar3d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentAvatar3d.js","sourceRoot":"","sources":["../../src/constants/agentAvatar3d.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kCAAkC,GAAG,oCAAoC,CAAA;AACtF,MAAM,CAAC,MAAM,iCAAiC,GAAG,kCAAkC,CAAA;AAYnF,MAAM,CAAC,MAAM,8BAA8B,GAAoC;IAC7E;QACE,EAAE,EAAE,WAAW;QACf,QAAQ,EAAE,4BAA4B;QACtC,WAAW,EAAE,oCAAoC;QACjD,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,WAAW;KACtB;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,QAAQ,EAAE,qCAAqC;QAC/C,WAAW,EAAE,6CAA6C;QAC1D,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,QAAQ;KACnB;IACD;QACE,EAAE,EAAE,uBAAuB;QAC3B,QAAQ,EAAE,wCAAwC;QAClD,WAAW,EAAE,gDAAgD;QAC7D,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,QAAQ;KACnB;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,QAAQ,EAAE,uCAAuC;QACjD,WAAW,EAAE,+CAA+C;QAC5D,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,QAAQ;KACnB;IACD;QACE,EAAE,EAAE,UAAU;QACd,QAAQ,EAAE,2BAA2B;QACrC,WAAW,EAAE,mCAAmC;QAChD,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,WAAW;KACtB;CACF,CAAA;AAED,MAAM,UAAU,4BAA4B;IAC1C,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,EAAU;IAEV,OAAO,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;AAChE,CAAC;AAED,MAAM,UAAU,sCAAsC,CAAC,GAAW;IAChE,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAClC,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAA;IACxB,KAAK,MAAM,CAAC,IAAI,8BAA8B,EAAE,CAAC;QAC/C,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;QACnC,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAA;QACxC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC,WAAW,CAAA;IAC5E,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,GAAW;IACxD,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IACpB,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IACnB,OAAO,sCAAsC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAA;AAChE,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export declare const AVATAR3D_MODULAR_SYSTEM_VERSION: "v1";
|
|
2
|
+
export type Avatar3dModularSystemVersion = typeof AVATAR3D_MODULAR_SYSTEM_VERSION;
|
|
3
|
+
export declare const AVATAR3D_STANDARD_SKELETON_PROFILE: "rpm_mixamo";
|
|
4
|
+
export type Avatar3dSkeletonProfile = typeof AVATAR3D_STANDARD_SKELETON_PROFILE;
|
|
5
|
+
export type Avatar3dModularSlotId = 'hair' | 'top' | 'bottom' | 'shoes' | 'gloves' | 'headwear' | 'faceAccessory';
|
|
6
|
+
export type Avatar3dModularAttachMode = 'skinned_merge' | 'head_attach' | 'root_attach';
|
|
7
|
+
export declare const AVATAR3D_MODULAR_SLOT_ORDER: Avatar3dModularSlotId[];
|
|
8
|
+
export declare const AVATAR3D_MODULAR_SLOT_LABELS: Record<Avatar3dModularSlotId, string>;
|
|
9
|
+
export interface Avatar3dModularBasePartMeta {
|
|
10
|
+
id: string;
|
|
11
|
+
filename: string;
|
|
12
|
+
storagePath: string;
|
|
13
|
+
label: string;
|
|
14
|
+
skeletonProfile: Avatar3dSkeletonProfile;
|
|
15
|
+
supportsFaceMorph: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface Avatar3dModularSlotPartMeta {
|
|
18
|
+
id: string;
|
|
19
|
+
slot: Avatar3dModularSlotId;
|
|
20
|
+
filename: string;
|
|
21
|
+
storagePath: string;
|
|
22
|
+
label: string;
|
|
23
|
+
skeletonProfile: Avatar3dSkeletonProfile;
|
|
24
|
+
attachMode: Avatar3dModularAttachMode;
|
|
25
|
+
hideBaseMeshHints?: string[];
|
|
26
|
+
}
|
|
27
|
+
export declare const DEFAULT_AVATAR3D_MODULAR_BASE_PART_ID = "base_full_body";
|
|
28
|
+
export declare const AVATAR3D_MODULAR_BASE_PARTS: Avatar3dModularBasePartMeta[];
|
|
29
|
+
export declare const AVATAR3D_MODULAR_SLOT_PARTS: Avatar3dModularSlotPartMeta[];
|
|
30
|
+
export declare function getAvatar3dModularBasePartById(id: string): Avatar3dModularBasePartMeta | undefined;
|
|
31
|
+
export declare function getAvatar3dModularSlotPartById(id: string): Avatar3dModularSlotPartMeta | undefined;
|
|
32
|
+
export declare function listAvatar3dModularSlotPartsForProfile(_profile: Avatar3dSkeletonProfile, slot?: Avatar3dModularSlotId): Avatar3dModularSlotPartMeta[];
|
|
33
|
+
export declare function listActiveModularSlotIds(): Avatar3dModularSlotId[];
|
|
34
|
+
export declare function normalizeModularBasePartId(basePartId: string): string;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
export const AVATAR3D_MODULAR_SYSTEM_VERSION = 'v1';
|
|
2
|
+
export const AVATAR3D_STANDARD_SKELETON_PROFILE = 'rpm_mixamo';
|
|
3
|
+
export const AVATAR3D_MODULAR_SLOT_ORDER = [
|
|
4
|
+
'hair',
|
|
5
|
+
'top',
|
|
6
|
+
'bottom',
|
|
7
|
+
'shoes',
|
|
8
|
+
'gloves',
|
|
9
|
+
'headwear',
|
|
10
|
+
'faceAccessory',
|
|
11
|
+
];
|
|
12
|
+
export const AVATAR3D_MODULAR_SLOT_LABELS = {
|
|
13
|
+
hair: '发型',
|
|
14
|
+
top: '上装',
|
|
15
|
+
bottom: '下装',
|
|
16
|
+
shoes: '鞋靴',
|
|
17
|
+
gloves: '手套',
|
|
18
|
+
headwear: '头饰',
|
|
19
|
+
faceAccessory: '面部配饰',
|
|
20
|
+
};
|
|
21
|
+
export const DEFAULT_AVATAR3D_MODULAR_BASE_PART_ID = 'base_full_body';
|
|
22
|
+
export const AVATAR3D_MODULAR_BASE_PARTS = [
|
|
23
|
+
{
|
|
24
|
+
id: 'base_full_body',
|
|
25
|
+
filename: 'agent-avatar-full-body.glb',
|
|
26
|
+
storagePath: '/models/agent-avatar-full-body.glb',
|
|
27
|
+
label: '全身底模',
|
|
28
|
+
skeletonProfile: AVATAR3D_STANDARD_SKELETON_PROFILE,
|
|
29
|
+
supportsFaceMorph: true,
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
export const AVATAR3D_MODULAR_SLOT_PARTS = [
|
|
33
|
+
{
|
|
34
|
+
id: 'slot_top_default',
|
|
35
|
+
slot: 'top',
|
|
36
|
+
filename: 'agent-avatar-outfit-top-default.glb',
|
|
37
|
+
storagePath: '/models/agent-avatar-outfit-top-default.glb',
|
|
38
|
+
label: '默认上装',
|
|
39
|
+
skeletonProfile: AVATAR3D_STANDARD_SKELETON_PROFILE,
|
|
40
|
+
attachMode: 'skinned_merge',
|
|
41
|
+
hideBaseMeshHints: ['Outfit_Top'],
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
id: 'slot_bottom_default',
|
|
45
|
+
slot: 'bottom',
|
|
46
|
+
filename: 'agent-avatar-outfit-bottom-default.glb',
|
|
47
|
+
storagePath: '/models/agent-avatar-outfit-bottom-default.glb',
|
|
48
|
+
label: '默认下装',
|
|
49
|
+
skeletonProfile: AVATAR3D_STANDARD_SKELETON_PROFILE,
|
|
50
|
+
attachMode: 'skinned_merge',
|
|
51
|
+
hideBaseMeshHints: ['Outfit_Bottom'],
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
id: 'slot_shoes_default',
|
|
55
|
+
slot: 'shoes',
|
|
56
|
+
filename: 'agent-avatar-outfit-shoes-default.glb',
|
|
57
|
+
storagePath: '/models/agent-avatar-outfit-shoes-default.glb',
|
|
58
|
+
label: '默认鞋靴',
|
|
59
|
+
skeletonProfile: AVATAR3D_STANDARD_SKELETON_PROFILE,
|
|
60
|
+
attachMode: 'skinned_merge',
|
|
61
|
+
hideBaseMeshHints: ['Outfit_Footwear'],
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
id: 'slot_headwear_rpm',
|
|
65
|
+
slot: 'headwear',
|
|
66
|
+
filename: 'agent-avatar-headwear.glb',
|
|
67
|
+
storagePath: '/models/agent-avatar-headwear.glb',
|
|
68
|
+
label: '头饰',
|
|
69
|
+
skeletonProfile: AVATAR3D_STANDARD_SKELETON_PROFILE,
|
|
70
|
+
attachMode: 'head_attach',
|
|
71
|
+
},
|
|
72
|
+
];
|
|
73
|
+
export function getAvatar3dModularBasePartById(id) {
|
|
74
|
+
return AVATAR3D_MODULAR_BASE_PARTS.find((p) => p.id === id);
|
|
75
|
+
}
|
|
76
|
+
export function getAvatar3dModularSlotPartById(id) {
|
|
77
|
+
return AVATAR3D_MODULAR_SLOT_PARTS.find((p) => p.id === id);
|
|
78
|
+
}
|
|
79
|
+
export function listAvatar3dModularSlotPartsForProfile(_profile, slot) {
|
|
80
|
+
return AVATAR3D_MODULAR_SLOT_PARTS.filter((p) => !slot || p.slot === slot);
|
|
81
|
+
}
|
|
82
|
+
export function listActiveModularSlotIds() {
|
|
83
|
+
return AVATAR3D_MODULAR_SLOT_ORDER.filter((slotId) => AVATAR3D_MODULAR_SLOT_PARTS.some((p) => p.slot === slotId));
|
|
84
|
+
}
|
|
85
|
+
export function normalizeModularBasePartId(basePartId) {
|
|
86
|
+
const id = basePartId.trim();
|
|
87
|
+
const meta = getAvatar3dModularBasePartById(id);
|
|
88
|
+
if (meta && meta.skeletonProfile === AVATAR3D_STANDARD_SKELETON_PROFILE) {
|
|
89
|
+
return id;
|
|
90
|
+
}
|
|
91
|
+
return DEFAULT_AVATAR3D_MODULAR_BASE_PART_ID;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=agentAvatar3dModular.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentAvatar3dModular.js","sourceRoot":"","sources":["../../src/constants/agentAvatar3dModular.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const AGENT_PRESENCE_3D_LABELS: {
|
|
2
|
+
readonly sectionTitle: "3D 形象";
|
|
3
|
+
readonly shortName: "3D 形象";
|
|
4
|
+
readonly customizeAction: "定制形象";
|
|
5
|
+
readonly customizeDialogTitle: "定制 3D 形象";
|
|
6
|
+
readonly faceTuneTitle: "捏脸微调";
|
|
7
|
+
readonly applyAction: "应用";
|
|
8
|
+
readonly notConfigured: "未配置 3D 形象";
|
|
9
|
+
readonly loadingDefault: "加载中…";
|
|
10
|
+
readonly randomFaceSummary: "随机捏脸";
|
|
11
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const AGENT_PRESENCE_3D_LABELS = {
|
|
2
|
+
sectionTitle: '3D 形象',
|
|
3
|
+
shortName: '3D 形象',
|
|
4
|
+
customizeAction: '定制形象',
|
|
5
|
+
customizeDialogTitle: '定制 3D 形象',
|
|
6
|
+
faceTuneTitle: '捏脸微调',
|
|
7
|
+
applyAction: '应用',
|
|
8
|
+
notConfigured: '未配置 3D 形象',
|
|
9
|
+
loadingDefault: '加载中…',
|
|
10
|
+
randomFaceSummary: '随机捏脸',
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=agentPresence3dLabels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentPresence3dLabels.js","sourceRoot":"","sources":["../../src/constants/agentPresence3dLabels.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,YAAY,EAAE,OAAO;IACrB,SAAS,EAAE,OAAO;IAClB,eAAe,EAAE,MAAM;IACvB,oBAAoB,EAAE,UAAU;IAChC,aAAa,EAAE,MAAM;IACrB,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,WAAW;IAC1B,cAAc,EAAE,MAAM;IACtB,iBAAiB,EAAE,MAAM;CACjB,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const AI_ADMIN_API_PREFIX = "admin/ai";
|
|
2
|
+
export declare const AI_CHAT_API_PREFIX = "chat/ai";
|
|
3
|
+
export declare const LLM_GATEWAY_OPENAI_PREFIX = "v1";
|
|
4
|
+
export declare function adminAiApiPath(suffix?: string): string;
|
|
5
|
+
export declare function chatAiApiPath(suffix?: string): string;
|
|
6
|
+
export declare const CHAT_AI_SPA_PREFIX = "ai";
|
|
7
|
+
export declare function chatAiSpaPath(suffix?: string): string;
|
|
8
|
+
export declare function adminAiAgentSubResourcePathRegex(suffix: string): RegExp;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export const AI_ADMIN_API_PREFIX = 'admin/ai';
|
|
2
|
+
export const AI_CHAT_API_PREFIX = 'chat/ai';
|
|
3
|
+
export const LLM_GATEWAY_OPENAI_PREFIX = 'v1';
|
|
4
|
+
export function adminAiApiPath(suffix = '') {
|
|
5
|
+
const s = String(suffix ?? '').replace(/^\//, '');
|
|
6
|
+
return s ? `/${AI_ADMIN_API_PREFIX}/${s}` : `/${AI_ADMIN_API_PREFIX}`;
|
|
7
|
+
}
|
|
8
|
+
export function chatAiApiPath(suffix = '') {
|
|
9
|
+
const s = String(suffix ?? '').replace(/^\//, '');
|
|
10
|
+
return s ? `/${AI_CHAT_API_PREFIX}/${s}` : `/${AI_CHAT_API_PREFIX}`;
|
|
11
|
+
}
|
|
12
|
+
export const CHAT_AI_SPA_PREFIX = 'ai';
|
|
13
|
+
export function chatAiSpaPath(suffix = '') {
|
|
14
|
+
const s = String(suffix ?? '').replace(/^\//, '');
|
|
15
|
+
return s ? `/${CHAT_AI_SPA_PREFIX}/${s}` : `/${CHAT_AI_SPA_PREFIX}`;
|
|
16
|
+
}
|
|
17
|
+
export function adminAiAgentSubResourcePathRegex(suffix) {
|
|
18
|
+
const seg = String(suffix ?? '')
|
|
19
|
+
.replace(/^\//, '')
|
|
20
|
+
.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
21
|
+
return new RegExp(`^/${AI_ADMIN_API_PREFIX}/agents/[^/]+/${seg}$`);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=aiApiRoutes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aiApiRoutes.js","sourceRoot":"","sources":["../../src/constants/aiApiRoutes.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAA;AAG7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAA;AAG3C,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAA;AAE7C,MAAM,UAAU,cAAc,CAAC,MAAM,GAAG,EAAE;IACxC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACjD,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,mBAAmB,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,mBAAmB,EAAE,CAAA;AACvE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAM,GAAG,EAAE;IACvC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACjD,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,kBAAkB,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,kBAAkB,EAAE,CAAA;AACrE,CAAC;AAKD,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAA;AAEtC,MAAM,UAAU,aAAa,CAAC,MAAM,GAAG,EAAE;IACvC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACjD,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,kBAAkB,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,kBAAkB,EAAE,CAAA;AACrE,CAAC;AAGD,MAAM,UAAU,gCAAgC,CAAC,MAAc;IAC7D,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;SAC7B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAClB,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA;IACzC,OAAO,IAAI,MAAM,CAAC,KAAK,mBAAmB,iBAAiB,GAAG,GAAG,CAAC,CAAA;AACpE,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type ArkitMorphDirectionSpec = {
|
|
2
|
+
positive?: string[];
|
|
3
|
+
negative?: string[];
|
|
4
|
+
};
|
|
5
|
+
export declare const ARKIT_CATALOG_MORPH_SPECS: Record<string, ArkitMorphDirectionSpec>;
|
|
6
|
+
export declare function isArkitBlendshapeModel(modelMorphNames: string[]): boolean;
|
|
7
|
+
export declare function resolveMorphNamesInModel(templates: string[], modelMorphNames: string[]): string[];
|
|
8
|
+
export declare function resolveArkitCatalogMorphNames(catalogId: string, modelMorphNames: string[]): {
|
|
9
|
+
positive: string[];
|
|
10
|
+
negative: string[];
|
|
11
|
+
};
|
|
12
|
+
export declare function isArkitMorphCatalogIdBound(catalogId: string, modelMorphNames: string[]): boolean;
|
|
13
|
+
export declare function morphSliderToArkitInfluence(v: number): number;
|
|
14
|
+
export declare function morphSliderToSymmetricInfluence(v: number): number;
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
export const ARKIT_CATALOG_MORPH_SPECS = {
|
|
2
|
+
face_width: {
|
|
3
|
+
positive: ['cheekPuff'],
|
|
4
|
+
negative: ['jawLeft', 'jawRight'],
|
|
5
|
+
},
|
|
6
|
+
face_round: {
|
|
7
|
+
positive: ['cheekPuff'],
|
|
8
|
+
negative: ['cheekSquintLeft', 'cheekSquintRight'],
|
|
9
|
+
},
|
|
10
|
+
jaw_width: {
|
|
11
|
+
positive: ['jawLeft', 'jawRight'],
|
|
12
|
+
negative: ['jawForward'],
|
|
13
|
+
},
|
|
14
|
+
chin_length: {
|
|
15
|
+
positive: ['jawForward'],
|
|
16
|
+
negative: ['jawOpen'],
|
|
17
|
+
},
|
|
18
|
+
cheek_height: {
|
|
19
|
+
positive: ['cheekSquintLeft', 'cheekSquintRight'],
|
|
20
|
+
negative: ['cheekPuff'],
|
|
21
|
+
},
|
|
22
|
+
face_height: {
|
|
23
|
+
positive: ['jawOpen'],
|
|
24
|
+
negative: ['jawForward'],
|
|
25
|
+
},
|
|
26
|
+
brow_thickness: {
|
|
27
|
+
positive: ['browDownLeft', 'browDownRight'],
|
|
28
|
+
negative: ['browOuterUpLeft', 'browOuterUpRight'],
|
|
29
|
+
},
|
|
30
|
+
brow_height: {
|
|
31
|
+
positive: ['browInnerUp'],
|
|
32
|
+
negative: ['browDownLeft', 'browDownRight'],
|
|
33
|
+
},
|
|
34
|
+
brow_spacing: {
|
|
35
|
+
positive: ['browOuterUpLeft', 'browOuterUpRight'],
|
|
36
|
+
negative: ['browDownLeft', 'browDownRight'],
|
|
37
|
+
},
|
|
38
|
+
eye_size: {
|
|
39
|
+
positive: ['eyeWideLeft', 'eyeWideRight'],
|
|
40
|
+
negative: ['eyeSquintLeft', 'eyeSquintRight'],
|
|
41
|
+
},
|
|
42
|
+
eye_spacing: {
|
|
43
|
+
positive: ['eyeLookOutLeft', 'eyeLookOutRight'],
|
|
44
|
+
negative: ['eyeLookInLeft', 'eyeLookInRight'],
|
|
45
|
+
},
|
|
46
|
+
eye_height: {
|
|
47
|
+
positive: ['eyeLookUpLeft', 'eyeLookUpRight'],
|
|
48
|
+
negative: ['eyeLookDownLeft', 'eyeLookDownRight'],
|
|
49
|
+
},
|
|
50
|
+
eye_corner: {
|
|
51
|
+
positive: ['eyeSquintLeft', 'eyeSquintRight'],
|
|
52
|
+
negative: ['eyeWideLeft', 'eyeWideRight'],
|
|
53
|
+
},
|
|
54
|
+
eye_depth: {
|
|
55
|
+
positive: ['eyeSquintLeft', 'eyeSquintRight'],
|
|
56
|
+
negative: ['eyeWideLeft', 'eyeWideRight'],
|
|
57
|
+
},
|
|
58
|
+
nose_size: {
|
|
59
|
+
positive: ['noseSneerLeft', 'noseSneerRight'],
|
|
60
|
+
negative: [],
|
|
61
|
+
},
|
|
62
|
+
nose_width: {
|
|
63
|
+
positive: ['mouthFunnel'],
|
|
64
|
+
negative: ['mouthPucker'],
|
|
65
|
+
},
|
|
66
|
+
nose_height: {
|
|
67
|
+
positive: ['noseSneerLeft', 'noseSneerRight'],
|
|
68
|
+
negative: [],
|
|
69
|
+
},
|
|
70
|
+
nose_bridge: {
|
|
71
|
+
positive: ['jawForward'],
|
|
72
|
+
negative: [],
|
|
73
|
+
},
|
|
74
|
+
mouth_width: {
|
|
75
|
+
positive: ['mouthStretchLeft', 'mouthStretchRight'],
|
|
76
|
+
negative: ['mouthPucker'],
|
|
77
|
+
},
|
|
78
|
+
mouth_size: {
|
|
79
|
+
positive: ['mouthFunnel', 'mouthPucker'],
|
|
80
|
+
negative: [],
|
|
81
|
+
},
|
|
82
|
+
lip_thickness: {
|
|
83
|
+
positive: ['mouthPucker'],
|
|
84
|
+
negative: ['mouthStretchLeft', 'mouthStretchRight'],
|
|
85
|
+
},
|
|
86
|
+
mouth_corner: {
|
|
87
|
+
positive: ['mouthSmileLeft', 'mouthSmileRight'],
|
|
88
|
+
negative: ['mouthFrownLeft', 'mouthFrownRight'],
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
export function isArkitBlendshapeModel(modelMorphNames) {
|
|
92
|
+
const lower = modelMorphNames.map((n) => n.toLowerCase());
|
|
93
|
+
return lower.some((n) => n.startsWith('brow') ||
|
|
94
|
+
n.startsWith('jaw') ||
|
|
95
|
+
n.startsWith('mouthsmile') ||
|
|
96
|
+
n === 'browinnerup' ||
|
|
97
|
+
n === 'jawopen');
|
|
98
|
+
}
|
|
99
|
+
function findMorphName(needle, modelMorphNames) {
|
|
100
|
+
const lowerNeedle = needle.toLowerCase();
|
|
101
|
+
const exact = modelMorphNames.find((n) => n.toLowerCase() === lowerNeedle);
|
|
102
|
+
if (exact)
|
|
103
|
+
return exact;
|
|
104
|
+
const partial = modelMorphNames.find((n) => n.toLowerCase().includes(lowerNeedle));
|
|
105
|
+
return partial ?? null;
|
|
106
|
+
}
|
|
107
|
+
export function resolveMorphNamesInModel(templates, modelMorphNames) {
|
|
108
|
+
const modelSet = new Set(modelMorphNames);
|
|
109
|
+
const out = new Set();
|
|
110
|
+
for (const template of templates) {
|
|
111
|
+
const hit = findMorphName(template, modelMorphNames);
|
|
112
|
+
if (hit)
|
|
113
|
+
out.add(hit);
|
|
114
|
+
const lower = template.toLowerCase();
|
|
115
|
+
if (lower.endsWith('left')) {
|
|
116
|
+
const rightTemplate = template.replace(/left$/i, 'Right');
|
|
117
|
+
const rightHit = findMorphName(rightTemplate, modelMorphNames);
|
|
118
|
+
if (rightHit)
|
|
119
|
+
out.add(rightHit);
|
|
120
|
+
}
|
|
121
|
+
else if (lower.endsWith('right')) {
|
|
122
|
+
const leftTemplate = template.replace(/right$/i, 'Left');
|
|
123
|
+
const leftHit = findMorphName(leftTemplate, modelMorphNames);
|
|
124
|
+
if (leftHit)
|
|
125
|
+
out.add(leftHit);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return [...out].filter((n) => modelSet.has(n));
|
|
129
|
+
}
|
|
130
|
+
export function resolveArkitCatalogMorphNames(catalogId, modelMorphNames) {
|
|
131
|
+
const spec = ARKIT_CATALOG_MORPH_SPECS[catalogId];
|
|
132
|
+
if (!spec)
|
|
133
|
+
return { positive: [], negative: [] };
|
|
134
|
+
return {
|
|
135
|
+
positive: resolveMorphNamesInModel(spec.positive ?? [], modelMorphNames),
|
|
136
|
+
negative: resolveMorphNamesInModel(spec.negative ?? [], modelMorphNames),
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
export function isArkitMorphCatalogIdBound(catalogId, modelMorphNames) {
|
|
140
|
+
const { positive, negative } = resolveArkitCatalogMorphNames(catalogId, modelMorphNames);
|
|
141
|
+
return positive.length > 0 || negative.length > 0;
|
|
142
|
+
}
|
|
143
|
+
export function morphSliderToArkitInfluence(v) {
|
|
144
|
+
return Math.max(0, Math.min(1, v));
|
|
145
|
+
}
|
|
146
|
+
export function morphSliderToSymmetricInfluence(v) {
|
|
147
|
+
return (v + 1) / 2;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=agentAvatar3dArkitMorph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentAvatar3dArkitMorph.js","sourceRoot":"","sources":["../../../src/functions/ai/agentAvatar3dArkitMorph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export type Avatar3dEditorMode = 'procedural' | 'glb_custom' | 'glb_monolithic';
|
|
2
|
+
export interface Avatar3dColorCapabilities {
|
|
3
|
+
skin: boolean;
|
|
4
|
+
hair: boolean;
|
|
5
|
+
eye: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface Avatar3dMeshInventoryEntry {
|
|
8
|
+
meshName: string;
|
|
9
|
+
materialNames: string[];
|
|
10
|
+
hasTextureMap: boolean;
|
|
11
|
+
visible: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface Avatar3dCapabilities {
|
|
14
|
+
mode: Avatar3dEditorMode;
|
|
15
|
+
colors: Avatar3dColorCapabilities;
|
|
16
|
+
morphBoundCount: number;
|
|
17
|
+
morphTotal: number;
|
|
18
|
+
isArkit: boolean;
|
|
19
|
+
colorHint?: string;
|
|
20
|
+
morphHint?: string;
|
|
21
|
+
}
|
|
22
|
+
type ThreeLikeMaterial = {
|
|
23
|
+
name?: string;
|
|
24
|
+
map?: unknown;
|
|
25
|
+
};
|
|
26
|
+
type ThreeLikeMesh = {
|
|
27
|
+
isMesh?: boolean;
|
|
28
|
+
name?: string;
|
|
29
|
+
visible?: boolean;
|
|
30
|
+
material?: ThreeLikeMaterial | ThreeLikeMaterial[];
|
|
31
|
+
};
|
|
32
|
+
type ThreeLikeObject = {
|
|
33
|
+
traverse: (fn: (obj: ThreeLikeMesh) => void) => void;
|
|
34
|
+
};
|
|
35
|
+
export declare function listAvatar3dMeshInventory(root: ThreeLikeObject | null | undefined): Avatar3dMeshInventoryEntry[];
|
|
36
|
+
export declare function isMonolithicTextureAvatar(inventory: Avatar3dMeshInventoryEntry[]): boolean;
|
|
37
|
+
export declare function proceduralAvatar3dCapabilities(): Avatar3dCapabilities;
|
|
38
|
+
export declare function deriveAvatar3dCapabilities(input: {
|
|
39
|
+
useProcedural: boolean;
|
|
40
|
+
inventory: Avatar3dMeshInventoryEntry[];
|
|
41
|
+
morphNames: string[];
|
|
42
|
+
}): Avatar3dCapabilities;
|
|
43
|
+
export declare function hasAnyAvatar3dColorCapability(colors: Avatar3dColorCapabilities): boolean;
|
|
44
|
+
export {};
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { isArkitBlendshapeModel } from './agentAvatar3dArkitMorph.js';
|
|
2
|
+
import { countAvatar3dMorphBindings, listAvatar3dMorphCatalogIds, } from './agentAvatar3dMorphCatalog.js';
|
|
3
|
+
const OVERLAY_MESH_HINTS = ['transparent', 'headwear'];
|
|
4
|
+
const OUTFIT_HINTS = ['outfit', 'cloth', 'shirt', 'pants', 'shoes', 'garment', 'top', 'bottom', 'jacket'];
|
|
5
|
+
const SKIN_MESH_HINTS = ['skin', 'flesh', 'body'];
|
|
6
|
+
const HAIR_MESH_HINTS = ['hair', 'scalp'];
|
|
7
|
+
const EYE_MESH_HINTS = ['eye', 'iris', 'pupil', 'eyeball'];
|
|
8
|
+
function meshLabel(meshName, matName) {
|
|
9
|
+
return `${meshName} ${matName}`.toLowerCase();
|
|
10
|
+
}
|
|
11
|
+
function isOverlayMeshName(name) {
|
|
12
|
+
const n = name.toLowerCase();
|
|
13
|
+
return OVERLAY_MESH_HINTS.some((h) => n.includes(h));
|
|
14
|
+
}
|
|
15
|
+
function matchesAny(text, hints) {
|
|
16
|
+
return hints.some((h) => text.includes(h));
|
|
17
|
+
}
|
|
18
|
+
export function listAvatar3dMeshInventory(root) {
|
|
19
|
+
const out = [];
|
|
20
|
+
if (!root?.traverse)
|
|
21
|
+
return out;
|
|
22
|
+
root.traverse((child) => {
|
|
23
|
+
if (!child?.isMesh)
|
|
24
|
+
return;
|
|
25
|
+
const meshName = String(child.name ?? '');
|
|
26
|
+
const materials = Array.isArray(child.material)
|
|
27
|
+
? child.material
|
|
28
|
+
: child.material
|
|
29
|
+
? [child.material]
|
|
30
|
+
: [];
|
|
31
|
+
const materialNames = [];
|
|
32
|
+
let hasTextureMap = false;
|
|
33
|
+
for (const mat of materials) {
|
|
34
|
+
if (!mat)
|
|
35
|
+
continue;
|
|
36
|
+
materialNames.push(String(mat.name ?? ''));
|
|
37
|
+
if (mat.map)
|
|
38
|
+
hasTextureMap = true;
|
|
39
|
+
}
|
|
40
|
+
out.push({
|
|
41
|
+
meshName,
|
|
42
|
+
materialNames,
|
|
43
|
+
hasTextureMap,
|
|
44
|
+
visible: child.visible !== false,
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
return out;
|
|
48
|
+
}
|
|
49
|
+
function hasSeparableSkinMesh(inventory) {
|
|
50
|
+
return inventory.some((entry) => {
|
|
51
|
+
if (isOverlayMeshName(entry.meshName))
|
|
52
|
+
return false;
|
|
53
|
+
const labels = entry.materialNames.map((m) => meshLabel(entry.meshName, m));
|
|
54
|
+
return labels.some((l) => matchesAny(l, SKIN_MESH_HINTS) &&
|
|
55
|
+
!matchesAny(l, OUTFIT_HINTS) &&
|
|
56
|
+
!l.includes('wolf3d_avatar'));
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
export function isMonolithicTextureAvatar(inventory) {
|
|
60
|
+
const visible = inventory.filter((e) => e.visible && !isOverlayMeshName(e.meshName));
|
|
61
|
+
const textured = visible.filter((e) => e.hasTextureMap);
|
|
62
|
+
if (textured.length !== 1)
|
|
63
|
+
return false;
|
|
64
|
+
const entry = textured[0];
|
|
65
|
+
const mesh = entry.meshName.toLowerCase();
|
|
66
|
+
if (mesh.includes('wolf3d') || mesh.includes('avatar'))
|
|
67
|
+
return true;
|
|
68
|
+
return !hasSeparableSkinMesh(inventory);
|
|
69
|
+
}
|
|
70
|
+
function analyzeColorCapabilities(inventory, monolithic) {
|
|
71
|
+
if (monolithic)
|
|
72
|
+
return { skin: false, hair: false, eye: false };
|
|
73
|
+
const labels = inventory.flatMap((e) => e.materialNames.map((m) => meshLabel(e.meshName, m)));
|
|
74
|
+
const skin = labels.some((l) => matchesAny(l, SKIN_MESH_HINTS) &&
|
|
75
|
+
!matchesAny(l, OUTFIT_HINTS) &&
|
|
76
|
+
!l.includes('wolf3d_avatar'));
|
|
77
|
+
const hair = labels.some((l) => matchesAny(l, HAIR_MESH_HINTS));
|
|
78
|
+
const eye = labels.some((l) => matchesAny(l, EYE_MESH_HINTS) &&
|
|
79
|
+
!l.includes('eyebrow') &&
|
|
80
|
+
!l.includes('lash') &&
|
|
81
|
+
!l.includes('eyelash'));
|
|
82
|
+
return { skin, hair, eye };
|
|
83
|
+
}
|
|
84
|
+
export function proceduralAvatar3dCapabilities() {
|
|
85
|
+
const morphTotal = listAvatar3dMorphCatalogIds().length;
|
|
86
|
+
return {
|
|
87
|
+
mode: 'procedural',
|
|
88
|
+
colors: { skin: true, hair: true, eye: true },
|
|
89
|
+
morphBoundCount: morphTotal,
|
|
90
|
+
morphTotal,
|
|
91
|
+
isArkit: false,
|
|
92
|
+
morphHint: '积木人形支持全部五官参数与独立配色',
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
export function deriveAvatar3dCapabilities(input) {
|
|
96
|
+
if (input.useProcedural)
|
|
97
|
+
return proceduralAvatar3dCapabilities();
|
|
98
|
+
const morphNames = [...new Set(input.morphNames)];
|
|
99
|
+
const morphTotal = listAvatar3dMorphCatalogIds().length;
|
|
100
|
+
const morphBoundCount = countAvatar3dMorphBindings(morphNames);
|
|
101
|
+
const isArkit = isArkitBlendshapeModel(morphNames);
|
|
102
|
+
const monolithic = isMonolithicTextureAvatar(input.inventory);
|
|
103
|
+
const colors = analyzeColorCapabilities(input.inventory, monolithic);
|
|
104
|
+
return {
|
|
105
|
+
mode: monolithic ? 'glb_monolithic' : 'glb_custom',
|
|
106
|
+
colors,
|
|
107
|
+
morphBoundCount,
|
|
108
|
+
morphTotal,
|
|
109
|
+
isArkit,
|
|
110
|
+
colorHint: monolithic
|
|
111
|
+
? '烘焙贴图,无法单独改色'
|
|
112
|
+
: !colors.skin && !colors.hair && !colors.eye
|
|
113
|
+
? '未检测到可染色材质'
|
|
114
|
+
: undefined,
|
|
115
|
+
morphHint: morphBoundCount === 0 ? '当前模型不支持 morph' : undefined,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
export function hasAnyAvatar3dColorCapability(colors) {
|
|
119
|
+
return colors.skin || colors.hair || colors.eye;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=agentAvatar3dCapabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentAvatar3dCapabilities.js","sourceRoot":"","sources":["../../../src/functions/ai/agentAvatar3dCapabilities.ts"],"names":[],"mappings":"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"}
|