ai-chatbot/lib/video-canvas/angle-settings.ts

36 lines
1.3 KiB
TypeScript

export const anglePresets: Record<
string,
{ horizontalAngle: number; verticalAngle: number; zoom: number; prompt?: string }
> = {
自定义: { horizontalAngle: 0, verticalAngle: 0, zoom: 50 },
鱼眼视角: {
horizontalAngle: 0,
verticalAngle: 0,
zoom: 20,
prompt: "保持主体身份与场景,以鱼眼超广角镜头重新构图,明显桶形畸变",
},
倾斜视角: {
horizontalAngle: 30,
verticalAngle: 0,
zoom: 50,
prompt: "保持主体身份与场景,以荷兰角镜头拍摄,画面地平线倾斜 25 度",
},
正面俯拍: { horizontalAngle: 0, verticalAngle: 45, zoom: 50 },
正面仰拍: { horizontalAngle: 0, verticalAngle: -30, zoom: 50 },
全景俯拍: { horizontalAngle: 0, verticalAngle: 90, zoom: 0 },
背面视角: { horizontalAngle: 180, verticalAngle: 0, zoom: 50 },
};
export function angleRequestParameters(settings: {
horizontalAngle: number;
verticalAngle: number;
zoom: number;
}) {
if (![settings.horizontalAngle, settings.verticalAngle, settings.zoom].every(Number.isFinite))
throw Error("视角参数必须是有限数值");
return {
horizontalAngle: ((settings.horizontalAngle % 360) + 360) % 360,
verticalAngle: Math.max(-30, Math.min(90, settings.verticalAngle)),
zoom: Math.max(0, Math.min(10, settings.zoom / 10)),
};
}