ComfyUI-MultiAngle-Camera
3D camera controller for ComfyUI bringing cinematic camera language to AI image generation. Features 3D orbit control, preset angles, intelligent prompt generation, and multi-angle workflow support. (Description by CC)
Nodes (1)
ComfyUI-MultiAngle-Camera
多角度相机控制器 - 为 AI 图像生成带来电影级的镜头语言
🎬 应用场景
电影制作
- 分镜头预览:快速生成不同角度的场景预览,辅助分镜设计
- 镜头语言可视化:通过相机角度控制,实现专业镜头语言表达
- 故事板制作:批量生成同一场景的多角度版本,加速故事板迭代
漫剧/动漫制作
- 角色立绘多角度:同一角色的不同角度展示(正面、侧面、背面、俯视、仰视)
- 场景全景漫游:通过 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]
↓
[角度数值] → [其他控制节点]
步骤:
- 在 Multi-Angle Camera 节点中调整 3D 球体,选择理想角度
- 节点自动生成角度描述提示词(如
camera angle: yaw=45°, pitch=15°, zoom=1.0) - 将提示词接入 Nano Banana Pro 或 GPT Image 2 的
prompt输入 - (可选)使用数值输出进行更精细的控制
示例提示词组合:
# 基础场景描述
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 个角度(正面、左侧面、右侧面、背面、俯视)
步骤:
- 创建 5 个 Multi-Angle Camera 节点
- 分别设置为:
- 节点1:yaw=0°(正面)
- 节点2:yaw=90°(左侧面)
- 节点3:yaw=-90°(右侧面)
- 节点4:yaw=180°(背面)
- 节点5:pitch=60°(俯视)
- 将所有角度提示词连接到 文本拼接节点
- 拼接后的提示词输入到 Nano Banana Pro 或 GPT Image 2
- 使用相同的
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:动态镜头序列(漫剧分镜)
目标:生成一个镜头的多个关键帧(如:远景建立 → 中景 → 近景特写)
步骤:
- 使用 Multi-Angle Camera 的预设或手动调整
- 设置 3 个节点:
- 节点1:zoom=2.0(远景建立)
- 节点2:zoom=1.0(中景)
- 节点3:zoom=0.3(近景特写)
- 依次输入到 Nano Banana Pro 或 GPT Image 2
- 保持场景描述一致,仅改变相机参数
📦 安装方式
方式一:Git 克隆(推荐)
cd D:\ComfyUI\custom_nodes
git clone https://github.com/your-username/ComfyUI-MultiAngle-Camera.git
方式二:手动下载
- 下载本仓库的 ZIP 文件
- 解压到 ComfyUI 的
custom_nodes目录 - 重启 ComfyUI
🎯 使用方法
基本使用
- 在 ComfyUI 中搜索
Multi-Angle Camera或🎬 Multi-Angle Camera - 将节点添加到工作流
- 在节点的 3D 球体上拖拽鼠标,调整相机角度
- 观察实时生成的提示词和数值参数
- 将输出连接到下游节点(如提示词输入)
参数说明
输入
| 参数 | 类型 | 说明 |
|------|------|------|
| 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 格式的相机参数
- 生成自然语言描述提示词
- 输出结构化数值参数
提示词生成逻辑
- 水平方向:根据 yaw 角度判断(8 个区间)
- 垂直方向:根据 pitch 角度判断(俯拍/仰拍/水平)
- 景别:根据 zoom 值判断(近景/中景/远景)
- 结构化输出:
camera angle: yaw=X°, pitch=Y°, zoom=Z (description)
🌟 高级技巧
1. 与 ControlNet 结合
使用数值输出(yaw, pitch)连接到 ControlNet 的姿态控制,实现精确的相机控制。
2. 批量生成多角度
使用 ComfyUI 的 For Loop 或 Batch 节点,遍历多个角度预设,批量生成。
3. 动画预览
将多个角度按顺序连接,快速预览镜头运动路径。
4. 与 KSampler 结合
固定 seed 值,仅改变相机角度,生成视角一致的多角度图像。
📝 注意事项
- 提示词位置:将生成的角度提示词放在场景描述之后,模型更容易理解
- 角度精度:AI 模型对精确数值(如
yaw=45°)的理解优于纯文本描述 - 模型兼容性:本插件生成的提示词兼容 GPT Image 2、Nano Banana Pro、Stable Diffusion 等多种模型
- 性能:前端使用 CDN 加载 Three.js,首次使用需要联网
🐛 已知问题
- [ ] Three.js 加载失败时,降级方案不够流畅
- [ ] 预设角度较少,计划添加更多电影镜头预设
- [ ] 数值输出暂未连接到更多下游节点
🤝 贡献指南
欢迎提交 Issue 和 Pull Request!
计划中的功能:
- [ ] 更多电影镜头预设(推轨、摇镜、升降镜头)
- [ ] 相机路径动画(关键帧插值)
- [ ] 与更多插件的深度集成
📄 License
MIT License
🙏 致谢
- libtv:相机控制设计灵感
- Three.js:强大的 3D 渲染库
- ComfyUI 社区:持续的支持和反馈
📧 联系方式
- GitHub Issues:提交问题或建议
- [email protected]
希望这个插件能为你的 AI 图像生成工作流带来电影级的镜头控制体验! 🎬✨