2016-10-25 7 views
0

Как использовать Vispy для поворота куба в трех измерениях (рулон, шаг, рыскание)?Как использовать Vispy для поворота куба в трех измерениях

Существует пример поворота куба в двух измерениях here, но я не уверен, как его можно повернуть в третьем измерении.

Я думаю, мне нужно изменить метод on_timer(). Я попытался изменить его от:

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() 

к:

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() 

но, кажется, только, чтобы сделать третий размер дублировать второй. Что я делаю не так?

ответ

0

Вместо увеличения гаммы, тета и фи, запускайте один и тот же код, но только увеличивайте одну из трех переменных. Повторите для каждой из трех переменных. Вы увидите, что вы фактически вращаетесь в трех разных измерениях одновременно с новым кодом; может быть, это просто не похоже, что ты думаешь? Или, может быть, вы думали, что это изменится с точки зрения куба, но на самом деле это делает преобразование координат с точки зрения камеры?

Кроме того, более легкое стартовое место может быть от scene cube example: https://github.com/vispy/vispy/blob/master/examples/basics/scene/cube.py. Если вы на самом деле не хотите понять уровень API OpenGL более низкого уровня.

 Смежные вопросы

  • Нет связанных вопросов^_^