2018年10月12日金曜日

Blenderのカメラマップで背景動画の話(2)

前回は「プロジェクション」でのUV展開とUV投影モデファイアについて取り上げましたが
ここからは より実作業に使うものを紹介していきたいと思います

パーツ分け

パーツ分け前回の作業で作ったキャプチャーです


前後のがけの重なりがあるために
手前の岩が奥の岩壁に投影されてしまっているのが分かるでしょうか


こういう場合は元になる2Dの絵自体をパーツ分けしてしまうことにします
今回の分割した画像はこんな感じです。



手前側に当たるパーツに隠れていた部分を塗り足ししています

3D側でもこの画像と同じように個々のパーツに分割してしまって
別々の画像を割り当ててみます

まず 別のパーツにしたい部分を分割します


編集モードで分けたいメッシュを選択して Pキーを押すことで別形状にできます
分離で欠けてしまった部分のエッジを押し出しする等
分けた部分で隠れる部分のポリゴンも少し足しておきます

別オブジェクトに分離で分けたものは 元と同じマテリアルやモデファイアが設定された状態になっています

新しいマテリアルとテクスチャへの置き換え

パーツ分けしたオブジェクトのそれぞれのマテリアルを変更していきます

まず 一番奥の形状を選択してマテリアルタブの「+」のアイコンを押して新しいマテリアルを作成します
マテリアルを選択した状態で「+」のアイコンを押すと 設定を複製した設定がされます
同様に テクスチャタブも 設定を複製したテクスチャ設定を作成します



さらにテクスチャタブの画像パネル内の上側のフォルダアイコンを押して
一番奥にあたる画像ファイルを新しくシーンに読み込みます

透過部分ので設定

ここまではここまでは透過部分のない1枚絵でしたが
手前側に来るパーツのテクスチャ画像には透明な部分があるので
少しだけ設定が異なります

まず これまでと同様に新しいマテリアルを作成して
さらに「透過」にチェックを入れ 「アルファ」の値を0にします

テクスチャタブも新しいテクスチャを作成して
パーツに対応した画像を新しく読み込み
テクスチャタブの下の方にある「影響」パネルの「アルファ」のチェックをオンにします


3Dビューの表示をマテリアルにして確認するとテクスチャの透明度を元に透けているのが確認できます



下絵機能について

前回で触れた下絵機能ですが、
Blenderには複数の下絵を設定できるというメリットがあります
また、3Dのオブジェクトの手前側に下絵を表示したり 透明度を変更することもできます

後ろ側に表示する下絵だと、シェーデングやマテリアル表示でディテールを調整するのは難しいこともあるのですが、前表示だとメッシュに隠れる部分の調整もしやすいです

今回扱っているような複数のパーツに分けて作る場合
下絵画像で特定のパーツの色を変えたものを用意して下絵表示したり
指定のメモを手前に表示するのもいいでしょう

画像のアルファ部分は透過するので扱いやすいです

私は動画作成時に黒でトリミング枠のような画像を表示しています


コンポジット時のためのマージンを始めからつけつつ セーフエリア表示よりも、より仕上がりを意識したカメラワークがつけれるように感じます



カメラワークをつける


Blenderのレンダリングサイズの設定は1つのシーンに1つなので
同じシーンのままカメラワークをつけようと思うと
モデリング用と撮影用でカメラをいちいち切り替えることになります。

幸いBlenderには同じファイル内に複数のシーンを持つことができ、
他のシーンのデータを「背景」として読み込む機能があります

そこで 新しいシーンを作ってそちらでカメラワークをつけることとします

新しいシーンの作成

まず ウインドウ上部のSceneとなってる部分の横の「+」アイコンを押して新規シーンを作成します
いくつか種類が表示されますが引き継ぐ必要のある設定はないので「新規」を選択します


プロパティタブのシーンタブを表示すると
そこの上部に「背景」という項目があると思います 入力部分をクリックするとSceneという名前が表示されるので選択します

3Dビューにさっき作っていたシーンが表示されるかと思いますがどうでしょう。
表示はされたものの 選択しようとしても反応しませんね。 

今は新しく作ったシーンにカメラがないのでレンダリングはできませんが
この「背景」はレンダリングには元のシーンでの位置にあるようにレンダリングされます

