第12回目 の応用、povray基礎 OpenGL 152 シミュレーションへの応用 はそもそもHCIとして利用されてきたが、 動画にするとシミュレーションの道具としても使える。 OpenGL 微分方程式の数値解法 オイラー法 10.3 式 はコンピュータにより 容易に数値計算をすることが ルンゲクッタ法 出来る。 解のグラフィックス表示(パラメータを とした 動画表示) t 153 振り子モデルのシミュレーション ソースコード c10-1.cをダウンロードし、これを 振り子モデルにしてみよ。 154 1 レイトレーシングの原理 光源から発せられた光を忠実に追跡すれば 写実的な画像が得られる。 •光線は無数に存在する。 •光源から発せられた光の大部分は視野外に到達する。 視点から視線方向に光を追跡する。 光源へ 実習は授業の後半に povrayを用いて行う 155 レイトレーシングのアルゴリズム 空間内に視点とスクリーンとを定義する。 各画素について •レイ(視点から画素を貫く)を仮定する。 •レイと物体との交点を求める。 •交点がなければ背景色を用いる。 •交点があれば可視点を定める。 可視点 画素 再帰的な構造を持ったアルゴリズム。 •3D • 156 可視点の輝度計算 可視点 視点の光線分類 >光源からの光が直接可視点で反射したもの >他の物体からの光が可視点で反射したもの >屈折した光が放射されるもの 光源から (1) (2) (3) 3種類の光を全て計算する 必要がある。 直接光が届かなければ影の 面となる。 157 2 レイトレーシングにおける光学現象 反射光:拡散反射と鏡面反射(正反射方向)を考える。 屈折光:正屈折方向のみを考える。 光源(直接) 再帰的な構造 他物体(反射) 入力 v 屈折 レイトレーシングについては授業の最終課題としてpovrayを 用いて学習する。 158 povrayについて 正式には POV-ray: Persistence of Vision Raytracer GNU GPLに準拠した無料のソフトウェア のようなインタラクティブな使い方はできない。 OpenGL Scene File povray 独自の OpenGLの 形式のテキスト Viewing Pipeline ファイル に相当 povray 2 次元画像ファイル png形式 bmp形式 画像閲覧ソフトで表示 159 povrayの学習 の形式を学ぶ 球、直方体、円錐、平面など primitiveの定義法 ビューイングパラメータ設定法 カメラパラメータの設定 幾何学変換法 アフィン変換 Scene File 指定法、view volume指定法、affine変換適用法 primitive 160 3 povrayの提供するprimitive と同程度のprimitiveが用意されている。授業では5個 学習する。 glut ボックス(box) 球(sphere) 円柱(cylinder) コーン(cone) トーラス(torus) 円盤(disc) 超2次曲面(superellipsoid) 3角形(triangle) スムーズ3角形(smooth_triangle) 多角形(polygon) メッシュ(mesh) メッシュ2(mesh2) 簡易回転体(sor) (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) 回転体(lathe) 角柱(prism) 球スイープ(sphere_sweep) ハイト・フィールド(height_field) ブロブ(blob) フラクタル(julia_fractal) 3次元テキスト(text) 無限平面(plane) 2次曲面(quadric) 3次曲面(cubic) 4次曲面(quartic) 高次曲面(poly) ベジエ曲面(bicubic_patch) 161 primitiveの定義 名称 { 幾何情報 [座標変換情報] [属性情報] では幾何学変換情報は の定義の中に含める。 primitive Povray primitive } 直方体の「手前の左下」と「奥の右上」 色属性としてyellowを指定 単位は であり、具体的な縮尺を意識する必要は無い。 box { <0,0,0> , <2,2,3> pigment{color Yellow} } unit のためのパラメータ値はcolors.incの中で定義されている。162 Yellow 基本primitive 球の位置と半径 色属性として sphere { <0,0,0> , 1 pigment{color Green} } cylinder { <0,0,0>, <0,3,0>, 2 pigment{color Blue} } green を指定 円柱の二つの中心座標と半径 163 4 基本primitive(続き) 円錐の二つの中心、上面の半径を 以外にすると円錐台になる。 cone { <0,0,0>, 2, <0,6,0>, 0 pigment {color Orange} 0 } 平面の法線ベクトルと原点からの距離 plane { <0,1,0>, 1 pogment{checker color Gray color Orange} } 属性にチェッカー模様を用いた。 164 povrayのviewing と同じく、カメラの 各種パラメータを決定すればviewvolume が定まる。 通常は、 OpenGL location<x1,y1,z1> look_at<x2,y2,z2> の二つを指定すればよい。 165 光源の指定 light_source { < color [ ] [ ] } 光源の位置座標> 光源の明るさと色 光源の種類 属性情報 点光源の例 light_source { <0,5,0> color White } スポットライトの例 light_source{ <0,5,0> color White spotlight point_at <0,0,1> radiusまでは radius 5 一様、falloff falloff 45 まではtightness tightness 20 に応じて減衰 } 166 5 最小限のプログラム カメラ位置の指定 --- 実質的にビューボリュームの指定 プリミティブの記述 光源の設定 ---- レイトレーシングの基本的設定 必要に応じてヘッダファイルの指定 #include “colors.inc” 本授業では, colors.inc textures.inc, metals.inc, woods.incを用いる。概要 はHP参照のこと。 167 povray実習の準備 実習は Microsoft Windows環境で行う。 各自で http://www.povray.org から povrayをD/L しインストールする。 現時点では Pov-ray3.6 povrayファイルの拡張子を .povとすればPov-rayが 認識する。 povray 168 povray体験 シーンファイル 2sphere.povをダウンロードし、次のように 実行する。 この処理によりシーンファイルが povray 2sphere.pov レイトレーシング処理され、画像 出力ファイル(png形式)が生成される。 これはLinuxの場合であり、windowsでは2sphere.povを double clickすれば画像を表示する。 球の位置、色、カメラの位置などのパラメータを変更して みよ。 169 6 モデリング では面を基礎として3Dグラフィックスを 構築していた。 B-repモデリング OpenGL Surface model Solid model ではCSG(Constructive Solid Geometry)を 用いる。 集合演算が可能である。 Povray 170 CSG演算 複数物体の結合 物体から他の一つの物体の「引き算」 複数物体の共通領域 により生成された物体の内部境界を取り除く 文法 演算名 { 立体定義 A 立体定義 B . [座標変換情報] [属性情報] union: difference: intersection: merge: union } 171 CGS実習 シーンファイル 2sphere.povを修正し、 (1)二つの球が重なるようにしてみよ。 (2)重なった球にunion, differenceを適用して みよ。 (3)intersection, mergeを適用してみよ。 union{ unionの例: sphere{<0,0,0>… 視点の位置を変更 } して観察すること。 sphere{… } } 172 7
© Copyright 2024