>   >  ベテランジェネラリストのBlender基礎レッスン:第9回:レンダリング(3)レンダリング画像の保存
第9回:レンダリング(3)レンダリング画像の保存

第9回:レンダリング(3)レンダリング画像の保存

<3>今月の便利アドオン

●Snap To Floor

Snap To Floorはオブジェクトを地面に接地させるアドオンです。Blenderで作成されるオブジェクトは基本的に起点がオブジェクトの中心に位置し、それがワールドの原点に作成されるので、Planeオブジェクトで地面をつくるとたいがいのオブジェクトは埋まった状態で作成されます。筆者が原稿を書く際によくサンプルのシーンを用意して説明していますが、このアドオンを使用することで、オブジェクトが地面に置かれている状態にするのに毎度逆算して高さを調整する必要がなくなりました。インストールすると、サイドバーに[Snap To Floor]というタブが追加され、そこから設定できるようになります【3-A】


  • ◀【3-A】Snap to Floor
    設定項目は2つ。非常にシンプルです。現在は限られた用途にしか使用できませんが、開発プランとして「Collection」に対しての適用や、地面の高さの任意設定がWebに記載されているので、今後の開発に期待しています

設定項目は2つで、[Enable Snapping]にチェックを入れると、選択しているオブジェクトが高さが0mの地点に強制的に移動します。起点やバウンディングボックスを基準として計算するツールはよく見かけますが、「Snap To Floor」は選択している時点のオブジェクトの「Z軸の一番低い位置にある頂点」を基準とした高さで計算します。チェックを付けている間は、Editモードでのオブジェクトの編集で「一番低い位置にある頂点より低い位置」に頂点を移動させると、リアルタイムでその他の部分がズリズリと上がっていき、常に一番低い位置の頂点が「高さ0m」になるよう自動的に調整されます。

2つ目の項目の[Also Snapping For Animation]にチェックを入れると、アニメーションをしている間も自動的に地面に接地するようにアニメーションをすることができます。Suzanneのように凸凹のあるオブジェクトを回転させながら移動させると、回転している最中も常にその時点での一番低い位置にある頂点が地面に接地して動くため、ちょっとした物理演算を適用したようなアニメーション結果を簡単に得ることができます。



<4>今月のミニTips

●「Cryptomatte」の出力方法

今回はレンダリング要素の「Cryptomatte」の出力方法に関して説明していきます。

Cryptomatte
「Cryptomatte」を使用することで、オブジェクト単位、マテリアル単位、アセット単位でレンダリング後にマスクを出力できるようになります。前回説明した「Object Index」や「Material Index」のように、オブジェクトやマテリアルごとにいちいちPass Indexの数値を設定する必要がないため、とりあえず「Cryptomatte」をレンダリング要素として追加しておいて、最終的に必要なマスクだけを選んで出力するという手法を採ることができます。出力されるマスクも「Object Index」や「Material Index」とは異なり、ジャギーが気にならない実用的なレベルで出力されるので、筆者はマスクは全て「Cryptomatte」で出力しています。

「Cryptomatte」の設定は、View Layerプロパティの[Cryptomatte]の項目で行います【4-A】 。ここで[Objcet]、[Material]、[Asset]の項目を有効にすることで、それぞれに応じたレンダリング要素が追加されます。[Object]と[Material]は、言葉通り「オブジェクトごと」、「マテリアルごと」のマスクを出力することができます。[Asset]に関してはまだ検証不足ですが、階層構造(親子関係のリンク構造)ごとにマスクを出力するようです。

  • ◀【4-A】Cryptomatte①
    「Cryptomatte」は『Deep Hunter』制作時(Blender2.82)はCyclesのみの対応でしたが、最新のBlenderではEeveeにも対応

それでは「Cryptomatte」の[Material]に関して、ざっくりと使用方法を説明します([Object]、[Asset]に関してもまったく同じ方法で使用可能です)。「Cryptomatte」の[Material]を有効にすると、「Compositorエディタ」のRender Layersノードに【4-B】のように、[CryptoMaterial00]、[CryptoMaterial01]、[CryptoMaterial02]の3つのレンダリング要素が追加されます。

  • ◀【4-B】Cryptomatte②
    それぞれにViewerノードを接続してレンダリング画像を確認しても、3つともよくわからない画像が表示されたと思います

「Cryptomatte」からマスク画像を出力するにはCryptomatteノードを使用して、画像に変換する必要があります。[Addメニュー→Matte→Cryptomatte]でCryptomatteノードを作成し、上記の3つと[Image]のレンダリング要素をCryptomatteノードの対応する入力に接続します【4-C】 。Cryptomatteノードには、[Image]、[Matte]、[Pick]の3つの出力と、[Matte Objects]の項目に[Add]と[Remove]の入力項目が用意されています。

▲【4-C】Cryptomatte-③
それぞれ[Image→Image]、[CryptoMaterial00→Crypto 00]、[CryptoMaterial01→Crypto 01]、[CryptoMaterial02→Crypto 02]に接続します。この図では、Suzanneの目を除く頭部のマテリアルを[Add]でピックして、Split Viewerノードで[Image]と[Pick]を表示した状態です

①:Image
この出力をViewerノードに接続すると、[Image]のレンダリング要素が[Matte Objects]の項目の設定されたマスクで「切り抜かれた状態」で表示されます。

②:Matte
この出力をViewerノードに接続すると、[Matte Objects]の項目の設定されたマスクが「白黒」で表示されます。

③:Pick
この出力をViewerノードに接続すると、[Material]ごとに色分けされた画像が表示されます。出力するマスクの選択はこの表示された画像で行います。

④:Add
③の[Pick]をViewerノードに接続して画像を表示した状態で[Add]をクリックし、画像内の必要なマテリアルの部分をクリックすると、そのマテリアルのデータが⑥の項目に自動で入力されます。再度[Add]をクリックして画像をクリックすると、追加でデータが入力されていきます。以上の作業中は、表示されている[Pick]の画像に変化はありません。選択したマスクを確認するには、Viewerを①の[Image]か②の[Matte]に接続してください。

⑤:Remove
③の[Pick]をViewerノードに接続し画像を表示した状態で[Remove]をクリックして、画像の[Add]で選択したマテリアルの部分をクリックすると、そのマテリアルがマスクから除外されます。⑥の入力項目からもそのマテリアルのデータが自動的に削除されます。マスクを確認するには、Viewerを①の[Image]か②の[Matte]に接続してください。

⑥:入力項目
[Add]で追加されたマテリアルがデータとして羅列されます。追加したマテリアルは[Remove]でピックすることにより削除できますが、入力項目をアクティブにして全てのデータを削除し、改めて[Add]で追加し直したほうが手っ取り早いです。

上記の設定は[Object]、[Asset]でもまったく同じように機能します。[Add]と[Remove]を使用して必要なマスクの設定後、マスク付きのレンダリング画像が必要な場合は[Image]をFile Outputノードに接続し、白黒のマスク画像が必要な場合は[Matte]を同様にFile Outputノードに接続して出力してください。



Profile.

  • 横田義生/Yoshio Yokota(Griot Groove)
    3ds Max歴25年。Web3D、建築、ゲーム、CMを経て現在映像プロダクション・グリオグルーヴにディレクターとして所属。頑なに3ds Maxを使用してきましたが、そろそろ新しいツールを覚えたいと言うタイミングでBlenderに出会い仕事の傍ら猛勉強中です。もともとジェネラリストでしたが、ここしばらくは制作現場からは遠ざかっていたため、これを機に一クリエイターとして制作をしていこうと意気込んでいます




その他の連載