「表示はできるけど操作はできない」という状態で
レイヤ設定は元のシーンと同じになるので表示非表示等の管理はレイヤで管理することになります


カメラの作成

さて、レンダリングできる状態にしたいのでカメラを作成します
普通にシーン内で新規作成してもいいのですが、
位置や回転のデータを利用するために プロジェクションに使ったカメラを複製して持ってきます

まず、元のシーンに移動してカメラを選択します。
アウトライナで目的のカメラを選択すると自動的にシーンも移動するのが楽です。

選択したカメラを複製します
この時カメラの位置等は移動させたくないのでShift+Dの後右クリックするといいでしょう
これを 撮影用のシーン利用できるようリンクします
複製したカメラがアクティブになっているはずなのでCtrl+Lでリンクメニューを表示して
「オブジェクトをシーンへ」の項目の中から撮影用のシーンの名前を選択します

アウトライナ上のモデリングのシーンと撮影用のシーン それぞれに同じ名前のカメラがあるのが確認できるでしょうか

ここで 撮影用のシーンに戻って プロパティのシーンタブのシーンのカメラに先ほど複製したカメラを設定します
(同一ファイル内にあるカメラが選択可能なので 複製したカメラをシーンにリンクさせる必要はないのですが
 移動等の操作をするためシーンにリンクする操作を挟んでいます)

これで撮影用のシーンでレンダリング可能な状態になりました

今回のように投影したものを撮影して出力したい場合
一度に撮る範囲は元画像の一部なため、カメラの画角の設定も違ってくるかと思います
元画像の中央部を切り抜いたようなようにするには 
現在のカメラの画角*元画像の長辺/撮影で出す画像の長辺
という風に式を入力するといいかと思います
カメラを奥行方向に移動させたい場合 移動(G)のあと"ZZ"と、Zのキーを連打することで移動方向をカメラの奥行き方向に制限できます

こうして作成したカメラに動きをつけることでこういったものが作れます
参考までにここまでのファイルをアップロードしておきます
https://www.dropbox.com/s/4gdg14ioecp8k5m/Projection_sample.zip?dl=0

2018年10月10日水曜日

Blenderのカメラマップで背景動画の話(1)

私は何年か Blenderで絵をカメラマップ(カメラプロジェクション)する関連の仕事をしていたのですが
少しまとめておいた方がいいかと思い立ち メイキング的なものを使って手法の解説をしてみます

カメラマップとは?

3D形状に対してカメラ方向から画像を貼り付けるする手法で
手描き背景のテイストを維持して立体的な動きをつけれるので 特にアニメで利用されます

Blenderにはカメラマップで動画を作ったりするのに便利な機能があります
こちらでは この画像を元にその機能について解説していきたいと思います。

下絵の読み込みとカメラ設定

Blenderではカメラビューに「下絵」となる画像を表示機能があります
この下絵となる画像を読み込んでカメラの設定を合わせます
はじめに 3Dビューのプロパティパネルを表示して 下絵の「画像を追加」ボタンを押し「開く」でファイル選択画面になるので画像を選択します

カメラビューで見ると 読み込んだ画像が半透明表示されるかと思います
カメラの縦横比はレンダリング設定で決まるので 設定の縦横の数値を読み込んだ画像と同じにします。


次に絵の中と3Dが 重なるようにカメラを調整します
基準になるような形状を作成してそれに合わせるようにするといいかと思います
今回は、地面にあたる部分に平面を配置して グリッド状にポリゴンを分割しています
3Dビューをポリゴン表示モードにして 下絵内の主要な線とポリゴンの線を合わせていきます

この時 下絵の中のキモになる部分が基準形状と重なるようにカメラを移動させたあとに
そこを基準にカメラを回転させるとよいと思います
3Dカーソルをその合わせた地点に移動させ その3Dカーソルをピボットポイントにして
カメラを回転移動させます 回転の時にXキーを押すなど回転軸の制限をするとやりやすいかと思います


因みに この操作を簡単にできる 画像中の目印になるものを線で指定してそれに合わせたカメラ設定をする BLAMというアドオンもあります


UV展開

