相机动作
上一篇
相机参数
下一篇
相机动画
Loading...
在相机坐标系中相机的三轴为 uvn
后面我们介绍的相机动作实际就是沿这三轴进行移动和旋转。
下图来自 Television Production Handbook p.97。早年的电视台使用的摄像机通过轨道完成移动:
我们不考虑依靠摇臂完成的 crane 和 tongue 动作,沿 uvn 三轴的平移和旋转可总结出以下动作:
动作名 | 相机位置 | 视点 | u | v | n |
---|---|---|---|---|---|
dolly | 平移 | ||||
pedestal | 平移 | ||||
truck | 平移 | ||||
cant | 旋转中心 | 旋转 | |||
pan | 旋转中心 | 旋转 | |||
tilt | 旋转中心 | 旋转 | |||
arc | 旋转中心 | 旋转 |
很自然的,根据相机类型的不同,同一个摄像机动作对应的实现也不同。 我们以 dolly 动作为例,同样都是一个向前向后移动摄像机位置的动作,对于 Orbiting / Exploring 模式视点不变,而在 Tracking 模式下视点是需要调整的。
沿 u / v 轴,即水平和垂直方向平移相机。
方法签名如下:
pan(tx: number, ty: number)
参数:
tx
沿 u 轴正向平移ty
沿 v 轴正向平移在该示例 中,下面的操作将导致原本处于视点处的物体展示在左上角:
camera.pan(200, 200);
在 g-plugin-control 中我们响应鼠标平移事件,调用该方法:
沿 n 轴移动相机。固定视点,改变相机位置从而改变视距。会保持视距在 minDistance 和 maxDistance 之间。
方法签名如下:
dolly(value: number)
参数:
value
以 dollyingStep
为单位,正向远离视点,负向靠近使用示例:
camera.dolly(10); // 远离视点camera.dolly(-10); // 靠近视点
在透视投影中效果如下,在 g-plugin-control 中我们响应鼠标滚轮事件,调用该方法:
按相机方位角旋转,逆时针方向为正。
方法签名如下:
rotate(azimuth: number, elevation: number, roll: number)
2D 场景只需要指定 roll,例如让相机“歪下头”:
camera.rotate(0, 0, 30);