Android+OpenGL勉強会#1.1 に参加しました

OpenGLとか触ったこと無いけど3Dとか楽しそう!けど参考書買っても積み本にならないかなー・・っていう微妙な僕がOpenGLの勉強会に参加してきました。そのメモなどを。

実は(っていうほど隠してないですが)、僕はコンピューターグラフィックスの専門学校を卒業しています。だから3Dには前々から興味があったのですが、色々と勉強するタイミングがなく、OpenGLに関しての情報収集もほとんどしてませんでした。

そこでちょうどよい勉強会があったので参加させていただきました。

以下はAndroidアプリでOpenGLを使うときに利用するクラス達のざっくりMemoです。

  • Activity
  • GLSurfaceView
  • Renderer
  • xyz座標を持った自前クラスにGL10を引数にしたdraw()メソッド(MyLine,MyBox...)
  • だいたいこんな感じです。たぶん。だいたい。

    それぞれの繋ぎの部分だけ抽出(あ、そのままじゃ動きませんので・・)

    [java]

    Activity.setContentView(new GLSurfaceView(this));

    [/java]

    [java]

    GLSurfaceView.setRenderer(new Renderer());

    [/java]

    [java]

    // 毎フレームの描画で呼ばれます

    Renderer.onDrawFrame(GL10 gl){}

    // Surfaceに変化があったとき(landscape→portrait変更時など)に 呼ばれます

    Renderer.onSurfaceChanged(GL10 gl, int width, int height){}

    // 初期化時に呼ばれます

    Render.onSurfaceCreated(GL10 gl, EGLConfig config){}

    [/java]

    Render.onDrawFrame(GL10 gl)でMyLineやらMyBoxやらのdraw()を呼び出して描画してあげます。

    最終的には gl.glDrawArrays() が描画命令。その前に描画する内容を書いていきます。

    OpenGLのソースを見て思ったのが、CGツール(僕の学校はMAYAを使ってました)を分解した元の機能がそのまま使える感じだなー、と。MAYAがどうなのかは知らないけど、OpenGLGUI化したら3DCGツールが出来ました。って感じで。まあきっとそうなんだろうけど。

    オブジェクトの回転/移動、カメラの向き/角度、ライティングの色/角度など、どれも考え方はCGツールで3DCGを作る場合とだいたい一緒だ。OpenGLの細かい仕様や基本的な技術は素人なのでまったく分からないけど、「OpenGLってこんな感じで使うんだよ」ってことをなんとなーく理解できたつもり。

    今回の勉強会はすごく有意義で次回もあったら行きたいなと思いました。

    あと資料が最高にわかりやすかったです。

    でもとっかかりはつかめたので参考書買って独学でもちょっとは出来そうな気も。

    まあ結局のところ、OpenGLを勉強して「何」が作れるか、またOpenGLを使って「何」が作りたいか、もうちょっと深堀りしないと充実して学ぶことができなそう。なのでもうちょっと色々考えてみる。

    僕的にはきっかけが重要!

    です。目的がないと頑張れません(キリッ

    でも、こんな時は大きな本屋に行って参考書漁ると目的が見つかったりするので本屋さんに行きたいです。てか大きな本屋さんの隣に住みたいです。あとゲーム脳が欲しいです。

    Android+OpenGL勉強会#1.1

    今週は金曜日CROSS、土曜日はAndroidUIセミナーとイベントいっぱいです。