@lovelace_lol/polymer 0.0.10 → 0.0.11
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/index.d.ts +48 -687
- package/dist/index.js +1044 -1417
- package/dist/worker/agency-worker.js +703 -863
- package/dist/worker/manifest.edn +1 -1
- package/package.json +6 -6
package/dist/index.d.ts
CHANGED
|
@@ -197,14 +197,14 @@ export interface HairPhysicsProfileConfig {
|
|
|
197
197
|
impulseClipDuration?: number;
|
|
198
198
|
direction?: { yawSign?: 1 | -1; pitchSign?: 1 | -1 };
|
|
199
199
|
morphTargets?: {
|
|
200
|
-
swayLeft?: HairMorphTargetMapping;
|
|
201
|
-
swayRight?: HairMorphTargetMapping;
|
|
202
|
-
swayFront?: HairMorphTargetMapping;
|
|
203
|
-
fluffRight?: HairMorphTargetMapping;
|
|
204
|
-
fluffBottom?: HairMorphTargetMapping;
|
|
205
|
-
headUp?: Record<string, HairMorphTargetValueMapping
|
|
206
|
-
headDown?: Record<string, HairMorphTargetValueMapping
|
|
207
|
-
};
|
|
200
|
+
swayLeft?: HairMorphTargetMapping | null;
|
|
201
|
+
swayRight?: HairMorphTargetMapping | null;
|
|
202
|
+
swayFront?: HairMorphTargetMapping | null;
|
|
203
|
+
fluffRight?: HairMorphTargetMapping | null;
|
|
204
|
+
fluffBottom?: HairMorphTargetMapping | null;
|
|
205
|
+
headUp?: Record<string, HairMorphTargetValueMapping | null> | null;
|
|
206
|
+
headDown?: Record<string, HairMorphTargetValueMapping | null> | null;
|
|
207
|
+
} | null;
|
|
208
208
|
}
|
|
209
209
|
|
|
210
210
|
export type VRMHumanoidRole =
|
|
@@ -369,13 +369,6 @@ export interface Profile {
|
|
|
369
369
|
annotationRegions?: Region[];
|
|
370
370
|
disabledRegions?: string[];
|
|
371
371
|
hairPhysics?: HairPhysicsProfileConfig;
|
|
372
|
-
gazeCalibration?: {
|
|
373
|
-
head?: { opticalAxis?: PolymerVector3 };
|
|
374
|
-
leftEye?: { opticalAxis?: PolymerVector3 };
|
|
375
|
-
rightEye?: { opticalAxis?: PolymerVector3 };
|
|
376
|
-
/** Authored model coordinate units per physical meter, before root scaling. */
|
|
377
|
-
modelUnitsPerMeter?: number;
|
|
378
|
-
};
|
|
379
372
|
humanoidCharacterization?: HumanoidCharacterization;
|
|
380
373
|
/** Authored overrides may patch individual fields; null removes a preset control. */
|
|
381
374
|
bodyControls?: Record<string, Partial<BodyControlDefinition> | null>;
|
|
@@ -488,8 +481,6 @@ export interface ModelAnalysisReport { model: ModelData; validation?: Validation
|
|
|
488
481
|
|
|
489
482
|
export interface AnnotationLaterality { leftSideX: 1 | -1; confidence: number; evidence: string[]; }
|
|
490
483
|
export interface BoneResolutionProfile { bonePrefix?: string; boneSuffix?: string; boneNodes?: Record<string, string>; suffixPattern?: string; }
|
|
491
|
-
export interface CameraRelativeGazeOffset { x: number; y: number; }
|
|
492
|
-
export interface CameraRelativeGazeOptions { yawWeight?: number; pitchWeight?: number; epsilon?: number; }
|
|
493
484
|
export interface MarkerEndpointSeparationOptions { starts: ArrayLike<number>; ends: ArrayLike<number>; modelCenter: { x: number; y: number; z: number }; modelHeight: number; }
|
|
494
485
|
|
|
495
486
|
export interface HumanoidSkeletonTemplateBone { readonly name: string; readonly parent: string | null; readonly translation: HumanoidSkeletonTemplateVec3; }
|
|
@@ -509,7 +500,7 @@ export interface CharacterHostCharacterOptions extends CharacterModelTransform {
|
|
|
509
500
|
export interface CharacterHostExternalScene { scene: Scene; renderer: CharacterSceneRenderer; backend?: CharacterSceneBackend; rendering?: CharacterSceneRenderingController; camera: Camera; mountCanvas?: boolean; manageResize?: boolean; }
|
|
510
501
|
/** Cancellation applies only until creation resolves; dispose the resolved host explicitly. */
|
|
511
502
|
export interface CharacterHostOptions { signal?: AbortSignal; container: HTMLElement; character: CharacterHostCharacterOptions; embody?: RustEmbodyHostConfig; scene?: Omit<DefaultCharacterSceneAsyncOptions, 'signal'>; external?: CharacterHostExternalScene; loader?: CharacterModelLoadOptions; autoStart?: boolean; renderLoop?: boolean; autoFrame?: boolean; }
|
|
512
|
-
export interface CharacterHost { engine: Embody; scene: Scene; readonly renderer: CharacterSceneRenderer; readonly backend: CharacterSceneBackend | null; readonly rendering: CharacterSceneRenderingController | null; camera: Camera | PerspectiveCamera; model: Object3D; meshes: Mesh[]; animations: AnimationClip[]; lighting: DefaultCharacterLightingController | null; ownsScene: boolean; container: HTMLElement; setCharacter(character: CharacterHostCharacterOptions, loader?: CharacterModelLoadOptions): Promise<void>; resize(): void; dispose(): Promise<void>; }
|
|
503
|
+
export interface CharacterHost { engine: Embody; scene: Scene; readonly renderer: CharacterSceneRenderer | null; readonly backend: CharacterSceneBackend | null; readonly rendering: CharacterSceneRenderingController | null; camera: Camera | PerspectiveCamera; model: Object3D; meshes: Mesh[]; animations: AnimationClip[]; lighting: DefaultCharacterLightingController | null; ownsScene: boolean; container: HTMLElement; setCharacter(character: CharacterHostCharacterOptions, loader?: CharacterModelLoadOptions): Promise<void>; resize(): void; dispose(): Promise<void>; }
|
|
513
504
|
|
|
514
505
|
export interface CharacterRegistry { characters: CharacterConfig[]; defaultCharacter?: string; }
|
|
515
506
|
export type AnimationSource = 'baked' | 'clip' | 'snippet';
|
|
@@ -612,11 +603,8 @@ export interface WasmRuntimeCore {
|
|
|
612
603
|
get_viseme(index: number): number;
|
|
613
604
|
get_viseme_jaw_scale(index: number): number;
|
|
614
605
|
set_viseme_slot_count(count: number): void;
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
update(dtSeconds: number): number;
|
|
618
|
-
active_transition_count(): number;
|
|
619
|
-
clear_transitions(): void;
|
|
606
|
+
build_live_clip(name: string, durationSec: number): string;
|
|
607
|
+
build_live_release_clip(name: string, previousClipJSON: string, durationSec: number): string;
|
|
620
608
|
clear(): void;
|
|
621
609
|
evaluate_morph_frame_delta(): Float32Array;
|
|
622
610
|
evaluate_bone_frame_delta(): Float32Array;
|
|
@@ -654,19 +642,6 @@ export interface EmbodyCoreWasmModule {
|
|
|
654
642
|
manualScale: number,
|
|
655
643
|
manualTranslation: Float32Array
|
|
656
644
|
): Float32Array;
|
|
657
|
-
solve_profile_screen_space_gaze(
|
|
658
|
-
profileJson: string,
|
|
659
|
-
screenTarget: Float32Array,
|
|
660
|
-
cameraPosition: Float32Array,
|
|
661
|
-
cameraQuaternion: Float32Array,
|
|
662
|
-
gazeOrigin: Float32Array,
|
|
663
|
-
modelQuaternion: Float32Array,
|
|
664
|
-
verticalFovDegrees: number,
|
|
665
|
-
aspect: number,
|
|
666
|
-
eyesEnabled: boolean,
|
|
667
|
-
headEnabled: boolean,
|
|
668
|
-
headFollowFraction: number
|
|
669
|
-
): Float32Array;
|
|
670
645
|
default_hair_physics_config_values(): Float32Array;
|
|
671
646
|
list_presets(): string[];
|
|
672
647
|
has_preset(presetId: string): boolean;
|
|
@@ -701,13 +676,11 @@ export type RustEmbodyHostConfig =
|
|
|
701
676
|
};
|
|
702
677
|
|
|
703
678
|
/**
|
|
704
|
-
*
|
|
705
|
-
*
|
|
706
|
-
* Rust owns profile intake and frame evaluation. The remaining methods are the
|
|
707
|
-
* public Three.js and AnimationMixer capabilities consumed by application
|
|
708
|
-
* hosts; no concrete TypeScript Embody class is implied.
|
|
679
|
+
* Public character controls implemented by Embody's Three.js connector.
|
|
680
|
+
* Rust compiles clips; the existing Three renderer advances native playback.
|
|
709
681
|
*/
|
|
710
682
|
export interface PolymerCharacterRuntime {
|
|
683
|
+
readonly model: Object3D | undefined;
|
|
711
684
|
readonly meshes: unknown[];
|
|
712
685
|
readonly meshByName: Map<string, unknown>;
|
|
713
686
|
readonly bones: Record<string, unknown>;
|
|
@@ -734,7 +707,7 @@ export interface PolymerCharacterRuntime {
|
|
|
734
707
|
applySemanticPose(pose: SemanticPose): void;
|
|
735
708
|
validateSemanticAnimation(animation: SemanticAnimation, options?: SemanticAnimationOptions): void;
|
|
736
709
|
semanticAnimationToClip(name: string, animation: SemanticAnimation, options?: SemanticAnimationOptions): AnimationPlaybackHandle;
|
|
737
|
-
/** Reset configured body actions atomically
|
|
710
|
+
/** Reset configured body actions atomically; the next native mixer frame applies the pose. */
|
|
738
711
|
resetBodyControls(): void;
|
|
739
712
|
setContinuum(negAU: number, posAU: number, value: number, balance?: number): void;
|
|
740
713
|
getContinuum(negAU: number, posAU: number): number;
|
|
@@ -746,7 +719,7 @@ export interface PolymerCharacterRuntime {
|
|
|
746
719
|
/** Canonical direct jaw scale; unset, cleared or out-of-range slots return 1. */
|
|
747
720
|
getVisemeJawScale(index: number): number;
|
|
748
721
|
setVisemeById(slotId: string, value: number, jawScale?: number): void;
|
|
749
|
-
/** Mixer-timed live control; defaults to 80 ms. getViseme reports
|
|
722
|
+
/** Mixer-timed live control; defaults to 80 ms. getViseme reports its destination immediately. */
|
|
750
723
|
transitionViseme(index: number, to: number, durationMs?: number, jawScale?: number): TransitionHandle;
|
|
751
724
|
transitionVisemeById(slotId: string, to: number, durationMs?: number, jawScale?: number): TransitionHandle;
|
|
752
725
|
setAUMixWeight(id: number, weight: number): void;
|
|
@@ -792,7 +765,6 @@ export interface PolymerCharacterRuntime {
|
|
|
792
765
|
setHairPhysicsConfig(config: HairPhysicsRuntimeConfigUpdate): void;
|
|
793
766
|
getHairPhysicsConfig(): HairPhysicsRuntimeConfig;
|
|
794
767
|
validateHairMorphTargets(): string[];
|
|
795
|
-
updateHairPhysics(dtSeconds: number): void;
|
|
796
768
|
loadAnimationClips(clips: unknown[]): void;
|
|
797
769
|
/**
|
|
798
770
|
* Register additional baked sources on a bound model without starting clips
|
|
@@ -824,13 +796,6 @@ export interface PolymerCharacterRuntime {
|
|
|
824
796
|
options?: Record<string, unknown>
|
|
825
797
|
): AnimationPlaybackHandle;
|
|
826
798
|
cleanupSnippet(name: string): void;
|
|
827
|
-
/** Read-only seed for gaze motor controls in the current evaluated pose. */
|
|
828
|
-
getGazeControlState(options?: { worldTarget?: PolymerVector3; headIntensity?: number; eyeIntensity?: number }): GazeControlState | null;
|
|
829
|
-
/** Last evaluated optical-ray diagnostics; null without active focus controls. */
|
|
830
|
-
getGazeFocusDiagnostics(): GazeFocusDiagnostics | null;
|
|
831
|
-
/** Fresh immutable copy of the last positive-dt pose update; polling does not renew its stamp. */
|
|
832
|
-
getGazeObservation(): GazeObservation | null;
|
|
833
|
-
update(dtSeconds: number): void;
|
|
834
799
|
start(): void;
|
|
835
800
|
stop(): void;
|
|
836
801
|
clear(): void;
|
|
@@ -838,7 +803,18 @@ export interface PolymerCharacterRuntime {
|
|
|
838
803
|
dispose(): void;
|
|
839
804
|
}
|
|
840
805
|
|
|
841
|
-
export interface
|
|
806
|
+
export interface AnimationPlaybackEvent {
|
|
807
|
+
type: 'completed' | 'cancelled' | 'error';
|
|
808
|
+
handle: string;
|
|
809
|
+
actionId?: string;
|
|
810
|
+
clipName?: string;
|
|
811
|
+
reason?: string;
|
|
812
|
+
message?: string;
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
export interface AnimationPlaybackHandle extends Omit<TransitionHandle, 'promise'> {
|
|
816
|
+
promise: Promise<AnimationPlaybackEvent>;
|
|
817
|
+
finished: Promise<AnimationPlaybackEvent>;
|
|
842
818
|
name: string;
|
|
843
819
|
actionId?: string;
|
|
844
820
|
play(): AnimationPlaybackHandle;
|
|
@@ -856,6 +832,8 @@ export declare class Embody {
|
|
|
856
832
|
[key: string]: any;
|
|
857
833
|
}
|
|
858
834
|
|
|
835
|
+
export declare function createScenePlaybackFrame(scene: Object3D, document?: Document): { onFrame(timestamp?: number): void; dispose(): void };
|
|
836
|
+
|
|
859
837
|
export declare function createRustEmbodyHost(
|
|
860
838
|
model: unknown,
|
|
861
839
|
config?: RustEmbodyHostConfig
|
|
@@ -910,17 +888,9 @@ export declare function resolveBoneAxisChannel(profile: Profile, boneName: strin
|
|
|
910
888
|
export declare function resolveBoneNameForNodeKey(profile: Profile, nodeKey: string): string | null;
|
|
911
889
|
export declare function resolveContinuumDisplayLabel(profile: Pick<Profile, 'continuumPairs' | 'continuumLabels' | 'auInfo' | 'boneNodes' | 'bonePrefix' | 'boneSuffix'>, negativeAuId: number, positiveAuId: number): string;
|
|
912
890
|
export declare function stripConfiguredBoneAffixes(profile: { bonePrefix?: string; boneSuffix?: string } | null | undefined, boneName: string): string;
|
|
913
|
-
export declare function computeCameraRelativeGazeOffset(model: Object3D | null, cameraPosition: { x: number; y: number; z: number }, targetPosition: { x: number; y: number; z: number }, options?: CameraRelativeGazeOptions): CameraRelativeGazeOffset;
|
|
914
|
-
export declare function solveScreenSpaceGaze(options: ScreenSpaceGazeOptions): ScreenSpaceGazeSolution;
|
|
915
|
-
export declare function createEmbodyGazeRuntime(
|
|
916
|
-
profileProvider: Profile | (() => Profile),
|
|
917
|
-
host?: Pick<PolymerCharacterRuntime, 'getGazeControlState'>
|
|
918
|
-
): EmbodyGazeRuntime;
|
|
919
891
|
export declare function fuzzyNameMatch(objectName: string, targetName: string, suffixPattern?: string): boolean;
|
|
920
892
|
export declare function getMeshNamesForAUProfile(profile: Profile, auId: number): string[];
|
|
921
|
-
export declare function hasLeftRightMorphs(auId: number): boolean;
|
|
922
893
|
export declare function hasLeftRightMorphs(profile: Profile, auId: number): boolean;
|
|
923
|
-
export declare function isMixedAU(auId: number): boolean;
|
|
924
894
|
export declare function isMixedAU(profile: Profile, auId: number): boolean;
|
|
925
895
|
export declare function resolveBoneNames(names: string[] | undefined, profile?: BoneResolutionProfile): string[];
|
|
926
896
|
/** All 55 VRM 1.0 roles, including required flags and optional-parent rules. */
|
|
@@ -932,8 +902,6 @@ export declare function setAUMorphTargets(profile: Profile, auId: number, side:
|
|
|
932
902
|
export declare function resolveHumanoidCharacterization(profile: Profile): HumanoidCharacterizationResolution;
|
|
933
903
|
/** With a model, reports missing bone/morph targets against the actual scene. */
|
|
934
904
|
export declare function getBodyControls(profile: Profile, model?: Object3D): BodyControlDescriptor[];
|
|
935
|
-
export declare function resolveCharacterGazeOrigin(model: Object3D, profile?: Profile | null): Vector3 | null;
|
|
936
|
-
export declare const CC4_BONES: Record<string, string>;
|
|
937
905
|
export declare const VISEME_KEYS: string[];
|
|
938
906
|
export declare const HAIR_COLOR_PRESETS: Record<string, HairColorAppearance>;
|
|
939
907
|
export declare const DEFAULT_HAIR_COLOR_APPEARANCE: HairColorAppearance;
|
|
@@ -984,409 +952,12 @@ export interface BlinkState {
|
|
|
984
952
|
|
|
985
953
|
export type BlinkAgencyConfig = Partial<Omit<BlinkState, 'agency'>>;
|
|
986
954
|
|
|
987
|
-
export interface
|
|
955
|
+
export interface PerceptionTarget {
|
|
988
956
|
x: number;
|
|
989
957
|
y: number;
|
|
990
958
|
z?: number;
|
|
991
959
|
}
|
|
992
960
|
|
|
993
|
-
export interface GazeControlState {
|
|
994
|
-
headSeedLimited?: boolean;
|
|
995
|
-
eyeSeedLimited?: boolean;
|
|
996
|
-
target?: Required<GazeTarget>;
|
|
997
|
-
eyeTarget: Required<GazeTarget>;
|
|
998
|
-
headTarget: Required<GazeTarget>;
|
|
999
|
-
headRoll: number;
|
|
1000
|
-
}
|
|
1001
|
-
|
|
1002
|
-
export interface GazeFocusRequest {
|
|
1003
|
-
worldTarget: PolymerVector3;
|
|
1004
|
-
target: Required<GazeTarget>;
|
|
1005
|
-
headTarget?: Required<GazeTarget>;
|
|
1006
|
-
eyesEnabled: boolean;
|
|
1007
|
-
headEnabled: boolean;
|
|
1008
|
-
/** Tracking contribution in [0, 1]; older values above 1 normalize to 1. Live changes use scheduled motion. */
|
|
1009
|
-
eyeIntensity?: number;
|
|
1010
|
-
/** Tracking contribution in [0, 1], composed over authored head motion. Live changes use scheduled motion. */
|
|
1011
|
-
headIntensity?: number;
|
|
1012
|
-
initialState?: GazeControlState;
|
|
1013
|
-
}
|
|
1014
|
-
|
|
1015
|
-
export interface GazeFocusDiagnostics {
|
|
1016
|
-
target: PolymerVector3;
|
|
1017
|
-
eyes: Array<{ name: string; origin: PolymerVector3; direction: PolymerVector3; errorDegrees: number; limited: boolean }>;
|
|
1018
|
-
headLimited: boolean;
|
|
1019
|
-
missingHead: boolean;
|
|
1020
|
-
missingEyes: boolean;
|
|
1021
|
-
}
|
|
1022
|
-
|
|
1023
|
-
export interface GazeObservation {
|
|
1024
|
-
sampleSequence: number;
|
|
1025
|
-
observedAt: number;
|
|
1026
|
-
bindingGeneration: number;
|
|
1027
|
-
requestId: string | null;
|
|
1028
|
-
diagnostics: GazeFocusDiagnostics;
|
|
1029
|
-
}
|
|
1030
|
-
|
|
1031
|
-
export interface GazeAttentionOutcome {
|
|
1032
|
-
status: 'moving' | 'settled' | 'unavailable' | 'failed';
|
|
1033
|
-
reason: string;
|
|
1034
|
-
angularErrorDeg?: number;
|
|
1035
|
-
sampleSequence?: number;
|
|
1036
|
-
observedAt?: number;
|
|
1037
|
-
bindingGeneration?: number;
|
|
1038
|
-
}
|
|
1039
|
-
export interface GazeRetainedCandidate {
|
|
1040
|
-
id: string;
|
|
1041
|
-
source: string;
|
|
1042
|
-
provenance: 'synthetic' | 'peer';
|
|
1043
|
-
target: GazeTarget;
|
|
1044
|
-
targetSpace: string;
|
|
1045
|
-
confidence: number;
|
|
1046
|
-
salience: number;
|
|
1047
|
-
influence: number;
|
|
1048
|
-
/** Actual accepted Society credit for peers, null for synthetic fixtures. */
|
|
1049
|
-
routeCredit: number | null;
|
|
1050
|
-
edgeId: string | null;
|
|
1051
|
-
score: number;
|
|
1052
|
-
observedAt: number;
|
|
1053
|
-
expiresAt: number;
|
|
1054
|
-
eligible: boolean;
|
|
1055
|
-
reason: string;
|
|
1056
|
-
lastOutcome?: GazeAttentionOutcome;
|
|
1057
|
-
}
|
|
1058
|
-
export interface GazeAttentionState {
|
|
1059
|
-
/** The POC accepts static Conversation facts; live perception arbitration is deferred. */
|
|
1060
|
-
lastRejectedInput?: { source: string; reason: 'moving-peer-arbitration-deferred' };
|
|
1061
|
-
active: boolean;
|
|
1062
|
-
sessionId: string | null;
|
|
1063
|
-
scenario: GazeAttentionScenario | null;
|
|
1064
|
-
phase: 'inactive' | 'waiting' | 'moving' | 'settled' | 'unavailable' | 'failed';
|
|
1065
|
-
reason: string;
|
|
1066
|
-
selectedId: string | null;
|
|
1067
|
-
requestId: string | null;
|
|
1068
|
-
configurationRevision: number;
|
|
1069
|
-
candidates: GazeRetainedCandidate[];
|
|
1070
|
-
feedback: GazeAttentionOutcome | null;
|
|
1071
|
-
decisionCount: number;
|
|
1072
|
-
updatedAt?: number;
|
|
1073
|
-
}
|
|
1074
|
-
export type GazeAttentionScenario = 'competition' | 'equal-score' | 'expiry' | 'unreachable';
|
|
1075
|
-
|
|
1076
|
-
export interface ScreenSpaceGazeSolution {
|
|
1077
|
-
kind: 'gaze.screen-space' | 'gaze.viewer-space';
|
|
1078
|
-
focus?: GazeFocusRequest;
|
|
1079
|
-
target: Required<GazeTarget>;
|
|
1080
|
-
eyeTarget: Required<GazeTarget>;
|
|
1081
|
-
headTarget: Required<GazeTarget>;
|
|
1082
|
-
angles: {
|
|
1083
|
-
yawDegrees: number;
|
|
1084
|
-
pitchDegrees: number;
|
|
1085
|
-
cameraYawDegrees: number;
|
|
1086
|
-
cameraPitchDegrees: number;
|
|
1087
|
-
};
|
|
1088
|
-
/** World-space distance from the character's binocular eye origin to the render camera. */
|
|
1089
|
-
distance: number;
|
|
1090
|
-
viewerTarget: PolymerVector3;
|
|
1091
|
-
screenTarget: Required<GazeTarget>;
|
|
1092
|
-
}
|
|
1093
|
-
|
|
1094
|
-
export interface ScreenSpaceGazeOptions {
|
|
1095
|
-
profile?: Profile;
|
|
1096
|
-
screenTarget: GazeTarget;
|
|
1097
|
-
cameraPosition: PolymerVector3;
|
|
1098
|
-
cameraQuaternion: PolymerQuaternion;
|
|
1099
|
-
gazeOrigin: PolymerVector3;
|
|
1100
|
-
modelQuaternion: PolymerQuaternion;
|
|
1101
|
-
verticalFovDegrees: number;
|
|
1102
|
-
aspect: number;
|
|
1103
|
-
eyesEnabled?: boolean;
|
|
1104
|
-
headEnabled?: boolean;
|
|
1105
|
-
/** Defaults to 1: full target bearing, bounded by the profile's head AU limits. */
|
|
1106
|
-
headFollowFraction?: number;
|
|
1107
|
-
}
|
|
1108
|
-
|
|
1109
|
-
export interface CameraGazeGeometry {
|
|
1110
|
-
cameraPosition: PolymerVector3;
|
|
1111
|
-
cameraQuaternion: PolymerQuaternion;
|
|
1112
|
-
gazeOrigin: PolymerVector3;
|
|
1113
|
-
modelQuaternion: PolymerQuaternion;
|
|
1114
|
-
verticalFovDegrees: number;
|
|
1115
|
-
aspect: number;
|
|
1116
|
-
gazeGeometryComplete: boolean;
|
|
1117
|
-
worldUnitsPerMeter?: number;
|
|
1118
|
-
}
|
|
1119
|
-
|
|
1120
|
-
export interface EmbodyGazeRuntime {
|
|
1121
|
-
solveTarget(
|
|
1122
|
-
screenTarget: GazeTarget,
|
|
1123
|
-
cameraFact: CameraGazeGeometry & Record<string, unknown>,
|
|
1124
|
-
options: GazeApplyOptions & { eyesEnabled: boolean; headEnabled: boolean; headFollowEyes: boolean; headIntensity?: number }
|
|
1125
|
-
): ScreenSpaceGazeSolution;
|
|
1126
|
-
}
|
|
1127
|
-
|
|
1128
|
-
export interface GazeConfig {
|
|
1129
|
-
/** Explicitly synthetic lab:A and lab:B receiver influences, not graph-edge weights. */
|
|
1130
|
-
attentionInfluenceA?: number;
|
|
1131
|
-
attentionInfluenceB?: number;
|
|
1132
|
-
attentionDwellMs?: number;
|
|
1133
|
-
attentionSwitchMargin?: number;
|
|
1134
|
-
attentionToleranceDeg?: number;
|
|
1135
|
-
attentionTimeoutMs?: number;
|
|
1136
|
-
enabled?: boolean;
|
|
1137
|
-
eyesEnabled?: boolean;
|
|
1138
|
-
headEnabled?: boolean;
|
|
1139
|
-
/** Default true: follow the full target turn from reference neutral within head AU limits. False prefers neutral, with eye-limit overflow assistance. */
|
|
1140
|
-
headFollowEyes?: boolean;
|
|
1141
|
-
headFollowDelay?: number;
|
|
1142
|
-
mirrored?: boolean;
|
|
1143
|
-
smoothFactor?: number;
|
|
1144
|
-
predictionEnabled?: boolean;
|
|
1145
|
-
predictionFactor?: number;
|
|
1146
|
-
maxPredictionDelta?: number;
|
|
1147
|
-
minDelta?: number;
|
|
1148
|
-
transitionDurationMs?: number;
|
|
1149
|
-
/** Tracking contribution in [0, 1]; older values above 1 normalize to 1. With geometry-backed focus, live changes move directly toward the latest value without angular reversal braking. */
|
|
1150
|
-
eyeIntensity?: number;
|
|
1151
|
-
/** Tracking contribution in [0, 1], composed over authored head motion. With geometry-backed focus, live changes move directly toward the latest value without angular reversal braking. */
|
|
1152
|
-
headIntensity?: number;
|
|
1153
|
-
trackingSpeed?: number;
|
|
1154
|
-
/** Braking interval for angular direction changes; geometry-backed strength changes bypass it. */
|
|
1155
|
-
courseChangeDurationMs?: number;
|
|
1156
|
-
coalesceMs?: number;
|
|
1157
|
-
}
|
|
1158
|
-
|
|
1159
|
-
export interface GazeState {
|
|
1160
|
-
attention: GazeAttentionState;
|
|
1161
|
-
configuration: AgencyConfigurationState;
|
|
1162
|
-
lastDecision: GazeDecision | null;
|
|
1163
|
-
agency: 'gaze';
|
|
1164
|
-
status: string;
|
|
1165
|
-
mode: string;
|
|
1166
|
-
active: boolean;
|
|
1167
|
-
rawTarget: Required<GazeTarget>;
|
|
1168
|
-
target: Required<GazeTarget>;
|
|
1169
|
-
baseTarget: Required<GazeTarget>;
|
|
1170
|
-
baseOptions: GazeApplyOptions;
|
|
1171
|
-
cameraInvalidated: boolean;
|
|
1172
|
-
sourceAvailable: boolean;
|
|
1173
|
-
cameraRelativeOffset: Required<GazeTarget>;
|
|
1174
|
-
lastCameraFact: null | Record<string, unknown>;
|
|
1175
|
-
lastGazeSolution: ScreenSpaceGazeSolution | null;
|
|
1176
|
-
lastRequestedTarget: Required<GazeTarget>;
|
|
1177
|
-
pendingRequest: GazeLookRequest | null;
|
|
1178
|
-
lastRequest: GazeLookRequest | GazeResetRequest | null;
|
|
1179
|
-
lastIgnored: null | Record<string, unknown>;
|
|
1180
|
-
lastPlan: null | Record<string, unknown>;
|
|
1181
|
-
lastEvent: null | Record<string, unknown>;
|
|
1182
|
-
receivedCount: number;
|
|
1183
|
-
plannedCount: number;
|
|
1184
|
-
requestedCount: number;
|
|
1185
|
-
ignoredCount: number;
|
|
1186
|
-
resetCount: number;
|
|
1187
|
-
cancelCount: number;
|
|
1188
|
-
config: Required<GazeConfig>;
|
|
1189
|
-
}
|
|
1190
|
-
|
|
1191
|
-
export interface GazeApplyOptions {
|
|
1192
|
-
eyeEnabled?: boolean;
|
|
1193
|
-
headEnabled?: boolean;
|
|
1194
|
-
headFollowEyes?: boolean;
|
|
1195
|
-
headFollowDelay?: number;
|
|
1196
|
-
/** Fraction of total target bearing assigned to the head from reference neutral. Defaults to 1; head AU limits still apply. */
|
|
1197
|
-
headFollowFraction?: number;
|
|
1198
|
-
viewerTarget?: PolymerVector3;
|
|
1199
|
-
viewerTargetSpace?: 'webcam.viewer';
|
|
1200
|
-
viewerVerticalFovDegrees?: number;
|
|
1201
|
-
viewerAspect?: number;
|
|
1202
|
-
rawViewerTarget?: PolymerVector3;
|
|
1203
|
-
/** Default false. True explicitly prefers the camera bearing instead of reference-neutral target following. */
|
|
1204
|
-
lockHeadToCamera?: boolean;
|
|
1205
|
-
force?: boolean;
|
|
1206
|
-
}
|
|
1207
|
-
|
|
1208
|
-
export interface GazeAttentionCandidate {
|
|
1209
|
-
target?: GazeTarget;
|
|
1210
|
-
screenTarget?: GazeTarget;
|
|
1211
|
-
gazeTarget?: GazeTarget;
|
|
1212
|
-
lookTarget?: GazeTarget;
|
|
1213
|
-
x?: number;
|
|
1214
|
-
y?: number;
|
|
1215
|
-
z?: number;
|
|
1216
|
-
priority?: number;
|
|
1217
|
-
weight?: number;
|
|
1218
|
-
confidence?: number;
|
|
1219
|
-
source?: string;
|
|
1220
|
-
label?: string;
|
|
1221
|
-
id?: string;
|
|
1222
|
-
}
|
|
1223
|
-
|
|
1224
|
-
export type GazeDispatch =
|
|
1225
|
-
| { type: 'attention.start' | 'attention.stop'; sessionId: string }
|
|
1226
|
-
| { type: 'attention.scenario'; sessionId: string; scenario: GazeAttentionScenario }
|
|
1227
|
-
| { type: 'configure'; config: GazeConfig }
|
|
1228
|
-
| { type: 'setMode' | 'set-mode'; mode: string }
|
|
1229
|
-
| { type: 'setActive' | 'set-active'; active: boolean }
|
|
1230
|
-
| { type: 'enable' }
|
|
1231
|
-
| { type: 'disable' }
|
|
1232
|
-
| { type: 'setTarget' | 'set-target' | 'focusTarget'; target: GazeTarget; options?: GazeApplyOptions }
|
|
1233
|
-
| { type: 'attention.fact'; targets?: GazeAttentionCandidate[]; target?: GazeTarget; screenTarget?: GazeTarget; targetSpace?: string; source?: string }
|
|
1234
|
-
| ({ type: 'camera.fact'; relativeOffset: GazeTarget; source?: string } & Partial<CameraGazeGeometry>)
|
|
1235
|
-
| { type: 'camera.stale' | 'clearCameraOffset'; reason?: string; source?: string }
|
|
1236
|
-
| Extract<PolymerDomainEvent, { type: 'userPerception.faceLost' | 'userPerception.status' }>
|
|
1237
|
-
| { type: 'reset'; durationMs?: number; eyes?: boolean; head?: boolean }
|
|
1238
|
-
| { type: 'cancel'; reason?: string };
|
|
1239
|
-
|
|
1240
|
-
export interface GazeLookRequest {
|
|
1241
|
-
attentionFeedback?: { sessionId: string; requestId: string; worldTarget: PolymerVector3 | null; timeoutMs: number; toleranceDeg: number } | null;
|
|
1242
|
-
configurationRevision?: number;
|
|
1243
|
-
coalesceMs?: number;
|
|
1244
|
-
type: 'eyeHeadTracking.requestGaze';
|
|
1245
|
-
agency: 'gaze';
|
|
1246
|
-
targetAgency: 'eyeHeadTracking';
|
|
1247
|
-
requestId: string;
|
|
1248
|
-
source?: string;
|
|
1249
|
-
label?: string;
|
|
1250
|
-
mode: string;
|
|
1251
|
-
target: Required<GazeTarget>;
|
|
1252
|
-
eyeTarget: Required<GazeTarget>;
|
|
1253
|
-
headTarget: Required<GazeTarget>;
|
|
1254
|
-
gazeSolution?: ScreenSpaceGazeSolution;
|
|
1255
|
-
rawTarget: Required<GazeTarget>;
|
|
1256
|
-
predictedTarget: Required<GazeTarget>;
|
|
1257
|
-
predictive: boolean;
|
|
1258
|
-
previousTarget: Required<GazeTarget>;
|
|
1259
|
-
eyeEnabled: boolean;
|
|
1260
|
-
headEnabled: boolean;
|
|
1261
|
-
headFollowEyes: boolean;
|
|
1262
|
-
eyeIntensity: number;
|
|
1263
|
-
headIntensity: number;
|
|
1264
|
-
eyeDurationMs: number;
|
|
1265
|
-
headDurationMs: number;
|
|
1266
|
-
createdAt: number;
|
|
1267
|
-
queuedAt?: number;
|
|
1268
|
-
publishedAt?: number;
|
|
1269
|
-
}
|
|
1270
|
-
|
|
1271
|
-
export interface GazeResetRequest {
|
|
1272
|
-
type: 'eyeHeadTracking.requestReset';
|
|
1273
|
-
agency: 'gaze';
|
|
1274
|
-
targetAgency: 'eyeHeadTracking';
|
|
1275
|
-
requestId: string;
|
|
1276
|
-
durationMs: number;
|
|
1277
|
-
eyes: boolean;
|
|
1278
|
-
head: boolean;
|
|
1279
|
-
requestedAt: number;
|
|
1280
|
-
}
|
|
1281
|
-
|
|
1282
|
-
export interface GazeCancelRequest {
|
|
1283
|
-
type: 'eyeHeadTracking.requestCancel';
|
|
1284
|
-
agency: 'gaze';
|
|
1285
|
-
targetAgency: 'eyeHeadTracking';
|
|
1286
|
-
requestId: string;
|
|
1287
|
-
reason: string;
|
|
1288
|
-
requestedAt: number;
|
|
1289
|
-
}
|
|
1290
|
-
|
|
1291
|
-
export interface EyeHeadTrackingConfig {
|
|
1292
|
-
gazeMode?: 'engine' | 'legacy' | 'experimental';
|
|
1293
|
-
enabled?: boolean;
|
|
1294
|
-
eyeTrackingEnabled?: boolean;
|
|
1295
|
-
eyeSaccadeSpeed?: number;
|
|
1296
|
-
eyeSmoothPursuit?: boolean;
|
|
1297
|
-
eyeBlinkRate?: number;
|
|
1298
|
-
headTrackingEnabled?: boolean;
|
|
1299
|
-
headFollowEyes?: boolean;
|
|
1300
|
-
headFollowDelay?: number;
|
|
1301
|
-
headSpeed?: number;
|
|
1302
|
-
lookAtSpeaker?: boolean;
|
|
1303
|
-
idleVariation?: boolean;
|
|
1304
|
-
idleVariationInterval?: number;
|
|
1305
|
-
/** Tracking contribution in [0, 1]; older values above 1 normalize to 1. With geometry-backed focus, live changes move toward the latest value without angular reversal braking. */
|
|
1306
|
-
eyeIntensity?: number;
|
|
1307
|
-
eyeBlendWeight?: number;
|
|
1308
|
-
/** Tracking contribution in [0, 1], composed over authored head motion. With geometry-backed focus, live changes move toward the latest value without angular reversal braking. */
|
|
1309
|
-
headIntensity?: number;
|
|
1310
|
-
trackingSpeed?: number;
|
|
1311
|
-
/** Angular braking interval; geometry-backed strength changes bypass it. */
|
|
1312
|
-
courseChangeDurationMs?: number;
|
|
1313
|
-
headBlendWeight?: number;
|
|
1314
|
-
headRoll?: number;
|
|
1315
|
-
eyePriority?: number;
|
|
1316
|
-
headPriority?: number;
|
|
1317
|
-
snippetPriority?: number;
|
|
1318
|
-
transitionDurationMs?: number;
|
|
1319
|
-
agencyTransitionDuration?: number;
|
|
1320
|
-
returnToCenterDurationMs?: number;
|
|
1321
|
-
returnToNeutralEnabled?: boolean;
|
|
1322
|
-
returnToNeutralDelay?: number;
|
|
1323
|
-
returnToNeutralDuration?: number;
|
|
1324
|
-
coalesceMs?: number;
|
|
1325
|
-
replaceExisting?: boolean;
|
|
1326
|
-
webcamTrackingEnabled?: boolean;
|
|
1327
|
-
webcamLookAtUser?: boolean;
|
|
1328
|
-
webcamActivationInterval?: number;
|
|
1329
|
-
mouthSyncEnabled?: boolean;
|
|
1330
|
-
engine?: Embody | EmbodyRuntime | unknown;
|
|
1331
|
-
cameraController?: unknown;
|
|
1332
|
-
animationAgency?: AnimationService | unknown;
|
|
1333
|
-
useAnimationAgency?: boolean;
|
|
1334
|
-
}
|
|
1335
|
-
|
|
1336
|
-
export interface EyeHeadTrackingState {
|
|
1337
|
-
agency: 'eyeHeadTracking';
|
|
1338
|
-
status: string;
|
|
1339
|
-
mode: string;
|
|
1340
|
-
currentTarget: Required<GazeTarget>;
|
|
1341
|
-
pendingRequest: EyeHeadGazeRequest | null;
|
|
1342
|
-
lastRequest: EyeHeadGazeRequest | null;
|
|
1343
|
-
lastSnippet: PolymerAnimationSnippet | null;
|
|
1344
|
-
activeSnippetNames: string[];
|
|
1345
|
-
lastIgnored: null | Record<string, unknown>;
|
|
1346
|
-
lastPlan: null | Record<string, unknown>;
|
|
1347
|
-
scheduledCount: number;
|
|
1348
|
-
removedCount: number;
|
|
1349
|
-
resetCount: number;
|
|
1350
|
-
cancelCount: number;
|
|
1351
|
-
ignoredCount: number;
|
|
1352
|
-
config: Required<EyeHeadTrackingConfig>;
|
|
1353
|
-
}
|
|
1354
|
-
|
|
1355
|
-
export interface EyeHeadGazeRequest {
|
|
1356
|
-
type: 'eyeHeadTracking.requestGaze';
|
|
1357
|
-
agency: 'eyeHeadTracking' | 'gaze';
|
|
1358
|
-
sourceAgency?: string;
|
|
1359
|
-
requestId: string;
|
|
1360
|
-
target: Required<GazeTarget>;
|
|
1361
|
-
eyeTarget?: Required<GazeTarget>;
|
|
1362
|
-
headTarget?: Required<GazeTarget>;
|
|
1363
|
-
gazeSolution?: ScreenSpaceGazeSolution;
|
|
1364
|
-
gazeFocus?: GazeFocusRequest;
|
|
1365
|
-
rawTarget?: Required<GazeTarget>;
|
|
1366
|
-
mode?: string;
|
|
1367
|
-
eyeEnabled?: boolean;
|
|
1368
|
-
headEnabled?: boolean;
|
|
1369
|
-
headFollowEyes?: boolean;
|
|
1370
|
-
headFollowDelay?: number;
|
|
1371
|
-
/** Tracking contribution in [0, 1]; older values above 1 normalize to 1. Live changes use scheduled motion. */
|
|
1372
|
-
eyeIntensity?: number;
|
|
1373
|
-
/** Tracking contribution in [0, 1], composed over authored head motion. Live changes use scheduled motion. */
|
|
1374
|
-
headIntensity?: number;
|
|
1375
|
-
headRoll?: number;
|
|
1376
|
-
eyeDurationMs?: number;
|
|
1377
|
-
headDurationMs?: number;
|
|
1378
|
-
createdAt?: number;
|
|
1379
|
-
}
|
|
1380
|
-
|
|
1381
|
-
export type EyeHeadTrackingDispatch =
|
|
1382
|
-
| { type: 'configure'; config: EyeHeadTrackingConfig }
|
|
1383
|
-
| { type: 'enable' }
|
|
1384
|
-
| { type: 'disable' }
|
|
1385
|
-
| { type: 'setTarget' | 'set-target' | 'requestGaze'; target: GazeTarget }
|
|
1386
|
-
| EyeHeadGazeRequest
|
|
1387
|
-
| { type: 'reset' | 'eyeHeadTracking.requestReset'; durationMs?: number; eyes?: boolean; head?: boolean; reason?: string }
|
|
1388
|
-
| { type: 'cancel' | 'eyeHeadTracking.requestCancel'; reason?: string };
|
|
1389
|
-
|
|
1390
961
|
export interface BlinkTriggerOptions {
|
|
1391
962
|
intensity?: number;
|
|
1392
963
|
duration?: number;
|
|
@@ -1543,12 +1114,10 @@ export interface PolymerAnimationHandle {
|
|
|
1543
1114
|
seek?: (offsetSec: number) => unknown;
|
|
1544
1115
|
updateParams?: (params: Record<string, unknown>) => unknown;
|
|
1545
1116
|
setParams?: (params: Record<string, unknown>) => unknown;
|
|
1546
|
-
finished?: Promise<
|
|
1117
|
+
finished?: Promise<AnimationPlaybackEvent>;
|
|
1547
1118
|
}
|
|
1548
1119
|
|
|
1549
1120
|
export interface PolymerAnimationRuntime {
|
|
1550
|
-
/** Optional capability. Unsupported engines never produce confirmed Gaze alignment. */
|
|
1551
|
-
getGazeObservation?: () => GazeObservation | null;
|
|
1552
1121
|
buildClip?: (
|
|
1553
1122
|
name: string,
|
|
1554
1123
|
curves: Record<string, PolymerSnippetKeyframe[]>,
|
|
@@ -1900,10 +1469,6 @@ export interface ProsodicParameter extends AgencyParameter<keyof ProsodicEditabl
|
|
|
1900
1469
|
export type GestureEditableConfiguration = Pick<GestureConfig,
|
|
1901
1470
|
'intensity' | 'priority' | 'defaultDurationMs' | 'cooldownMs' | 'rampRatio'
|
|
1902
1471
|
| 'holdRatio' | 'returnToBase' | 'replaceActive' | 'maxActive'>;
|
|
1903
|
-
export type GazeEditableConfiguration = Pick<GazeConfig,
|
|
1904
|
-
'headFollowDelay' | 'predictionEnabled' | 'trackingSpeed' | 'coalesceMs'
|
|
1905
|
-
| 'attentionInfluenceA' | 'attentionInfluenceB' | 'attentionDwellMs'
|
|
1906
|
-
| 'attentionSwitchMargin' | 'attentionToleranceDeg' | 'attentionTimeoutMs'>;
|
|
1907
1472
|
export type CameraContextEditableConfiguration = Pick<CameraContextConfig,
|
|
1908
1473
|
'coalesceMs' | 'staleAfterMs' | 'yawWeight' | 'pitchWeight'>;
|
|
1909
1474
|
|
|
@@ -1913,12 +1478,6 @@ export interface GestureDefinition {
|
|
|
1913
1478
|
definitionVersion: 1;
|
|
1914
1479
|
parameters: AgencyParameter<keyof GestureEditableConfiguration>[];
|
|
1915
1480
|
}
|
|
1916
|
-
export interface GazeDefinition {
|
|
1917
|
-
id: 'gaze';
|
|
1918
|
-
family: 'cognition';
|
|
1919
|
-
definitionVersion: 2;
|
|
1920
|
-
parameters: AgencyParameter<keyof GazeEditableConfiguration>[];
|
|
1921
|
-
}
|
|
1922
1481
|
export interface CameraContextDefinition {
|
|
1923
1482
|
id: 'cameraContext';
|
|
1924
1483
|
family: 'perception';
|
|
@@ -1927,18 +1486,6 @@ export interface CameraContextDefinition {
|
|
|
1927
1486
|
}
|
|
1928
1487
|
|
|
1929
1488
|
/** Safe decision projection, not an execution receipt or replay record. */
|
|
1930
|
-
export interface GazeDecision {
|
|
1931
|
-
trigger: string;
|
|
1932
|
-
configurationRevision: number;
|
|
1933
|
-
source: string;
|
|
1934
|
-
mode: string;
|
|
1935
|
-
predictive: boolean;
|
|
1936
|
-
outcome: 'requested' | 'reset-requested' | 'cancel-requested' | 'ignored' | 'rejected' | 'state-updated';
|
|
1937
|
-
reason: string | null;
|
|
1938
|
-
confirmation: 'unobserved';
|
|
1939
|
-
at: number;
|
|
1940
|
-
}
|
|
1941
|
-
|
|
1942
1489
|
export interface GestureDecision {
|
|
1943
1490
|
sequence: number;
|
|
1944
1491
|
trigger: string;
|
|
@@ -2054,7 +1601,6 @@ export interface ConversationConfig {
|
|
|
2054
1601
|
/** Minimum playback time for transcript fallback; sustained audio is accepted immediately. */
|
|
2055
1602
|
minSpeakTime?: number;
|
|
2056
1603
|
allowTranscriptInterruptionFallback?: boolean;
|
|
2057
|
-
eyeHeadTracking?: EyeHeadTrackingService | unknown;
|
|
2058
1604
|
prosodicService?: unknown;
|
|
2059
1605
|
}
|
|
2060
1606
|
|
|
@@ -2293,7 +1839,7 @@ export interface CameraContextState {
|
|
|
2293
1839
|
verticalFovDegrees: number;
|
|
2294
1840
|
aspect: number;
|
|
2295
1841
|
gazeGeometryComplete: boolean;
|
|
2296
|
-
relativeOffset: Required<
|
|
1842
|
+
relativeOffset: Required<PerceptionTarget>;
|
|
2297
1843
|
lastUpdatedAt: number | null;
|
|
2298
1844
|
lastPublishedAt: number | null;
|
|
2299
1845
|
lastFact: Record<string, unknown> | null;
|
|
@@ -2404,7 +1950,7 @@ export interface UserPerceptionState {
|
|
|
2404
1950
|
modelStatus: string;
|
|
2405
1951
|
faceDetected: boolean;
|
|
2406
1952
|
selectedFaceConfidence: number | null;
|
|
2407
|
-
target: Required<
|
|
1953
|
+
target: Required<PerceptionTarget>;
|
|
2408
1954
|
/** Fixed display-right/up normalized eye-midpoint offset for this activation; never persisted across sessions. */
|
|
2409
1955
|
eyeContactReference: { x: number; y: number } | null;
|
|
2410
1956
|
lastObservationAt: number | null;
|
|
@@ -2697,12 +2243,6 @@ export interface PolymerInputStream<TCommand> extends PolymerStream<{ type: 'com
|
|
|
2697
2243
|
|
|
2698
2244
|
|
|
2699
2245
|
export type PolymerDomainEvent =
|
|
2700
|
-
| { type: 'gaze.attention'; agency: 'gaze'; attention: GazeAttentionState }
|
|
2701
|
-
| { type: 'animation.requestObserveGaze'; agency: 'eyeHeadTracking'; requestId: string; sessionId: string; worldTarget: PolymerVector3 | null; timeoutMs: number; toleranceDeg: number }
|
|
2702
|
-
| { type: 'animation.requestCancelGazeObservation'; agency: 'eyeHeadTracking'; requestId: string | null }
|
|
2703
|
-
| { type: 'animation.gazeFeedback'; agency: 'animation'; requestId: string; status: 'observed' | 'unavailable'; reason: string; angularErrorDeg?: number; sampleSequence?: number; observedAt?: number; bindingGeneration?: number }
|
|
2704
|
-
| { type: 'gaze.configurationChanged'; agency: 'gaze'; configuration: AgencyConfigurationState; configure: GazeEditableConfiguration }
|
|
2705
|
-
| { type: 'gaze.decision'; agency: 'gaze'; decision: GazeDecision }
|
|
2706
2246
|
| { type: 'gestureDecision'; agency: 'gesture'; decision: GestureDecision }
|
|
2707
2247
|
| { type: 'gestureCommandRejected'; agency: 'gesture'; commandType: string; reason: 'revision-exhausted' }
|
|
2708
2248
|
| {
|
|
@@ -2723,7 +2263,7 @@ export type PolymerDomainEvent =
|
|
|
2723
2263
|
}
|
|
2724
2264
|
| {
|
|
2725
2265
|
type: 'animation.requestScheduleSnippet';
|
|
2726
|
-
agency: 'blink' | 'lipSync' | 'gesture' | 'prosodic'
|
|
2266
|
+
agency: 'blink' | 'lipSync' | 'gesture' | 'prosodic';
|
|
2727
2267
|
requestId: string;
|
|
2728
2268
|
snippet: PolymerAnimationSnippet;
|
|
2729
2269
|
options: { autoPlay?: boolean; [key: string]: unknown };
|
|
@@ -2733,7 +2273,7 @@ export type PolymerDomainEvent =
|
|
|
2733
2273
|
}
|
|
2734
2274
|
| {
|
|
2735
2275
|
type: 'animation.requestRemoveSnippet';
|
|
2736
|
-
agency: 'lipSync' | 'gesture' | 'prosodic'
|
|
2276
|
+
agency: 'lipSync' | 'gesture' | 'prosodic';
|
|
2737
2277
|
requestId: string;
|
|
2738
2278
|
name: string;
|
|
2739
2279
|
reason: string;
|
|
@@ -2797,31 +2337,6 @@ export type PolymerDomainEvent =
|
|
|
2797
2337
|
nextDelayMs: number | null;
|
|
2798
2338
|
}
|
|
2799
2339
|
| { type: 'signal'; agency: 'blink'; signal: 'blink-fast'; plan: Record<string, unknown> }
|
|
2800
|
-
| { type: 'gaze.status'; agency: 'gaze'; status: string; mode: string; active: boolean; enabled: boolean; reason?: string; at: number }
|
|
2801
|
-
| { type: 'gaze.targetReceived'; agency: 'gaze'; requestId: string; rawTarget: Required<GazeTarget>; source?: string; label?: string; at: number }
|
|
2802
|
-
| {
|
|
2803
|
-
type: 'gaze.targetPlanned';
|
|
2804
|
-
agency: 'gaze';
|
|
2805
|
-
requestId: string;
|
|
2806
|
-
rawTarget: Required<GazeTarget>;
|
|
2807
|
-
target: Required<GazeTarget>;
|
|
2808
|
-
delta: number;
|
|
2809
|
-
eyeDurationMs: number;
|
|
2810
|
-
headDurationMs: number;
|
|
2811
|
-
at: number;
|
|
2812
|
-
}
|
|
2813
|
-
| {
|
|
2814
|
-
type: 'gaze.targetIgnored';
|
|
2815
|
-
agency: 'gaze';
|
|
2816
|
-
requestId: string;
|
|
2817
|
-
rawTarget: Required<GazeTarget>;
|
|
2818
|
-
target: Required<GazeTarget>;
|
|
2819
|
-
reason: 'disabled' | 'min-delta' | string;
|
|
2820
|
-
ignoredAt: number;
|
|
2821
|
-
}
|
|
2822
|
-
| GazeLookRequest
|
|
2823
|
-
| GazeResetRequest
|
|
2824
|
-
| GazeCancelRequest
|
|
2825
2340
|
| { type: 'camera.status'; agency: 'cameraContext'; status: string; stale: boolean; reason?: string; at: number; configurationRevision: number }
|
|
2826
2341
|
| {
|
|
2827
2342
|
type: 'camera.fact';
|
|
@@ -2840,7 +2355,7 @@ export type PolymerDomainEvent =
|
|
|
2840
2355
|
verticalFovDegrees: number;
|
|
2841
2356
|
aspect: number;
|
|
2842
2357
|
gazeGeometryComplete: boolean;
|
|
2843
|
-
relativeOffset: Required<
|
|
2358
|
+
relativeOffset: Required<PerceptionTarget>;
|
|
2844
2359
|
stale: false;
|
|
2845
2360
|
}
|
|
2846
2361
|
| {
|
|
@@ -2851,7 +2366,7 @@ export type PolymerDomainEvent =
|
|
|
2851
2366
|
invalidatedAt: number;
|
|
2852
2367
|
lastPublishedAt?: number;
|
|
2853
2368
|
lastObservedAt?: number;
|
|
2854
|
-
lastRelativeOffset?: Required<
|
|
2369
|
+
lastRelativeOffset?: Required<PerceptionTarget>;
|
|
2855
2370
|
}
|
|
2856
2371
|
| {
|
|
2857
2372
|
type: 'userPerception.status';
|
|
@@ -2870,23 +2385,21 @@ export type PolymerDomainEvent =
|
|
|
2870
2385
|
| {
|
|
2871
2386
|
type: 'attention.fact';
|
|
2872
2387
|
agency: 'userPerception';
|
|
2873
|
-
targetAgency: 'gaze';
|
|
2874
2388
|
source: 'userPerception';
|
|
2875
2389
|
label: string;
|
|
2876
2390
|
observedAt: number;
|
|
2877
2391
|
confidence?: number | null;
|
|
2878
2392
|
priority: number;
|
|
2879
|
-
target: Required<
|
|
2880
|
-
screenTarget: Required<
|
|
2393
|
+
target: Required<PerceptionTarget>;
|
|
2394
|
+
screenTarget: Required<PerceptionTarget>;
|
|
2881
2395
|
targetSpace: 'screen.ndc';
|
|
2882
|
-
viewerTarget: Required<
|
|
2396
|
+
viewerTarget: Required<PerceptionTarget>;
|
|
2883
2397
|
viewerTargetSpace: 'webcam.viewer';
|
|
2884
2398
|
viewerVerticalFovDegrees: number;
|
|
2885
2399
|
viewerAspect: number;
|
|
2886
2400
|
cameraMetadata?: UserPerceptionCameraMetadata | null;
|
|
2887
|
-
rawViewerTarget: Required<
|
|
2888
|
-
|
|
2889
|
-
rawTarget: Required<GazeTarget>;
|
|
2401
|
+
rawViewerTarget: Required<PerceptionTarget>;
|
|
2402
|
+
rawTarget: Required<PerceptionTarget>;
|
|
2890
2403
|
face: Pick<UserPerceptionFaceObservation, 'id' | 'bounds' | 'eyeMidpoint' | 'interocularDistance' | 'headPose' | 'irisDirection'>;
|
|
2891
2404
|
}
|
|
2892
2405
|
| {
|
|
@@ -2894,38 +2407,14 @@ export type PolymerDomainEvent =
|
|
|
2894
2407
|
agency: 'userPerception';
|
|
2895
2408
|
observedAt: number;
|
|
2896
2409
|
confidence?: number | null;
|
|
2897
|
-
target: Required<
|
|
2898
|
-
viewerTarget: Required<
|
|
2410
|
+
target: Required<PerceptionTarget>;
|
|
2411
|
+
viewerTarget: Required<PerceptionTarget>;
|
|
2899
2412
|
cameraMetadata?: UserPerceptionCameraMetadata | null;
|
|
2900
2413
|
face: Record<string, unknown>;
|
|
2901
2414
|
at: number;
|
|
2902
2415
|
}
|
|
2903
2416
|
| { type: 'userPerception.faceLost'; agency: 'userPerception'; reason: string; lastSeenAt?: number; at: number }
|
|
2904
2417
|
| { type: 'userPerception.ignored'; agency: 'userPerception'; reason: string; commandType?: string; at: number }
|
|
2905
|
-
| {
|
|
2906
|
-
type: 'eyeHeadTracking.status';
|
|
2907
|
-
agency: 'eyeHeadTracking';
|
|
2908
|
-
status: string;
|
|
2909
|
-
enabled: boolean;
|
|
2910
|
-
activeSnippetNames: string[];
|
|
2911
|
-
reason?: string;
|
|
2912
|
-
at: number;
|
|
2913
|
-
}
|
|
2914
|
-
| {
|
|
2915
|
-
type: 'eyeHeadTracking.requestIgnored';
|
|
2916
|
-
agency: 'eyeHeadTracking';
|
|
2917
|
-
requestId: string;
|
|
2918
|
-
reason: string;
|
|
2919
|
-
target?: Required<GazeTarget>;
|
|
2920
|
-
ignoredAt: number;
|
|
2921
|
-
}
|
|
2922
|
-
| {
|
|
2923
|
-
type: 'eyeHeadTracking.cancelled';
|
|
2924
|
-
agency: 'eyeHeadTracking';
|
|
2925
|
-
requestId: string;
|
|
2926
|
-
reason: string;
|
|
2927
|
-
at: number;
|
|
2928
|
-
}
|
|
2929
2418
|
| { type: 'lipSyncPlanCreated'; agency: 'lipSync'; plan: Record<string, unknown> }
|
|
2930
2419
|
| { type: 'lipSyncConfigChanged'; agency: 'lipSync'; state: LipSyncState }
|
|
2931
2420
|
| {
|
|
@@ -3040,8 +2529,6 @@ export type PolymerDomainEvent =
|
|
|
3040
2529
|
| 'character'
|
|
3041
2530
|
| 'blink'
|
|
3042
2531
|
| 'animation'
|
|
3043
|
-
| 'gaze'
|
|
3044
|
-
| 'eyeHeadTracking'
|
|
3045
2532
|
| 'lipSync'
|
|
3046
2533
|
| 'tts'
|
|
3047
2534
|
| 'gesture'
|
|
@@ -3101,55 +2588,6 @@ export interface AnimationAgency {
|
|
|
3101
2588
|
dispose(): void;
|
|
3102
2589
|
}
|
|
3103
2590
|
|
|
3104
|
-
export interface GazeAgency {
|
|
3105
|
-
/** Applies between decisions; pending requests retain their accepted policy. */
|
|
3106
|
-
applyConfiguration(update: { revision: number; configure: GazeEditableConfiguration }): AgencyConfigurationReceipt;
|
|
3107
|
-
input: PolymerInputStream<GazeDispatch>;
|
|
3108
|
-
events: PolymerStream<PolymerDomainEvent>;
|
|
3109
|
-
dispatch(command: GazeDispatch): void;
|
|
3110
|
-
snapshot(): GazeState;
|
|
3111
|
-
subscribeInput(listener: (event: { type: 'command'; agency: 'gaze'; command: GazeDispatch }) => void): () => void;
|
|
3112
|
-
subscribeEvents(listener: (event: PolymerDomainEvent) => void): () => void;
|
|
3113
|
-
/** Compatibility alias for events. Prefer subscribeEvents. */
|
|
3114
|
-
subscribe(listener: (event: PolymerStatusEvent) => void): () => void;
|
|
3115
|
-
/** Compatibility alias for events. Prefer subscribeEvents. */
|
|
3116
|
-
subscribeStatus(listener: (event: PolymerStatusEvent) => void): () => void;
|
|
3117
|
-
setTarget(target: GazeTarget, options?: GazeApplyOptions): void;
|
|
3118
|
-
focusTarget(target: GazeTarget): void;
|
|
3119
|
-
configure(config: GazeConfig): void;
|
|
3120
|
-
setMode(mode: string): void;
|
|
3121
|
-
setActive(active: boolean): void;
|
|
3122
|
-
enable(): void;
|
|
3123
|
-
disable(): void;
|
|
3124
|
-
reset(durationMs?: number): void;
|
|
3125
|
-
cancel(reason?: string): void;
|
|
3126
|
-
flush(): void;
|
|
3127
|
-
queue(): Array<Record<string, unknown>>;
|
|
3128
|
-
dispose(): void;
|
|
3129
|
-
}
|
|
3130
|
-
|
|
3131
|
-
export interface EyeHeadTrackingAgency {
|
|
3132
|
-
input: PolymerInputStream<EyeHeadTrackingDispatch>;
|
|
3133
|
-
events: PolymerStream<PolymerDomainEvent>;
|
|
3134
|
-
dispatch(command: EyeHeadTrackingDispatch): void;
|
|
3135
|
-
snapshot(): EyeHeadTrackingState;
|
|
3136
|
-
subscribeInput(listener: (event: { type: 'command'; agency: 'eyeHeadTracking'; command: EyeHeadTrackingDispatch }) => void): () => void;
|
|
3137
|
-
subscribeEvents(listener: (event: PolymerDomainEvent) => void): () => void;
|
|
3138
|
-
/** Compatibility alias for events. Prefer subscribeEvents. */
|
|
3139
|
-
subscribe(listener: (event: PolymerStatusEvent) => void): () => void;
|
|
3140
|
-
/** Compatibility alias for events. Prefer subscribeEvents. */
|
|
3141
|
-
subscribeStatus(listener: (event: PolymerStatusEvent) => void): () => void;
|
|
3142
|
-
setTarget(target: GazeTarget): void;
|
|
3143
|
-
configure(config: EyeHeadTrackingConfig): void;
|
|
3144
|
-
enable(): void;
|
|
3145
|
-
disable(): void;
|
|
3146
|
-
reset(durationMs?: number): void;
|
|
3147
|
-
cancel(reason?: string): void;
|
|
3148
|
-
flush(): void;
|
|
3149
|
-
queue(): Array<Record<string, unknown>>;
|
|
3150
|
-
dispose(): void;
|
|
3151
|
-
}
|
|
3152
|
-
|
|
3153
2591
|
export interface LipSyncAgency {
|
|
3154
2592
|
input: PolymerInputStream<LipSyncDispatch>;
|
|
3155
2593
|
events: PolymerStream<PolymerDomainEvent>;
|
|
@@ -3328,8 +2766,6 @@ export interface UserPerceptionAgency {
|
|
|
3328
2766
|
|
|
3329
2767
|
export interface CharacterAgencySnapshot {
|
|
3330
2768
|
blink: BlinkState;
|
|
3331
|
-
gaze: GazeState;
|
|
3332
|
-
eyeHeadTracking: EyeHeadTrackingState;
|
|
3333
2769
|
gesture: GestureState;
|
|
3334
2770
|
cameraContext: CameraContextState;
|
|
3335
2771
|
userPerception: UserPerceptionState;
|
|
@@ -3344,8 +2780,6 @@ export interface CharacterAgencySnapshot {
|
|
|
3344
2780
|
|
|
3345
2781
|
export type CharacterAgencyDispatch =
|
|
3346
2782
|
| { agency: 'blink'; command: BlinkDispatch }
|
|
3347
|
-
| { agency: 'gaze'; command: GazeDispatch }
|
|
3348
|
-
| { agency: 'eyeHeadTracking'; command: EyeHeadTrackingDispatch }
|
|
3349
2783
|
| { agency: 'gesture'; command: GestureDispatch }
|
|
3350
2784
|
| { agency: 'cameraContext'; command: CameraContextDispatch }
|
|
3351
2785
|
| { agency: 'userPerception'; command: UserPerceptionDispatch }
|
|
@@ -3369,8 +2803,6 @@ export interface CharacterAgencies {
|
|
|
3369
2803
|
updateSocietyRouting(society: AgencySociety): AgencySociety;
|
|
3370
2804
|
agency(name: 'animation'): AnimationAgency;
|
|
3371
2805
|
agency(name: 'blink'): BlinkAgency | null;
|
|
3372
|
-
agency(name: 'gaze'): GazeAgency | null;
|
|
3373
|
-
agency(name: 'eyeHeadTracking'): EyeHeadTrackingAgency | null;
|
|
3374
2806
|
agency(name: 'gesture'): GestureAgency | null;
|
|
3375
2807
|
agency(name: 'cameraContext'): CameraContextAgency | null;
|
|
3376
2808
|
agency(name: 'userPerception'): UserPerceptionAgency | null;
|
|
@@ -3398,8 +2830,7 @@ export type MixerLoopMode = 'repeat' | 'once' | 'pingpong';
|
|
|
3398
2830
|
export type SnippetCategoryKey =
|
|
3399
2831
|
| 'emotionAnimationsList'
|
|
3400
2832
|
| 'speakingAnimationsList'
|
|
3401
|
-
| 'visemeAnimationsList'
|
|
3402
|
-
| 'eyeHeadTrackingAnimationsList';
|
|
2833
|
+
| 'visemeAnimationsList';
|
|
3403
2834
|
|
|
3404
2835
|
export interface AIExpressionInterpretationMetadata {
|
|
3405
2836
|
emotion?: string;
|
|
@@ -3438,7 +2869,7 @@ export interface Snippet {
|
|
|
3438
2869
|
maxTime?: number;
|
|
3439
2870
|
cleanupMaxTime?: number;
|
|
3440
2871
|
duration?: number;
|
|
3441
|
-
snippetCategory?: 'auSnippet' | 'visemeSnippet' | '
|
|
2872
|
+
snippetCategory?: 'auSnippet' | 'visemeSnippet' | 'combined' | 'default' | string;
|
|
3442
2873
|
snippetPriority?: number;
|
|
3443
2874
|
snippetPlaybackRate?: number;
|
|
3444
2875
|
snippetIntensityScale?: number;
|
|
@@ -3467,7 +2898,7 @@ export interface NormalizedSnippet extends Snippet {
|
|
|
3467
2898
|
lastLoopTime: number;
|
|
3468
2899
|
snippetPlaybackRate: number;
|
|
3469
2900
|
snippetIntensityScale: number;
|
|
3470
|
-
snippetCategory: 'auSnippet' | 'visemeSnippet' | '
|
|
2901
|
+
snippetCategory: 'auSnippet' | 'visemeSnippet' | 'combined' | 'default' | string;
|
|
3471
2902
|
snippetPriority: number;
|
|
3472
2903
|
snippetBlendMode: 'replace' | 'additive';
|
|
3473
2904
|
snippetJawScale: number;
|
|
@@ -3683,65 +3114,6 @@ export interface AnimationService {
|
|
|
3683
3114
|
getPlayingBakedAnimations(): BakedAnimationUIState[];
|
|
3684
3115
|
}
|
|
3685
3116
|
|
|
3686
|
-
export interface EyeHeadTrackingRuntimeState {
|
|
3687
|
-
eyeStatus: 'idle' | 'tracking' | 'lagging';
|
|
3688
|
-
headStatus: 'idle' | 'tracking' | 'lagging';
|
|
3689
|
-
currentGaze: GazeTarget;
|
|
3690
|
-
targetGaze: GazeTarget;
|
|
3691
|
-
eyeIntensity: number;
|
|
3692
|
-
lastBlinkTime: number | null;
|
|
3693
|
-
headIntensity: number;
|
|
3694
|
-
headFollowTimer: number | null;
|
|
3695
|
-
isSpeaking: boolean;
|
|
3696
|
-
isListening: boolean;
|
|
3697
|
-
returnToNeutralTimer: number | null;
|
|
3698
|
-
lastGazeUpdateTime: number;
|
|
3699
|
-
mode?: string;
|
|
3700
|
-
}
|
|
3701
|
-
|
|
3702
|
-
export interface EyeHeadTrackingCallbacks {
|
|
3703
|
-
onEyeStart?: () => void;
|
|
3704
|
-
onEyeStop?: () => void;
|
|
3705
|
-
onHeadStart?: () => void;
|
|
3706
|
-
onHeadStop?: () => void;
|
|
3707
|
-
onGazeChange?: (target: GazeTarget) => void;
|
|
3708
|
-
onBlink?: () => void;
|
|
3709
|
-
onError?: (error: Error) => void;
|
|
3710
|
-
}
|
|
3711
|
-
|
|
3712
|
-
export interface EyeHeadTrackingMachineContext {
|
|
3713
|
-
config: EyeHeadTrackingConfig;
|
|
3714
|
-
mode: 'manual' | 'mouse' | 'webcam' | string;
|
|
3715
|
-
target: GazeTarget;
|
|
3716
|
-
lastApplied: GazeTarget;
|
|
3717
|
-
status: {
|
|
3718
|
-
eye: 'idle' | 'tracking' | 'lagging';
|
|
3719
|
-
head: 'idle' | 'tracking' | 'lagging';
|
|
3720
|
-
};
|
|
3721
|
-
}
|
|
3722
|
-
|
|
3723
|
-
export interface EyeHeadTrackingService {
|
|
3724
|
-
start(): void;
|
|
3725
|
-
stop(): void;
|
|
3726
|
-
setGazeTarget(target: GazeTarget): void;
|
|
3727
|
-
resetToNeutral(durationMs?: number): void;
|
|
3728
|
-
blink(): void;
|
|
3729
|
-
setSpeaking(isSpeaking: boolean): void;
|
|
3730
|
-
setListening(isListening: boolean): void;
|
|
3731
|
-
setEyeBlendWeight(value: number): void;
|
|
3732
|
-
setHeadBlendWeight(value: number): void;
|
|
3733
|
-
updateConfig(config: Partial<EyeHeadTrackingConfig>): void;
|
|
3734
|
-
getState(): EyeHeadTrackingRuntimeState;
|
|
3735
|
-
getMachineContext(): EyeHeadTrackingMachineContext | null;
|
|
3736
|
-
getSnippets(): { eye: Map<string, unknown>; head: Map<string, unknown> };
|
|
3737
|
-
setMode(mode: 'manual' | 'mouse' | 'webcam' | string): void;
|
|
3738
|
-
getMode(): 'manual' | 'mouse' | 'webcam' | string;
|
|
3739
|
-
subscribeToWebcam(callback: (detected: boolean, landmarks?: Array<{ x: number; y: number }>) => void): () => void;
|
|
3740
|
-
getWebcamVideoElement(): HTMLVideoElement | null;
|
|
3741
|
-
isWebcamActive(): boolean;
|
|
3742
|
-
dispose(): void;
|
|
3743
|
-
}
|
|
3744
|
-
|
|
3745
3117
|
export interface BoundaryEvent {
|
|
3746
3118
|
word: string;
|
|
3747
3119
|
index: number;
|
|
@@ -3865,17 +3237,12 @@ export function createAnimationService(
|
|
|
3865
3237
|
engine: Embody | EmbodyRuntime,
|
|
3866
3238
|
options?: { agency?: AnimationAgency },
|
|
3867
3239
|
): AnimationService;
|
|
3868
|
-
export function createEyeHeadTrackingService(config?: EyeHeadTrackingConfig, callbacks?: EyeHeadTrackingCallbacks): EyeHeadTrackingService;
|
|
3869
3240
|
export function createTranscriptionService(config?: TranscriptionConfig, callbacks?: TranscriptionCallbacks): TranscriptionService;
|
|
3870
3241
|
export function createCharacterConversationService(agencies: CharacterAgencies, config?: ConversationConfig, callbacks?: ConversationCallbacks): ConversationService;
|
|
3871
3242
|
/** @deprecated Character hosts should use createCharacterConversationService. */
|
|
3872
3243
|
export function createConversationService(tts: { speak(text: string): Promise<unknown>; stop(): void }, transcription: TranscriptionService, config?: ConversationConfig, callbacks?: ConversationCallbacks): ConversationService;
|
|
3873
3244
|
export const DEFAULT_HAIR_PHYSICS_ENABLED: boolean;
|
|
3874
3245
|
export const DEFAULT_AGENCY_SOCIETY: AgencySociety;
|
|
3875
|
-
export const DEFAULT_EYE_HEAD_CONFIG: Required<Pick<EyeHeadTrackingConfig, 'gazeMode' | 'eyeTrackingEnabled' | 'headTrackingEnabled' | 'headFollowEyes' | 'eyeIntensity' | 'headIntensity' | 'returnToNeutralEnabled' | 'returnToNeutralDelay' | 'returnToNeutralDuration' | 'useAnimationAgency'>>;
|
|
3876
|
-
export const DEFAULT_ANIMATION_KEYS: Record<string, string>;
|
|
3877
|
-
export const EYE_AUS: Record<string, number>;
|
|
3878
|
-
export const HEAD_AUS: Record<string, number>;
|
|
3879
3246
|
export function getBundledSnippetNames(listKey: SnippetCategoryKey): string[];
|
|
3880
3247
|
export function getStoredSnippetNames(listKey: SnippetCategoryKey, storage?: Pick<Storage, 'getItem' | 'removeItem'>): string[];
|
|
3881
3248
|
export function getAvailableSnippetNames(listKey: SnippetCategoryKey, storage?: Pick<Storage, 'getItem' | 'removeItem'>): string[];
|
|
@@ -3928,14 +3295,11 @@ export interface AgencySociety {
|
|
|
3928
3295
|
|
|
3929
3296
|
export function createBlinkAgency(config?: BlinkAgencyConfig): BlinkAgency;
|
|
3930
3297
|
export function createAnimationAgency(config?: AnimationAgencyConfig): AnimationAgency;
|
|
3931
|
-
export function createGazeAgency(config?: GazeConfig, runtime?: EmbodyGazeRuntime): GazeAgency;
|
|
3932
|
-
export function createEyeHeadTrackingAgency(config?: EyeHeadTrackingConfig): EyeHeadTrackingAgency;
|
|
3933
3298
|
export function createLipSyncAgency(config?: LipSyncConfig, runtime?: LipSyncRuntime): LipSyncAgency;
|
|
3934
3299
|
export function createTTSAgency(config?: TTSConfig): TTSAgency;
|
|
3935
3300
|
export function createGestureAgency(config?: GestureOptions): GestureAgency;
|
|
3936
3301
|
export function getProsodicDefinition(): ProsodicDefinition;
|
|
3937
3302
|
export function getGestureDefinition(): GestureDefinition;
|
|
3938
|
-
export function getGazeDefinition(): GazeDefinition;
|
|
3939
3303
|
export function getCameraContextDefinition(): CameraContextDefinition;
|
|
3940
3304
|
export function createProsodicAgency(config?: ProsodicOptions): ProsodicAgency;
|
|
3941
3305
|
export function createConversationAgency(config?: ConversationAgencyConfig): ConversationAgency;
|
|
@@ -3944,9 +3308,6 @@ export function createCameraContextAgency(config?: CameraContextConfig): CameraC
|
|
|
3944
3308
|
export function createUserPerceptionAgency(config?: UserPerceptionConfig, runtime?: UserPerceptionRuntime): UserPerceptionAgency;
|
|
3945
3309
|
export function createCharacterAgencies(config?: {
|
|
3946
3310
|
blink?: BlinkAgencyConfig;
|
|
3947
|
-
gaze?: GazeConfig;
|
|
3948
|
-
gazeRuntime?: EmbodyGazeRuntime;
|
|
3949
|
-
eyeHeadTracking?: EyeHeadTrackingConfig;
|
|
3950
3311
|
gesture?: GestureOptions;
|
|
3951
3312
|
cameraContext?: CameraContextConfig;
|
|
3952
3313
|
userPerception?: UserPerceptionConfig;
|