ComfyUI-MultiAngle-Camera

多角度相机控制器 - 为 AI 图像生成带来电影级的镜头语言

Version ComfyUI

🎬 应用场景

电影制作

  • 分镜头预览:快速生成不同角度的场景预览,辅助分镜设计
  • 镜头语言可视化:通过相机角度控制,实现专业镜头语言表达
  • 故事板制作:批量生成同一场景的多角度版本,加速故事板迭代

漫剧/动漫制作

  • 角色立绘多角度:同一角色的不同角度展示(正面、侧面、背面、俯视、仰视)
  • 场景全景漫游:通过 yaw/pitch 控制,实现场景的全方位展示
  • 镜头动态调整:根据剧情需要,快速切换镜头角度和景别

参考来源

本插件参考 libtv 的相机控制理念,结合 ComfyUI 的工作流特性,为 AI 图像生成带来直观的 3D 相机控制体验。


🚀 核心功能

1. 3D 球体交互控制器

  • 鼠标拖拽旋转,实时调整相机角度
  • 支持 Yaw(水平环绕)、Pitch(垂直俯仰)、Zoom(景别缩放)
  • 可视化反馈,角度参数实时显示

2. 预设角度快速切换

预设 说明 应用场景
鱼眼视角 zoom=2.5,超广角效果 夸张的喜剧效果、梦境场景
倾斜视角 yaw=45°, pitch=-15° 荷兰角镜头,营造不安感
正面俯拍 pitch=60° 权威感、压制感镜头
正面仰拍 pitch=-30° 英雄视角,增强气势
全景俯拍 pitch=89°, zoom=2.0 大场景全景展示
背面视角 yaw=180° 跟拍镜头、主观视角

3. 智能提示词生成

自动将相机参数转换为自然语言提示词,兼容多种 AI 图像模型:

camera angle: yaw=45°, pitch=15°, zoom=1.0 (front-right diagonal view, medium shot)

4. 数值参数输出

同时输出结构化数值(yaw, pitch, zoom),可供下游节点精确控制。


🔗 结合 Nano Banana Pro / GPT Image 2 使用

工作流示例 1:电影场景多角度生成

[Multi-Angle Camera] → [提示词输出] → [Nano Banana Pro / GPT Image 2]
                                ↓
                        [角度数值] → [其他控制节点]

步骤:

  1. 在 Multi-Angle Camera 节点中调整 3D 球体,选择理想角度
  2. 节点自动生成角度描述提示词(如 camera angle: yaw=45°, pitch=15°, zoom=1.0)
  3. 将提示词接入 Nano Banana Pro 或 GPT Image 2 的 prompt 输入
  4. (可选)使用数值输出进行更精细的控制

示例提示词组合:

# 基础场景描述
A cyberpunk street at night, neon lights, rain-slicked pavement

# + 自动生成的角度提示词
camera angle: yaw=45°, pitch=15°, zoom=1.0 (front-right diagonal view, medium shot)

# 最终输入到 Nano Banana Pro / GPT Image 2
A cyberpunk street at night, neon lights, rain-slicked pavement
camera angle: yaw=45°, pitch=15°, zoom=1.0 (front-right diagonal view, medium shot)

工作流示例 2:漫剧角色立绘生成

目标:生成同一角色的 5 个角度(正面、左侧面、右侧面、背面、俯视)

步骤:

  1. 创建 5 个 Multi-Angle Camera 节点
  2. 分别设置为:
    • 节点1:yaw=0°(正面)
    • 节点2:yaw=90°(左侧面)
    • 节点3:yaw=-90°(右侧面)
    • 节点4:yaw=180°(背面)
    • 节点5:pitch=60°(俯视)
  3. 将所有角度提示词连接到 文本拼接节点
  4. 拼接后的提示词输入到 Nano Banana Pro 或 GPT Image 2
  5. 使用相同的 seed 值,确保角色一致性

提示词模板:

Character: A young warrior with silver hair and blue eyes, wearing white robes
Style: anime style, high quality, detailed face

--- Angle 1: Front View ---
camera angle: yaw=0°, pitch=0°, zoom=1.0 (front view, medium shot)

--- Angle 2: Left Profile ---
camera angle: yaw=90°, pitch=0°, zoom=1.0 (left side profile view, medium shot)

...

工作流示例 3:动态镜头序列(漫剧分镜)

目标:生成一个镜头的多个关键帧(如:远景建立 → 中景 → 近景特写)

步骤:

  1. 使用 Multi-Angle Camera 的预设或手动调整
  2. 设置 3 个节点:
    • 节点1:zoom=2.0(远景建立)
    • 节点2:zoom=1.0(中景)
    • 节点3:zoom=0.3(近景特写)
  3. 依次输入到 Nano Banana Pro 或 GPT Image 2
  4. 保持场景描述一致,仅改变相机参数

📦 安装方式

方式一:Git 克隆(推荐)

