第 9 章 アニメーション 92
9.7 カメラによるアニメーション
9.7 カメラによるアニメーション
9.7.1 この節について
これまでは、物体が移動したり変形したり回転したりするアニメーションの作り方について説 明してきたわけですが、この節では、物体の側の変化によるアニメーションではなく、カメラの 側が変化することによるアニメーションの作り方について説明したいと思います。
9.7.2 カメラが移動するアニメーション
clockから求めた数値を位置として指定されたカメラは、レンダリングのたびに少しずつ移動
することになります。ですから、そのシーンから動画を作れば、カメラが移動するアニメーショ ンができることになります。
次のシーンは、原点に向けたカメラのx座標を−4から4まで変化させています。
シーンの例 transcamera.pov camera {
location <clock*8-4, 2, -3>
look_at 0 angle 70 }
light_source { <-5, 4, -5> color rgb 1.2 } light_source { <5, 4, -5> color rgb 1.2 } object {
box { <-1, -1, -1>, <1, 1, 1> } pigment { color rgb 1 }
}
このシーンを48フレームでレンダリングして、作成されたフレームから24fpsで動画を作成 してみてください。
9.7.3 方向を固定したカメラの移動
先ほどのシーンは、常に原点を向くように方向を変化させながらカメラを移動させたわけです が、場合によっては、方向を固定したままカメラを移動させたい、ということもあります。その ような場合は、カメラの記述の中に移動の記述を書いて、clockから求めた数値を移動先として 指定します。
次のシーンは、先ほどと同じように、カメラのx座標を−4から4まで変化させるのですが、
カメラは、方向を固定したまま移動します。
シーンの例 transcamera2.pov camera {
location <0, 2, -3>
look_at 0 angle 70
translate <clock*8-4, 0, 0>
}
light_source { <-5, 4, -5> color rgb 1.2 } light_source { <5, 4, -5> color rgb 1.2 } object {
box { <-1, -1, -1>, <1, 1, 1> } pigment { color rgb 1 }
}
このシーンを48フレームでレンダリングして、作成されたフレームから24fpsで動画を作成 してみてください。
9.7.4 カメラが回転するアニメーション
物体と同じように、カメラも、その記述の中に回転の記述を書くことによって、回転させるこ とができます。
カメラを作る記述の中に回転の記述を書いて、clockから求めた数値を回転角として指定する と、カメラは、レンダリングのたびに少しずつ回転することになります。ですから、そのシーン から動画を作れば、カメラが回転するアニメーションができることになります。
次のシーンは、部屋の中に置かれたカメラを360度回転させます。
シーンの例 rotatecamera.pov camera {
location <0, -1, 0>
look_at <0, -1, 1>
angle 70
rotate clock*360*y }
light_source { <0, -3, 0> color rgb 1.6 } difference {
sphere { 0, 30 }
box { <-20, -5, -15>, <20, 5, 15> }
pigment { checker color rgb 1, color rgb <0, 1, 0> } }
このシーンを48フレームでレンダリングして、作成されたフレームから24fpsで動画を作成 してみてください。
9.7.5 ズームインとズームアウト
カメラの焦点距離を少しずつ長くすること、言い換えれば、カメラの視野の角度を少しずつ狭 くすることを、(被写体に)「ズームインする」(zoom in)と言います。逆に、カメラの焦点距離を 少しずつ短くすること、言い換えれば、カメラの視野の角度を少しずつ広くすることを、(被写 体から)「ズームアウトする」(zoom out)と言います。
clockから求めた数値を、カメラの視野の角度として指定すると、カメラは、レンダリングの
たびに視野の角度が変化することになります。ですから、そのシーンから動画を作れば、被写体 にズームインしたり、被写体からズームアウトしたりするアニメーションができることになり ます。
次のシーンは、カメラの視野の角度を70度から3度まで変化させます。
シーンの例 zoomin.pov camera {
location <30, 20, -50>
look_at 0
angle clock*-67+70 }
light_source { <3, 4, -5> color rgb 1.6 } object {
box { <-1, -1, -1>, <1, 1, 1> } pigment { color rgb 1 }
}
このシーンを48フレームでレンダリングして、作成されたフレームから24fpsで動画を作成 してみてください。
第 10 章 光源の奥義
10.1 平行光源
10.1.1 さまざまな光源
POV-Rayでは、光源の記述をシーンの中に書かないと、ほとんど真っ黒な画像が生成される
ことになります。ですから、これまでに紹介してきたすべてのシーンには、光源の記述が書かれ ています。
10.1. 平行光源 101 これまでのシーンに書かれていた光源の記述は、すべて、「点光源」(point light)と呼ばれる 光源を作るものです。点光源というのは、特定の一点に存在していて、すべての方向に同じ強さ の光を出す光源のことです。
POV-Rayで扱うことのできる光源は、点光源だけではありません。そのほかにも、次のよう
な光源を扱うことができます。
• 平行光源(parallel light)
• 面光源(area light)
• スポットライト(spot light)
10.1.2 平行光源の基礎
四方八方に光を振りまくのではなくて、特定の方向にのみ光を出す光源は、「平行光源」(parallel light)と呼ばれます。
太陽の光をPOV-Rayで表現したい場合、点光源を太陽の位置に置いてもかまわないわけです が、太陽は、地球から見て十分に遠いところにありますので、平行光源で代用することも可能 です。
10.1.3 平行光源の記述
平行光源は、
light_source { 開始位置 色の記述 parallel
point_at 終了位置 }
という記述を書くことによって作ることができます。この中の「開始位置」と「終了位置」のそ れぞれには、3次元ベクトルを書きます。そうすると、開始位置から終了位置に向かって光を出 す光源が作られます。たとえば、
light_source {
<0, 10, 0>
color rgb 1.6 parallel
point_at <0, 0, 0>
}
という記述を書くことによって、真上から真下に向かって光を出す平行光源を作ることができ ます。
次のシーンは、真上から真下に向かって光を出す平行光源を作っています。
シーンの例 parallel.pov camera {
location <0, 10, -5>
look_at <0, 1, 0>
angle 70 }
light_source {
<0, 10, 0>
color rgb 1.6 parallel
point_at <0, 0, 0>
}
object {
plane { y, 0 }
pigment { checker color rgb 1, color rgb <0, 1, 0> } }
object {
sphere { <0, 5, 0>, 1 } pigment { color rgb 1 } }
終了位置をいろいろと変更してレンダリングしてみましょう。