2012-02-22 3 views
0

は、私はそれが次のコードでセンターの周りにオブジェクトを回転しようとしています:OpenGL ESの回転オブジェクト - 正しい順序で変換を適用しますか? iPhone

-(void)render 
{ 
// clear the matrix 
glPushMatrix(); 
glLoadIdentity(); 

// move to my position 

//scale 
glScalef(0.000015, 0.000015, 0.000015); 

xRotation =280.0; 
zRotation =1.0; 
yRotation +=0.5; 

glRotatef(xRotation, 1.0f, 0.0f, 0.0f); 
glRotatef(yRotation, 0.0f, 1.0, 0.0f); 
glRotatef(zRotation, 0.0f, 0.0f, 1.0f); 

[mesh render]; 

//restore the matrix 
glPopMatrix(); 

} 

このコードは正しく動作し、オブジェクトが中心の周りに回転します。問題は、matricesArrayというシーン内のオブジェクトの開始位置を定義する行列も持っていることです。私は、この行列を乗算し、その正しい開始位置にオブジェクトを配置するために自分のコードに新しい行を追加しました:

-(void)render 
{ 
// clear the matrix 
glPushMatrix(); 
glLoadIdentity(); 

// move to my position 

//xRotation = 280; 

//scale 
glScalef(0.000015, 0.000015, 0.000015); 

xRotation =280.0; 
zRotation =1.0; 
yRotation +=0.5; 

glRotatef(xRotation, 1.0f, 0.0f, 0.0f); 
glRotatef(yRotation, 0.0f, 1.0, 0.0f); 
glRotatef(zRotation, 0.0f, 0.0f, 1.0f); 

glMultMatrixf(matricesArray); //This is the line I have added to apply the matrix. 

[mesh render]; 

//restore the matrix 
glPopMatrix(); 


} 

問題は、オブジェクトが今、画面の周りの広い円形に回転していることです。

私の質問には、自分のコードにマトリックスを適用する正しい順序は何ですか?

ありがとうございます。

答えて

0

最初に回転して、必要な場所に移動する必要があります。

+0

?行列(matricesArray)には位置と回転のデータも含まれていますか? – GuybrushThreepwood

+0

glTranslatefの前にglRotatefする – ggfela

+0

まだ動作しません - 私はglmultmatrixコマンドが問題だと思います。 – GuybrushThreepwood

関連する問題