Extensions/ComfyUI-MultiAngle-Camera
ComfyUI Extension

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)

By yitao2020·Created 3 months ago·Updated 3 months ago· 2
yitao2020/ComfyUI-MultiAngle-Camera
Nodes1
On cloudLocal install
Categoryimage/camera
Stars2
Updated3 months ago
Readme

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 ProGPT Image 2prompt 输入
  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 ProGPT 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 ProGPT 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 LoopBatch 节点,遍历多个角度预设,批量生成。

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 图像生成工作流带来电影级的镜头控制体验! 🎬✨