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