Files
opendance-web/web-server/src/preprocess/joint-map.ts
T

32 lines
1.7 KiB
TypeScript

import { MP } from './mediapipe33';
/**
* 默认 BVH 关节名映射 —— 契约 model-formats.md §2.2。
* 按序匹配(不区分大小写),第一个命中的关节被采用。
* 实际项目中可在本表追加;追加不改变契约,仅提升映射覆盖率。
*/
export const DEFAULT_JOINT_MAP: Readonly<Record<number, readonly string[]>> = 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;