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

昨日の続きです。今日はカメラの合わせ込みを行います。下図をご覧ください。左は手描きで描いたイラストであり、右がBlenderレンダリングした同じシーンです。両者の壁や立方体の位置はほぼ同じになるよう調整する必要があります。

f:id:reminica:20160226135115p:plainf:id:reminica:20160226135124p:plain

影を落とす上で重要なのは、影の投影先となる平面および影を作る要因となる物体の位置です。物体の位置は立方体で示すものとします。直方体でも良いのですが、立方体の方が辺の長さが1種類しかないので、管理がし易いと思います。立方体は一辺が40cm角となっています。これは描き手が決める必要があります。もちろん一般的なパイプ椅子や人体の大きさを勘案して不自然でない数値にしなければなりません。(デフォルメは人体パーツの大きさがリアルと異なるので注意です)

影の投影先となる平面は床面と左の壁になりますので、右や奥の壁は本当は要りません。雰囲気を出すために並べましたが、今後の解説では撤去します。

f:id:reminica:20160226140332p:plain

まずは2つの平面と立方体を配置します。壁の高さや廊下の幅は影を描く上で重要ではないので、適当に決めても問題ありません。ただし、立方体から壁までの距離は厳密な合わせが必要です。

なお、ここでは物体配置のルールとして、Y軸(緑軸)+方向(奥向き)がカメラの奥行方向になるものとします。配置ルール次第で、カメラの回転角パラメータの設定値が変わるので、注意すべきポイントです。

f:id:reminica:20160226153024p:plain

まずは平面図(空間を真上から見た図)を描きます。右図は左図の拡大図であり、どちらも同じものを表しています。(廊下の奥行や幅、ドアの幅は本当は必要のない情報です)

平面図上で絶対に必要な長さは立方体が40cm角であることと、立方体から壁までの距離が20cmであるということです。さらにカメラの位置と向きも知る必要があります。これらの図面は透視図を元に作成が可能ですので、最初に設定を作らずに描き始めた場合でも慌てなくて良いです。(通常はこんな厳密な設定なんて作らないと思うので)

f:id:reminica:20160226153038p:plain

さらに必要なのが側面図です。こちらはカメラ座標系で表現されており、視心(VC)と直交する方向から見た図です。立方体が2つの長方形で表されているのはそのような理由です。しかし、今回は側面図上の立方体は使いません。

ここで必要なのは、床に取った137.4cmという値と、アイレベルである128.7cmです。これらの求め方も後ほど説明します。

f:id:reminica:20160226152247p:plain

Blenderにおけるカメラの位置と向きについて説明します。上のSSは3D Viewのプロパティウィンドウ最上部に表示されるものです。(プロパティウィンドウは初期状態で非表示ですが、3D View上にマウスカーソルを置いた状態でNキーを押すと表示されます)

設定すべきパラメータは6つありますが、回転角Yは多くの場合0°でいけますので、実質は5つです。残り2つの回転角も簡単に解決できます。下図は透視図法によって3つの消失点とSP(カメラの位置)を作図したものです。図中のSPの角度が回転角Zを、SPvの角度が回転角Xを表します。(この図の作図法についてはパースフリークスー3点透視―画角の測り方を参照してください)

このうちSPvの角度である22°は俯角を表しており、Blenderで設定する場合は90°から引く必要があります。数学の用語では余角といいますが、とにかく90°-22°=68°が設定値になります。

またSPの角は82°ですが、この余角8°を設定することになります。ここは常に余角というわけではなく、平面図との関係で考える必要があります。VP2方向は廊下の奥行方向の消失点であり、3D上ではY軸+方向に相当します。これは、そのように物体を配置したからです。回転角Xを適用したあとの回転角ZはY軸+方向が0°になりますので、そこを基準として左右にどれだけ振れているかを考えることになります。今回の場合はVP2に対して、VCは8°左側にありますので、8°左に回転させることになります。