UV展開とはポリゴンの”この面にテクスチャのこの部分を使う”と対応づけるための操作です
カメラマップではカメラ方向からの見た目を元に設定します

これにはいくつかの方法があります。
まずは他のサイトでも解説されている方法でやってみます

 
ビューをカメラビューにして エディットモードに入り Aキーを押して全ての面を選択した状態にして
U キーを押すか メニュのメッシュUV展開の項目を開き 「プロジェクション」を実行します


デフォルトではタイムラインが表示されている下側のビューを
UV/画像エディッタに変更して 下絵として読み込んだ画像を表示してみます
写真風のアイコンを押すことで シーンにリンクした(読み込んでいる)画像の一覧で選択できます
他のパネル等の画像選択部分でも同じ操作になるので覚えておいてください


カメラビューと同じ見た目でメッシュが表示された状態になるかと思います
(今回は細かい調整をしないためUVの操作の話は割愛します)

マテリアルの作成

平面にマテリアルとテクスチャを割り当てます
Blenderはマテリアル(色や透明の設定)>マテリアルに関係するテクスチャ設定 という順の設定になります

まずプロパティエディタのマテリアル タブを表示して「新規」で新しいマテリアルを作成します
テクスチャそのままの見た目にしたいので シェーディングの「陰影なし」のチェックを入れます


次にテクスチャタブに移って 「新規」で新しいテクスチャを作成して
タイプのプルダウンが「画像または動画」    画像のパネルで部分を読み込み済の下絵画像を指定
マッピングパネルの 座標を「UV」に  マップをUVMapに指定します 


ここで一旦レンダリングしてみました
設定がうまくいっていれば 元の画像によく似た見た目の画像が生成されると思います

3Dビューをマテリアル表示にして回転させるとこんな感じです


もしかしたら 元の画像に比べて少し歪んで見えるかもしれませんね
面の分割をさらに細かくし直して UV展開を再度実行することで 誤差が小さくなって歪みが改善しますがちょっと面倒です

また、このままだと平面1枚なので、3Dソフトを使うからには凹凸をつけて立体的にしたいところですが
面を編集してUV展開を何度も繰り返すことになるのでやはり面倒ですね
ここから別の手法を使った作業を紹介していきます


モデファイアを使う

Blenderにはモデファイアという 便利な編集機能があり 元のポリゴン等の設定を変更することなく変形をかけたりできます


まずは「追加」のプルダウンから「細分割曲面」を選択します
これはレンダリング時にポリゴンを細かく分割してなめらかな曲面になるように計算させる機能ですが
今回は カメラマップの誤差を少なくするために使うので
なめらかな曲線にはしないような「シンプル」のオプションを選択しておきます


UV投影
UV展開の「プロジェクション」と 同じことができる機能です
オレンジ色のキューブのアイコンのある部分で 投影の元になるカメラを指定して
変更対象のUVマップを選択して
そのままでは縦横比1:1になってしまうので 縦横で長い方の比率を指定します


Blenderは入力ボックスに数式を入力して指定できるので
XYで長い方の辺の入力ボックスに”長辺の長さ/短辺の長さ”と入力するといいかと思います
(因みにこの機能は今あるUVマップに対して作用するのでUVマップを指定していない状態だと機能しません)
投影の元になる形状を選択したことからも分かるように
UV投影のモデファイアは必ずしもレンダリングで使っているカメラである必要はありませんが
形状をカメラビューで確認することが多いためモデリング時にはシーンのアクティブカメラの状態にした方がいいかと思います

ここで3Dビューの表示方式をマテリアルにしてみます
カメラビューで適当に平面を動かしてみると カメラから見たテクスチャはの位置は変わらず形状だけ移動するかと思います

これで何ができるかというと 
カメラ以外の方向からもテクスチャの適応結果を見ながらモデリングができるのです

今回のものでは 谷間の淵に合わせてナイフツールでエッジを作成して谷の方に押し出してみてます
リアルタイムで調整できてる感じが分かるでしょうか

ここまででBlenderのカメラマップについて使用している機能について解説してきましたが
画像も多く長くなったので記事を分けたいと思います
Blenderのカメラマップで背景動画の話(2) に続く