EQQ.jp

Index


POV-Ray

POV-Ray(Persistence of Vision Raytracer) は、レイトレーシング(ray tracing) を主な手段として利用するコンピュータグラフィックス(Computer Graphics : CG)を作成するソフトウェアです。
テキストベースの定義ファイルでコンピュータグラフィックスを生成する点に特徴があります。

cf. http://www.povray.org/

 

POV-Ray デモCG作成

簡単なコンピュータグラフィックスを作成してみましょう。

以下のソースを元に、CGを作成するとガラスのような透明感のある画像が作成されます。

$ povray demo.pov

設定内容としては、一般的な CG で設定するように、カメラの位置と向き、光源を設定し、平面と立方体を配置し、それぞれに模様や質感などの物性を設定します。
カラーや質感などは、既に用意されているものをインクルードファイルで読み込んで利用しました。

 

#include	"colors.inc"
#include	"glass.inc"

camera { location <14,4,7> look_at <0,3,0> }

light_source { <10,10,10> color White }

plane { y, 0
	pigment { brick color Gray50, color IndianRed }
}

box { <0,0,0>, <5,5,5>
	texture {
		pigment	{ Col_Glass_Dark_Green }
		finish	{ F_Glass1 }
	}
}

 

とても簡単に CG の作成が行えます。

 

POV-Ray demo

 

 

プリズムのシミュレーション

普通のレイトレースでは、カメラの画素からの光の経路をトレースするのですが、POV-Ray では、光源からの光の経路をトレースできるようです。

すると、透明な物体を置けばプリズムのように光を分光する CG が作成できそうなのでトライしてみました。

以下に、ソースを示します。

#version	3.7;

global_settings {
	assumed_gamma	1
	max_trace_level	5
	photons {
		spacing	0.02
		count	1000000
		max_trace_level	9
		media	100, 2
	}
}

camera {
	location	<0, 20, 0>
	sky			<0,  0, 1>
	right		x*image_width/image_height
	look_at		<0,  0, 0>
	angle		20
}

light_source {
				<0, 20, 0>,
	color rgb 0.25
	photons { refraction off reflection off }
	media_interaction off
}

light_source {
				<-200, 0.5, 0>,
	color rgb	2
	spotlight
	radius		0.2
	falloff		0.2
	point_at	<0, 0.5, 0>
	photons	{ refraction on reflection on }
}

box	{ <-4, 0,-3>, <4, 1, 3>
	hollow
	texture	{ pigment { color rgbf 1 } }
	interior {
		media {
			scattering { 1, color rgb 1 extinction 0 }
			method		3
			intervals	10
			samples		10, 10
		}
	}
	photons	{ target }
}

difference {
	box {<-3.1, -1, -3>, < -3, 2, 3> }
	box { <-3.2, 0.2, -0.025>, < -2.9, 0.8, 0.025> }
}

prism {
	linear_sweep
	linear_spline
	0, 1,
	4, <-1, 0>, <0, 1.732>, <1, 0>, <-1, 0>
	texture {
		pigment	{ color rgb 1 filter 0.9 }
		finish	{ ambient 0.05 diffuse 0 reflection 0 roughness 0.001 }
	}
	interior {
		ior	1.5
		dispersion	1.1
		dispersion_samples	100
		media {
			scattering { 1, color rgb 1 extinction 0 }
			method		3
			intervals	10
			samples		10, 10
		}
	}
	photons { target reflection	no refraction yes }
	rotate	y*10
	translate <-1, 0, -1.2>
}

 

CG を作成すると、光源からスリットを通した光が、プリズムによって分光されているように見えます。

 

POV-Ray prism simulation

 

結構きれいにできました。

上述ソースの以下の部分を

rotate y*10

以下の様に変更し、

translate <0, 0, -0.577>
rotate  y*120*clock
translate <0, 0,  0.577>

コマ撮りを実行して、

$ povray +W320 +H240 +KFF50 +FN prism.pov

連続で表示すると、

$ convert -delay 10 prism*.png prism.gif

アニメーションが作成できます。

 

POV-Ray prism animation