cd D:\ComfyUI\custom_nodes
git clone https://github.com/your-username/ComfyUI-MultiAngle-Camera.git

方式二:手动下载

  1. 下载本仓库的 ZIP 文件
  2. 解压到 ComfyUI 的 custom_nodes 目录
  3. 重启 ComfyUI

🎯 使用方法

基本使用

  1. 在 ComfyUI 中搜索 Multi-Angle Camera 或 🎬 Multi-Angle Camera
  2. 将节点添加到工作流
  3. 在节点的 3D 球体上拖拽鼠标,调整相机角度
  4. 观察实时生成的提示词和数值参数
  5. 将输出连接到下游节点(如提示词输入)

参数说明

输入

参数 类型 说明
camera_control CAMERA_ORBIT 3D 球体控制器(内置)
image IMAGE (可选) 输入图像(预留接口)

输出

输出 类型 说明
angle_prompt STRING 生成的角度描述提示词
yaw FLOAT 水平环绕角度 (-180° ~ 180°)
pitch FLOAT 垂直俯仰角度 (-90° ~ 90°)
zoom FLOAT 景别缩放 (0.1 ~ 3.0)

角度参数详解

  • Yaw(偏航角):控制相机水平旋转

    • 0° = 正面视角
    • 90° = 左侧面
    • -90° = 右侧面
    • 180° / -180° = 背面视角
  • Pitch(俯仰角):控制相机上下倾斜

    • 0° = 水平视角
    • 30° = 俯拍(look down from above)

    • < -30° = 仰拍(look up from below)
  • Zoom(缩放):控制景别

    • < 0.5 = 近景(close-up shot)
    • 0.5 ~ 2.0 = 中景(medium shot)
    • 2.0 = 远景(wide shot)


🎨 预设角度详解

电影镜头语言应用

预设 电影术语 情感效果 经典应用
正面俯拍 (pitch=60°) High Angle 压制、脆弱、全知视角 《教父》开场
正面仰拍 (pitch=-30°) Low Angle 权威、英雄主义、力量 超级英雄电影
倾斜视角 (yaw=45°, pitch=-15°) Dutch Angle 不安、混乱、心理失衡 《蝙蝠侠:黑暗骑士》
鱼眼视角 (zoom=2.5) Fisheye 夸张、扭曲、梦境 恐怖片、科幻片
背面视角 (yaw=180°) Over the Shoulder 主观视角、代入感 对话场景

🔧 技术实现

前端(JavaScript)

  • 使用 Three.js 实现 3D 球体交互
  • 动态加载 CDN 资源,无需本地安装
  • 支持 OrbitControls 和自定义拖拽逻辑(降级方案)

后端(Python)

  • 解析 JSON 格式的相机参数
  • 生成自然语言描述提示词
  • 输出结构化数值参数

提示词生成逻辑

  1. 水平方向:根据 yaw 角度判断(8 个区间)
  2. 垂直方向:根据 pitch 角度判断(俯拍/仰拍/水平)
  3. 景别:根据 zoom 值判断(近景/中景/远景)
  4. 结构化输出:camera angle: yaw=X°, pitch=Y°, zoom=Z (description)

🌟 高级技巧

1. 与 ControlNet 结合

使用数值输出(yaw, pitch)连接到 ControlNet 的姿态控制,实现精确的相机控制。

2. 批量生成多角度

使用 ComfyUI 的 For Loop 或 Batch 节点,遍历多个角度预设,批量生成。

3. 动画预览

将多个角度按顺序连接,快速预览镜头运动路径。

4. 与 KSampler 结合

固定 seed 值,仅改变相机角度,生成视角一致的多角度图像。


📝 注意事项

  1. 提示词位置:将生成的角度提示词放在场景描述之后,模型更容易理解
  2. 角度精度:AI 模型对精确数值(如 yaw=45°)的理解优于纯文本描述
  3. 模型兼容性:本插件生成的提示词兼容 GPT Image 2、Nano Banana Pro、Stable Diffusion 等多种模型
  4. 性能:前端使用 CDN 加载 Three.js,首次使用需要联网

🐛 已知问题

  • Three.js 加载失败时,降级方案不够流畅
  • 预设角度较少,计划添加更多电影镜头预设
  • 数值输出暂未连接到更多下游节点

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

计划中的功能:

  • 更多电影镜头预设(推轨、摇镜、升降镜头)
  • 相机路径动画(关键帧插值)
  • 与更多插件的深度集成

📄 License

MIT License


🙏 致谢

  • libtv:相机控制设计灵感
  • Three.js:强大的 3D 渲染库
  • ComfyUI 社区:持续的支持和反馈

📧 联系方式


希望这个插件能为你的 AI 图像生成工作流带来电影级的镜头控制体验! 🎬✨

S
Description
No description provided
Readme
50 KiB
Languages
JavaScript 87.8%
Python 12.2%