@lovelace_lol/loom3 1.0.26 → 1.0.28
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 +9 -0
- package/dist/index.cjs +355 -21
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +138 -224
- package/dist/index.d.ts +138 -224
- package/dist/index.js +349 -21
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -85,164 +85,141 @@ declare const CC4_PRESET: Profile;
|
|
|
85
85
|
* - annotationRegions: merged by region name, shallow field merge (override wins).
|
|
86
86
|
*/
|
|
87
87
|
declare function resolveProfile(base: Profile, override: Partial<Profile>): Profile;
|
|
88
|
+
/**
|
|
89
|
+
* Explicit helper for the common operation: start with a preset, then apply a
|
|
90
|
+
* profile override on top. This is the preferred name at call sites where the
|
|
91
|
+
* distinction between preset and profile should stay obvious.
|
|
92
|
+
*/
|
|
93
|
+
declare function applyProfileToPreset(base: Profile, override?: Partial<Profile>): Profile;
|
|
88
94
|
|
|
89
95
|
declare const BETTA_FISH_PRESET: {
|
|
90
|
-
name: string;
|
|
91
|
-
animalType: string;
|
|
92
|
-
emoji: string;
|
|
93
96
|
bones: readonly ["Armature_rootJoint", "Bone_Armature", "Bone.001_Armature", "Bone.009_Armature", "Bone.027_Armature", "Bone.029_Armature", "Bone.031_Armature", "Bone.028_Armature", "Bone.030_Armature", "Bone.032_Armature", "Bone.010_Armature", "Bone.012_Armature", "Bone.014_Armature", "Bone.016_Armature", "Bone.011_Armature", "Bone.013_Armature", "Bone.015_Armature", "Bone.017_Armature", "Bone.002_Armature", "Bone.003_Armature", "Bone.004_Armature", "Bone.005_Armature", "Bone.020_Armature", "Bone.025_Armature", "Bone.026_Armature", "Bone.039_Armature", "Bone.040_Armature", "Bone.041_Armature", "Bone.042_Armature", "Bone.043_Armature", "Bone.044_Armature", "Bone.045_Armature", "Bone.019_Armature", "Bone.023_Armature", "Bone.024_Armature", "Bone.034_Armature", "Bone.036_Armature", "Bone.038_Armature", "Bone.018_Armature", "Bone.021_Armature", "Bone.022_Armature", "Bone.033_Armature", "Bone.035_Armature", "Bone.037_Armature", "Bone.046_Armature", "Bone.048_Armature", "Bone.050_Armature", "Bone.047_Armature", "Bone.049_Armature", "Bone.051_Armature", "Bone.006_Armature", "Bone.007_Armature", "Bone.008_Armature"];
|
|
94
|
-
boneNodes: {
|
|
95
|
-
readonly ROOT: "Armature_rootJoint";
|
|
96
|
-
readonly BODY_ROOT: "Bone_Armature";
|
|
97
|
-
readonly HEAD: "001";
|
|
98
|
-
readonly BODY_FRONT: "002";
|
|
99
|
-
readonly BODY_MID: "003";
|
|
100
|
-
readonly BODY_BACK: "004";
|
|
101
|
-
readonly TAIL_BASE: "005";
|
|
102
|
-
readonly GILL_L: "046";
|
|
103
|
-
readonly GILL_L_MID: "048";
|
|
104
|
-
readonly GILL_L_TIP: "050";
|
|
105
|
-
readonly GILL_R: "047";
|
|
106
|
-
readonly GILL_R_MID: "049";
|
|
107
|
-
readonly GILL_R_TIP: "051";
|
|
108
|
-
readonly DORSAL_ROOT: "006";
|
|
109
|
-
readonly DORSAL_L: "007";
|
|
110
|
-
readonly DORSAL_R: "008";
|
|
111
|
-
readonly VENTRAL_L: "018";
|
|
112
|
-
readonly VENTRAL_L_MID: "021";
|
|
113
|
-
readonly VENTRAL_L_TIP: "022";
|
|
114
|
-
readonly VENTRAL_R: "033";
|
|
115
|
-
readonly VENTRAL_R_MID: "035";
|
|
116
|
-
readonly VENTRAL_R_TIP: "037";
|
|
117
|
-
readonly PECTORAL_L_ROOT: "009";
|
|
118
|
-
readonly PECTORAL_L_CHAIN1: "027";
|
|
119
|
-
readonly PECTORAL_L_CHAIN1_MID: "029";
|
|
120
|
-
readonly PECTORAL_L_CHAIN1_TIP: "031";
|
|
121
|
-
readonly PECTORAL_L_CHAIN2: "028";
|
|
122
|
-
readonly PECTORAL_L_CHAIN2_MID: "030";
|
|
123
|
-
readonly PECTORAL_L_CHAIN2_TIP: "032";
|
|
124
|
-
readonly PECTORAL_R_ROOT: "010";
|
|
125
|
-
readonly PECTORAL_R_CHAIN1: "012";
|
|
126
|
-
readonly PECTORAL_R_CHAIN1_A: "014";
|
|
127
|
-
readonly PECTORAL_R_CHAIN1_B: "016";
|
|
128
|
-
readonly PECTORAL_R_ROOT2: "011";
|
|
129
|
-
readonly PECTORAL_R_CHAIN2: "013";
|
|
130
|
-
readonly PECTORAL_R_CHAIN2_A: "015";
|
|
131
|
-
readonly PECTORAL_R_CHAIN2_B: "017";
|
|
132
|
-
readonly EYE_L: "EYES_0";
|
|
133
|
-
readonly EYE_R: "EYES_0";
|
|
134
|
-
readonly TAIL_TOP: "020";
|
|
135
|
-
readonly TAIL_TOP_MID: "025";
|
|
136
|
-
readonly TAIL_TOP_TIP: "026";
|
|
137
|
-
readonly TAIL_MID: "039";
|
|
138
|
-
readonly TAIL_MID_A: "040";
|
|
139
|
-
readonly TAIL_MID_A_TIP: "041";
|
|
140
|
-
readonly TAIL_MID_B: "042";
|
|
141
|
-
readonly TAIL_MID_B_TIP: "043";
|
|
142
|
-
readonly TAIL_MID_C: "044";
|
|
143
|
-
readonly TAIL_MID_C_TIP: "045";
|
|
144
|
-
readonly TAIL_SIDE_L: "019";
|
|
145
|
-
readonly TAIL_SIDE_L_MID: "023";
|
|
146
|
-
readonly TAIL_SIDE_L_TIP: "024";
|
|
147
|
-
readonly TAIL_SIDE_R: "034";
|
|
148
|
-
readonly TAIL_SIDE_R_MID: "036";
|
|
149
|
-
readonly TAIL_SIDE_R_TIP: "038";
|
|
150
|
-
};
|
|
151
97
|
boneBindings: Record<number, BoneBinding[]>;
|
|
152
98
|
actionInfo: Record<string, AUInfo>;
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
};
|
|
99
|
+
name?: string;
|
|
100
|
+
animalType?: string;
|
|
101
|
+
emoji?: string;
|
|
157
102
|
auToMorphs: Record<number, MorphTargetsBySide>;
|
|
103
|
+
auToBones: Record<number, BoneBinding[]>;
|
|
104
|
+
boneNodes: Record<string, string>;
|
|
105
|
+
bonePrefix?: string;
|
|
106
|
+
boneSuffix?: string;
|
|
107
|
+
morphPrefix?: string;
|
|
108
|
+
morphSuffix?: string;
|
|
109
|
+
suffixPattern?: string;
|
|
110
|
+
leftMorphSuffixes?: string[];
|
|
111
|
+
rightMorphSuffixes?: string[];
|
|
158
112
|
morphToMesh: Record<string, string[]>;
|
|
159
|
-
|
|
113
|
+
auFacePartToMeshCategory?: Record<string, string>;
|
|
114
|
+
visemeKeys: MorphTargetRef[];
|
|
115
|
+
visemeMeshCategory?: string;
|
|
116
|
+
visemeJawAmounts?: number[];
|
|
117
|
+
auMixDefaults?: Record<number, number>;
|
|
118
|
+
auInfo?: Record<string, AUInfo>;
|
|
119
|
+
eyeMeshNodes?: {
|
|
120
|
+
LEFT: string;
|
|
121
|
+
RIGHT: string;
|
|
122
|
+
};
|
|
123
|
+
compositeRotations?: CompositeRotation[];
|
|
124
|
+
meshes?: Record<string, MeshInfo>;
|
|
125
|
+
continuumPairs?: Record<number, {
|
|
126
|
+
pairId: number;
|
|
127
|
+
isNegative: boolean;
|
|
128
|
+
axis: "pitch" | "yaw" | "roll";
|
|
129
|
+
node: string;
|
|
130
|
+
}>;
|
|
131
|
+
continuumLabels?: Record<string, string>;
|
|
132
|
+
annotationRegions?: AnnotationRegion[];
|
|
133
|
+
hairPhysics?: HairPhysicsProfileConfig;
|
|
160
134
|
};
|
|
161
135
|
declare const AU_MAPPING_CONFIG: {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
136
|
+
bones: readonly ["Armature_rootJoint", "Bone_Armature", "Bone.001_Armature", "Bone.009_Armature", "Bone.027_Armature", "Bone.029_Armature", "Bone.031_Armature", "Bone.028_Armature", "Bone.030_Armature", "Bone.032_Armature", "Bone.010_Armature", "Bone.012_Armature", "Bone.014_Armature", "Bone.016_Armature", "Bone.011_Armature", "Bone.013_Armature", "Bone.015_Armature", "Bone.017_Armature", "Bone.002_Armature", "Bone.003_Armature", "Bone.004_Armature", "Bone.005_Armature", "Bone.020_Armature", "Bone.025_Armature", "Bone.026_Armature", "Bone.039_Armature", "Bone.040_Armature", "Bone.041_Armature", "Bone.042_Armature", "Bone.043_Armature", "Bone.044_Armature", "Bone.045_Armature", "Bone.019_Armature", "Bone.023_Armature", "Bone.024_Armature", "Bone.034_Armature", "Bone.036_Armature", "Bone.038_Armature", "Bone.018_Armature", "Bone.021_Armature", "Bone.022_Armature", "Bone.033_Armature", "Bone.035_Armature", "Bone.037_Armature", "Bone.046_Armature", "Bone.048_Armature", "Bone.050_Armature", "Bone.047_Armature", "Bone.049_Armature", "Bone.051_Armature", "Bone.006_Armature", "Bone.007_Armature", "Bone.008_Armature"];
|
|
137
|
+
boneBindings: Record<number, BoneBinding[]>;
|
|
138
|
+
actionInfo: Record<string, AUInfo>;
|
|
139
|
+
name?: string;
|
|
140
|
+
animalType?: string;
|
|
141
|
+
emoji?: string;
|
|
142
|
+
auToMorphs: Record<number, MorphTargetsBySide>;
|
|
165
143
|
auToBones: Record<number, BoneBinding[]>;
|
|
166
|
-
boneNodes:
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
readonly VENTRAL_L_MID: "021";
|
|
185
|
-
readonly VENTRAL_L_TIP: "022";
|
|
186
|
-
readonly VENTRAL_R: "033";
|
|
187
|
-
readonly VENTRAL_R_MID: "035";
|
|
188
|
-
readonly VENTRAL_R_TIP: "037";
|
|
189
|
-
readonly PECTORAL_L_ROOT: "009";
|
|
190
|
-
readonly PECTORAL_L_CHAIN1: "027";
|
|
191
|
-
readonly PECTORAL_L_CHAIN1_MID: "029";
|
|
192
|
-
readonly PECTORAL_L_CHAIN1_TIP: "031";
|
|
193
|
-
readonly PECTORAL_L_CHAIN2: "028";
|
|
194
|
-
readonly PECTORAL_L_CHAIN2_MID: "030";
|
|
195
|
-
readonly PECTORAL_L_CHAIN2_TIP: "032";
|
|
196
|
-
readonly PECTORAL_R_ROOT: "010";
|
|
197
|
-
readonly PECTORAL_R_CHAIN1: "012";
|
|
198
|
-
readonly PECTORAL_R_CHAIN1_A: "014";
|
|
199
|
-
readonly PECTORAL_R_CHAIN1_B: "016";
|
|
200
|
-
readonly PECTORAL_R_ROOT2: "011";
|
|
201
|
-
readonly PECTORAL_R_CHAIN2: "013";
|
|
202
|
-
readonly PECTORAL_R_CHAIN2_A: "015";
|
|
203
|
-
readonly PECTORAL_R_CHAIN2_B: "017";
|
|
204
|
-
readonly EYE_L: "EYES_0";
|
|
205
|
-
readonly EYE_R: "EYES_0";
|
|
206
|
-
readonly TAIL_TOP: "020";
|
|
207
|
-
readonly TAIL_TOP_MID: "025";
|
|
208
|
-
readonly TAIL_TOP_TIP: "026";
|
|
209
|
-
readonly TAIL_MID: "039";
|
|
210
|
-
readonly TAIL_MID_A: "040";
|
|
211
|
-
readonly TAIL_MID_A_TIP: "041";
|
|
212
|
-
readonly TAIL_MID_B: "042";
|
|
213
|
-
readonly TAIL_MID_B_TIP: "043";
|
|
214
|
-
readonly TAIL_MID_C: "044";
|
|
215
|
-
readonly TAIL_MID_C_TIP: "045";
|
|
216
|
-
readonly TAIL_SIDE_L: "019";
|
|
217
|
-
readonly TAIL_SIDE_L_MID: "023";
|
|
218
|
-
readonly TAIL_SIDE_L_TIP: "024";
|
|
219
|
-
readonly TAIL_SIDE_R: "034";
|
|
220
|
-
readonly TAIL_SIDE_R_MID: "036";
|
|
221
|
-
readonly TAIL_SIDE_R_TIP: "038";
|
|
144
|
+
boneNodes: Record<string, string>;
|
|
145
|
+
bonePrefix?: string;
|
|
146
|
+
boneSuffix?: string;
|
|
147
|
+
morphPrefix?: string;
|
|
148
|
+
morphSuffix?: string;
|
|
149
|
+
suffixPattern?: string;
|
|
150
|
+
leftMorphSuffixes?: string[];
|
|
151
|
+
rightMorphSuffixes?: string[];
|
|
152
|
+
morphToMesh: Record<string, string[]>;
|
|
153
|
+
auFacePartToMeshCategory?: Record<string, string>;
|
|
154
|
+
visemeKeys: MorphTargetRef[];
|
|
155
|
+
visemeMeshCategory?: string;
|
|
156
|
+
visemeJawAmounts?: number[];
|
|
157
|
+
auMixDefaults?: Record<number, number>;
|
|
158
|
+
auInfo?: Record<string, AUInfo>;
|
|
159
|
+
eyeMeshNodes?: {
|
|
160
|
+
LEFT: string;
|
|
161
|
+
RIGHT: string;
|
|
222
162
|
};
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
163
|
+
compositeRotations?: CompositeRotation[];
|
|
164
|
+
meshes?: Record<string, MeshInfo>;
|
|
165
|
+
continuumPairs?: Record<number, {
|
|
166
|
+
pairId: number;
|
|
167
|
+
isNegative: boolean;
|
|
168
|
+
axis: "pitch" | "yaw" | "roll";
|
|
169
|
+
node: string;
|
|
170
|
+
}>;
|
|
171
|
+
continuumLabels?: Record<string, string>;
|
|
172
|
+
annotationRegions?: AnnotationRegion[];
|
|
173
|
+
hairPhysics?: HairPhysicsProfileConfig;
|
|
174
|
+
};
|
|
175
|
+
declare const FISH_AU_MAPPING_CONFIG: {
|
|
176
|
+
bones: readonly ["Armature_rootJoint", "Bone_Armature", "Bone.001_Armature", "Bone.009_Armature", "Bone.027_Armature", "Bone.029_Armature", "Bone.031_Armature", "Bone.028_Armature", "Bone.030_Armature", "Bone.032_Armature", "Bone.010_Armature", "Bone.012_Armature", "Bone.014_Armature", "Bone.016_Armature", "Bone.011_Armature", "Bone.013_Armature", "Bone.015_Armature", "Bone.017_Armature", "Bone.002_Armature", "Bone.003_Armature", "Bone.004_Armature", "Bone.005_Armature", "Bone.020_Armature", "Bone.025_Armature", "Bone.026_Armature", "Bone.039_Armature", "Bone.040_Armature", "Bone.041_Armature", "Bone.042_Armature", "Bone.043_Armature", "Bone.044_Armature", "Bone.045_Armature", "Bone.019_Armature", "Bone.023_Armature", "Bone.024_Armature", "Bone.034_Armature", "Bone.036_Armature", "Bone.038_Armature", "Bone.018_Armature", "Bone.021_Armature", "Bone.022_Armature", "Bone.033_Armature", "Bone.035_Armature", "Bone.037_Armature", "Bone.046_Armature", "Bone.048_Armature", "Bone.050_Armature", "Bone.047_Armature", "Bone.049_Armature", "Bone.051_Armature", "Bone.006_Armature", "Bone.007_Armature", "Bone.008_Armature"];
|
|
177
|
+
boneBindings: Record<number, BoneBinding[]>;
|
|
178
|
+
actionInfo: Record<string, AUInfo>;
|
|
179
|
+
name?: string;
|
|
180
|
+
animalType?: string;
|
|
181
|
+
emoji?: string;
|
|
226
182
|
auToMorphs: Record<number, MorphTargetsBySide>;
|
|
183
|
+
auToBones: Record<number, BoneBinding[]>;
|
|
184
|
+
boneNodes: Record<string, string>;
|
|
185
|
+
bonePrefix?: string;
|
|
186
|
+
boneSuffix?: string;
|
|
187
|
+
morphPrefix?: string;
|
|
188
|
+
morphSuffix?: string;
|
|
189
|
+
suffixPattern?: string;
|
|
190
|
+
leftMorphSuffixes?: string[];
|
|
191
|
+
rightMorphSuffixes?: string[];
|
|
227
192
|
morphToMesh: Record<string, string[]>;
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
193
|
+
auFacePartToMeshCategory?: Record<string, string>;
|
|
194
|
+
visemeKeys: MorphTargetRef[];
|
|
195
|
+
visemeMeshCategory?: string;
|
|
196
|
+
visemeJawAmounts?: number[];
|
|
197
|
+
auMixDefaults?: Record<number, number>;
|
|
198
|
+
auInfo?: Record<string, AUInfo>;
|
|
199
|
+
eyeMeshNodes?: {
|
|
200
|
+
LEFT: string;
|
|
201
|
+
RIGHT: string;
|
|
234
202
|
};
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
continuumPairs
|
|
203
|
+
compositeRotations?: CompositeRotation[];
|
|
204
|
+
meshes?: Record<string, MeshInfo>;
|
|
205
|
+
continuumPairs?: Record<number, {
|
|
238
206
|
pairId: number;
|
|
239
207
|
isNegative: boolean;
|
|
240
208
|
axis: "pitch" | "yaw" | "roll";
|
|
241
209
|
node: string;
|
|
242
210
|
}>;
|
|
243
|
-
continuumLabels
|
|
211
|
+
continuumLabels?: Record<string, string>;
|
|
212
|
+
annotationRegions?: AnnotationRegion[];
|
|
213
|
+
hairPhysics?: HairPhysicsProfileConfig;
|
|
244
214
|
};
|
|
245
215
|
|
|
216
|
+
/**
|
|
217
|
+
* Loom3 - Preset Exports
|
|
218
|
+
*
|
|
219
|
+
* All AU presets are exported from here.
|
|
220
|
+
* Frontend passes a presetType string and loom3 resolves the preset internally.
|
|
221
|
+
*/
|
|
222
|
+
|
|
246
223
|
/**
|
|
247
224
|
* Preset types that can be passed to Loom3
|
|
248
225
|
*/
|
|
@@ -251,90 +228,7 @@ type PresetType = 'cc4' | 'skeletal' | 'fish' | 'custom';
|
|
|
251
228
|
* Resolve a preset by type name.
|
|
252
229
|
* This allows frontend to pass a string instead of importing the full preset.
|
|
253
230
|
*/
|
|
254
|
-
declare function resolvePreset(presetType: PresetType | string | undefined): Profile
|
|
255
|
-
name: string;
|
|
256
|
-
animalType: string;
|
|
257
|
-
emoji: string;
|
|
258
|
-
auToBones: Record<number, BoneBinding[]>;
|
|
259
|
-
boneNodes: {
|
|
260
|
-
readonly ROOT: "Armature_rootJoint";
|
|
261
|
-
readonly BODY_ROOT: "Bone_Armature";
|
|
262
|
-
readonly HEAD: "001";
|
|
263
|
-
readonly BODY_FRONT: "002";
|
|
264
|
-
readonly BODY_MID: "003";
|
|
265
|
-
readonly BODY_BACK: "004";
|
|
266
|
-
readonly TAIL_BASE: "005";
|
|
267
|
-
readonly GILL_L: "046";
|
|
268
|
-
readonly GILL_L_MID: "048";
|
|
269
|
-
readonly GILL_L_TIP: "050";
|
|
270
|
-
readonly GILL_R: "047";
|
|
271
|
-
readonly GILL_R_MID: "049";
|
|
272
|
-
readonly GILL_R_TIP: "051";
|
|
273
|
-
readonly DORSAL_ROOT: "006";
|
|
274
|
-
readonly DORSAL_L: "007";
|
|
275
|
-
readonly DORSAL_R: "008";
|
|
276
|
-
readonly VENTRAL_L: "018";
|
|
277
|
-
readonly VENTRAL_L_MID: "021";
|
|
278
|
-
readonly VENTRAL_L_TIP: "022";
|
|
279
|
-
readonly VENTRAL_R: "033";
|
|
280
|
-
readonly VENTRAL_R_MID: "035";
|
|
281
|
-
readonly VENTRAL_R_TIP: "037";
|
|
282
|
-
readonly PECTORAL_L_ROOT: "009";
|
|
283
|
-
readonly PECTORAL_L_CHAIN1: "027";
|
|
284
|
-
readonly PECTORAL_L_CHAIN1_MID: "029";
|
|
285
|
-
readonly PECTORAL_L_CHAIN1_TIP: "031";
|
|
286
|
-
readonly PECTORAL_L_CHAIN2: "028";
|
|
287
|
-
readonly PECTORAL_L_CHAIN2_MID: "030";
|
|
288
|
-
readonly PECTORAL_L_CHAIN2_TIP: "032";
|
|
289
|
-
readonly PECTORAL_R_ROOT: "010";
|
|
290
|
-
readonly PECTORAL_R_CHAIN1: "012";
|
|
291
|
-
readonly PECTORAL_R_CHAIN1_A: "014";
|
|
292
|
-
readonly PECTORAL_R_CHAIN1_B: "016";
|
|
293
|
-
readonly PECTORAL_R_ROOT2: "011";
|
|
294
|
-
readonly PECTORAL_R_CHAIN2: "013";
|
|
295
|
-
readonly PECTORAL_R_CHAIN2_A: "015";
|
|
296
|
-
readonly PECTORAL_R_CHAIN2_B: "017";
|
|
297
|
-
readonly EYE_L: "EYES_0";
|
|
298
|
-
readonly EYE_R: "EYES_0";
|
|
299
|
-
readonly TAIL_TOP: "020";
|
|
300
|
-
readonly TAIL_TOP_MID: "025";
|
|
301
|
-
readonly TAIL_TOP_TIP: "026";
|
|
302
|
-
readonly TAIL_MID: "039";
|
|
303
|
-
readonly TAIL_MID_A: "040";
|
|
304
|
-
readonly TAIL_MID_A_TIP: "041";
|
|
305
|
-
readonly TAIL_MID_B: "042";
|
|
306
|
-
readonly TAIL_MID_B_TIP: "043";
|
|
307
|
-
readonly TAIL_MID_C: "044";
|
|
308
|
-
readonly TAIL_MID_C_TIP: "045";
|
|
309
|
-
readonly TAIL_SIDE_L: "019";
|
|
310
|
-
readonly TAIL_SIDE_L_MID: "023";
|
|
311
|
-
readonly TAIL_SIDE_L_TIP: "024";
|
|
312
|
-
readonly TAIL_SIDE_R: "034";
|
|
313
|
-
readonly TAIL_SIDE_R_MID: "036";
|
|
314
|
-
readonly TAIL_SIDE_R_TIP: "038";
|
|
315
|
-
};
|
|
316
|
-
bonePrefix: string;
|
|
317
|
-
boneSuffix: string;
|
|
318
|
-
suffixPattern: string;
|
|
319
|
-
auToMorphs: Record<number, MorphTargetsBySide>;
|
|
320
|
-
morphToMesh: Record<string, string[]>;
|
|
321
|
-
visemeKeys: string[];
|
|
322
|
-
auInfo: Record<string, AUInfo>;
|
|
323
|
-
compositeRotations: CompositeRotation[];
|
|
324
|
-
eyeMeshNodes: {
|
|
325
|
-
readonly LEFT: "EYES_0";
|
|
326
|
-
readonly RIGHT: "EYES_0";
|
|
327
|
-
};
|
|
328
|
-
meshes: Record<string, MeshInfo>;
|
|
329
|
-
auMixDefaults: Record<number, number>;
|
|
330
|
-
continuumPairs: Record<number, {
|
|
331
|
-
pairId: number;
|
|
332
|
-
isNegative: boolean;
|
|
333
|
-
axis: "pitch" | "yaw" | "roll";
|
|
334
|
-
node: string;
|
|
335
|
-
}>;
|
|
336
|
-
continuumLabels: Record<string, string>;
|
|
337
|
-
};
|
|
231
|
+
declare function resolvePreset(presetType: PresetType | string | undefined): Profile;
|
|
338
232
|
/**
|
|
339
233
|
* Resolve a preset and merge optional overrides.
|
|
340
234
|
*/
|
|
@@ -1972,7 +1866,7 @@ type MarkerStyle = 'html' | '3d';
|
|
|
1972
1866
|
/**
|
|
1973
1867
|
* Per-character configuration for camera + animation
|
|
1974
1868
|
*/
|
|
1975
|
-
interface CharacterConfig {
|
|
1869
|
+
interface CharacterConfig extends Partial<Profile> {
|
|
1976
1870
|
/** Unique identifier for the character */
|
|
1977
1871
|
characterId: string;
|
|
1978
1872
|
/** Display name */
|
|
@@ -2003,7 +1897,11 @@ interface CharacterConfig {
|
|
|
2003
1897
|
modelGroundClearance?: number;
|
|
2004
1898
|
/** Preset type for animation mapping. Default: 'cc4' */
|
|
2005
1899
|
auPresetType?: PresetType;
|
|
2006
|
-
/**
|
|
1900
|
+
/**
|
|
1901
|
+
* Optional legacy nested override blob.
|
|
1902
|
+
* New stored character documents should flatten preset overrides onto the
|
|
1903
|
+
* top-level character profile object instead of nesting them here.
|
|
1904
|
+
*/
|
|
2007
1905
|
profile?: Partial<Profile>;
|
|
2008
1906
|
/** Baked clip names hidden from downstream UIs and filtered out on load */
|
|
2009
1907
|
deletedBakedAnimationClips?: string[];
|
|
@@ -2030,6 +1928,22 @@ interface CharacterRegistry {
|
|
|
2030
1928
|
defaultCharacter?: string;
|
|
2031
1929
|
}
|
|
2032
1930
|
|
|
1931
|
+
declare function mergeRegionsByName(base?: Region[], override?: Region[]): Region[] | undefined;
|
|
1932
|
+
declare function extractProfileOverrides(config: CharacterConfig): Partial<Profile>;
|
|
1933
|
+
declare function applyCharacterProfileToPreset(config: CharacterConfig): Profile | null;
|
|
1934
|
+
/**
|
|
1935
|
+
* Resolve a saved character config into the runtime shape DPthree and similar
|
|
1936
|
+
* tools should consume.
|
|
1937
|
+
*
|
|
1938
|
+
* Precedence:
|
|
1939
|
+
* 1. preset defaults
|
|
1940
|
+
* 2. flattened top-level profile overrides
|
|
1941
|
+
* 3. legacy nested `config.profile` overrides (compatibility only)
|
|
1942
|
+
* 4. top-level saved `config.regions` overrides by region name
|
|
1943
|
+
* 5. top-level saved bone naming fields remain compatibility overrides
|
|
1944
|
+
*/
|
|
1945
|
+
declare function resolveCharacterConfig(config: CharacterConfig): CharacterConfig;
|
|
1946
|
+
|
|
2033
1947
|
interface ResolvedFaceCenter {
|
|
2034
1948
|
center: THREE.Vector3;
|
|
2035
1949
|
method: string;
|
|
@@ -2468,4 +2382,4 @@ declare function detectFacingDirection(model: THREE.Object3D, eyeBoneNames?: {
|
|
|
2468
2382
|
right: string[];
|
|
2469
2383
|
}): 'forward' | 'backward' | 'unknown';
|
|
2470
2384
|
|
|
2471
|
-
export { type AUInfo, type AUSelector, AU_INFO, AU_MIX_DEFAULTS, AU_TO_MORPHS, type AnalyzeModelOptions, type Animation, type AnimationActionHandle, type AnimationAnalysis, type AnimationBlendMode, type AnimationClipInfo, type AnimationEasing, type AnimationInfo, type AnimationPlayOptions, type AnimationSource, type AnimationState, AnimationThree, BETTA_FISH_PRESET, BLENDING_MODES, BONE_AU_TO_BINDINGS, type BlendingMode, type BoneBinding, type BoneInfo, type BoneKey, CC4_BONE_NODES, CC4_BONE_PREFIX, CC4_EYE_MESH_NODES, CC4_MESHES, CC4_PRESET, CC4_SUFFIX_PATTERN, COMPOSITE_ROTATIONS, CONTINUUM_LABELS, CONTINUUM_PAIRS_MAP, type CharacterConfig, type CharacterRegistry, type ClipHandle, type ClipOptions, type CompositeRotation, type CompositeRotationState, type CurvePoint, type CurvesMap, DEFAULT_HAIR_PHYSICS_CONFIG, type ExpandAnimation, type ExpandedRegionState,
|
|
2385
|
+
export { type AUInfo, type AUSelector, AU_INFO, AU_MAPPING_CONFIG, AU_MIX_DEFAULTS, AU_TO_MORPHS, type AnalyzeModelOptions, type Animation, type AnimationActionHandle, type AnimationAnalysis, type AnimationBlendMode, type AnimationClipInfo, type AnimationEasing, type AnimationInfo, type AnimationPlayOptions, type AnimationSource, type AnimationState, AnimationThree, BETTA_FISH_PRESET, BLENDING_MODES, BONE_AU_TO_BINDINGS, type BlendingMode, type BoneBinding, type BoneInfo, type BoneKey, CC4_BONE_NODES, CC4_BONE_PREFIX, CC4_EYE_MESH_NODES, CC4_MESHES, CC4_PRESET, CC4_SUFFIX_PATTERN, COMPOSITE_ROTATIONS, CONTINUUM_LABELS, CONTINUUM_PAIRS_MAP, type CharacterConfig, type CharacterRegistry, type ClipHandle, type ClipOptions, type CompositeRotation, type CompositeRotationState, type CurvePoint, type CurvesMap, DEFAULT_HAIR_PHYSICS_CONFIG, type ExpandAnimation, type ExpandedRegionState, FISH_AU_MAPPING_CONFIG, type FaceCenterResult, type FallbackConfig, type FindFaceCenterOptions, type Hair, type HairMorphAxis, type HairMorphOutput$1 as HairMorphOutput, type HairMorphTargetMapping, type HairMorphTargetValueMapping, type HairMorphTargetsConfig, type HairObjectRef, type HairObjectState, HairPhysics, type HairPhysicsConfig$1 as HairPhysicsConfig, type HairPhysicsDirectionConfig, type HairPhysics$1 as HairPhysicsInterface, type HairMorphOutput as HairPhysicsMorphOutput, type HairPhysicsProfileConfig, type HairPhysicsRuntimeConfig, type HairPhysicsRuntimeConfigUpdate, type HairPhysicsState, type HairState, type HairStrand, type HeadState$1 as HeadState, type LineConfig, type LineCurve, type LineStyle, Loom3, type Loom3Config, Loom3 as Loom3Three, type LoomLarge, type LoomLargeConfig, Loom3 as LoomLargeThree, MORPH_TO_MESH, type MappingConsistencyResult, type MappingCorrection, type MappingCorrectionOptions, type MappingCorrectionResult, type MappingIssue, type MarkerGroup, type MarkerStyle, type MarkerStyleOverrides, type MeshCategory, type MeshInfo, type MeshMaterialSettings, type MixerLoopMode, type ModelAnalysisReport, type ModelData, type ModelMeshInfo, type MorphCategory, type MorphInfo, type MorphTargetRef, type MorphTargetsBySide, type NamedDirection, type PresetType, type Profile, type ReadyPayload, type Region, type RotationAxis, type RotationsState, type Snippet, type TrackInfo, type TransitionHandle, VISEME_JAW_AMOUNTS, VISEME_KEYS, type ValidateMappingOptions, type ValidationResult, analyzeModel, applyCharacterProfileToPreset, applyProfileToPreset, collectMorphMeshes, detectFacingDirection, extractFromGLTF, extractModelData, extractProfileOverrides, findFaceCenter, fuzzyNameMatch, generateMappingCorrections, getModelForwardDirection, hasLeftRightMorphs, isMixedAU, isPresetCompatible, mergeRegionsByName as mergeCharacterRegionsByName, resolveBoneName, resolveBoneNames, resolveCharacterConfig, resolveFaceCenter, resolvePreset, resolvePresetWithOverrides, resolveProfile, suggestBestPreset, validateMappingConfig, validateMappings };
|