謹賀新年

投稿日時 2021年01月01日 | カテゴリ: コミュニティ・話題

 明けましておめでとうございます。本年もよろしくお願いいたします。

 今年はホルスタインの子牛を作成してみました。ちゃんと調べたわけではないので毎度ながらディテールは甘目です。またみかんっぽい橙が頭に乗っていますが気にしないでください。

以下制作記事です。


■ワークフロー


 2.91にて一からスカルプトでモデリング後に、頂点カラーで着色、パーティクルでヘアーを生成。シャドウキャッチャーで HDRI 画像と合成して Cycles レンダーにてレンダリングしています。ポージング用に首だけボーン入れてます。



■スカルプト


 スカルプトは最初にツール設定バーの「X軸対象」「Dyntopo」(ダイナミックトポロジー)を有効にした後、「スネークフック」ブラシで大まかな形を作り、後は「エラスティック変形」「クリース」「インフレート」「スムーズ」ブラシで調整しています。
 ある程度できたら Dyntopo のリファイン方法を「辺を細分化」に変更し、細部を作り込んでいます。

 なお、後述の「頂点ペイント」を使用した後に Dyntopo を使用すると、せっかく塗った頂点カラーデータが消えてしまうことがあります(要はデータの維持が保証されない)。他にも細分化などで面が増えると、その部分の頂点カラーを新たに塗らないといけなくなることにも注意してください。


■質感付け


●頂点ペイントによる着色


 上記のようにモデルへの着色は手っ取り早く頂点ペイントで行いました。
 ローポリメッシュへの頂点ペイントでは細かい部分の表現ができないため、テクスチャペイント用に UV 展開と新規画像の追加といった手順が必要ですが、その点、スカルプトモデルのようなハイポリメッシュではあまり気にしなくてもよくて楽です。

 ペイントした頂点カラー情報はシェーダーエディター内の「頂点カラー」ノードから利用します。ただ、2.90以降では名前をちゃんと指定しないと動作しないようで(ヘアー以外では自動的にアクティブな頂点カラーデータが利用される)、筆者はしばらくここで悩んでしまいました。
 図ではさらにノイズテクスチャノードでランダム性を加え、自然な感じにしています。



 ヘアー用のシェーダーは当初「ヘアープリンシプル BSDF」ノードを使用していましたが、光沢のコントロールが思うようにいかなかったので、結局「プリンシプル BSDF」ノードを使用しています。

●マテリアル構成


 マテリアルは本体用とヘアー用の二つを作っています。ただしパーティクル(ヘアー)数を軽減するため、地肌とヘアーに同じ色(頂点カラー)を使用しています。本来は地肌には肌色を使用するべきですが、それを十分に覆うためのヘアーを生成するのに必要なメモリ量がないためこうなりました。
 「パーティクルプロパティ→▼ヘアー形状→直径のスケール」を大きくするとそれなりに隠れるので、ところどころに現れる毛のない部分を修正していけば何とかなりそうです。また機会があれば再挑戦してみたいと思います。


■ヘアーの設定


●ヘアーのワークフロー


 「パーティクルプロパティ」から新規パーティクルシステムを追加後、ヘアーを設定後、鼻や目などの周辺の頂点に「編集モード」で「頂点グループ」を設定し、「パーティクルプロパティ→▼頂点グループ→長さ」に設定後、[⇔]アイコンを ON にしてヘアーが生えるのを防いでいます。
 ただしそれでも発生してしまうことがあるので、その場合は「パーティクル編集モード」にて余計なヘアーをカットしてしまいます。もちろん、ヘアーを「くし」ツールで自然な流れにするのを忘れずに。

●2.90でのヘアーレンダーの変更


 2.90では、ヘアーのレンダリング方法が少し変わり、形状(シェイプ)が「3Dカーブ」「ラウンドリボン」のいずれかになりました。前者は綺麗ですが GPU レンダリングだと遅く、後者はその逆らしいのですが、今回の例ではあまり差が見られなかったため「3Dカーブ」を採用しています。


●パーティクル数と表示設定


 親パーティクル数は5000、子パーティクル200倍です。ヘアー設定後、他の作業を行いたい場合は「パーティクルプロパティ→パーティクルシステム」をOFFにして非表示にすると負荷が減ります。




■シャドウキャッチャーの設定


 「シャドウキャッチャー」は影だけをレンダリング機能で、実写合成には欠かせません。Blender 2.91現在、Cycles レンダーで利用可能です。

 「オブジェクトプロパティ→▼可視性→マスク」から設定します。同時に「▼レイの可視性」でカメラと影以外すべてをOFFにしておきます。これで「シャドウキャッチャー」から反射した光の影響を他のオブジェクトが受けなくなります。



■レンダリング


 レンダリングは次の環境にて行っています。
・CPU: i7-2600
・GPU: GeForce GTX 1060 (6 GB)
・Blender 2.91の Cycles
・Cycles のサンプル数: 256(適応サンプリング使用)
・画像サイズ:768×1024
・親パーティクル数5000、子パーティクル200

 最近 Eevee が主になっていたので、Cycles だとさぞかし重かろう…と思っていたのですが、上記の環境で1分10秒弱でレンダリングが終了してしまいました。もちろん Eevee にはかないませんが、十分許容範囲であり、試行錯誤も苦痛にならない時間です。

 比較のため同じファイルを2.83.10で実行してみたところ、1分40秒ぐらいかかりました。特に BVH の構築が2.90では10秒弱だったところが、2.83では30秒程度費やしています。これは2.90では採用された Embree コアの恩恵なのかもしれません。
 余談ですが、2.90で保存したファイルを2.83で読み込ませたところ「頂点カラー」ノードがヘアーでうまく動作しなかったので、代わりに「属性」ノードを使用する必要がありました。


■背景画像について


 今回の背景の HDRI 画像は、Blender バイナリにも同梱されている、HDRI Haven の「lilienstein_8k.hdr」を、「背景」ノードの強さを2.0にして利用しています。もっと高解像度な画像では足りないかもしれませんが、今回程度ならこれで十分でした。

■終わりに


 最近ローポリモデル+ Eevee で作業していたため、ハイポリモデル+ Cycles ではもっと時間がかかるだろうと勝手に思っていましたので、今回の結果には驚きました。確かにリアルタイムと比べると遅いのですが、昔に Blender Internal レンダーを使用していたころとそんなに変わらない時間でレンダリングできることが確認できたのがうれしいです。
 今年も Blender の成長が楽しみです。



Blender.jpにて更に多くのニュース記事をよむことができます
https://blender.jp

このニュース記事が掲載されているURL:
https://blender.jp/modules/news/index.php?page=article&storyid=4257