pitch ladder沿地平线跟随屏幕旋转

摄像头

初始视角的问题

摄像头的初始视角在未设定时,会自动朝向正上方,所以需要加一个初始视角的设定

m_cam.rotate(90, (1, 0, 0))

之后直接使用订阅的欧拉角使摄像机的视角转动。这里我直接用np带的弧度转角度方法,因为vispy的旋转需要直接使用角度。

m_cam.rotate(np.degrees(y_raw), (0, 0, 1))  # 偏航
m_cam.rotate(np.degrees(p_raw), (1, 0, 0))  # 俯仰
m_cam.rotate(np.degrees(r_raw), (0, 1, 0))  # 横滚
self.view.camera.transform.matrix = m_cam.matrix

地平线与pitch ladder

基准

地平线与pitch ladder直接固定在世界坐标系中

self.earth_node.transform = MatrixTransform()

画图时地平线默认是在z=0的平面上,所以不用做过多的参数设定

pitch ladder旋转

pitch ladder的旋转只关心偏航角。

scroll_gain = 0  
total_yaw = np.degrees(y_raw) + (np.degrees(y_raw) * scroll_gain)
m_ladder.rotate(total_yaw, (0, 0, 1))

这里还考虑了一下pitch ladder的滑动感,但是会有偏移问题。

alt text


本文章使用limfx的vscode插件快速发布