1

重複の可能性:
OpenGlおよびタッチスクリーン機能を使用して視覚的に正しい回転

触れながら指を動かしているのと同じ方向に回転させたい立方体があります。現在のタッチの動きを取得し、それらの値を使用して立方体を回転させる方法は知っていますが、それは私が望んでいることではありません。

これは私が現在使用しているものです:

    case MotionEvent.ACTION_DOWN:
        mx = me.getX();
        my = me.getY();
        break;
    case MotionEvent.ACTION_MOVE:
        x_diff = mx - me.getX();
        y_diff = my - me.getY();
        mx = me.getX();
        my = me.getY();
        this.rot_x -= y_diff;
        this.rot_y -= x_diff;
        break;

回転:

gl.glRotatef(rot_x, 1, 0, 0);
gl.glRotatef(rot_y, 0, 1, 0);
gl.glRotatef(rot_z, 0, 0, 1);
4

2 に答える 2

3

私は解決策を見つけました。それを行う正しい方法は、ArcBallローテーションを実装することでした。

NeHe OpenGLチュートリアル: http: //nehe.gamedev.net/tutorial/arcball_rotation/19003/
Javaポート:http ://www.java-tips.org/other-api-tips/jogl/arcball-rotation-nehe-tutorial -jogl-port.html

于 2012-07-15T16:02:08.067 に答える
0

現在の実装に満足していないことを指定していませんが、1つのアイデアは、VelocityTrackerを使用し、タッチ速度に基づいてキューブに3次元速度を割り当ててから、キューブを作成することです。指の動きを止めると、ゆっくりと減速して停止状態に戻ります。それは相互作用をより自然な感じにするでしょう。

于 2012-07-14T17:36:19.973 に答える