CG_9.18

完成了类Blender默认的视图操作,没看书没找资料,涂涂画画绕了挺久,有几个东西需要澄清。

Camera有Position,有Up和Direction。Blender有个有用的概念叫Cursor,是操作旋转时的中心点。

按住鼠标上下左右移动,是调整World围绕Cursor的旋转,Camera本身的位置和方向都不动,即该视角下,不论怎样旋转,LookAt矩阵都不用变化:

glm::lookAt(_position, _position + _direction, _up)

World围绕Cursor转动花了两个小时功夫,步骤是先位移到Cursor位置,然后绕X轴旋转,再绕Y轴旋转,再移回原位置。

一开始绕Y轴水平旋转时轴不对,不是物体实际的Y轴,而总是(0,1,0)。这里忽略的是绕X旋转后,Y轴已经被旋转了,需要计算新坐标系中“原Y轴”的向量,画一画就知道,应该是(0, cos, sin)。

Leave a Reply

Your email address will not be published. Required fields are marked *