import { MP } from './mediapipe33'; /** * 默认 BVH 关节名映射 —— 契约 model-formats.md §2.2。 * 按序匹配(不区分大小写),第一个命中的关节被采用。 * 实际项目中可在本表追加;追加不改变契约,仅提升映射覆盖率。 */ export const DEFAULT_JOINT_MAP: Readonly> = Object.freeze({ [MP.NOSE]: ['head', 'head_nub', 'neck1', 'skull'], [MP.LEFT_SHOULDER]: ['leftshoulder', 'leftarm', 'lshoulder', 'shoulder_l', 'l_arm'], [MP.RIGHT_SHOULDER]: ['rightshoulder', 'rightarm', 'rshoulder', 'shoulder_r', 'r_arm'], [MP.LEFT_ELBOW]: ['leftforearm', 'leftelbow', 'lelbow', 'forearm_l'], [MP.RIGHT_ELBOW]: ['rightforearm', 'rightelbow', 'relbow', 'forearm_r'], [MP.LEFT_WRIST]: ['lefthand', 'leftwrist', 'lhand', 'wrist_l'], [MP.RIGHT_WRIST]: ['righthand', 'rightwrist', 'rhand', 'wrist_r'], [MP.LEFT_HIP]: ['leftupleg', 'lefthip', 'lhipjoint', 'hip_l', 'l_thigh'], [MP.RIGHT_HIP]: ['rightupleg', 'righthip', 'rhipjoint', 'hip_r', 'r_thigh'], [MP.LEFT_KNEE]: ['leftleg', 'leftknee', 'lknee', 'knee_l', 'l_shin'], [MP.RIGHT_KNEE]: ['rightleg', 'rightknee', 'rknee', 'knee_r', 'r_shin'], [MP.LEFT_ANKLE]: ['leftfoot', 'leftankle', 'lankle', 'ankle_l'], [MP.RIGHT_ANKLE]: ['rightfoot', 'rightankle', 'rankle', 'ankle_r'], [MP.LEFT_FOOT_INDEX]: ['lefttoebase', 'lefttoe', 'ltoe', 'toe_l'], [MP.RIGHT_FOOT_INDEX]: ['righttoebase', 'righttoe', 'rtoe', 'toe_r'], }); /** 直接映射的置信度 */ export const CONF_DIRECT = 1.0; /** 由父节点推算的置信度 —— 契约 model-formats.md §2.2 */ export const CONF_DERIVED = 0.5; /** 完全无法推算 */ export const CONF_MISSING = 0.0;