Blenderでカメラ位置合わせ(3点透視)
前回に引き続きカメラの位置合わせの説明です。今日は3点透視になります。
1.2Dイラストと3DCGの合成
昨日に引き続きパイプ椅子のシーンを使います。左が2Dのイラスト。真ん中が3DCG。そして右が両者を同じ比率でブレンドしたものです。(あくまでも同じ構図であることの説明用なだけで、この合成自体に意味はありません)
+=
2.分析
まずは何点透視であるかの分類から始めます。この絵の直交座標系の3軸は下図の通りであり、画面上で平行となっている軸はひとつもなく、すべての軸が消失点を持つことが確認できます。消失点が3つであることから、3点透視図であることが判明します。
消失点が遠くにあるため、全体図は絵に対してかなり大きくなります。3点透視図の作図理論はかなり難しいので、さらっと説明するのは困難です。詳細はパースフリークスの3点透視の章で説明していますので、そちらをご覧ください。
3.Empty画像による下絵の表示
Blenderの操作説明に入ります。途中までは2点透視図と同じ手順となりますので、駆け足で説明します。まずはEmptyオブジェクトの表示形式をImageにして生成し、上図の画像ファイルを開きます。その後、Emptyオブジェクトの回転角を90°に設定し、3DカーソルのZ座標をアイレベルに設定、さらにEmptyオブジェクトの表示倍率と原点位置を調整します。不透明度は必要に応じて変えてください。
2点透視図のときと同じく、3Dカーソル位置に点が重なるよう合わせますが、合わせる点は視心ではなく、水平線上の0°消失点(下図参照)になります。この点は視心(またはVP3から)から水平線に対して下した垂線の足になります。
4.カメラの位置合わせ
カメラ位置を合わせるため、画像を回転させますが、その準備としてピボットを3Dカーソルに変更します。3Dカーソルは0°消失点に置かれているものとします。今後、特に断りのない限り、すべての回転と拡大縮小は0°消失点を中心としますので、3Dカーソルは動かさないようにしてください。
Emptyオブジェクトを選択状態にして、Sキーを押したあとマウス操作でサイズを変更します。絵の描かれている領域の一番下が平面Z=0(表示上はX軸の赤いライン)と重なるよう画像サイズを調整します。(前回も説明しましたが、この手順は必須ではありません)
次にカメラを移動させます。カメラを選択したあと、Shift-Sキーを押してSnapメニューを表示し、Selection to Cursorを選びます。これでカメラが0°消失点の位置まで移動します。その後、カメラのTransformパラメータで回転角(Rotation)をX=90°、Y=0、Z=0に設定します。さらにカメラの緑のハンドルをドラッグしてSPと重なる位置まで移動させます。
次にEmptyとCameraの両方を選択状態にしたあと、キーボードでRZと入力してZ軸回りの回転モードに入ります。SPから2つの消失点VP1、VP2に向かう直線がグリッドと平行になるまで回転させてください。回転角を数値入力したい場合は、∠VC-SP-VP2を分度器で測り、その値を入力してください。(下左図)
次にEmptyオブジェクトのみを選択し、キーボードでRXX90と入力して、ローカル座標のX軸回りに90°回転させます。Xは2回押すことに注意してください。(下右図)
5.仰俯角相当の回転
これまでの手順は2点透視図とほぼ同じでしたが、ここからが3点透視図専用の工程になります。2点透視と3点透視の違いは、カメラが水平方向に対して傾きを持っているか否かにあります。この回転角のことを仰角または俯角といい、両者を総称して仰俯角といいます。
現時点でカメラは水平方向を向いていますが、VP3が水平線よりも下にあるときは下を、上にあるときは上を向く必要があります。いずれの場合もVP3はカメラの真下または真上に発生しますので、Top Viewで両者が重なれば適切な位置にいることになります。
では具体的な手順に入りましょう。まず準備としてテンキーの7を押してViewをTopに切り替えてください。また画面左上の表示がPerspになっている場合はテンキーの5を押してOrthoに変更してください。最終的にTop Orthoの表示になっていればOKです。
RXXでローカルX軸回りの回転モードに入ります。ここでもXは2回押すことに注意してください。回転量はマウスで調整します。マウスカーソルを左から右へ向かうようにドラッグすれば、画像が手前側に回転します。
カメラとVP3がぴったり重なったところで左クリックで回転を確定させてください。この角度を数値入力したい場合は、∠0°消失点―SPv-VCを分度器で測り、その値を負数で入力してください。この例では約22度ですので、-22と入力します。
このままでは画像を回転させただけですので、この回転角をカメラにも適用します。まずEmptyオブジェクトを選択したまま、3D ViewウィンドウのプロパティシェルフTransformパネルでRotation Xの値をコピーします。具体的には下図の赤枠内にマウスカーソルを乗せCtrl+Cキーを押して下さい。(カーソルは乗せるだけでOKです)
次にCameraを選択し、同じくTransformパネルの同じ項目内にマウスカーソルを乗せ、Ctrl+Vを押してください。これで90°であった角度が仰俯角の適用された角度に変更されます。
以上で3点透視図におけるカメラの設定は終わりです。
最終的にカメラは下図のようになり、Emptyオブジェクトと角度パラメータが同じであることから、必ず画像と正対します。
6.検証
画像に対するカメラの位置と向きが正しいかどうかを検証しておきましょう。
まず3D View左上の表示を確認してください。Perspになっている場合はテンキーの5を押してOrthoに変更してください。続けてテンキーの1を押してFrontに変更します。このとき、カメラとVP2がピッタリと重なっていればOKです。このビューだとちょっと分かりにくいのですが、カメラの上の方に黒い小さな丸が表示されています。これと消失点の位置が重なっていればOKになります。
同様にテンキーの3と7をそれぞれ押して、残り2つの消失点とカメラがぴったり重なることを確認してください。最後にShiftキーを押しながらテンキーの7を押して、カメラと視心(VC)がぴったり重なることを確認すれば検証工程は完了です。
7.画角の設定
カメラの画角に関しては用途に応じて自由に設定すれば良いのですが、ここでは絵の画角とぴったり合わせる方法について説明します。今回の例では3D View内の赤い枠が絵の描かれている領域になりますので、この範囲がぴったりレンダリング対象となる設定を作ることを目指します。
まず最初にやることは出力される画像のサイズを決めることです。Propertyウィンドウのレンダリング設定(一番左のカメラのアイコン)を開いてください。
その中にDimensionsというパネルがありますので、ResolutionのXとYに画像サイズを設定します。仮に元々の絵の画像サイズが1215×1181ピクセルであったとすると、一番簡単なのはずばりその値をそのまま設定することです。実際に出力されるサイズはその下のパーセンテージを掛けた値になります。50%指定の場合は半分のサイズで出力されることになります。
実際には縦横比さえ合わせておけば、XとYの値は自由に決めてもらって構いません。設定が終わると3D Viewは下図のようになり、絵の領域(この例では赤い枠)とレンダリング対象領域(オレンジの枠)は同じ縦横比となります。両者のサイズはまだ合っていません。
サイズを合わせるにはカメラの画角を調整する必要があります。Propertyウィンドウのカメラ設定を開いてください。左から7番目のアイコンになりますが、Outlinerウィンドウ等で事前にカメラを選択しておかないと、アイコン自体が現れないので注意してください。
Lensパネルで画角の値を増減させオレンジの枠が絵の領域(この例では赤い枠)とぴったり重なるように調整します。ここで視心が絵の領域のジャスト中央にある場合は画角の調整だけで済みますが、視心がセンターから少しでもずれている場合は、加えてシフト量も調整する必要があります。ShiftXを増減させると枠が左右に移動し、ShiftYを増減させると上下に移動します。
シフト量について少し補足しておきます。普通のカメラで撮影した写真は、トリミングしていない限り視心は常に写真の中央にあります。よって(トリミングされていない)写真を使って本手順を実行する場合は、シフト量は調整する必要がありません。
しかし世の中にはシフトレンズというものが存在し、このレンズを使って撮影した写真は視心が中央に来ません。(それどころか写真枠の外側に視心が出てしまう可能性すらあります)
このような特殊なレンズを使って撮られた写真の場合は、シフト量を調整する必要があります。逆にいうと、シフト量に値を入れるとシフトレンズで撮影したような画像が作れるということです。
絵の場合は視心が完全に中央に来ることは稀であり、多くの場合シフト量の調整が必要です。上の絵は私が意図的に視心を中央に置いて描いたため、シフトのない理想的な状態となっていますが、通常はこのようなことはあまりありません。
8.画角の検証
せっかくSPvが作図してあるので、画角の検証もしておきましょう。SPvは広く使われている記号ではなく、私が勝手に作ったものですが、空間全体を側面から見た図を描いたときのカメラの位置のことです。このSPvは90°視円錐の縁に必ず乗るという性質があります。
そこで画角を90°まで広げてみます。まずCameraパネルでHorizontalを選択してください。デフォルトではAutoになっており、これは水平視野と垂直視野のうちより広い方を基準にするという意味です。ここでは確実に水平画角を指定したいので、Horizontalを選びます。(Resolution設定が横長または正方形の場合はAutoでも問題ありません)
この状態でPropertyウィンドウのカメラ設定をField of Viewにし、左側のボックスに90を入力すれば、水平画角が90°になります。3D Viewのオレンジの枠の端がSPvと重なっていれば画角の検証はOKです。
Horizontalの設定に関する補足です。Horizontalを選択した状態で、画角を90°に設定すると、水平画角が90°になり、垂直画角はレンダー設定のResolutionの縦横比に依存する画角になります。これに対し、Verticalで画角を90°に設定すると、垂直画角が90°になり、水平画角はResolution依存の値になります。Autoの場合は、Resolution設定が横長のときはHorizontalと等価であり、縦長のときはVerticalと等価になります。初期設定ではResolutionは1920x1080であるため、横長です。この状態でのAutoはHorizontalと同じ意味になります。
とりあえずメインである1~3点透視図のカメラ位置合わせについては説明が終わりましたが、まだ説明しきれていない細々としたことを後日書くかもしれません。