6.8 KiB
6.8 KiB
三维摄像机使用指南
概述
ComfyUI-AE-Animation 的三维摄像机功能已修复并增强,现在可以正常使用。本指南将帮助你了解如何使用三维摄像机创建动态的3D效果。
修复内容
1. 摄像机位置参数
- 修复前:
cam_pos_z默认值为 0,导致摄像机位置不正确 - 修复后:
cam_pos_z默认值为 1000,提供合理的摄像机距离 - 新增: 完整支持
cam_pos_x,cam_pos_y,cam_pos_z三个位置参数
2. 摄像机旋转算法
- 修复前: 使用简单的视差效果,不够准确
- 修复后: 使用透视投影公式,根据图层深度计算准确的旋转效果
- 公式:
effectiveDistance = max(100, cam_pos_z + layer_z)
3. GPU 渲染支持
- 修复前: 摄像机旋转标记为"实验性"功能,需要手动启用
- 修复后: 摄像机旋转默认启用,GPU 和 Canvas 2D 渲染器保持一致
使用方法
1. 启用三维摄像机
在 AE Timeline 界面的项目设置面板中:
- 勾选 "启用" 复选框(在 "🎥 3D 摄像机" 部分)
- 摄像机参数将立即生效
2. 摄像机参数说明
位置参数
- X: 摄像机在水平方向的位置(左右移动)
- Y: 摄像机在垂直方向的位置(上下移动)
- Z (距离): 摄像机与场景的距离
- 默认值: 1000
- 值越大,摄像机离场景越远,透视效果越弱
- 值越小,摄像机离场景越近,透视效果越强
旋转参数
- Yaw (Y轴): 摄像机左右旋转(水平旋转)
- 正值:向右旋转
- 负值:向左旋转
- Pitch (X轴): 摄像机上下旋转(俯仰)
- 正值:向上旋转
- 负值:向下旋转
- Roll (Z轴): 摄像机滚转(画面倾斜)
- 正值:顺时针旋转
- 负值:逆时针旋转
投影参数
- FOV: 视野角度(Field of View)
- 范围: 1° - 179°
- 默认值: 90°
- 值越大,视野越广,透视变形越明显
- 值越小,视野越窄,接近正交投影
3. 创建3D效果
基础透视效果
- 启用三维摄像机
- 为不同图层设置不同的 Z 值
- 前景图层: Z = -200 到 200
- 中景图层: Z = 0
- 背景图层: Z = 200 到 500
- 调整
cam_pos_z来控制透视强度
摄像机旋转动画
- 在时间轴上添加关键帧
- 设置起始帧的摄像机旋转值(如 Yaw = 0)
- 设置结束帧的摄像机旋转值(如 Yaw = 30)
- 播放预览,观察旋转效果
摄像机移动动画
- 添加关键帧
- 改变
cam_pos_x或cam_pos_y创建平移效果 - 改变
cam_pos_z创建推拉效果
4. 高级技巧
视差效果
- 将图层放置在不同的 Z 深度
- 移动摄像机时,近处的图层移动速度快,远处的图层移动速度慢
- 这会创建自然的深度感
透视变形
- 使用较大的 FOV(如 120°)创建广角效果
- 使用较小的 FOV(如 30°)创建长焦效果
- 结合摄像机旋转可以创建戏剧性的视觉效果
全景背景
- 启用 "全景模式"(pano_enable)
- 使用 2:1 比例的全景图作为背景
- 摄像机旋转将在全景图上进行球面投影
技术细节
渲染管线
-
Canvas 2D 渲染器
- 使用 2D 变换模拟 3D 效果
- 透视公式:
offset = tan(angle) * effectiveDistance - 适用于预览和调试
-
WebGPU 渲染器
- 使用真实的 3D 变换矩阵
- 支持硬件加速
- 与 Canvas 2D 保持视觉一致性
坐标系统
- X 轴: 向右为正
- Y 轴: 向下为正(屏幕坐标系)
- Z 轴: 向前为正(远离摄像机)
变换顺序
图层变换顺序:
- 锚点偏移
- 缩放
- 旋转(Z → Y → X)
- 平移
摄像机变换顺序:
- 平移
- 旋转(Roll → Pitch → Yaw)
⚠️ 重要:预览限制
UI预览 vs 最终渲染
UI预览(实时):
- 使用Canvas 2D或CSS 3D
- 仅为近似效果
- 用于快速调整和设置关键帧
- 性能优先,准确性次之
最终渲染(后端):
- 使用完整的3D透视投影
- 准确的矩阵变换
- 正确的深度排序和透视变形
- 质量优先
为什么预览不准确?
- 技术限制:浏览器Canvas 2D不支持真正的3D透视
- 性能考虑:实时预览需要高帧率,完整3D计算会卡顿
- 兼容性:2D近似在所有浏览器都能流畅运行
推荐工作流程
- 在UI中调整参数和关键帧(使用2D近似预览)
- 点击"Run Node"渲染测试帧
- 根据渲染结果调整参数
- 重复直到满意
📚 详细说明:查看 3D预览限制说明
故障排除
问题:摄像机旋转没有效果
解决方案:
- 确认已启用三维摄像机
- 检查图层是否设置了 Z 值
- 确认
cam_pos_z不为 0
问题:透视效果太强或太弱
解决方案:
- 调整
cam_pos_z值- 增大值减弱透视
- 减小值增强透视
- 调整图层的 Z 值分布
问题:图层渲染顺序错误
解决方案:
- 检查图层的 Z 值
- Z 值越大,图层越远(后渲染)
- 确保前景图层的 Z 值小于背景图层
问题:全景模式背景显示异常
解决方案:
- 确保已启用三维摄像机(全景模式需要摄像机)
- 检查背景图片是否为2:1比例(如4096×2048)
- UI预览可能不准确,查看最终渲染结果
问题:预览和渲染结果不一致
这是正常的:
- UI预览使用2D近似算法
- 最终渲染使用完整3D透视
- 以最终渲染结果为准
- 查看 3D预览限制说明
示例场景
场景1:简单的旋转效果
摄像机设置:
- cam_pos_z: 1000
- cam_yaw: 0 → 30 (关键帧动画)
图层设置:
- 背景: Z = 500
- 中景: Z = 0
- 前景: Z = -200
场景2:推拉镜头
摄像机设置:
- cam_pos_z: 2000 → 500 (关键帧动画)
- FOV: 90
图层设置:
- 所有图层保持固定位置
- Z 值分布: -500 到 500
场景3:环绕效果
摄像机设置:
- cam_yaw: 0 → 360 (循环动画)
- cam_pitch: -10 (轻微俯视)
- cam_pos_z: 1500
图层设置:
- 圆形排列的多个图层
- 每个图层不同的 X, Y, Z 位置
性能优化
-
使用 WebGPU 渲染器
- 自动启用(如果浏览器支持)
- 提供更好的性能
-
限制图层数量
- 过多图层会影响性能
- 建议不超过 20 个图层
-
优化图片尺寸
- 使用合适的图片分辨率
- 避免过大的图片文件
更新日志
v1.1.0 (2025-12-08)
- ✅ 修复摄像机位置参数默认值
- ✅ 改进摄像机旋转算法
- ✅ 统一 GPU 和 Canvas 2D 渲染器行为
- ✅ 移除实验性标记
- ✅ 添加完整的参数支持
如有问题或建议,请在 GitHub 上提交 Issue。