UNPKG

@theforce/core

Version:

Core library for TheForce hand tracking

79 lines (76 loc) 2.2 kB
interface HandTrackerConfig { /** * The path to the hand tracking model. */ modelPath?: string; /** * The minimum confidence score for a hand to be detected. */ minDetectionConfidence?: number; /** * The minimum confidence score for the hand landmarks to be tracked. */ minTrackingConfidence?: number; /** * The maximum number of hands to detect. */ maxNumHands?: number; /** * If true, the video feed will be displayed in the bottom right corner for debugging. */ debug?: boolean; /** * The delay in milliseconds before a hover action triggers a click. */ hoverDelay?: number; /** * The sensitivity of the cursor movement along the X-axis. */ sensitivityX?: number; /** * The sensitivity of the cursor movement along the Y-axis. */ sensitivityY?: number; /** * The URL of an image to use as the cursor. */ cursorImageUrl?: string; /** * The index of the landmark to use for cursor positioning (e.g., 0 for wrist, 8 for index finger tip, 9 for middle finger base). * Defaults to 9 (middle finger base) for a more central hand tracking experience. */ cursorLandmarkIndex?: number; } interface HandTrackerResults { multiHandLandmarks: any[][]; multiHandedness?: any[]; } declare class HandTracker { private hands; private camera; private videoElement; private canvasElement; private cursorElement; private config; private onResultsCallback; private hoverTimeout; private hoveredElement; private isInitialized; constructor(config?: HandTrackerConfig); private setupHands; private handleResults; _getCursorScreenCoordinates(landmark: any): { x: number; y: number; }; private updateCursor; private checkHoverableElements; private handleHoverStart; private handleHoverEnd; private triggerClick; initialize(): Promise<void>; start(): Promise<void>; stop(): Promise<void>; onResults(callback: (results: HandTrackerResults) => void): void; } export { HandTracker, HandTrackerConfig, HandTrackerResults };