ai-chatbot/lib/video-canvas/director-poses.ts

42 lines
1.5 KiB
TypeScript

// Angles in degrees. Each joint is local to its parent, so limbs remain connected.
export const directorPoses = {
站立: { arms: [0, 0], elbows: [0, 0], legs: [0, 0], knees: [0, 0], lean: 0 },
"T 型": { arms: [0, 0], elbows: [0, 0], legs: [0, 0], knees: [0, 0], lean: 0, spread: 90 },
行走: { arms: [-30, 30], elbows: [15, 15], legs: [30, -30], knees: [10, 35], lean: 0 },
跑步: { arms: [-55, 55], elbows: [80, 80], legs: [60, -45], knees: [70, 100], lean: 12 },
坐姿: {
arms: [10, 10],
elbows: [75, 75],
legs: [-90, -90],
knees: [90, 90],
lean: 0,
height: -0.45,
},
蹲下: {
arms: [-65, -65],
elbows: [15, 15],
legs: [-95, -95],
knees: [125, 125],
lean: 25,
height: -0.65,
},
招手: { arms: [0, -165], elbows: [0, 30], legs: [0, 0], knees: [0, 0], lean: 0 },
伸手: { arms: [-90, -90], elbows: [0, 0], legs: [0, 0], knees: [0, 0], lean: 0 },
鞠躬: { arms: [-20, -20], elbows: [0, 0], legs: [0, 0], knees: [0, 0], lean: 40 },
格斗: { arms: [-50, -75], elbows: [100, 90], legs: [-20, 20], knees: [20, 35], lean: 5 },
踢球: { arms: [-15, 30], elbows: [20, 20], legs: [-70, 5], knees: [10, 10], lean: -10 },
看手机: { arms: [-30, -30], elbows: [105, 105], legs: [0, 0], knees: [0, 0], lean: 8 },
} satisfies Record<
string,
{
arms: number[];
elbows: number[];
legs: number[];
knees: number[];
lean: number;
spread?: number;
height?: number;
}
>;
export type DirectorPoseName = keyof typeof directorPoses;