OpenGL で図形を回転させてみよう

前回の記事 OpenGL を利用して立方体を描こう! では、 せっかく OpenGL で図形を書いたものの、 3D らしからぬ出来栄えでした。

これはどうしてでしょうか?
3D のグラフィックならばもっとカッコイイ図形が簡単に描けるのではないではなかったのでしょうか。

なぜこんなことになったのか、順を追って考えていきましょう。

見る角度によって違う

前回作成した結果はこんな図形でした。

座標

確かに立方体を描くということで、四角っぽくなっているのはわかりますが、「これは 3次元グラフィックすですよ」 といわれても、 ちょっと困るような図ですよね。

これはなぜかというとまず第一には、前もちょっと描きましたが、見る角度によって見え方が違うからです。立方体を真正面からみれば、正方形になりますよね。

そこで、立方体を回転させてみましょう。

Renderer の onDrawFrame に glRotatef を追加します。これはどの軸回りにどれだけ回転するか指定できます。 y 軸の回りに 30 度だけ回転させるためには、gl.glRotatef(30f, 0, 1, 0) とします。

  @Override
  public void onDrawFrame(GL10 gl) {
    
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
    
    gl.glMatrixMode(GL10.GL_MODELVIEW);
    gl.glLoadIdentity();
    gl.glTranslatef(0, 0, -3f);
    
    gl.glRotatef(30f, 0, 1, 0);
    //gl.glRotatef(30f, 1, 0, 0);
    ...

この結果、次のようになります。

OpenGL 物体の回転

x 軸回りに 30 度回転させるなら gl.glRotatef(30f, 1, 0, 0) で、次の結果を得ます。

OpenGL 物体の回転

x軸まわり、y軸まわり両方の回転を行うと、斜めからみたような形になります。

OpenGL 物体の回転

真っ白なので分かりにくいですが、なんとなく立方体だなぁ、とわかりますよね?

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Android 開発入門