2016-10-25 2 views
0

Vispy를 사용하여 큐브를 3 차원 (롤, 피치, 요)으로 어떻게 회전합니까?Vispy를 사용하여 3 차원에서 큐브를 회전하는 방법

큐브를 두 치수로 회전하는 예가 here이지만 세 번째 차원에서 회전하는 방법을 잘 모르겠습니다.

on_timer() 메서드를 수정해야한다고 생각합니다. 나는에서 변경 시도 :

def on_timer(self, event): 
    self.gamma += .5 
    self.theta += .5 
    self.phi += .5 
    self.model = np.dot(
     rotate(self.gamma, (1, 0, 0)), 
     np.dot(rotate(self.theta, (0, 1, 0)), 
         rotate(self.phi, (0, 0, 1))), 
    ) 
    self.program['u_model'] = self.model 
    self.update() 

만 세 번째 차원은 두 번째를 복제 할 것 같다 :

def on_timer(self, event): 
    self.theta += .5 
    self.phi += .5 
    self.model = np.dot(rotate(self.theta, (0, 1, 0)), 
         rotate(self.phi, (0, 0, 1))) 
    self.program['u_model'] = self.model 
    self.update() 

에. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

0

감마, 세타 및 파이를 늘리는 대신 동일한 코드를 실행하지만 세 변수 중 하나만 늘립니다. 세 변수 각각에 대해 반복하십시오. 사실, 새로운 코드를 사용하여 한 번에 세 가지 다른 차원으로 회전하고 있습니다. 네가 생각했던 것처럼 보이지 않는 것일까? 아니면 큐브의 관점에서 바뀔 것이라고 생각 했겠지만 사실 카메라의 관점에서 좌표 변환을 수행하고 있습니까?

더 쉬운 출발점은 scene cube example: https://github.com/vispy/vispy/blob/master/examples/basics/scene/cube.py 일 것입니다. 실제로는 하위 레벨 OpenGL API 계층을 이해하려고하지 않는 한.