1

Vispy を使用して立方体を 3 次元 (ロール、ピッチ、ヨー) で回転するにはどうすればよいですか?

ここに 2 次元で立方体を回転させる例がありますが、3 次元で回転するように拡張する方法がわかりません。

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

しかし、それは 3 番目の次元が 2 番目の次元を複製するように見えるだけです。私は何を間違っていますか?

4

1 に答える 1

0

ガンマ、シータ、ファイを増やす代わりに、同じコードを実行しますが、3 つの変数のうちの 1 つだけを増やします。3 つの変数のそれぞれについて繰り返します。実際、新しいコードで一度に 3 つの異なる次元で回転していることがわかります。たぶん、あなたが思っていたようには見えませんか?それとも、立方体の視点からは変わると思っていたのに、実際にはカメラの視点から座標変換を行っているのでしょうか?

また、シーン キューブの例から始めるのがより簡単な場合もあります: https://github.com/vispy/vispy/blob/master/examples/basics/scene/cube.py。下位レベルの OpenGL API レイヤーを実際に理解しようとしている場合を除きます。

于 2016-10-27T21:04:09.687 に答える