UNPKG

kalidokit

Version:

Blendshape and kinematics calculator for Mediapipe/Tensorflow.js Face, Eyes, Pose, and Finger tracking models.

125 lines (124 loc) 3.31 kB
import Vector from "./utils/vector"; import Euler from "./utils/euler"; import { RIGHT, LEFT } from "./constants"; export interface ISolveOptions { /** * Runtime for the solver. * @default "mediapipe" * @type {"tfjs" | "mediapipe"} */ runtime: "tfjs" | "mediapipe"; /** * HTML Video element or selector for the video element. * @type {HTMLElement | string} */ video: null | HTMLVideoElement | string; /** * Set Manual Size * @type {{ width: number, height: number }} * @default null */ imageSize: null | { width: number; height: number; }; } export interface IFaceSolveOptions extends ISolveOptions { /** * Smooth Blink Toggle * @type {boolean} * @default false */ smoothBlink: boolean; /** * Blink settings */ blinkSettings: Array<number>; } export interface IPoseSolveOptions extends ISolveOptions { /** * Toggle Calculation of legs * @type {boolean} * @default true */ enableLegs: boolean; } /** * The left or the right side */ export declare type Side = typeof RIGHT | typeof LEFT; export declare type XYZ = Record<"x" | "y" | "z", number>; export declare type LR<T = Vector> = Record<"l" | "r", T>; export declare type RotationOrder = "XYZ" | "YZX" | "ZXY" | "XZY" | "YXZ" | "ZYX"; export declare type EulerRotation = XYZ & { rotationOrder?: RotationOrder; }; export declare type AxisMap = Record<"x" | "y" | "z", "x" | "y" | "z">; export interface IHips { position: XYZ; rotation?: Vector; worldPosition?: XYZ; } export declare type TPose = { RightUpperArm: Euler; RightLowerArm: Euler; LeftUpperArm: Euler; LeftLowerArm: Euler; RightHand: Vector; LeftHand: Vector; RightUpperLeg: Euler | XYZ; RightLowerLeg: Euler | XYZ; LeftUpperLeg: Euler | XYZ; LeftLowerLeg: Euler | XYZ; Hips: IHips; Spine: Vector | XYZ; }; export declare type HandKeys<S extends Side> = `${S}${"Wrist" | "RingProximal" | "RingIntermediate" | "RingDistal" | "IndexProximal" | "IndexIntermediate" | "IndexDistal" | "MiddleProximal" | "MiddleIntermediate" | "MiddleDistal" | "ThumbProximal" | "ThumbIntermediate" | "ThumbDistal" | "LittleProximal" | "LittleIntermediate" | "LittleDistal"}`; export declare type THand<S extends Side> = Record<HandKeys<S>, XYZ>; export declare type THandUnsafe<S extends Side> = Record<HandKeys<S> | string, XYZ>; export declare type TFace = { head: { x: number; y: number; z: number; width: number; height: number; position: Vector | XYZ; normalized: Vector | XYZ; degrees: Vector | XYZ; }; eye: { l: number; r: number; }; brow: number; pupil: { x: number; y: number; }; mouth: { x: number; y: number; shape: { A: number; E: number; I: number; O: number; U: number; }; }; }; /** * TFJS 3D Pose Vector Type */ export declare type TFVectorPose = Array<{ x: number; y: number; z: number; score?: number; visibility?: number; }>; /** * Array of results from TFJS or MediaPipe */ export declare type Results = Array<XYZ>;