2

軸の向きを変更せずに、2 つの軸を中心にオブジェクトを回転させる方法を見つけるのに本当に苦労しています。最初にX軸を中心に、次にY軸を中心にローカル回転のみが必要です(例にすぎません。座標系全体を変換せずに、オブジェクトのみを変換する必要はありません)。問題は、X軸の周りにglRotatefを使用している場合、軸も回転し、それが望ましくないことです。私はそれについてたくさんの記事を書いてきましたが、まだ何かが欠けているようです. いつも助けてくれてありがとう。

ここにいくつかのサンプルコードを用意するには、次のようなものです

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(rotX, 1.0f, 0.0f, 0.0f);
glRotatef(rotY, 0.0f, 1.0f, 0.0f);
drawObject();

しかし、これは座標系も変換します。

4

2 に答える 2

1

グローバルマトリックスを作成します。回転するときに、xAngleとyAngleをマトリックスに追加します。

Matrix.rotateM(matrix, 0, xAngleADD, matrix[1], matrix[5], matrix[9]);
Matrix.rotateM(matrix, 0, yAngleADD, matrix[0], matrix[4], matrix[8]);
gl.glMultMatrixf(matrix, 0);
于 2012-01-13T14:58:49.143 に答える
0

オブジェクトを描画した後、おそらくモデル ビュー マトリックスを復元する必要があります。これは、OpenGL の組み込みマトリックス スタックを使用して行うことができます。一般的なパターンは次のようになります。

// Set up global coordinate system:
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// ... add world and view transformations here ...

// Draw your object:
glPushMatrix(); // save the current matrix on the stack
glRotatef(rotX, 1.0f, 0.0f, 0.0f);
glRotatef(rotY, 0.0f, 1.0f, 0.0f);
drawObject();
glPopMatrix(); // restore the previously saved matrix

// Repeat the above for other objects
于 2010-05-24T17:31:07.600 に答える