@convai/web-sdk 0.3.2-beta.0 → 0.3.2-beta.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/dist/core/BlendshapeQueue.d.ts +26 -42
- package/dist/core/BlendshapeQueue.d.ts.map +1 -1
- package/dist/core/BlendshapeQueue.js +44 -101
- package/dist/core/BlendshapeQueue.js.map +1 -1
- package/dist/core/ConvaiClient.d.ts +0 -14
- package/dist/core/ConvaiClient.d.ts.map +1 -1
- package/dist/core/ConvaiClient.js +2 -23
- package/dist/core/ConvaiClient.js.map +1 -1
- package/dist/core/MessageHandler.d.ts.map +1 -1
- package/dist/core/MessageHandler.js +1 -2
- package/dist/core/MessageHandler.js.map +1 -1
- package/dist/core/index.d.ts +0 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/types.d.ts +6 -11
- package/dist/core/types.d.ts.map +1 -1
- package/dist/lipsync-helpers/createBlendshapeQueue.d.ts +86 -0
- package/dist/lipsync-helpers/createBlendshapeQueue.d.ts.map +1 -0
- package/dist/lipsync-helpers/createBlendshapeQueue.js +126 -0
- package/dist/lipsync-helpers/createBlendshapeQueue.js.map +1 -0
- package/dist/lipsync-helpers/declarativeMapping.d.ts +93 -0
- package/dist/lipsync-helpers/declarativeMapping.d.ts.map +1 -0
- package/dist/lipsync-helpers/declarativeMapping.js +228 -0
- package/dist/lipsync-helpers/declarativeMapping.js.map +1 -0
- package/dist/lipsync-helpers/index.d.ts +9 -4
- package/dist/lipsync-helpers/index.d.ts.map +1 -1
- package/dist/lipsync-helpers/index.js +24 -12
- package/dist/lipsync-helpers/index.js.map +1 -1
- package/dist/lipsync-helpers/mappingTypes.d.ts +64 -0
- package/dist/lipsync-helpers/mappingTypes.d.ts.map +1 -0
- package/dist/lipsync-helpers/mappingTypes.js +28 -0
- package/dist/lipsync-helpers/mappingTypes.js.map +1 -0
- package/dist/lipsync-helpers/presetMappers.d.ts +24 -0
- package/dist/lipsync-helpers/presetMappers.d.ts.map +1 -0
- package/dist/lipsync-helpers/presetMappers.js +38 -0
- package/dist/lipsync-helpers/presetMappers.js.map +1 -0
- package/dist/react/hooks/useConvaiClient.d.ts.map +1 -1
- package/dist/react/hooks/useConvaiClient.js +0 -4
- package/dist/react/hooks/useConvaiClient.js.map +1 -1
- package/dist/vanilla/ConvaiWidget.d.ts +13 -6
- package/dist/vanilla/ConvaiWidget.d.ts.map +1 -1
- package/dist/vanilla/ConvaiWidget.js +107 -70
- package/dist/vanilla/ConvaiWidget.js.map +1 -1
- package/dist/vanilla/types.d.ts +22 -2
- package/dist/vanilla/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/lipsync-helpers/arkitBlendshapeHelpers.d.ts +0 -80
- package/dist/lipsync-helpers/arkitBlendshapeHelpers.d.ts.map +0 -1
- package/dist/lipsync-helpers/arkitBlendshapeHelpers.js +0 -201
- package/dist/lipsync-helpers/arkitBlendshapeHelpers.js.map +0 -1
- package/dist/lipsync-helpers/arkitPhonemeReference.d.ts +0 -155
- package/dist/lipsync-helpers/arkitPhonemeReference.d.ts.map +0 -1
- package/dist/lipsync-helpers/arkitPhonemeReference.js +0 -362
- package/dist/lipsync-helpers/arkitPhonemeReference.js.map +0 -1
- package/dist/lipsync-helpers/neurosyncBlendshapeMapper.d.ts +0 -30
- package/dist/lipsync-helpers/neurosyncBlendshapeMapper.d.ts.map +0 -1
- package/dist/lipsync-helpers/neurosyncBlendshapeMapper.js +0 -315
- package/dist/lipsync-helpers/neurosyncBlendshapeMapper.js.map +0 -1
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0EAA0E;IAC1E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,6DAA6D;IAC7D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Factory functions for creating BlendshapeQueue with preset mappings
|
|
3
|
+
*
|
|
4
|
+
* This provides a convenient API for creating queues with common configurations:
|
|
5
|
+
* - ARKit passthrough
|
|
6
|
+
* - MetaHuman passthrough
|
|
7
|
+
* - Custom mapper
|
|
8
|
+
*/
|
|
9
|
+
import { BlendshapeQueue } from '../core/BlendshapeQueue';
|
|
10
|
+
import { BlendshapeMappingConfig, BlendshapeMapper } from './mappingTypes';
|
|
11
|
+
/**
|
|
12
|
+
* Create a BlendshapeQueue with the specified mapping configuration
|
|
13
|
+
*
|
|
14
|
+
* @param config - Blendshape mapping configuration
|
|
15
|
+
* @returns Configured BlendshapeQueue instance
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* // ARKit passthrough (no mapping)
|
|
20
|
+
* const queue = createBlendshapeQueue({
|
|
21
|
+
* inputFormat: 'arkit',
|
|
22
|
+
* outputFormat: 'arkit'
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* // MetaHuman passthrough
|
|
26
|
+
* const queue = createBlendshapeQueue({
|
|
27
|
+
* inputFormat: 'mha',
|
|
28
|
+
* outputFormat: 'mha'
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* // Custom mapper
|
|
32
|
+
* const queue = createBlendshapeQueue({
|
|
33
|
+
* inputFormat: 'arkit',
|
|
34
|
+
* outputFormat: 'custom',
|
|
35
|
+
* mapper: (input) => {
|
|
36
|
+
* // Your custom mapping logic
|
|
37
|
+
* return new Float32Array(input);
|
|
38
|
+
* }
|
|
39
|
+
* });
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare function createBlendshapeQueue(config: BlendshapeMappingConfig): BlendshapeQueue;
|
|
43
|
+
/**
|
|
44
|
+
* Create a BlendshapeQueue for ARKit format (61 elements)
|
|
45
|
+
* Server sends 61-element array, queue stores 61-element array
|
|
46
|
+
*/
|
|
47
|
+
export declare function createARKitBlendshapeQueue(): BlendshapeQueue;
|
|
48
|
+
/**
|
|
49
|
+
* Create a BlendshapeQueue for MetaHuman format (251 elements)
|
|
50
|
+
* Server sends 251-element array, queue stores 251-element array
|
|
51
|
+
*/
|
|
52
|
+
export declare function createMetaHumanBlendshapeQueue(): BlendshapeQueue;
|
|
53
|
+
/**
|
|
54
|
+
* Create a BlendshapeQueue with a custom mapper function
|
|
55
|
+
*
|
|
56
|
+
* @param mapper - Custom mapping function
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* const queue = createCustomBlendshapeQueue((input) => {
|
|
61
|
+
* // Map ARKit to your custom rig
|
|
62
|
+
* const output = new Float32Array(30); // Your rig has 30 blendshapes
|
|
63
|
+
* output[0] = input[17]; // Map JawOpen
|
|
64
|
+
* output[1] = input[18]; // Map MouthClose
|
|
65
|
+
* // ... more mappings
|
|
66
|
+
* return output;
|
|
67
|
+
* });
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export declare function createCustomBlendshapeQueue(mapper: BlendshapeMapper): BlendshapeQueue;
|
|
71
|
+
/**
|
|
72
|
+
* Create a BlendshapeQueue with no mapping (identity/passthrough)
|
|
73
|
+
* Frames are stored as-is without transformation
|
|
74
|
+
*/
|
|
75
|
+
export declare function createPassthroughBlendshapeQueue(): BlendshapeQueue;
|
|
76
|
+
/**
|
|
77
|
+
* Infer mapping config from ConvaiConfig blendshape settings
|
|
78
|
+
* This is used internally by ConvaiClient to auto-configure the queue
|
|
79
|
+
*
|
|
80
|
+
* @param blendshapeConfig - Blendshape config from ConvaiConfig
|
|
81
|
+
* @returns Mapping configuration for createBlendshapeQueue
|
|
82
|
+
*/
|
|
83
|
+
export declare function inferMappingFromConfig(blendshapeConfig?: {
|
|
84
|
+
format?: 'arkit' | 'mha';
|
|
85
|
+
}): BlendshapeMappingConfig;
|
|
86
|
+
//# sourceMappingURL=createBlendshapeQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createBlendshapeQueue.d.ts","sourceRoot":"","sources":["../../src/lipsync-helpers/createBlendshapeQueue.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAO3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,uBAAuB,GAAG,eAAe,CAYtF;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,eAAe,CAE5D;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,IAAI,eAAe,CAEhE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,gBAAgB,GAAG,eAAe,CAErF;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,IAAI,eAAe,CAElE;AAwBD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,gBAAgB,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;CAAE,GAC9C,uBAAuB,CAOzB"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Factory functions for creating BlendshapeQueue with preset mappings
|
|
3
|
+
*
|
|
4
|
+
* This provides a convenient API for creating queues with common configurations:
|
|
5
|
+
* - ARKit passthrough
|
|
6
|
+
* - MetaHuman passthrough
|
|
7
|
+
* - Custom mapper
|
|
8
|
+
*/
|
|
9
|
+
import { BlendshapeQueue } from '../core/BlendshapeQueue';
|
|
10
|
+
import { arkitPassthroughMapper, metahumanPassthroughMapper, identityMapper } from './presetMappers';
|
|
11
|
+
/**
|
|
12
|
+
* Create a BlendshapeQueue with the specified mapping configuration
|
|
13
|
+
*
|
|
14
|
+
* @param config - Blendshape mapping configuration
|
|
15
|
+
* @returns Configured BlendshapeQueue instance
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* // ARKit passthrough (no mapping)
|
|
20
|
+
* const queue = createBlendshapeQueue({
|
|
21
|
+
* inputFormat: 'arkit',
|
|
22
|
+
* outputFormat: 'arkit'
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* // MetaHuman passthrough
|
|
26
|
+
* const queue = createBlendshapeQueue({
|
|
27
|
+
* inputFormat: 'mha',
|
|
28
|
+
* outputFormat: 'mha'
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* // Custom mapper
|
|
32
|
+
* const queue = createBlendshapeQueue({
|
|
33
|
+
* inputFormat: 'arkit',
|
|
34
|
+
* outputFormat: 'custom',
|
|
35
|
+
* mapper: (input) => {
|
|
36
|
+
* // Your custom mapping logic
|
|
37
|
+
* return new Float32Array(input);
|
|
38
|
+
* }
|
|
39
|
+
* });
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export function createBlendshapeQueue(config) {
|
|
43
|
+
let mapper;
|
|
44
|
+
// If custom mapper provided, use it
|
|
45
|
+
if (config.mapper) {
|
|
46
|
+
mapper = config.mapper;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
// Select preset mapper based on input/output format
|
|
50
|
+
mapper = selectPresetMapper(config.inputFormat, config.outputFormat);
|
|
51
|
+
}
|
|
52
|
+
return new BlendshapeQueue(mapper);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Create a BlendshapeQueue for ARKit format (61 elements)
|
|
56
|
+
* Server sends 61-element array, queue stores 61-element array
|
|
57
|
+
*/
|
|
58
|
+
export function createARKitBlendshapeQueue() {
|
|
59
|
+
return new BlendshapeQueue(arkitPassthroughMapper);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Create a BlendshapeQueue for MetaHuman format (251 elements)
|
|
63
|
+
* Server sends 251-element array, queue stores 251-element array
|
|
64
|
+
*/
|
|
65
|
+
export function createMetaHumanBlendshapeQueue() {
|
|
66
|
+
return new BlendshapeQueue(metahumanPassthroughMapper);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Create a BlendshapeQueue with a custom mapper function
|
|
70
|
+
*
|
|
71
|
+
* @param mapper - Custom mapping function
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* const queue = createCustomBlendshapeQueue((input) => {
|
|
76
|
+
* // Map ARKit to your custom rig
|
|
77
|
+
* const output = new Float32Array(30); // Your rig has 30 blendshapes
|
|
78
|
+
* output[0] = input[17]; // Map JawOpen
|
|
79
|
+
* output[1] = input[18]; // Map MouthClose
|
|
80
|
+
* // ... more mappings
|
|
81
|
+
* return output;
|
|
82
|
+
* });
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export function createCustomBlendshapeQueue(mapper) {
|
|
86
|
+
return new BlendshapeQueue(mapper);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Create a BlendshapeQueue with no mapping (identity/passthrough)
|
|
90
|
+
* Frames are stored as-is without transformation
|
|
91
|
+
*/
|
|
92
|
+
export function createPassthroughBlendshapeQueue() {
|
|
93
|
+
return new BlendshapeQueue(identityMapper);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Select the appropriate preset mapper based on input/output formats
|
|
97
|
+
* @private
|
|
98
|
+
*/
|
|
99
|
+
function selectPresetMapper(inputFormat, outputFormat) {
|
|
100
|
+
// Same input and output format = passthrough
|
|
101
|
+
if (inputFormat === outputFormat) {
|
|
102
|
+
if (inputFormat === 'arkit') {
|
|
103
|
+
return arkitPassthroughMapper;
|
|
104
|
+
}
|
|
105
|
+
if (inputFormat === 'mha') {
|
|
106
|
+
return metahumanPassthroughMapper;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// No mapper needed for unknown combinations
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Infer mapping config from ConvaiConfig blendshape settings
|
|
114
|
+
* This is used internally by ConvaiClient to auto-configure the queue
|
|
115
|
+
*
|
|
116
|
+
* @param blendshapeConfig - Blendshape config from ConvaiConfig
|
|
117
|
+
* @returns Mapping configuration for createBlendshapeQueue
|
|
118
|
+
*/
|
|
119
|
+
export function inferMappingFromConfig(blendshapeConfig) {
|
|
120
|
+
const format = blendshapeConfig?.format || 'mha';
|
|
121
|
+
return {
|
|
122
|
+
inputFormat: format,
|
|
123
|
+
outputFormat: format, // Passthrough by default
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=createBlendshapeQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createBlendshapeQueue.js","sourceRoot":"","sources":["../../src/lipsync-helpers/createBlendshapeQueue.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,cAAc,EACf,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAA+B;IACnE,IAAI,MAAoC,CAAC;IAEzC,oCAAoC;IACpC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,oDAAoD;QACpD,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO,IAAI,eAAe,CAAC,sBAAsB,CAAC,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,8BAA8B;IAC5C,OAAO,IAAI,eAAe,CAAC,0BAA0B,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAwB;IAClE,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gCAAgC;IAC9C,OAAO,IAAI,eAAe,CAAC,cAAc,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CACzB,WAAmD,EACnD,YAAqD;IAErD,6CAA6C;IAC7C,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;QACjC,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;YAC5B,OAAO,sBAAsB,CAAC;QAChC,CAAC;QACD,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;YAC1B,OAAO,0BAA0B,CAAC;QACpC,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,gBAA+C;IAE/C,MAAM,MAAM,GAAG,gBAAgB,EAAE,MAAM,IAAI,KAAK,CAAC;IAEjD,OAAO;QACL,WAAW,EAAE,MAAM;QACnB,YAAY,EAAE,MAAM,EAAE,yBAAyB;KAChD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Declarative Blendshape Mapping
|
|
3
|
+
*
|
|
4
|
+
* Create mappers using a simple name-based mapping configuration.
|
|
5
|
+
* This is much easier than writing custom mapper functions!
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const mapping = {
|
|
10
|
+
* "browDownLeft": ["Brow_Drop_L"],
|
|
11
|
+
* "browInnerUp": ["Brow_Raise_Inner_L", "Brow_Raise_Inner_R"],
|
|
12
|
+
* "jawOpen": ["Jaw_Open"],
|
|
13
|
+
* "mouthSmileLeft": ["Mouth_Smile"],
|
|
14
|
+
* "mouthSmileRight": ["Mouth_Smile"], // Both map to same target (averaged)
|
|
15
|
+
* };
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
import type { BlendshapeMapper } from './mappingTypes';
|
|
19
|
+
/**
|
|
20
|
+
* Declarative mapping configuration
|
|
21
|
+
* Maps source blendshape names to target blendshape names
|
|
22
|
+
*
|
|
23
|
+
* Format: { [sourceBlendshapeName]: [targetBlendshapeName1, targetBlendshapeName2, ...] }
|
|
24
|
+
*
|
|
25
|
+
* - If multiple source names map to same target, they will be averaged
|
|
26
|
+
* - If one source maps to multiple targets, the value will be copied to all
|
|
27
|
+
*/
|
|
28
|
+
export type BlendshapeNameMapping = {
|
|
29
|
+
[sourceBlendshapeName: string]: string[];
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Optimized output structure for fast morph target updates
|
|
33
|
+
* Designed for maximum performance when applying to 3D models
|
|
34
|
+
*
|
|
35
|
+
* Use this format for fastest application to character:
|
|
36
|
+
* ```typescript
|
|
37
|
+
* const output = queue.getFrameAtTime(time).frame;
|
|
38
|
+
* // Fast iteration - names and values are parallel arrays
|
|
39
|
+
* for (let i = 0; i < output.names.length; i++) {
|
|
40
|
+
* character.setMorphTarget(output.names[i], output.values[i]);
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export interface OptimizedBlendshapeOutput {
|
|
45
|
+
/** Array of blendshape names in order */
|
|
46
|
+
names: readonly string[];
|
|
47
|
+
/** Array of blendshape values (parallel to names) */
|
|
48
|
+
values: Float32Array;
|
|
49
|
+
/** Map from name to index for quick lookups */
|
|
50
|
+
nameToIndex: ReadonlyMap<string, number>;
|
|
51
|
+
/** Total number of blendshapes */
|
|
52
|
+
length: number;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Create a mapper from ARKit format using declarative name mapping
|
|
56
|
+
*
|
|
57
|
+
* @param mapping - Declarative mapping object
|
|
58
|
+
* @param outputFormat - 'object' (default) or 'optimized'
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* const mapper = createARKitNameMapper({
|
|
63
|
+
* "browDownLeft": ["Brow_Drop_L"],
|
|
64
|
+
* "browDownRight": ["Brow_Drop_R"],
|
|
65
|
+
* "browInnerUp": ["Brow_Raise_Inner_L", "Brow_Raise_Inner_R"],
|
|
66
|
+
* "jawOpen": ["Jaw_Open"],
|
|
67
|
+
* "mouthSmileLeft": ["Mouth_Smile"],
|
|
68
|
+
* "mouthSmileRight": ["Mouth_Smile"], // Will be averaged with left
|
|
69
|
+
* });
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export declare function createARKitNameMapper(mapping: BlendshapeNameMapping, outputFormat?: 'object' | 'optimized'): BlendshapeMapper;
|
|
73
|
+
/**
|
|
74
|
+
* Create a mapper from MetaHuman format using declarative name mapping
|
|
75
|
+
*
|
|
76
|
+
* @param mapping - Declarative mapping object (uses MetaHuman blendshape names)
|
|
77
|
+
* @param outputFormat - 'object' (default) or 'optimized'
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* const mapper = createMetaHumanNameMapper({
|
|
82
|
+
* "CTRL_expressions_browDownL": ["Brow_Drop_L"],
|
|
83
|
+
* "CTRL_expressions_browDownR": ["Brow_Drop_R"],
|
|
84
|
+
* "CTRL_expressions_jawOpen": ["Jaw_Open"],
|
|
85
|
+
* });
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
export declare function createMetaHumanNameMapper(mapping: BlendshapeNameMapping, outputFormat?: 'object' | 'optimized'): BlendshapeMapper;
|
|
89
|
+
/**
|
|
90
|
+
* Helper to extract blendshape object from mapper output
|
|
91
|
+
*/
|
|
92
|
+
export declare function getBlendshapeObject(output: any): Record<string, number>;
|
|
93
|
+
//# sourceMappingURL=declarativeMapping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declarativeMapping.d.ts","sourceRoot":"","sources":["../../src/lipsync-helpers/declarativeMapping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,CAAC,oBAAoB,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC1C,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,yBAAyB;IACxC,yCAAyC;IACzC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,qDAAqD;IACrD,MAAM,EAAE,YAAY,CAAC;IACrB,+CAA+C;IAC/C,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,qBAAqB,EAC9B,YAAY,GAAE,QAAQ,GAAG,WAAsB,GAC9C,gBAAgB,CAgGlB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,qBAAqB,EAC9B,YAAY,GAAE,QAAQ,GAAG,WAAsB,GAC9C,gBAAgB,CAoFlB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAavE"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Declarative Blendshape Mapping
|
|
3
|
+
*
|
|
4
|
+
* Create mappers using a simple name-based mapping configuration.
|
|
5
|
+
* This is much easier than writing custom mapper functions!
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const mapping = {
|
|
10
|
+
* "browDownLeft": ["Brow_Drop_L"],
|
|
11
|
+
* "browInnerUp": ["Brow_Raise_Inner_L", "Brow_Raise_Inner_R"],
|
|
12
|
+
* "jawOpen": ["Jaw_Open"],
|
|
13
|
+
* "mouthSmileLeft": ["Mouth_Smile"],
|
|
14
|
+
* "mouthSmileRight": ["Mouth_Smile"], // Both map to same target (averaged)
|
|
15
|
+
* };
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
import { ARKIT_ORDER_61 } from './arkitOrder61';
|
|
19
|
+
import { METAHUMAN_ORDER_251 } from './metahumanOrder251';
|
|
20
|
+
/**
|
|
21
|
+
* Create a mapper from ARKit format using declarative name mapping
|
|
22
|
+
*
|
|
23
|
+
* @param mapping - Declarative mapping object
|
|
24
|
+
* @param outputFormat - 'object' (default) or 'optimized'
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const mapper = createARKitNameMapper({
|
|
29
|
+
* "browDownLeft": ["Brow_Drop_L"],
|
|
30
|
+
* "browDownRight": ["Brow_Drop_R"],
|
|
31
|
+
* "browInnerUp": ["Brow_Raise_Inner_L", "Brow_Raise_Inner_R"],
|
|
32
|
+
* "jawOpen": ["Jaw_Open"],
|
|
33
|
+
* "mouthSmileLeft": ["Mouth_Smile"],
|
|
34
|
+
* "mouthSmileRight": ["Mouth_Smile"], // Will be averaged with left
|
|
35
|
+
* });
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export function createARKitNameMapper(mapping, outputFormat = 'object') {
|
|
39
|
+
// Build reverse mapping: source index -> target names
|
|
40
|
+
const sourceIndexToTargets = new Map();
|
|
41
|
+
for (const [sourceName, targetNames] of Object.entries(mapping)) {
|
|
42
|
+
// Convert source name to camelCase if needed
|
|
43
|
+
const sourceNameVariations = [
|
|
44
|
+
sourceName,
|
|
45
|
+
sourceName.charAt(0).toUpperCase() + sourceName.slice(1),
|
|
46
|
+
sourceName.charAt(0).toLowerCase() + sourceName.slice(1),
|
|
47
|
+
];
|
|
48
|
+
let sourceIndex = -1;
|
|
49
|
+
for (const variation of sourceNameVariations) {
|
|
50
|
+
sourceIndex = ARKIT_ORDER_61.indexOf(variation);
|
|
51
|
+
if (sourceIndex !== -1)
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
if (sourceIndex === -1) {
|
|
55
|
+
console.warn(`[ARKit Name Mapper] Source blendshape "${sourceName}" not found in ARKit format`);
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
sourceIndexToTargets.set(sourceIndex, targetNames);
|
|
59
|
+
}
|
|
60
|
+
// Build list of unique target names
|
|
61
|
+
const uniqueTargets = new Set();
|
|
62
|
+
for (const targets of sourceIndexToTargets.values()) {
|
|
63
|
+
targets.forEach(t => uniqueTargets.add(t));
|
|
64
|
+
}
|
|
65
|
+
const targetNames = Array.from(uniqueTargets);
|
|
66
|
+
// Build accumulation structure: target name -> [source indices]
|
|
67
|
+
const targetToSources = new Map();
|
|
68
|
+
for (const targetName of targetNames) {
|
|
69
|
+
targetToSources.set(targetName, []);
|
|
70
|
+
}
|
|
71
|
+
for (const [sourceIndex, targets] of sourceIndexToTargets.entries()) {
|
|
72
|
+
for (const targetName of targets) {
|
|
73
|
+
targetToSources.get(targetName)?.push(sourceIndex);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// Pre-allocate output structures
|
|
77
|
+
const outputValues = new Float32Array(targetNames.length);
|
|
78
|
+
const nameToIndex = new Map();
|
|
79
|
+
targetNames.forEach((name, index) => nameToIndex.set(name, index));
|
|
80
|
+
if (outputFormat === 'optimized') {
|
|
81
|
+
// Optimized format: return structured object for fast iteration
|
|
82
|
+
const optimizedOutput = {
|
|
83
|
+
names: targetNames,
|
|
84
|
+
values: outputValues,
|
|
85
|
+
nameToIndex,
|
|
86
|
+
length: targetNames.length,
|
|
87
|
+
};
|
|
88
|
+
return (input) => {
|
|
89
|
+
outputValues.fill(0);
|
|
90
|
+
// Accumulate values for each target
|
|
91
|
+
for (let i = 0; i < targetNames.length; i++) {
|
|
92
|
+
const sourceIndices = targetToSources.get(targetNames[i]);
|
|
93
|
+
let sum = 0;
|
|
94
|
+
for (const srcIndex of sourceIndices) {
|
|
95
|
+
sum += input[srcIndex] || 0;
|
|
96
|
+
}
|
|
97
|
+
outputValues[i] = sum / sourceIndices.length; // Average if multiple sources
|
|
98
|
+
}
|
|
99
|
+
// Return same object reference (values are updated in place)
|
|
100
|
+
return optimizedOutput;
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
// Object format: return key-value object
|
|
105
|
+
return (input) => {
|
|
106
|
+
const output = {};
|
|
107
|
+
for (const targetName of targetNames) {
|
|
108
|
+
const sourceIndices = targetToSources.get(targetName);
|
|
109
|
+
let sum = 0;
|
|
110
|
+
for (const srcIndex of sourceIndices) {
|
|
111
|
+
sum += input[srcIndex] || 0;
|
|
112
|
+
}
|
|
113
|
+
output[targetName] = sum / sourceIndices.length;
|
|
114
|
+
}
|
|
115
|
+
// Convert to Float32Array representation (for compatibility)
|
|
116
|
+
// Store as object in the array's properties (hack but works)
|
|
117
|
+
const result = new Float32Array(0);
|
|
118
|
+
result.__blendshapeObject = output;
|
|
119
|
+
return result;
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Create a mapper from MetaHuman format using declarative name mapping
|
|
125
|
+
*
|
|
126
|
+
* @param mapping - Declarative mapping object (uses MetaHuman blendshape names)
|
|
127
|
+
* @param outputFormat - 'object' (default) or 'optimized'
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* ```typescript
|
|
131
|
+
* const mapper = createMetaHumanNameMapper({
|
|
132
|
+
* "CTRL_expressions_browDownL": ["Brow_Drop_L"],
|
|
133
|
+
* "CTRL_expressions_browDownR": ["Brow_Drop_R"],
|
|
134
|
+
* "CTRL_expressions_jawOpen": ["Jaw_Open"],
|
|
135
|
+
* });
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
export function createMetaHumanNameMapper(mapping, outputFormat = 'object') {
|
|
139
|
+
// Build reverse mapping: source index -> target names
|
|
140
|
+
const sourceIndexToTargets = new Map();
|
|
141
|
+
for (const [sourceName, targetNames] of Object.entries(mapping)) {
|
|
142
|
+
const sourceIndex = METAHUMAN_ORDER_251.indexOf(sourceName);
|
|
143
|
+
if (sourceIndex === -1) {
|
|
144
|
+
console.warn(`[MetaHuman Name Mapper] Source blendshape "${sourceName}" not found in MetaHuman format`);
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
sourceIndexToTargets.set(sourceIndex, targetNames);
|
|
148
|
+
}
|
|
149
|
+
// Build list of unique target names
|
|
150
|
+
const uniqueTargets = new Set();
|
|
151
|
+
for (const targets of sourceIndexToTargets.values()) {
|
|
152
|
+
targets.forEach(t => uniqueTargets.add(t));
|
|
153
|
+
}
|
|
154
|
+
const targetNames = Array.from(uniqueTargets);
|
|
155
|
+
// Build accumulation structure: target name -> [source indices]
|
|
156
|
+
const targetToSources = new Map();
|
|
157
|
+
for (const targetName of targetNames) {
|
|
158
|
+
targetToSources.set(targetName, []);
|
|
159
|
+
}
|
|
160
|
+
for (const [sourceIndex, targets] of sourceIndexToTargets.entries()) {
|
|
161
|
+
for (const targetName of targets) {
|
|
162
|
+
targetToSources.get(targetName)?.push(sourceIndex);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// Pre-allocate output structures
|
|
166
|
+
const outputValues = new Float32Array(targetNames.length);
|
|
167
|
+
const nameToIndex = new Map();
|
|
168
|
+
targetNames.forEach((name, index) => nameToIndex.set(name, index));
|
|
169
|
+
if (outputFormat === 'optimized') {
|
|
170
|
+
// Optimized format: return structured object for fast iteration
|
|
171
|
+
const optimizedOutput = {
|
|
172
|
+
names: targetNames,
|
|
173
|
+
values: outputValues,
|
|
174
|
+
nameToIndex,
|
|
175
|
+
length: targetNames.length,
|
|
176
|
+
};
|
|
177
|
+
return (input) => {
|
|
178
|
+
outputValues.fill(0);
|
|
179
|
+
// Accumulate values for each target
|
|
180
|
+
for (let i = 0; i < targetNames.length; i++) {
|
|
181
|
+
const sourceIndices = targetToSources.get(targetNames[i]);
|
|
182
|
+
let sum = 0;
|
|
183
|
+
for (const srcIndex of sourceIndices) {
|
|
184
|
+
sum += input[srcIndex] || 0;
|
|
185
|
+
}
|
|
186
|
+
outputValues[i] = sum / sourceIndices.length; // Average if multiple sources
|
|
187
|
+
}
|
|
188
|
+
// Return same object reference (values are updated in place)
|
|
189
|
+
return optimizedOutput;
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
// Object format: return key-value object
|
|
194
|
+
return (input) => {
|
|
195
|
+
const output = {};
|
|
196
|
+
for (const targetName of targetNames) {
|
|
197
|
+
const sourceIndices = targetToSources.get(targetName);
|
|
198
|
+
let sum = 0;
|
|
199
|
+
for (const srcIndex of sourceIndices) {
|
|
200
|
+
sum += input[srcIndex] || 0;
|
|
201
|
+
}
|
|
202
|
+
output[targetName] = sum / sourceIndices.length;
|
|
203
|
+
}
|
|
204
|
+
// Convert to Float32Array representation (for compatibility)
|
|
205
|
+
const result = new Float32Array(0);
|
|
206
|
+
result.__blendshapeObject = output;
|
|
207
|
+
return result;
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Helper to extract blendshape object from mapper output
|
|
213
|
+
*/
|
|
214
|
+
export function getBlendshapeObject(output) {
|
|
215
|
+
if (output.__blendshapeObject) {
|
|
216
|
+
return output.__blendshapeObject;
|
|
217
|
+
}
|
|
218
|
+
if (output.names && output.values) {
|
|
219
|
+
// Convert optimized format to object
|
|
220
|
+
const obj = {};
|
|
221
|
+
for (let i = 0; i < output.names.length; i++) {
|
|
222
|
+
obj[output.names[i]] = output.values[i];
|
|
223
|
+
}
|
|
224
|
+
return obj;
|
|
225
|
+
}
|
|
226
|
+
return {};
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=declarativeMapping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declarativeMapping.js","sourceRoot":"","sources":["../../src/lipsync-helpers/declarativeMapping.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Lipsync Helpers
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
|
+
* Essential blendshape order arrays for ARKit and MetaHuman formats.
|
|
5
|
+
* These define the order in which blendshape values are received from Convai's server.
|
|
4
6
|
*/
|
|
5
7
|
export { ARKIT_ORDER_61, STANDARD_ARKIT_ORDER, convertOrder61ToStandard, mapOrder61ToNames, getBlendshapeValueFromOrder61, getHeadRotation, getEyeRotations, getLipSyncValuesFromOrder61, getActiveBlendshapesFromOrder61, formatOrder61ForLogging, } from "./arkitOrder61";
|
|
6
|
-
export { ARKIT_BLENDSHAPE_NAMES, ARKIT_EXTENDED_NAMES, mapARKitBlendshapesToNames, getActiveARKitBlendshapes, getARKitBlendshapeValue, formatARKitBlendshapesForLogging, KEY_LIPSYNC_BLENDSHAPES, getLipSyncBlendshapes, } from "./arkitBlendshapeHelpers";
|
|
7
|
-
export { ARKIT_PHONEME_REFERENCE_VALUES, ARKIT_BLENDSHAPE_INDICES, SAMPLE_PHONEME_TESTS, BLENDSHAPE_QUICK_GUIDE, generatePhonemeBlendshapes, getPhonemeDescription, type PhonemeBlendshapes, } from "./arkitPhonemeReference";
|
|
8
8
|
export { METAHUMAN_ORDER_251, METAHUMAN_CATEGORIES, KEY_METAHUMAN_LIPSYNC, getMetaHumanBlendshapeName, getMetaHumanBlendshapeIndex, getMetaHumanBlendshapesByCategory, formatMetaHumanBlendshapesForLogging, } from "./metahumanOrder251";
|
|
9
|
-
export {
|
|
9
|
+
export type { BlendshapeMapper, BlendshapeFormat, BlendshapeMappingConfig, } from "./mappingTypes";
|
|
10
|
+
export { PRESET_MAPPINGS, } from "./mappingTypes";
|
|
11
|
+
export { arkitPassthroughMapper, metahumanPassthroughMapper, identityMapper, } from "./presetMappers";
|
|
12
|
+
export { createBlendshapeQueue, createARKitBlendshapeQueue, createMetaHumanBlendshapeQueue, createCustomBlendshapeQueue, createPassthroughBlendshapeQueue, inferMappingFromConfig, } from "./createBlendshapeQueue";
|
|
13
|
+
export type { BlendshapeNameMapping, OptimizedBlendshapeOutput, } from "./declarativeMapping";
|
|
14
|
+
export { createARKitNameMapper, createMetaHumanNameMapper, getBlendshapeObject, } from "./declarativeMapping";
|
|
10
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lipsync-helpers/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lipsync-helpers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAEL,cAAc,EAGd,oBAAoB,EAGpB,wBAAwB,EACxB,iBAAiB,EACjB,6BAA6B,EAC7B,eAAe,EACf,eAAe,EACf,2BAA2B,EAC3B,+BAA+B,EAC/B,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,EAEL,mBAAmB,EAGnB,oBAAoB,EAGpB,qBAAqB,EAGrB,0BAA0B,EAC1B,2BAA2B,EAC3B,iCAAiC,EACjC,oCAAoC,GACrC,MAAM,qBAAqB,CAAC;AAM7B,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,cAAc,GACf,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,8BAA8B,EAC9B,2BAA2B,EAC3B,gCAAgC,EAChC,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAMjC,YAAY,EACV,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC"}
|