社内にBlenderチームを結成し、デモ映像の制作を通じて日々検証を行なっているグリオグルーヴ。本連載では、3ds Max歴25年からBlenderを使い始めた同社のCGディレクター横田義生氏が、自身の経験からBlenderを始めたい人に向けたTIPSを紹介していく。
TEXT_横田義生 / Yoshio Yokota(Griot Groove)
EDIT_三村ゆにこ / Uniko Mimura(@UNIKO_LITTLE)
Infomation
『DEEP HUNTER』
グリオグルーヴBlenderチームによる、Blenderで制作を完結させることを目標としたCGアニメーション作品のパイロットムービー。本連載では、この映像の制作を通してBlenderの基礎を解説していく
はじめに
今回から数回にわけて、レンダリングに関する説明をしていきます。
Blenderにはレンダリングエンジンとして、高速なリアルタイムレンダラEeveeとPhysicalベースのレンダラCyclesの2種類が用意されています(正確にはWorkbenchというレガシーなレンダラも用意されているのですが、滅多に使用することはないでしょう)。レンダリングの処理方法もEeveeに関してはGPUのみですが、CyclesはCPU、GPU、GPU+CPUと自分のPCのスペックに合わせて選択することができます。
『DEEP HUNTER』は、筆者にとってもBlenderを使用した初めてのムービー制作であったため、使い慣れた3Dツールと同じ感覚で使用できるCyclesを使って、全てのレンダリングを行いました。Cyclesを使用したもう1つの理由として、『DEEP HUNTER』のルックを表現するために、View Layerプロパティで出力されるレンダリング要素を使用して、コンポジットツールで画づくりをするためです。
最新バージョンのBlenderのEeveeでは、多くのレンダリング要素の出力が可能となっているようなので、いずれEeveeを使用した作品づくりも行なっていきたいと思っています。今回はCyclesの使用を前提として、RenderプロパティとOutputプロパティのレンダリングに関する基本的な設定項目の説明をしていきます。
制作環境
Blender 2.83.2(Portable版)
OS:Windows 10
CPU:Intel Core i7-9700K
メモリ:32GB
GPU:NVIDIA GeForce RTX 2080 SUPER
<1>Renderプロパティ
Renderプロパティでは、レンダリングに関する設定を行います。最終的に出力するレンダリング結果に大きく影響する項目が多く設定も細かいため、今回はレンダリングをするための主となるパラメータの設定に絞って説明していきます。
●Render Engine/Feature Set/Device
この項目では、使用するレンダリングエンジンとデバイスの指定ができます。デバイスに関しては、使用するPCによってCPUかGPUかを適切に選択する必要があります。選択するデバイスによりレンダリングのパフォーマンスは大きく変わるので、注意してください。【1-A】 。
-
-
◀【1-A】Renderプロパティ①Render Engine/Feature Set/Device
Render Engineで[Eevee]を設定した場合には、[Feature Set]と[Device]の項目は表示されません
1:Render Engine
ここで、レンダリングエンジンとしてEeveeとCyclesのどちらのエンジンを使用するかを設定します。ここで選択するエンジンによって、Propertiesエディタの多くの設定項目が変化します。
2:Feature Set(Cyclesのみ)
Blenderに今後搭載される予定の機能を試験的に使用することができます。デフォルトでは[Supported]が設定されていますが、[Experimental]に切り替えると隠されていた機能が表示され、使用することができます。
3:Device(Cyclesのみ)
レンダリングにCPUとGPUどちらのデバイスを使用するかを設定することができます。ここで[GPU Compute]を選択した場合は、Preferencesの[System→Cycles Render Devices]で設定されたデバイスが使用されます【1-B】 。
-
-
◀【1-B】Renderプロパティ②Cycles Render Devices
Toonkit等のレンダリング関連のアドオンによっては、デバイスをCPUに設定しないとレンダリングできない場合もあります
NVIDIAのGPUを搭載しているビデオカードを使用している場合は、CUDAの項目で設定することになりますが、ここではGPU単体とGPU+CPUを指定することができます。筆者のマシン環境は、CPUはIntel Core i7-9700K、GPUはGeForce RTX 2080 Superですが、『DEEP HUNTER』のレンダリングではCPUがGPUの処理性能についていけず、GPU+CPUよりもGPU単体の設定の方がレンダリングパフォーマンスが高いという現象が発生していました。近年ではGPUの性能の進化がCPUより上回っていることもあり、多くのデバイスを使用した方が処理速度が速くなる、というわけではないことを覚えておいてください。
●Sampling
レンダリング結果のクオリティを大きく左右する設定項目です【1-C】 。
-
-
◀【1-C】Renderプロパティ③Sampling
サンプリングの数値を低くするとレンダリング速度は上がりますが、レンダリング結果にジャギーやノイズが発生します。View Layerプロパティで設定したレンダリング要素の中には、サンプリングが低すぎると正しい結果にならない場合がありますので注意が必要です。プリセットのプルダウンメニューにある[New Preset]の項目に名前を入力し、[+]をクリックすると、その時点のサンプリングの設定がプリセットとして登録されるため、気に入った設定を登録して後々再利用することができます
サンプリングの数値を上げると、当然最終結果のクオリティは上がっていきます。しかし、それに伴いレンダリング時間も増大します。
ここでは、レンダリング時とビューポート表示(Viewport ShadingがRendered表示)のサンプリング数を分けて設定することができます。そのため、作業時にRenderedのビューポート表示が重いと感じるときは、Viewportの項目のサンプリングを極力低く設定するようにしてください。
サンプリングの数値に関しては、シーンの複雑さやレンダリング解像度によって大きく変わってくるので、「どの数値が正解か」とは一概には言えませんが、緑枠の部分をクリックするとプリセットのプルダウンメニューが表示されるので、[Final]という設定を最終レンダリングのサンプリング数の目安にして、そこから設定を増減させて決定するのも良いと思います。
●Light Paths
この項目では光のバウンス回数を設定します【1-D】 。
-
-
◀【1-D】Renderプロパティ④Light Paths
GIなどの二次的な光の計算が必要のないものをレンダリングするときは、プリセットの[Direct Light]を設定すると、GIの計算を省きレンダリング時間を短縮することができます
基本的に光のバウンスが多いほど明るくなり、少ないほど暗くなります。ここでもSamplingの項目と同様にプリセットが用意されているので、そこから調整すると良いでしょう。
●Film
前回説明しましたが、ここの項目の[Transparent]にチェックを入れると、アルファチャンネル付きの画像をレンダリングすることができます(カメラから見てオブジェクトがない背景部分がマスクで抜かれている状態です)【1-E】 。
●Performance
[Performance→Tiles]でレンダリング時のタイルの大きさを設定することができます【1-F】 。
-
-
◀【1-F】Renderプロパティ⑥Tiles
筆者はGPUレンダリングを行うときは、この設定はX・Y共に[256px]に設定していますが、デフォルト設定の64pxよりもレンダリング処理は速くなります
CPUでレンダリングする際は、メモリを節約するために「ある程度小さい設定」の方が計算速度が速くなると一般的には言われています。しかし、GPUレンダリングのときはGPU専用のメモリを使用するためか、タイルが大きい方がパフォーマンスが高いようです。
ビデオカードを複数枚使用しない限りタイルは1つなので、GPUレンダリング時のここでの設定は、レンダリング時間にも影響を及ぼします。
[[SplitPage]]
<2>Outputプロパティ
Outputプロパティは大きく分けて、レンダリングの解像度やフレーム範囲、フレームレート等の「レンダリングの出力設定を行う項目」と、「レンダリング画像の保存先を設定する項目」の2つに分かれていますが、今回はレンダリングの出力設定「Dimensions」の項目を説明していきます【2-A】 。
レンダリングの保存先の設定[Output]に関しては、次回以降で説明します。
1:Resolution
レンダリング画像の解像度のピクセル数(縦横)を設定します。緑枠の部分に一般的な設定がプリセットとして用意されているので、最終出力の規格がわかっている場合は必要に応じてプルダウンメニューから選択してください。[%]では設定した解像度の縦横比の設定を維持した状態で、入力した数値の割合でレンダリングサイズを変更することができます。
2:Aspect
ここでピクセルの縦横比を設定することができます。出力する媒体によっては、アスペクト比が1:1ではない場合もあるので、その場合はこの項目で設定しましょう。
3:Render Region/Crop to Render Region
[Render Region]にチェックを入れると、3D Viewport上で矩形選択したレンダリング範囲のみがレンダリングされるようになります。レンダリング範囲の設定は、Render Regionを設定したい3D Viewportの[View]から[View Regions→Render Region...]【2-B】を実行し、ビューポート上に表示されるカーソルを左ドラッグして、矩形選択で範囲を指定します。
-
-
◀【2-B】Outputプロパティ②Render Region
ショートカット[Ctrl+B]でも実行可能です。選択範囲の設定を解除するには、3D Viewportの[View]から[View Regions→Clear Render Regions(Ctrl+Alt+B)]を実行します
この状態でレンダリングを実行すると、矩形で囲まれている範囲のみがレンダリングされますが、[Viewport Shading]を[Rendered]に切り替えることで、ビューポート上でもレンダリング範囲のみがシェーディングされている状態で確認することができます【2-C】 。
-
-
◀【2-C】Outputプロパティ③Render Regionの適用範囲
Render Regionの設定は、カメラビューだけではなくその他のビューに対しても適用することが可能で、カメラビュー以外では[Render Region]のチェックがOFFの状態でもビューポート上で確認できます。Render Regionはビューポートごとに設定されます。よって、それぞれのビューで必要な箇所だけ範囲を絞ることで、プレビューのパフォーマンスを上げることが可能です
[Crop to Render Region]にチェックを入れると、Render Regionで設定された範囲の大きさに自動的にクリッピングされたレンダリング画像が出力されます【2-D】 。
-
-
◀【2-D】Outputプロパティ④Crop to Render Region
[Crop to Render Region]でクリッピングされたレンダリング画像の解像度は、[ResolutionX/Y]と%の数値で設定された解像度を基に、自動的に算出されます
4:Frame Start/End/Step
ここでは、アニメーションのレンダリングが実行されるフレーム範囲を指定します。StartとEndの設定は、Timelineエディタの右上の項目でも設定が可能で、設定数値は連動して変更されます。Stepの項目では「何フレームごとにレンダリングを実行するか」を設定することができます。テストレンダリングでフルフレームのレンダリングが必要ない場合などは、この設定で調整すると良いでしょう。
5:Frame Rate
フレームレートは、アニメーションするときに1秒間に要するフレーム数で、例えば「24fps」とは「1秒間に24フレームの画像が出力される」ということになります。主なフレームレートはプルダウンメニューから選択できるようになっていますが、特殊なフレームレートはメニューの[Custom]を選択して任意の数値を設定してください。ここでの数値は、最終出力される規格のフレームレートに合わせて設定すると良いでしょう。
6:Time Remapping
Time Remappingでは、シーン上のアニメーションのスピードをコントロールすることができます。[New]の数値が[Old]より小さくなればスピードが速くなり、大きくなればスピードが遅くなります。
例えば、Old/Newが100/50の場合はアニメーションスピードは倍速くなり、100/200の場合は倍遅くなります。デフォルトではOld/Newが100/100となっていますが、OldとNewの値は相対的な数値関係であるため、この値の設定が1/1でも50/50でも結果は同じです。ここでの数値は上限が900であるため、デフォルトのOldが100の状態でスピードを10倍遅くしようとした場合でも、Newに[1000]と打ち込むことはできません。そのような場合は、Oldを[10]、Newを[100]と設定することで、同様の結果を得ることができます。
筆者が確認している限りでは、アニメーションキャッシュに対してもスピードの調整を適用することができたため、何かと手間のかかるスローのアニメーションも容易に設定することが可能となります。
<3>レンダリング
上記のレンダリングの設定を踏まえて、レンダリングを実行しましょう。Blenderのレンダリングは、静止画のレンダリング[Render Image]と、アニメーションのレンダリング[Render Animation]の2つが用意されています。トップバーの[Render]から[Render Image]、[Render Animation]それぞれを選択して、実行するのみです【3-A】 。
次回は、レンダリングの結果を表示する「Imageエディタ」と「Compositorエディタ」について解説します。
[[SplitPage]]
<4>今月の便利アドオン
今回のOutputプロパティのセクションで説明した、Render Regionの機能を拡張したアドオンです。Render Regionは、レンダリングを実行する範囲を指定してその他の不要な余白部分のレンダリング処理を省くため、テストレンダリングや高解像度のレンダリングを行う際に非常に有効です。
Animated Render Border(以下、ARB)ではその機能をさらに拡張し、指定したオブジェクトやCollectionに対して自動的にそれらの大きさを識別し、レンダリング範囲を決定してくれます。さらに、それらのオブジェクトやCollectionに移動・回転・スケール等のアニメーションが適用されている場合でも、レンダリング範囲が自動的にトラッキングして必要最低限の範囲でレンダリングを実行します。
キャラクターなどをレンダリングする際、余白のない空間部分の計算はそれほどレンダリング時間に影響を及ぼしませんが、アニメーションを付けて数十、数百のフレームをレンダリングということになると、時間のロスがかなり生じてしまいます。ARBを使用することで、アニメーション時の無駄な余白部分のレンダリング処理を省くことができ、CG制作のネックでもあるレンダリング時間を少しでも短縮することが可能になります。
ARBをインストールすると、Renderプロパティの下の方に[Animated Render Border]という項目が追加されるので、そこにチェックを入れましょう【4-A】 。
-
-
◀【4-A】ARB①Object/Collection
ARBはRender Regionの拡張機能であるため、使用する場合はOutputプロパティの[Render Region]にチェックを入れる必要があります
上部の設定の[Object]、[Collection]、[Keyframe]の3つの項目で、レンダリング範囲のトラッキングの方法を選択します。
●Object/Collection
[Object]と[Collection]は、トラッキングする対象が異なるだけで設定項目は同じです。トラッキングの対象が単体のオブジェクトの場合は[Object]で設定し、Collectionを対象とする場合は設定を[Collection]にします。また、複数のオブジェクトをトラッキングする場合は、
[Link to Collection]でそれらを1つのCollectionにまとめておくと良いでしょう。
1:Object to track/Collection to track/Margin
ここでトラッキングするオブジェクト、Collectionを選択します。[Margin]では、レンダリング範囲をトラッキング対象からどのくらい余白を取るかを設定します。
2:Use Bounding Box/Draw Bounding Box
ここにチェックを入れると、トラッキング対象のバウンディングボックスをベースにレンダリング範囲を決定します。チェックがない場合は、オブジェクト自体の大きさをベースに範囲を決定するため無駄が少なくなりますが、Armatureモディファイアーなどモディファイベースの変形アニメーションが適用されている場合は、[Use Bounding Box]にチェックを入れなければ正確にトラッキングができないようです。
Draw Bounding Boxにチェックを入れると対象となるオブジェクト/Collectionのバウンディングボックスが表示されます。
3:Render Animation
アニメーションレンダリングの実行ボタンです。
●Keyframe
ここでは手動でレンダリング範囲をアニメーションさせることができます【4-B】 。
[Ctrl+B]でレンダリング範囲を設定して[Insert Keyframe]でキーを打ち、フレームを動かします。そこで新規でレンダリング範囲を設定しキーを打つことで、間のフレームは自動的に補完されます。またBorder Valuesに数値を入力し、フレームごとにレンダリング範囲を設定することもできます。
<注意点>
ここまでの説明を聞く限りでは非常に便利なアドオンかと思いますが、このアドオン効果をレンダリングに反映するには、【4-A】の[Render Animation]ボタンからレンダリングを実行する必要があります。
通常の[Render Animation]からレンダリングを実行した場合、最初の1フレームは設定したレンダリング範囲でレンダリングが実行されますが、それ以降はレンダリング範囲はそこに固定されアニメーションに追従しません(そう言った意味で、静止画のレンダリングでのRender Imageでは機能していると言えます)。そのため、次回以降で説明する「複数のView Layerのレンダリング設定」や「Compositorエディタを使用したレンダリング」にそのまま使用することはできません(マニュアルにはPythonのコードが記載されているので、それらを駆使することで可能かもしれません)。
また、aviやmp4などのムービー形式のファイルフォーマットには対応していないため、アニメーションプレビューを作成するときなどにも直接ムービーファイルを書き出すことはできません。上記のような制限はありますが、レンダリング時には非常に高い有効性を発揮するアドオンですので、気になる方は試してみてください。
<5>今月のミニTips
●View Layerプロパティを使用する際の出力設定
前回説明したように、View Layerプロパティを使用することでレンダリングする際に多くのレンダリング要素を同時に出力することができます。基本的なレンダリング要素のほとんどは他の3Dツールと同じような結果を出力しますが、"Mist"、"Object Index" 、"Materal Index"、"Cryptmatte"、"Shader AOV"などの要素は出力する際に独自の設定が必要となります。
今後数回に分けてそれらの要素の出力設定を説明していこうと思います("Mist"以外は全てCyclesのみに対応しているレンダリング要素となります)。
1:Mist
Mistはカメラからの深度情報を要素として出力します(筆者の感覚ではMistではなくFogの方がしっくりするのですが)。Zの要素でも深度情報を出力することが可能ですが、Mistでは深度情報を任意に設定した距離で出力することが出来ます。
フォグや被写界深度をコンポジットツールで後処理で追加する際に、あらかじめ範囲が決まっている場合はMistで出力しておいた方が調整する際に手間を省くことができます。 Mistを適用させる距離の設定はView Layerプロパティでこの要素をONにするまで隠されています。
MistをONにするとWorldプロパティにMist Passという設定項目が現れるので、そこでMistの開始地点と終了地点のカメラからの距離の設定とMistが適用される度合いの計算方法を指定することができるようになります【5-A】 。
カメラのObject DataプロパティのClip機能を使用することで、Mistの開始地点と終了地点の距離のだいたいの数値を視覚的に確認することができます【5-B】 。
-
-
◀【5-B】Mistの設定②
Lensの項目のClip StartとEndに数値を入れることでカメラからの距離でオブジェクトがクリッピングされるので、ここで視覚的に大体の距離を測定して同じ設定数値をMistの設定にコピーすることでMistの効果が適用される範囲を決めることができます。 数値の測定が終わりましたら、Clip StartとEndを元の数値設定に戻すことをお忘れなく(クリッピングされた結果がレンダリングされてしまいます)。
Profile.
-
横田義生/Yoshio Yokota(Griot Groove)
3ds Max歴25年。Web3D、建築、ゲーム、CMを経て現在映像プロダクション・グリオグルーヴにディレクターとして所属。頑なに3ds Maxを使用してきましたが、そろそろ新しいツールを覚えたいと言うタイミングでBlenderに出会い仕事の傍ら猛勉強中です。もともとジェネラリストでしたが、ここしばらくは制作現場からは遠ざかっていたため、これを機に一クリエイターとして制作をしていこうと意気込んでいます