なお、回転の順序はデフォルトでXYZ Eulerとなっており、これはグローバル座標系において、X軸中心→Y軸中心→Z軸中心の順に回転させるという意味です。一般に3次元空間の回転は順番を変えると結果が変わりますので、この設定は重要です。

f:id:reminica:20160226141329p:plain

カメラの回転に関して補足しておきます。Blenderではすべての回転角を0°に設定したときカメラは真下を向く仕様となっています。(透視図法でいうところの俯瞰一点透視になります)

回転角XというのはX軸(赤軸)を中心とする回転を指しており、下図のように回転します。左図は回転前、右図は回転後です。68°回転させると、水平方向を基準としたとき22°斜め下を向いていることになります。オレンジの塗りつぶした三角形はカメラの上方向を示しています。

f:id:reminica:20160226144251p:plainf:id:reminica:20160226144255p:plain

回転角Zも見ておきましょう。Z軸(高さ方向)を中心の回転を指しますので、下図のように回転します。ここでは8°回転させています。

f:id:reminica:20160226144259p:plainf:id:reminica:20160226144302p:plain

通常の3点透視であれば、Xで仰俯角の余角を、Zで水平方向の角度を指定することになります。2点透視の場合はXを90°に設定し、 Zは3点透視と同じく水平方向の角度を設定します。1点透視の場合は、Xが90°、Zが0°になります。(いずれもYは0°)

f:id:reminica:20160226145924p:plain

回転角は解決しましたが、問題はカメラの座標です。実はこれも透視図から読み取ることができます。まずは、作図上の基準となる奥行を決める必要があります。ここでは立方体の手前かつ地面に接している頂点を選ぶことにしました。ここを基点と呼ぶことにします。PPは基点を通る奥行に配置し、今後は基点の奥行、つまりPP上に作図点を取ることにします。

まず基準となる長さを取っておきます。寸法的に信頼できるものは立方体の一辺しかありませんので、図のように点Xを取り、基点からXまでの距離を求めます。カメラは左方向に8°回転していますので、この長さは40cmをcos8°で割った値になります。すなわち

40 / cos8°≒40.4[cm]

となります。

基準が出来たので、あとは必要な長さを順次図っていきます。

No.線分長さ[cm]
0 基点―点X 40.4
1 基点―点A 11
2 点A―点B 67.9
3 点B―SPv 175.6

これらは透視図上の線分に物差しをあて、長さを測った上で、基準となる40.4cmと比較した比例計算になります。なぜなら、すべての作図点はPP上に取っているからです。ここで点B-SPvの長さは90°視円錐の半径であり、SPからPPまでの距離と一致します。

f:id:reminica:20160226153038p:plain

以上を踏まえると、側面図(再掲)を描くことができ、アイレベルである128.7cmと床面上での点Aからカメラまでの距離137.4cmは、やはり側面図上の実寸を使って比例計算で求めることができます。

ここまででカメラのZ座標は確定しました。なぜならZ座標はアイレベルと一致するからです。XとYは計算がもう少し必要です。

f:id:reminica:20160226153024p:plain

さらに平面図も再掲します。必要なのは図に示す赤い値ですが、これらは側面図で求めた137.4cmという値を書き入れると求めることができます。値は基点を基準としたカメラのX座標とY座標を表しています。これらの長さも平面図上の実寸に対する比例計算ですので、作図すれば簡単に求めることができます。

f:id:reminica:20160226152247p:plain

最終的なカメラパラメータ(再掲)は上記の通りです。基点の座標は(-0.275, 0, 0)となるようシーンを作成したため、この座標と相対座標(0.3,-1.345,1.287) [m]を加算した値がカメラの位置になります。

 

これでカメラの設定は終わりです。あとはレンダリングを行えば、最初に掲載した画像を得ることができます。

今日は計算が多めで大変な手順に見えたかもしれませんが、実際にやってみるとそれほどでもないです。ほとんどは作図だけで解決するので、電卓を叩くことはあまりありません。

さて、これで準備が半分ぐらい整いました。次回は光源の設定と影のシルエット作成を説明したいと思います。