interiorで透明なオブジェクトの屈折などを表現する


ガラスの玉などを通して向こう側の景色を見ると,景色が歪んで見えます。これはガラスの玉が光を屈折するからです。POV-Rayでは,interiorというキーワードでこの屈折を表現できます。

透明なオブジェクトでなければいけませんので,interiorを使って屈折率を指定する前に,pigment{ }内で「rgbf <1, 0, 0, 0.9>」「rgbt <1, 0, 0, 0.9>」などとして,オブジェクトを透明にしておくことがまず必要です。

オブジェクトを単に透明にしただけだと,下のような画像になります。

texture{
	pigment {
		rgbf <1, 0.8, 0.8, 0.95>
	}
}

これは屈折率が設定されていない状態です。ほんの少し屈折させてみましょう。すると次の画像のようになります。

texture{
	pigment {
		rgbf <1, 0.8, 0.8, 0.95>
	}
}
interior {
	ior 1.01
}

球体の向こう側のチェック模様がゆがんだのが分かると思います。このように屈折させるには,interior{ }の中で「ior」を使って設定してやります。iorの後には屈折率を指定します。

屈折率は物質によって決まっています。例えば真空状態では1.0,大気は厳密には1.0004(だそうです),水は1.33です。デフォルト(指定しない場合)は1.0になっています。これは屈折しない状態です。そのため,透明にしただけだと,このページの最初の画像のようになるのです。

水の屈折率1.33を指定してやると,次のような画像になります。

texture{
	pigment {
		rgbf <1, 0.8, 0.8, 0.95>
	}
}
interior {
	ior 1.33
}

interior{ }を記述する場所に注意してください

上の例でも分かるように,interior{ }はtexture{ }の外に記述します。下の例のようにmaterial{ }内に記述してまとめることはできます。

material{
	texture{
		pigment {
			rgbf <1, 0.8, 0.8, 0.95>
		}
	}
	interior {
		ior 1.33
	}
}

戻る