v3d-web-realbits
Version:
Single camera motion-tracking in browser
83 lines (82 loc) • 3.25 kB
TypeScript
import { Nullable } from "@babylonjs/core";
import { HolisticConfig } from "@mediapipe/holistic";
import { Options as FMOptions } from "@mediapipe/face_mesh";
import { HolisticOptions } from "./mediapipe";
import { VRMManager } from "v3d-core-realbits/dist/src/importer/babylon-vrm-loader/src";
import { V3DCore } from "v3d-core-realbits/dist/src";
import { CloneableQuaternionMap } from "./helper/quaternion";
export interface HolisticState {
ready: boolean;
activeEffect: string;
holisticUpdate: boolean;
}
export interface FaceMeshState {
ready: boolean;
activeEffect: string;
faceMeshUpdate: boolean;
}
export interface BoneState {
boneRotations: Nullable<CloneableQuaternionMap>;
bonesNeedUpdate: boolean;
}
export interface BoneOptions {
blinkLinkLR: boolean;
expression: "Neutral" | "Happy" | "Angry" | "Sad" | "Relaxed" | "Surprised";
irisLockX: boolean;
lockFinger: boolean;
lockArm: boolean;
lockLeg: boolean;
resetInvisible: boolean;
}
export declare class V3DWeb {
readonly videoElement?: Nullable<HTMLVideoElement> | undefined;
readonly webglCanvasElement?: Nullable<HTMLCanvasElement> | undefined;
readonly videoCanvasElement?: Nullable<HTMLCanvasElement> | undefined;
readonly controlsElement?: Nullable<HTMLDivElement> | undefined;
private readonly holisticConfig?;
private readonly loadingDiv?;
private readonly useMotionUpdate?;
private readonly useFaceMesh?;
private readonly worker;
private workerPose;
private boneState;
private _boneOptions;
get boneOptions(): BoneOptions;
set boneOptions(value: BoneOptions);
private readonly _updateBufferCallback;
private customLoadingScreen;
private _v3DCore;
get v3DCore(): Nullable<V3DCore>;
private _vrmManager;
get vrmManager(): Nullable<VRMManager>;
private readonly engine;
private _vrmFile;
set vrmFile(value: File | string);
private readonly fpsControl;
private readonly holistic;
private holisticState;
private _holisticOptions;
get holisticOptions(): HolisticOptions;
set holisticOptions(value: HolisticOptions);
private readonly faceMesh;
private faceMeshState;
private _faceMeshOptions;
get faceMeshOptions(): FMOptions;
set faceMeshOptions(value: FMOptions);
private _cameraList;
get cameraList(): MediaDeviceInfo[];
constructor(vrmFilePath: string, videoElement?: Nullable<HTMLVideoElement> | undefined, webglCanvasElement?: Nullable<HTMLCanvasElement> | undefined, videoCanvasElement?: Nullable<HTMLCanvasElement> | undefined, controlsElement?: Nullable<HTMLDivElement> | undefined, holisticConfig?: HolisticConfig | undefined, loadingDiv?: Nullable<HTMLDivElement> | undefined, useMotionUpdate?: Nullable<boolean> | undefined, useFaceMesh?: Nullable<boolean> | undefined, afterInitCallback?: (...args: any[]) => any);
getVideoDevices(): Promise<MediaDeviceInfo[]>;
getCamera(idx: number): Promise<void>;
/**
* Close and dispose the application (BabylonJS and MediaPipe)
*/
close(): void;
/**
* Reset poses and holistic
*/
reset(): void;
switchSource(idx: number): void;
private switchModel;
}
export default V3DWeb;