【Blender】キャラクターモデリング制作日記 2023/6/2


はじめに

BlenderでMMDモデルを趣味で制作しています。

前回、ボディメッシュに合わせる顔のパーツ、髪、衣装等を制作しました。

シェーダーについては色のみを指定した仮の設定でしたので、今回は、各メッシュに対してShadingでノードを繋ぎ、それぞれのマテリアルを作成しました。

加えて、よく分かっていないところも多いので、少しシェーダーについて調べてみました。


尚、記事の内容については正確性を保証致しません。
解説ではなく、個人のメモ、備忘録のような情報としてお読みください。

以下の環境でモデルの制作を行っています。

ソフト、アドオン
Blender3.35LTS
制作環境

アニメシェーダーを組む

参考動画

前回に引き続き、いつもお世話になっているmmCGチャンネルさんのキャラクターモデリング解説シリーズ動画を参考にさせて頂きました。

今回はシェーディング解説の#1及び#2を参考にさせて頂きました。各動画のリンク先は末尾に記載させて頂きます。

成果

3Dビューのシェーディングはレンダープレビューです。

Render Preview
Render Preview
Material Preview

プレビューモードの違いでかなり印象が変わりますね。陰影がハッキリしている方がより立体的で少し締まって見えるように感じます。

各マテリアルの色は動画で案内されている数値に合わせました。

瞳のテクスチャ画像は、動画を参考に、複製した瞳のメッシュに頂点ペイントを行い、画像レンダリングで作成しました。


Shader

そもそもシェーダーノードって何だろう?
Diffuse BSDF、Principled BSDF等、シェーダーノードやシェーダーについて調べてみました。

参考

参考書籍

Benjaminさんの書籍を参考にしました。

  • Blender2.8 3DCGスーパーテクニック

該当する章では各シェーダーノードの効果、使用方法が説明されており、とても役に立ちました。
書籍の詳細は末尾に記載させて頂きます。

参考サイト

  • Blender Manual

https://docs.blender.org/manual/en/3.3/render/shader_nodes/index.html

Shader

概要

デフォルトで配置されている立方体のマテリアルを確認すると、Shader Editorには画像のようなノードが組まれていると思います。

Material Preview
Shader Editor

「Principled BSDF」シェーダーノードに「マテリアル出力」出力ノードが接続されただけのシンプルな構造です。

シェーダーノード

陰影処理によりオブジェクトの質感を表現する役割をするようです。

ガラス、金属、大理石等、それぞれ素材によって質感は違っていて、それに対応したシェーダーノードを選択し、レンダリングにその質感を反映させる、と考えたらよいでしょうか。

上記、デフォルトの立方体をShader Editorで確認すると、シェーダーノードにはPrincipled BSDFが使用されていることがわかります。
このノードでベースカラーはRGB全て0.8に設定されています。これと他の各種設定を反映すると、立方体は白っぽい色で質感が再現される、という仕組みのようです。

Blender Manualを参照すると、Principled BSDFについて以下の説明があります。

The Principled BSDF that combines multiple layers into a single easy to use node.

https://docs.blender.org/manual/en/3.3/render/shader_nodes/shader/principled.html

色々な要素がひとつに集められた便利なシェーダーノード、と考えたら良さそうです。

まずは、Principled BSDFを使用しておけば間違いはなさそうです。

出力ノード

Blender Manualを参照すると、出力ノードについてこのような説明があります。

Output nodes are the final node in every node tree.

https://docs.blender.org/manual/en/3.3/render/shader_nodes/output/index.html

接続されたノードツリーの終着点は出力ノードになる、ようです。

上記、デフォルトの立方体をShader Editorで確認すると、出力ノードにはマテリアル出力が使用されていることがわかります。

立方体オブジェクトのPrincipled BSDFとマテリアル出力の接続を切ってみます。

Material Preview
Shader Editor

ベースカラーの水色が反映されず、黒く表現されています。
シェーダーノードを設定しただけでは効果はなく、出力ノードに接続することで設定した質感が再現される、ようです。

出力ノードには計4種類のノードが存在するようですが、ちょっと調べた限りでは、とりあえず「マテリアル出力」ノードを使用すれば良さそうです。
経験を積んでいけば、他の出力ノードを使う機会もあるかもしれません。

マテリアルプロパティ

Shader Editorで作成されるマテリアルの情報は、Propartyのマテリアルプロパティからも確認できます。(黄色の枠内)

Layout
Shader Editor

「サーフェス」に出力ノードに直接繋がれたシェーダーノードが表示されるようです。この場合はMix Shaderが表示されており、マテリアルプロパティからでも各設定(ソケット未接続時の値)を変更することが可能です。

