[[FrontPage]] *概要 [#n8918d69] -OpenGLをUbuntu12.04で利用する方法 *Tutorial [#a3bcc2f7] -すべてコンパイルは以下のようにする g++ [filename].cpp -lglut -lGLU -lGL **display callback [#w1f1d3c9] -&ref(./display_callback.cpp); **keyboard callback [#c0fd238f] -&ref(./keyboard_callback.cpp); **mouse, motion callback, 視点の設定 [#p49f1260] -[[参考>http://www.wakayama-u.ac.jp/~wuhy/GSS/07.html http://www.wakayama-u.ac.jp/~wuhy/GSS/07.html]] -&ref(./keyboard_callback.cpp); **モデルビュー行列スタック [#xbac2a60] -[[参考>http://www.wakayama-u.ac.jp/~wuhy/GSS/07.html http://www.wakayama-u.ac.jp/~wuhy/GSS/07.html]] -&ref(./keyboard_callback.cpp); **アニメーション [#gdfd18fc] -&ref(./planet.cpp); **Texture [#b4a1bc63] -&ref(./tex_teapot.cpp); **BindTextureで複数のTextureを切り替え [#j1fdbd30] -&ref(./texbind.cpp); **画像のPixel単位 [#w0b591c1] -&ref(./pixel.cpp); *原理 [#q4f8cf4b] -作業座標系というものが存在する. -OpenGLにとってのベース座標系は,カメラ座標系である.これが「モデルビュー座標系」と言われている所以である.本当は分離しても良いが,数学的には全く同じように扱えるという意味. -OpenGLは,カメラから見た作業座標系への拡大回転行列Mを内部に保持している. -一方,ロボットなどベース座標系はカメラ座標系ではない,ロボットのベースを利用したい場合は,カメラから見たロボットベース座標系の拡大回転行列が必要である.これは,gluLookAtみたいな関数を使うことで,Mを計算可能である.Mは,ロボットベースリンクからカメラへの座標変換行列は直感的に計算可能で,これの逆行列を計算することによって求めていると考えれば理解しやすい.つまり,&mimetex($M=^C_X H = (^G_C H)^{-1} ^G_X H$);なので. -Mに右から拡大回転行列をかけることによって,カメラから見た任意の座標系への拡大回転行列を計算可能である.対応する関数は,glRotatef, glTranslatef, glMultMatrixd(もっとも一般的,これは列優先行列表記でEigen::Matrix4d::data()をそのまま突っ込めるので便利)など. -カメラの向きは,''z軸方向'',カメラからみたファインダの上方向がy軸正 |