摄像机¶
运镜是使用 OTS 最好的理由之一 — 在 3D 里 block 一个运镜然后用它驱动 Harmony,或者把一台 Harmony 摄像机搬进 Maya,让 3D pass 与 2D 镜头对得上。
摄像机在两种文件格式中都是 一等公民,而且 OTS 能处理 你的场景里有多少台就多少台。
模型¶
OTS 里的一台摄像机是两样东西:
- 一个 peg — 带动画的变换。它是列表中一个普通的项,和其他项一样带关键帧。
- 一份摄像机配置 — 镜头:FOV、clip plane、offset、roll,以及它是不是场景的默认摄像机。
配置通过名称与它的 peg 关联,所以镜头和运动会一起被重建。这也正是摄像机行为什么会出现在列表里:你看到的是那个 peg,只是被标记为驱动着一台摄像机。
| 会跟着走 | 说明 |
|---|---|
| FOV | 作为 垂直 角度 — 这是 Harmony 的惯例,在 Maya 中转换为焦距 + film aperture,在 Blender 中转换为垂直 sensor fit |
| Near / far clip | 作为原始的场景距离。Harmony 原本的 field 值被单独保留,所以一次 Harmony 往返是无损的 |
| Offset | 摄像机自身相对于其 peg 的位置 |
| Roll | 绕视轴的旋转 |
| 默认标记 | 哪一台是场景中活动的那台 |
| 动画 | 在摄像机的 peg 上,位于一个 .anm 中 |
导出一台摄像机¶
把它和其他东西一起选中,然后扫描进来。就这样。
选中摄像机的 peg。OTS 会检测到挂在它上面的 CAMERA 节点并标记这一行。
选中摄像机 transform。Maya 没有单一的"默认摄像机"标记,所以 OTS 使用最接近的替代物:摄像机的 可渲染 状态,以及你当前正透过哪台在看。
选中摄像机对象。场景的活动摄像机就是默认的那台。
摄像机行在列表中带一个摄像机图标 — 默认摄像机为实心,其余为空心。
导入一台摄像机¶
Create Cameras 会构建它们。除非加载的文件里确实有摄像机,否则这个按钮是禁用的。
你会得到:
| 目标 | 结果 |
|---|---|
| Harmony | 一个 peg 加上它下面的一个 CAMERA 节点,并按文件打好关键帧 |
| Maya | 一个摄像机 transform,焦距由 FOV 推导而来,垂直 film fit,near/far,roll — 挂到其 peg 对应的 joint 上,或者当这个 peg 纯粹只是为了挂摄像机而存在时,直接烘焙到摄像机上 |
| Blender | 一个摄像机对象,垂直 sensor fit,FOV 作为它的 angle,near/far clip — 按同样的规则,要么 bone-parent,要么直接烘焙 |
只为摄像机存在的 peg 不会变成 bone
如果一台摄像机的 peg 上下都没有别的东西 — 它纯粹是为了摆放这台摄像机而存在 — 那么把它重建成一个 joint 或 bone 只会添加一个什么都不承载的节点。所以 OTS 会改为把它的变换直接烘焙到摄像机对象上,不创建任何骨架。
给那个 peg 加上一个 parent 或一个子项,整条 chain 就会正常构建出来,摄像机挂在它上面。Harmony 无论哪种情况都不受影响,因为在那里一台摄像机本来 就是 一个 peg 加一个 camera 节点。
多台摄像机¶
导出列表中的每一台摄像机都会被写进文件,而 Create Cameras 会一次性构建所有被勾选的那些。
专用摄像机 chain 会得到它们自己的 rig 标签 — Camera,或者当不止一条时是 Camera_1、Camera_2、……。编号是按名称排序的,所以它在不同会话之间是稳定的,而不是跟着你的选择顺序走。参见 Rig 与多 Rig。
恰好只有一台摄像机能带着默认标记。如果你导入两个文件、各自都认为自己的摄像机是默认的,那么最后构建的那个胜出 — 如果这件事要紧,之后在你的场景里明确指定一下。
构图:请去检查¶
这是需要去验证而不是去信任的部分。
FOV 是作为垂直角度携带的,与 Harmony 的场景设置惯例一致,并且每个应用都被要求把 sensor 按垂直方向适配。这是一个刻意的选择:把 Maya 或 Blender 留在它们的自动/水平适配上,会让视锥太窄,场景到达时看起来像被放大了。
朝向 是尽力而为的。Harmony 和 Maya 的摄像机都沿着各自的 −Z 看,这已经是规范的前方向了,所以只有 roll 会被写入。Blender 的摄像机在一个 Z-up 世界里沿 −Z 看,所以它在导入时会得到一个 +90° 的 X 倾斜,导出时又把这个倾斜去掉 — 一台朝前的摄像机往返之后会回到一个单位 peg。
Clip plane 以原始场景距离的形式直接传递,因为它们是相对于各应用自身的尺度而言的。Harmony 的 near_field / far_field 值会与它们并存保留,所以 Harmony → 任意 → Harmony 是无损的;其他路径会得到合理的距离值,但可能仍需要微调一下。
在你信任它之前,先透过它看一眼
这套数学是量过、测过的,但摄像机恰恰是那种"稍微错一点就立刻看得见、而且代价不小"的东西。Create Cameras 之后,透过摄像机看一眼,拿一帧和源头对比。要在运镜最广和最紧的地方检查构图,而不是只看第 1 帧。
常见情况¶
摄像机到了,但不动。 你构建了摄像机,但没构建它的动画。在一个 .anm 中,运动住在摄像机的 peg 上 — 确认那一行被勾选了,并且除了 Create Cameras 之外也运行了 Create Rig 或 Apply。
摄像机那一行是琥珀色。 在一次全新导入中这是预期之中的:还不存在同名的 joint 或 bone。摄像机之所以与 matched 分开计数,正是为了这个原因。参见 匹配树。
构图太紧或太宽。 检查目标应用里的 sensor fit — 它应该是 vertical。如果有什么东西把它重置成了自动,FOV 就会被按错误的轴重新解释。
两台摄像机都是活动的。 每个场景只有一个默认标记能留下来。导入后把你想要的那台设好。