Mix ShaderにはPrincipled BSDFとEmissionが接続されており、それらのシェーダノードもマテリアルプロパティに表示されており、同様に各設定の変更が可能です。

実験

シェーダーノードの設定を変えてみる

デフォルトの立方体には、予めPrincipled BSDFとマテリアル出力が接続されていました。
このため、特にシェーダーを組む作業をしなくても、Material Preview等で立方体は白色の質感が再現されています。(RGB全て0.8の白色)

新たに追加したメッシュにはマテリアルがひとつも存在していませんが、新規ボタンをクリックすると新規マテリアルが作成され、やはりPrincipled BSDFとマテリアル出力が接続されたシェーダーが組まれています。(RGB全て0.8の白色)

簡単に済まそうと思えば、Principled BSDFのベースカラーを好みの色に変更するだけで、質感の変化は目に見える形で確認できます。
新規で立方体メッシュを追加し、新規マテリアル作成後、ベースカラーを変更してみました。

立方体を白色から水色に変更することができました。

前回の投稿を例に挙げますと、上記立方体と同様に、このキャラクターの各マテリアルはPrincipled BSDFをマテリアル出力に繋いだのみであり、多くの場合、調整した項目はベースカラーのみとなります。
(靴についてはメタリック、スペキュラーを変更)

使用ノード:Principled BSDF, マテリアル出力
シェーダーノードを変えてみる

単に色を変えるだけなら、上記のようにベースカラーを変更するだけで事足ります。
より質感にこだわるのであれば、シェーダーノードの変更や、スペキュラーやIOR等、他のパラメータを変更する必要があるし、その値の調整に様々な種類のノードを接続する必要がある、ということのようです。

シェーダーノードを変更してみます。Emission、Glass BSDFの例を挙げます。

Material Preview
画像レンダリング

ガラスの床に明るい立方体が映り込んでいる様子が確認できます。

立方体はEmission、追加した平面にはGlass BSDFをシェーダーノードに使用しました。数値の調整は行わず、シェーダーノードをPrincipled BSDFから変更したのみです。(Emissionのカラーのみ上記立方体の水色の数値を入力しました)

シェーダーノードを変えるだけでも、質感は変化します。

実際にはShader Editorだけでなく、レンダープロパティで間接照明とスクリーンスペース反射の設定が別途必要でした。
(『Blender2.8 3DCGスーパーテクニック』を参考に設定を変更しました)

間接照明・反射の設定あり
間接照明・反射の設定なし

その他

アニメシェーダー

今回取り組んだアニメシェーダーでは、複数のノードが使用されています。

シェーダーを組むに当たり、このキャラクターには各マテリアルに付き5~6個のノードが使用されています。
(ノード接続の具体例についてはmmCGさんの動画をご覧下さい)

各ノードを繋ぎ合わせることで非写実的・写実的な質感をミックスし、アニメ調なシェーダーを作成している、ということだと思います。

使用ノード:Diffuse BSDF等、計5~6のノード

Blender Manualによると「シェーダーからRGBへ」ノードについて下記のように紹介されています。

The Shader to RGB node is typically used for non-photorealistic rendering, to apply additional effects on the output of BSDFs.
(Shader to RGB (シェーダーからRGBへ)ノードは通常、BSDFの出力に追加効果を適用するための、非写実的なレンダリングに使用します。)

For example, a color ramp on the output of a diffuse BSDF can be used to create a flexible toon shader.
(たとえば、diffuseBSDFの出力にカラーランプを使用して、柔軟なトゥーンシェーダーを作成できます。)

https://docs.blender.org/manual/en/3.3/render/shader_nodes/converter/shader_to_rgb.html

Diffuse BSDFの出力を変換して非写実的なレンダリングに使用する、というのはメジャーな手法らしいです。

この例のように、出力ノードやMix Shaderに繋ぐだけがシェーダーノードの使い道ではないようです。

レンダーエンジン

レンダーエンジンによって使用できるノードと使用できないノードが存在するようです。

Principled Hair BSDFを例に挙げます。
このシェーダノードはレンダーエンジンがEeveeの場合、Shader Editorのノードリストに表示されませんが、レンダーエンジンがCyclesの場合、表示され、使用が可能です。

実際にPrincipled Hair BSDFを使用すると、CyclesではRender Previewで質感が再現されますが、エンジンをEeveeに変更すると処理が行われなくなります。

Cycles
Eevee

他に例を挙げると、Hair BSDF、Toon BSDF、Velvet BSDF等も同様に、レンダーエンジンがCyclesでないと使用できないようです。

