OpenGL初心者でもわかるグラフ描画の猫の手
OpenGL初心者でもわかるグラフ描画の猫の手
これまで、Matlabを使って解析をしているが、そろそろオープンソースを使っておかないと今後Matlabを使えなくなったときに手がつけきれなくなると思いPythonを使って数値計算をできるように心がけている。
先日ウェーブレット解析をしてみようと、Pythonを使って進めていた。
グラフの表示にはPyQtGraph
しかし、全然進まない。
アルゴリズムの実装段階(理解段階)においては計算途中のデータを可視化しながら進める必要がある。
Matlabであればその都度グラフを表示するのだが、使いなれていないPyQtGraphだと、PyQtGraphの使い方も調べなければいけないし、アルゴリズムのミスも見つけなければいけないとかなり手間がかかってややこしくなった。結局PyQtの描画周辺の理解が浅いことと、アルゴリズムの実装とを別で考えなければ行けないことが身にしみてわかった。できるつもりになっていた自分が恥ずかしい。その反省もふまえまずは、グラフィック系の基礎勉強をする事にする。それで選んだのがOpenGL。OpenGLならプラットフォームや言語に左右されることなく使えるし、今後の技術として学んでおきたいところ。Pythonで動かすにはPyOpenGLというライブラリがあるのでPyQtと平行して使う事にする。
事前調査
OpenGLとは
OpenGL(オープンジーエル、Open Graphics Library)は、Khronosグループが策定しているグラフィックスハードウェアのアプリケーションプログラミングインタフェース (API)。2次元・3次元コンピュータグラフィックス両方が扱える。オープン仕様として公開され、幅広い処理系に対応しているため、広く一般に普及している。グラフィックデバイスとの直接通信を行なう抽象化レイヤーAPIであるため、非常に高速に動作し、高精度な3D画像を描画できる。有償・無償の豊富な補助ライブラリがあるのも特色として挙げられる。http://ja.wikipedia.org/wiki/OpenGL
GL,GLU,GLUTとは
pyqtのサンプルを調べていると、GL,GLU,GLUTとインポートしているのを見受けられるので調べると。どうも拡張ライブラリみたいだ。ここら辺はチュートリアルを回しながらわかってくるだろう。
補助・拡張ライブラリ
OpenGLそのものは、ハードウェアに近い低次のライブラリである。そのため、よりソフトウェアに近い、多くの高次の補助・拡張ライブラリが存在する。主に、3D描画機能を簡易化・拡張するもの、ウインドウシステムをサポートするもの、グラフィックス面以外の機能を付加するものに分けられる。
- GLU - カメラや球、円筒、曲面などの取り扱いを補助する
- GLUT - クロスプラットフォームのOpenGL対応ウィジェット・ツールキット http://ja.wikipedia.org/wiki/OpenGL
参考サイト
PyOpenGL本家
http://pyopengl.sourceforge.net/documentation/index.html
Python Programming in PyOpenGl (PDF, 英語)
手取り足取り教えてくれる
http://www.math.uiuc.edu/~gfrancis/illimath/StanBlank/PyOpenGL.pdf
2D graphics rendering tutorial with PyOpenGL
http://cyrille.rossant.net/2d-graphics-rendering-tutorial-with-pyopengl/
とりあえずサンプルをまねしてみる。
なにごともまずは半歩踏み出さないと行けない。参考記事ばっかり眺めてても一生わからない。
# ogl1.py from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * def draw(): glClear(GL_COLOR_BUFFER_BIT) glutWireTeapot(0.5) glFlush() glutInit(sys.argv) glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB) glutInitWindowSize(250,250) glutInitWindowPosition(100,100) glutCreateWindow("My Second OGL Program") glutDisplayFunc(draw) glutMainLoop()
結果。ティーポットがでてきた。
- 作者: 林武文,加藤清敬
- 出版社/メーカー: コロナ社
- 発売日: 2003/04
- メディア: 単行本
- 購入: 3人 クリック: 38回
- この商品を含むブログ (13件) を見る
GLUTによるOpenGL入門―「OpenGL Utility Toolkit」で簡単3Dプログラミング! (I・O BOOKS)
- 作者: 床井浩平
- 出版社/メーカー: 工学社
- 発売日: 2005/05
- メディア: 単行本
- 購入: 7人 クリック: 66回
- この商品を含むブログ (17件) を見る
入門ゲームプログラミング (Professional Game Developerシリーズ)
- 作者: チャールズ・ケリー,Charles Kelly,株式会社ぷれす
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2014/01/30
- メディア: 大型本
- この商品を含むブログ (2件) を見る
- 作者: Fletcher Dunn,Ian Parberry,松田晃一
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/10/04
- メディア: 大型本
- 購入: 21人 クリック: 141回
- この商品を含むブログ (42件) を見る
- 発売日: 2016/09/13
- メディア: Amazonビデオ
- この商品を含むブログを見る
理系が恋に落ちたので証明してみた。(1) (メテオCOMICS)
- 作者: 山本アリフレッド
- 出版社/メーカー: ほるぷ出版
- 発売日: 2016/11/10
- メディア: コミック
- この商品を含むブログを見る
- 作者: 原泰久
- 出版社/メーカー: 集英社
- 発売日: 2016/10/19
- メディア: コミック
- この商品を含むブログ (2件) を見る