見出し画像

こうしす!メイキング: Blenderで3Dと手描き背景と組み合わせる

アニメ「こうしす!」メイキングです。

※アニメ「こうしす!」とは――

さて、今回から3Dを背景作画に積極的に使っていこうということでBlenderを用いた3Dレンダリングを試行錯誤しています。この試行錯誤の成果として、ノウハウを共有したいと思います。

今回は上記の動画のようにカメラの位置は固定とし、横に振るだけの場面です。Blenderを使用して、3Dと手描き背景を合成する方法についてご紹介したいと思います。

(Blenderの基本的な操作方法を理解している前提で一部のステップは省略しています)

なお、今回は3DモデリングをPiT様に、背景作画を廣田智亮様に依頼し、その後の魔改造とアニメーション設定を筆者、井二かけるが行いました。

3Dで撮影する理由

通常一般的なセルアニメでは、「PAN」というと大判作画した背景やセル画を撮影台(現代ではAEなどの撮影ソフト)上でスライドさせるという操作になります。遠近感を出す時は、密着引きという手法で、重ねたセル(レイヤー)ごとにスライドさせる速度を変更して撮影します。

しかし、3Dと組み合わせる場合、単純な構図であれば良いのですが、冒頭の動画のような動きを実現しようとすると相当複雑になります。したがって、無理矢理2Dアニメの世界に押し込むよりも3Dの世界で頑張ったほうがシンプルです。

これがこの場面を3Dで撮影することにした理由です。

大まかな流れ

1. 正距円筒図法で背景の下絵をレンダリングする
2. 1を元に背景を手描き作画する
3. 2で作画した背景をWorldテクスチャに設定する
4. 2で作画した背景のうち3Dオブジェクトより手前に来るものをSphereのテクスチャに設定する

1. 正距円筒図法で背景の下絵をレンダリングする

正距円筒図法は地球儀を世界地図に展開したような画像のことをいいます。これを用いると一枚の画像に上下左右360度を一枚の画像に収めることができます。例えば以下のような画像です。

正距円筒図法の画像の何がうれしいかというと、この画像が球体のテクスチャとして貼り付けやすいということです。それができればストリートビュー的なことができます。最近では360度パノラマ画像(全天球写真)などでも使用されています。

Blenderの場合、Cycles Renderのみがこの正距円筒図法に対応しています。

今回はレンダリングエンジンにBlender Renderを使用するのですが、このステップだけは、レンダリングエンジンをCycles Renderに変更ます。

その上で、Cameraの設定でLensにPanoramicを選択し、TypeにEquirectangularを選択します。

注:Blender RenderやEEVEEでは、この選択肢を選ぶことができません。今回はレンダリング速度の都合上Blender Render(次期バージョン2.8で廃止予定)を使用したため、あくまでも下絵を出力するためにCyclesを使用します。

次にカメラの設定です。

カメラの位置は最終的に撮影する位置と同じ位置とします。

カメラの角度は、傾いているとあとで補正が大変ですから、きっちりとまっすぐにしておきます。3DビューでNキーを押して、Transformパネルからカメラの角度を設定します。Yは0度、他は90度の倍数とします。

そして、レンダリング設定です。

画像サイズは6000x3000のように横:縦=2:1となるようにします。理由は、横が球の一周、縦が半周分のみがレンダリングされるためです。

ちなみに、最終出力したときにカメラに写る部分がだいたい1920x1080に近くなるようにするために、今回は最終的に作成するテクスチャのサイズを12000x6000とする必要がありました。

しかし今はあくまでも下絵用ですから、レンダリング時は6000x3000で書き出し、後にレタッチソフトで拡大して使用しました。それが最初の画像です。


2. 1を元に背景を手描き作画する

今回はカメラワークで映る範囲のみを手描きで作画することにしました。

カメラワークで映る範囲は手探りで探しました。赤枠の部分が映る範囲です。

慣れれば正距円筒図法のままで作画することも可能かも知れません。しかし、今回はこれを試すのが初めてであり、作画するのも自分ではありません。そこで、以前にRICOH THETA Sで撮影した画像を加工して参考資料とすることにしました。

そして、作画していただいた結果がこちらです。

ありがたいことに、手前の茂みの部分はレイヤーが分かれています。

3. 2で作画した背景をWorldテクスチャに設定する

Worldのテクスチャを設定します。実はこの設定はCyclesのほうが簡単なのですが、今回はレンダリング速度優先のためBlender Renderを使用します。

まず、Worldの設定を開きます。

ここでは何もしません。

次に、テクスチャ設定を開き、Newボタンをクリックします。