アニメーションレンダリングしてみる

画像の状態でシェーダーを組み、Mix Shaderの係数にキーを打って、アニメーションを作成しました。

係数0.00、Principled BSDFが100%の質感から始まり、徐々に変化、100フレーム目で係数1.00、Emissionが100%の質感に至り、再生は終了します。

レンダーエンジンがCyclesであれば、間接照明はフレーム毎に演算されるようですが、Eeveeの場合、間接照明ベイク時の設定状態がフレーム遷移中も維持されるらしく、徐々に放射が強まっていく様子は再現されませんでした。

Blender ManualにEeveeの間接照明について以下の記述が見られます。

As of now the light cache is static and needs to be computed before rendering. It cannot be updated per frame (unless via scripting). This limitation is being worked on and will be removed in future versions.

(今現在、照明キャッシュは静的でレンダリング前に計算されている必要があります。フレームごとにこれを更新することはできません(プログラミング無しでは)。この制限は現在改善中で将来的には取り除かれるでしょう。)

https://docs.blender.org/manual/ja/4.0/render/eevee/render_settings/indirect_lighting.html

“スピードと対話性”を重視するのがEevee、であるらしく、確かに編集中の視点操作に対してレンダリングが遅れずに更新されていますね。
Cyclesの場合、視点操作中は3Dビューの表示にブレが出ますし、視点操作後、一瞬待った後、レンダリングが整う感じです。つまり、ラグがあります。
(この辺りは私の開発環境のスペックも大きく関係していると思います)

アニメーションレンダリングの所要時間について言えば、Eeveeは1分もかからなかったのに対して、Cyclesの場合およそ2時間弱程かかりました。
(きちんと計測していませんが、少なくとも1時間では終わりませんでした)


Shaderで遊んでみる

質感を変えて楽しみつつ、キャラクターに合う色を探してみます。

瞳の画像テクスチャ

出力したUV配置図を元にProcreateで作成しました。

より具体的に言うと、瞳のテクスチャ画像を頂点ペイント、Texture Paintで作成を行わず、外部のペイントソフト「Procreate」で描いた後、それを画像テクスチャノードで読み込みました。

  1. Blenderから瞳のUV配置図をエクスポートする
  2. Procreateで瞳のUV配置図を読み込む
  3. UV配置図を下絵に新規レイヤーで瞳を描く
  4. 完成した瞳のテクスチャ画像をPCにアップロードする
  5. 画像テクスチャノードで瞳のテクスチャ画像を読み込む

一方、今回、初めて頂点ペイントで瞳の画像を作成しましたが、動画で説明されている通り、一時的に頂点数を増やせばかなり細かい所まで描ける、と感じました。
(上の3点の瞳画像ではなく、青が基調の瞳は頂点ペイントで描いています)

私は描くことが好きなのでProcreateを使って描くこともありますが、テクスチャ画像作成のために別にペイントソフトの用意が必要か、と訊かれれば、そんなことはないのでは?、と思います。(素人の考えですが)

髪の色

カラーランプ内のカラーストップの色を変更してみました。

髪飾りとの相性はピンクが良さそうです。
瞳のテクスチャはあまり合っていない感じがします。明るさが足りないのかもしれないです。

その他

髪飾りの材質を部分的に変更してみました。

Glossy BSDF
Glass BSDF

瞳のシェーダーノードをEmissionに変更してみました。

白目と髪飾りの一部をEmissionに、瞳にGlossy BSDFを使ってみました。

少し明る過ぎるでしょうか?キャラの表情は生き生きとしてきた気がします。


終わりに

Shaderに関する知識や経験を増やしていきたいです。

今回は以上です。読んでくださった方、ありがとうございました。

著者名書籍名出版発行年月日参照頁
BenjaminBlender2.8 3DCGスーパーテクニックソーテック社2020/4/30
初版 第2刷
188~197p
参考文献
サイト名ページタイトルURL参考にした日付
Blenderhttps://www.blender.org/2022/12/11
Blender Manualhttps://docs.blender.org/manual/ja/3.3/index.html2023/6/1
mmCGチャンネル animetichttps://www.youtube.com/channel/UCvC55dRRUwzHgkj1oiylDpg2022/12/12
【Blender 2.9 Tutorial】アニメ・シェーディング解説 #1 -Anime Shading Tutorial #1https://www.youtube.com/watch?v=hMgZkNWo7Ro2023/6/1
【Blender 2.9 Tutorial】アニメ・シェーディング解説 #2 -Anime Shading Tutorial #2https://www.youtube.com/watch?v=Dm1vQjhP1O82023/6/1
参考URL
,

comment