OpenGLライブラリを用い た3次元フラクタルの描画 2012年3月16日 福永研究室 坂上慎一 目 次 1.OpenGLの概要 2.フラクタルとは・・・ 3.OpenGLへのフラクタルの実装 4.まとめ 1.OpenGLの概要(1/3) 主に3次元CGの機能を 実装するのに用いる。 OS非保存のマルチプラットホーム対 応で、科学技術における可視化や産 業分野のCADシステムに利用されて いる。 CADシステムとは・・・ コンピューターによる設計支 援ツール 1.OpenGLの概要(2/3) ~特長~ 3次元CGの高度な描画機能を有する。 簡潔で分かりやすいコマンド体系を有する。 標準C/C++言語の初歩的な知識のみでプログラミン グが可能である。 1.OpenGLの概要(3/3) 以下の3つのライブラリを用いる OpenGLライブラリ(OpenGL) 点・線・などの描画、色の制御といった基本的 な描画機能を備えている。 OpenGLユーティリティライブラ リ(GLU) アプリケーション開発に便利な機能を提供す る。簡易な投影変換設定、高度なテクスチャ 処理などのコマンドを有する。 GLUTライブラリ(GLUT) ウィンドウ管理、入力イベント処理、球体・円 柱などの基本立体、OpenGLやGLUを組み 合わせた高度な描画を行う。 ※OpenGLには描画機能し かなく、ウィンドウ制御 やイベント処理などは OSやウィンドウシステ ムに依存する。GLUTを 併せて利用する事で汎 用性の高いアプリケー ション開発が可能。 OpenGLライブラリ(OpenGL)を用いてるところ glColor3f(1.01.01.0); glBegin(GL_LINES); glVertex3f(x1,y1,z1); glVertex3f(x2,y2,z2); glVertex3f(x1,y1,z1); glVertex3f(x3,y3,z3); glVertex3f(x1,y1,z1); glVertex3f(x4,y4,z4); glVertex3f(x2,y2,z2); glVertex3f(x3,y3,z3); glVertex3f(x2,y2,z2); glVertex3f(x4,y4,z4); glVertex3f(x3,y3,z3); glVertex3f(x4,y4,z4); glEnd(); glColor3f(R,G,B) 描画する図形の色の指定 glBegin(図形のタイプ) 図形定義の開始 glVertex3f(x、y、z) 頂点の設定 glEnd() 図形定義の終了 OpenGLユーティリティライブラリ(GLU)を用い ているところ gluPerspective(120.0,1.0,1.0,1000.0); //透視投影 3次元物体をスクリーン座標系に映す方法のひとつ。私たちの視覚系 と同様に遠近感が得られるため、現実に近い画像生成ができる。 gluLookAt(ViewPointX+leftright,ViewPointY,ViewPointZ+updown, 0.0+leftright,0.0,0.0+updown , 0.0,0.0,Z); 始点位置と視点方向を表している。視点のx、y、z座標と目標のx、y、 z座標とウィンドウに表示される画像の上の方向を示すベクトルとして 設定する。 GLUTライブラリ(GLUT)を用いているところ glutInitWindowPosition(0,0); ウィンドウの左上を(0,0)にする。 glutInitWindowSize(500, 500); ウィンドウサイズを500*500に設定する。 glutInitDisplayMode(GLUT_RGBA); 色の指定にRGBAモードを用いる。 glutMouseFunc(mouse); glutKeyboardFunc(keyboard); マウス入力、キーボード入力のコールバック関数 2.フラクタルとは・・・(1/3) フランスの数学者ブノワ・マン デルブロが導入した幾何学 の概念。図形の部分と全体 が自己相似になっている。 自己相似とは・・・ 図形において、あ る図形の断片を 取ってきたとき、そ れより小さな断片 の形状と図形全体 の形状とが相似で ある場合を指す。 2.フラクタルとは・・・ (2/3) ~フラクタルの一例~ マンデルブロー集合 シェルピンスキー曲線 2.フラクタルとは・・・ (3/3) ~今回描画したフラクタル図形~ シェルピンスキーのギャスケット 【手順】 1.1辺の長さ1の正三角形の各辺の中点を結ぶと中心部に長さ1/2の正三 角形ができる。 2.この長さ1/2の正三角形を切り取る。これによって長さ1/2の正三角形が3 個残る。 3.さらにこれら3つの正三角形の各辺の中点を結んで長さ1/4の正三角形 が9個残る。 4.同様に手順を繰り返すと、n回目には長さ(1/2)^nの正三角形を切り取り、 長さ(1/2)^nの正三角形が3^n個残る。 今回これを3次元で描画した。 3.OpenGLへのフラクタルの実装(1/2) } 再帰処理 } 正四面体の 描画 3.OpenGLへのフラクタルの実装(2/2) ~キーボード操作~ ↑:視点を上に回転 →:視点を右に回転 w:上方向に平行移動 z:下方向に平行移動 p:縮小 l:拡大 k: 1ステップ進む ↓:視点を下に回転 ←:視点を左に回転 s:右方向に平行移動 a:左方向に平行移動 i:1ステップ戻る 4.まとめと今後の展望 当研究室で行っている画像解析のテスト用の アニメーションをOpenGLで作れるのでは・・・ 最後のまとめとしてプログラムの実演
© Copyright 2024 ExpyDoc