sandai-react
Version:
React components and utilities for the Sandai 3D AI Characters.
52 lines • 2.22 kB
TypeScript
import { VRM, VRMHumanBoneName, VRMPose } from "@davidcks/r3f-vrm";
type PartialPosePositoins = Partial<Record<VRMHumanBoneName, {
position: [number, number, number];
}>>;
export declare class PoseConversionProfileManager {
private _leftArmPoseProfileManager;
private _bodyPoseProfileManager;
private _managerPrefixRecords;
private _basePosesPrefixRecords;
private _mode;
private _vrm;
private _poseConversionManager;
private _poseConverterPrefixRecords;
constructor(vrm: VRM, mode?: "default" | "normalized", opt?: {
preset?: "";
});
private _getGlobalBonePositions;
private _getNormalizedRelevantBonePositionsByBodyPart;
autoCalibrate(onPose: (pose: VRMPose) => Promise<void> | void): Promise<void>;
private _spreadPosePositions;
private _getRelevantPosePositionsByBodyPart;
private _getRelevantBlendShapesByPrefix;
/**
* Predict emotions from current blendshape values with better scoring
*/
predictPose(posePositions: PartialPosePositoins, slerp?: boolean): VRMPose;
predictBodyPose(blendshapes: Map<string, number>, slerp?: boolean): {
score: [name: string, value: number][];
slerpedScore: number;
pose: VRMPose;
};
predictLeftArmPose(blendshapes: Map<string, number>, slerp?: boolean): {
score: [name: string, value: number][];
slerpedScore: number;
pose: VRMPose;
};
/**
*
* @param data - Array of pose preset keys and scores. The scores should go
* from [0] - worst score, to [data.length - 1] - best score
* @param basePoses - Pose presets corresponding with the keys of data
*/
private _slerpPoseData;
private _resolvePoseKey;
addSample(key: ReturnType<typeof this.getProfileKeys>[number], posePositions: PartialPosePositoins): void;
trainProfiles(): Promise<void>;
hasProfile(key: ReturnType<typeof this.getProfileKeys>[number]): boolean;
getProfileKeys(): (`la__${string}` | `la__${number}` | `bo__${string}` | `bo__${number}`)[];
getVRMPoseForProfileKey(key: ReturnType<typeof this.getProfileKeys>[number]): VRMPose;
}
export {};
//# sourceMappingURL=PoseConversionProfileManager.d.ts.map