Python Vispy转盘摄像头-滚动选项不工作
我有一个问题,滚动角度不工作在vispy转盘相机Python Vispy转盘摄像头-滚动选项不工作,python,vispy,Python,Vispy,我有一个问题,滚动角度不工作在vispy转盘相机 def surface_3D(x, y, z, name): canvas = scene.SceneCanvas(keys='interactive') view = canvas.central_widget.add_view() view.camera = 'turntable' view.camera.center = (0,0,0) view.camera.fov = 50 view.c
def surface_3D(x, y, z, name):
canvas = scene.SceneCanvas(keys='interactive')
view = canvas.central_widget.add_view()
view.camera = 'turntable'
view.camera.center = (0,0,0)
view.camera.fov = 50
view.camera.distance = 3
view.camera.azimuth = -90
view.camera.elevation = 30
view.camera.roll = 30 # This angle is not working
Y, X = np.meshgrid(y, x)
tray1 = np.zeros_like(X)
tray2 = np.zeros_like(X)
tray1[0,:] = 0.5 ; tray1[:,0] = 1 ; tray1[-1,:] = 1 ; tray1[:,-1] = 1
tray2[0,:] = z[0,:] ; tray2[:,0] = z[:,0] ; tray2[-1,:] = z[-1,:] ; tray2[:,-1] = z[:,-1]
surface = scene.visuals.SurfacePlot(x, y, z, shading='smooth', color='#289fd2')
surface1 = scene.visuals.SurfacePlot(x, y, tray1, shading='smooth', color=(0.5,0.5,0.5,0.2))
surface2 = scene.visuals.SurfacePlot(x, y, tray2, shading='smooth', color='#289fd2')
view.add(surface)
view.add(surface2)
view.add(surface1)
canvas.show(run=True)
im = _screenshot((0, 0, canvas.size[0], canvas.size[1]))
io.imsave('vispy_screenshot.png', im)
return
即使我给出30度的滚动角,视图也不会旋转。但方位角、仰角和中心都能很好地工作
我在这里的主要目的是滚动摄影机,而不是滚动坦克来制作动画。(晃动研究)
你好,谢谢你的建议 我可以通过在vispy库中的_rotate_tr函数中添加一行来解决滚动问题 原始代码:
def _rotate_tr(self):
"""Rotate the transformation matrix based on camera parameters"""
up, forward, right = self._get_dim_vectors()
self.transform.rotate(self.elevation, -right)
self.transform.rotate(self.azimuth, up)
修改代码
def _rotate_tr(self):
"""Rotate the transformation matrix based on camera parameters"""
up, forward, right = self._get_dim_vectors()
self.transform.rotate(self.elevation, -right)
self.transform.rotate(self.azimuth, up)
self.transform.rotate(self.roll, -right) # New line added here
滚动角度为0度和180度的结果如下所示
有一点令人担忧的是,有人评论说,roll可能没有得到充分利用。很可能这些方法需要更新,但我对这台相机不是很熟悉。太棒了!你认为你可以为这个修复提出请求吗?嗨@djoese,我刚刚意识到另一个问题。我提到的解决方法并不是任意的:(。但是你给我的建议帮助我解决了我现有的问题。如果我找到了一个通用的解决方案,我会提出拉取请求。