第十二回講義スライド

第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