注:World設定を開いた直後にテクスチャ設定を開かなければ、Worldのテクスチャ設定が開かないということに注意して下さい。例えば、マテリアルの設定を開いてからテクスチャの設定を開くとマテリアルのテクスチャの設定が開きます。(BlenderのUIの思想はよくわかりませんが、そういう仕様なので仕方ありません)

次にテクスチャ画像を設定します。

画像が設定されたら、そのまま下にスクロールし、Mappingの設定を行います。

CoodinatesにEquirectangularを選択、Infuruence欄のBlendのチェックを外し、Horizoにチェックを入れます。

World設定を再び開き、Real Skyにチェックを入れます。

これで試しにレンダリングしてみます。

線路、架線柱、列車は3Dオブジェクトで、背景は手描き作画です。このままカメラを回転させても背景はちゃんと追従します。

このように、3Dと手描きを組み合わせてレンダリングすることができました。

しかし、手前の茂みの部分が線路の下敷きになってしまい不自然な感じです。手前の茂みもレンダリングしたい……ということで、これをどうすれば良いかは次の節で紹介します。

4. 2で作画した背景のうち3Dオブジェクトより手前に来るものをSphereのテクスチャに設定する

結論から言うと以下のような流れになります。

1.茂みの部分だけ透過pngかPSD形式で透明度付きで書き出す
2.Sphereをカメラと同じ位置に置く
3.1の画像をSphereのテクスチャに設定する

これが茂みの画像素材です。
(ここでは透過していませんが、実際は背景が透過している画像です)

まず、カメラと全く同じ位置にUV Sphereを追加します。

ここで、必ず、Tキーで表示されるパネルで「Generate UVs」のチェックをONにします。この操作は後にテクスチャを貼り付けるための準備です。この操作はこのタイミングでしか行えませんので、注意して下さい。

カメラの位置と一致させるには、Nキーで表示されるパネルを使用することもできますが、微妙にずれてしまいます。そのため、今回はPython Consoleで以下のコマンドを実行しました。(もっと良い方法はあるかもしれません)

bpy.data.objects["Sphere"].location =  bpy.data.objects["Camera"].location

次に、Sphereのマテリアルを設定します。

Sphereを選択し、マテリアル設定を開きます。
ここで、Newボタンをクリックします。


すると、マテリアルが作成されます。

さらに下にスクロールし、マテリアルの詳細を設定していきます。

Shading欄ではShadelessのチェックをONにします。
次にTransparencyのチェックをONにし、Z Transparencyが選択されていることを確認します。そして、Alphaの値を「0.000」にセットします。

Shadow欄のReceive、CastのチェックをOFFにします。これは影を受けるか、投影するかの設定です。このSphereはあくまでも手前の茂みを表示するために使用するため、影は不要です。

次に、テクスチャの設定を行います。
テクスチャの設定を開き、「New」をクリックします。

そして、茂みの画像を指定します。

そして、UVMapを指定します。Mapping欄のMapに「UVMap」を指定して下さい。(これが先ほど「Generate UVs」で生成されたUVMapです)

そして、Infuluence欄でAlphaのチェックをONにしてください。

次に、UVマップを確認します。

Shpereを選択し、タブキーでEditモードに入ります。
UV/Imageエディタを開きます。

そして、茂みのテクスチャ画像を開きます。

表示モードがTextureになっているとテクスチャが貼られた状態を画面上で見ることができます。

さて、一見上手く表示されていますが、実はこれは逆方向です。球体の内側から見て正しい方向にテクスチャを貼るためには、UVマップを水平反転させなければなりません。これは以下の手順で行います。

まず、UV/Image エディタパネルでUVsメニューから「Constrain to Image Bounds」にチェックを入れます。これは画像境界からメッシュがはみ出ないようにするために必要な手順です。

次に、Aキーを押して全ての頂点を選択します。

次に、Sキー、Xキーを順番に押し、「-1」と入力し、Enterを押します。
(それぞれのキーは押しっぱなしにはせず、一回一回手を離して下さい)

これでUVマップが水平反転しました。

それではレンダリングしてみましょう。

手前の茂みの部分も上手く合成されました。

最後に

この後、ライティング、テクスチャの様々な微調整を行い見栄えを整える作業、アニメーションの設定作業を行いました。


最終的な成果物(Blenderファイル、テクスチャファイル等)は以下にて公開しております。


クラウドファンディング実施中!2019年4月末まで

今回の3Dのモデリング、背景作成の依頼の費用を含め、クラウドファンディングにてご支援を募集しております。この記事がもしお役に立ちましたら、ぜひご支援のほどよろしくお願いいたします。