Blenderとシルエットで描く人物の影

前々回のエントリ「透視図法による影の描き方」ではPhotoshopと影のシルエットを使って、透視図法的に正確な影を描く方法を説明しました。しかし床に落ちる影を扱わなかったため、不自然な見た目になった感が否めません。そこで今日は床と壁にまたがる影を描きたいと思います。使用するソフトはPhotoshopではなく、Blenderという3DCGソフトになります。

f:id:reminica:20160225194146p:plain

上の絵の人物とパイプ椅子の影はBlenderで描いたものです。それをPhotoshopで合成して、一枚の絵として仕上げました。3DCGを使ったとは言っても、モデリング(物体の3次元形状を作ること)をしたわけではありません。パイプ椅子はともかく、人物のモデリングは難易度が高く、1枚絵の影のために作るのはコスト的に割に合いません。

今回も前回と同じくシルエットを使っています。この手法の売りは、単なる平面の絵にすぎないシルエットを使って、正確な影を落とせることです。簡単に原理を説明しましょう。

f:id:reminica:20160225195300p:plain

下図は物体によって落ちる影を模式的に表したものです。オレンジの矢印は太陽光線です。光線が物体によって遮られた空間には影ができます。上は球体による影。そして下は同じ半径を持つ円形の板による影です。(真横から見ているため直線に見えていますが、円のつもりで描いています)

f:id:reminica:20160225195528p:plain

2次元的な表現なので、影の形状が的確に表せてはいませんが、両者はどちらも同じ大きさの円形の影を作ります。球は円に対して厚みを持っていますが、光線の方向に対する厚みは影の形状には影響を及ぼしません。このあと具体例を出して説明しますが、光源視点において、ある物体Aを同じ輪郭を持つ物体Bに置き換えても、影の形状が変わらないという性質があります。(ここでは光の反射による複雑な影の計算は考えないものとします)

簡単な例を示します。下図は立方体によってできる影です。壁があるため、L字型に折れ曲がっています。

f:id:reminica:20160225200838p:plain

ここで視点を変えてみましょう。同じ立方体を別のカメラを使ってレンダリングしました。影がないことが気になるかもしれませんが、影を描かない設定にしたわけではありません。単にこの視点からは影が見えないだけです。

f:id:reminica:20160225201335p:plain

この現象はカメラの位置によって説明が付きます。この例において、カメラは光源と同じ位置に配置しています。3DCGだからこそ可能な技と言えます。なぜ影が見えないかというと、影は光源と物体を結ぶ直線上に発生するからです。光源から見ると、影の手前には影を作る要因となる物体が必ず存在するため、影が見えないのです。

この現象を確認するために、3DCGならではの方法を使います。Blenderには「物体は描かないがその影は描く」という機能が載っていますので、これを使います。結果は下図の通りとなります。

f:id:reminica:20160225202224p:plain

奇妙に見えるかもしれませんが、物体と完全に同じ輪郭をした影が形成されていることが確認できます。この影も壁を境にL字に曲がっているのですが、この視点からは直線に見えます。

さて、面白いのはここからです。先に述べた通り、影の形は光源から見た物体の輪郭形状によって決定します。上の影は平面図形として捉えれば、単なる六角形にすぎません。そこで立方体の代わりに六角形の板を配置して、その影の形状を確認してみます。

f:id:reminica:20160225202519p:plainf:id:reminica:20160225200838p:plain

比較のため、立方体の影も再掲します。面白い結果になりましたね。両者の影は完全に同じものになりました。

f:id:reminica:20160225202942p:plain

人の影を描く際も同じ原理を利用しようというわけです。上の絵は人物とパイプ椅子のシルエットです。一見すると立体的に見えますが、これも平面の板に描かれたものです。

f:id:reminica:20160225203106p:plain

別視点から見ると、(ちょっと分かりにくいかもですが)平面図形であることが分かります。手前の少し淡い色の部分がシルエット、そして濃い部分が影です。こんな張りぼてでも、できる影は本物と同じというのが面白いところです。

 

長くなるので今日はここまでにしたいと思います。Blenderを使った実際の作業手順は次回以降で説明します。