Blenderであそんでみた

3D-CGソフトBlenderの小技や豆知識など。

プリンシプルBSDFで発光の作り方

f:id:hainarashi:20211010164613j:plain

※記事製作時のバージョン:Blender2.93

 

プリンシプルBSDFで、いろいろな質感表現の方法を探っていくシリーズ。
第19回は発光の作り方です。

電灯、ディスプレイの画面、電光掲示板や信号機、ネオンサイン・・・などなど、発光の表現は放射で作ります。

 

放射

サーフェスを発光させます。
放射放射の強さの2つのパラメーターがあります。

f:id:hainarashi:20210928125233j:plain

放射

 

放射

発光の色を設定するパラメーターです。

f:id:hainarashi:20210928130408j:plain

放射のカラーのバリエーション

 

放射のカラーは、ベースカラーとは別に、独自の色を設定できます。
例えば下の画像のような提灯を作る場合、放射のカラーをオレンジ色に設定すると、白い表面を内側からロウソクで照らされている雰囲気が出せます。

f:id:hainarashi:20211010221331j:plain

放射のカラーによる表現

 

放射の強さ

発光の強さを設定するパラメーターです。
値が大きいほど、強く発光します。
入力値自体に上限はありませんが、70000くらいから先は変化が見られなくなりました。

f:id:hainarashi:20210928131814j:plain

放射の強さ

 

最終的な発光の強さは[放射のカラーの明度(V)×放射の強さ]で決まります。
放射のカラーが黒(V = 0.0)の場合、放射の強さの値に関わらず、発光は OFF になります。

 

放射の性質

放射(と放射の強さ)は、プリンシプルBSDFの他のパラメーターに比べて、少し特殊な働きをします。

他のパラメーターは、お互いに組み合わさって質感を表現します。
放射は、他のパラメーターからの影響を受けず、ただ発光を追加します。

「質感」と「発光」は全くの別物と考えると、イメージしやすいです。

 

現実の順序は、

  1. まず発光していない状態の物質がある
  2. それが発光する

なので、マテリアルもこの手順で設定します。

f:id:hainarashi:20210928132321j:plain

放射の設定手順

 

いろいろな応用

その 1

放射の強さにキーフレームを打つと、点灯・消灯のアニメーションができます。

vimeo.com

 

その 2

放射の強さにFカーブモディファイアーで変化を付けると、切れかけの蛍光灯が作れます。

vimeo.com

 

その 3

ディスプレイなどは、画面自体が発光して映像を映し出す仕組みなので、放射で表現します。
そこに動画や連番画像をつなぐと、動画を再生しているディスプレイ画面になります。

vimeo.com

 

その 4

放射の強さを普通に設定すると、全体が均一に発光するので、こまかい形状はよく分からなくなります。
発光させつつこまかい形状も見せたい場合は、レイヤーウェイトで放射の強さに変化を付けます。

f:id:hainarashi:20210928171359j:plain

レイヤーウェイトで形状が見える発光

 

その 5

アンビエントオクルージョン(AO)ノードを元に放射の強さを設定すると、面と面の距離が近い部分(窪んでいるところなど)を発光させられます。
SFチックな表現に使えます。

vimeo.com

※マテリアルボールが消える部分は、AviUtlのシーンチェンジ効果を利用しています。

 

放射シェーダーとの使い分け

発光を表現するノードは、プリンシプルBSDF放射シェーダーの2つがあります。

プリンシプルBSDFでは発光だけでなく、下地(発光していない状態)の陰影や反射光も描画されます。
放射シェーダーでは、陰影や反射光の無い、均一な発光だけが描画されます。

 

発光が弱い時は、それぞれの違いがはっきり現れます。

f:id:hainarashi:20211002150406j:plain

プリンシプルBSDFと放射シェーダーの比較(弱い発光)

 

発光を強くすると、違いは目立たなくなります。

f:id:hainarashi:20210928162712j:plain

プリンシプルBSDFと放射シェーダーの比較(強い発光)

 

電灯やディスプレイの画面など、「発光していない状態」があるものはプリンシプルBSDFで作ります。
炎・雷・ライトセーバーなど、発光だけの現象を表現する場合は、放射シェーダーを使う方が簡単です。

ただし「Blenderで作ったマテリアルをエクスポートして、他のCGソフトで使う」ような場合は、炎や雷などもプリンシプルBSDFで作ります。

プリンシプルBSDFで発光だけにする、つまり陰影や反射光を消すには、次のように設定します。

  • ベースカラー:黒(V = 0.0)
  • スペキュラー:0.0

f:id:hainarashi:20211002222510j:plain

プリンシプルBSDFで発光だけ (陰影・反射光無し)にする設定

 

白目が暗くなる現象の対処方法

MMDMikuMikuDance)用のキャラクターモデルをBlenderにインポートすると、白目の部分が暗くなってしまうことがあります。
※正しくはMMD用のモデルに限らない話なのですが、頻度が高いので代表格として扱います。

f:id:hainarashi:20211005140833j:plain

Blenderで白目が暗くなる現象

 

これは白目が凹ませてあるモデルで発生する現象です。

f:id:hainarashi:20211005150558j:plain

白目を凹ませてあるモデル

 

白目を凹ませるのはモデリング手法の一つで、次のようなメリットがあります。

  • 目が大きくても顔の輪郭からはみ出さない
  • 顔の調整が楽
  • カメラ目線にしやすい

MMDでは問題ないのですが、Blenderのようなリアル系の描画をするCGソフトでは、凹んだ白目の中にライトの光が届かず、陰になってしまいます。

このようなモデルは、白目部分を次のように設定します。

  • ベースカラー:黒(V = 0.0)
  • スペキュラー:0.0
  • 放射:白目部分のテクスチャをつなぐ
  • 放射の強さ:1.0

※これはシェードレス(Shadeless:陰影なし)という、「周囲からの光の影響を考慮せず、カラーをそのまま表示する」設定です。

f:id:hainarashi:20211005230424j:plain

白目をシェードレスに設定

 

ただし、この方法では暗いシーンでも白目だけがクッキリ見えてしまいます。
その場合は周囲の暗さに合わせて、放射の強さを下げて調整します。

f:id:hainarashi:20211005230429j:plain

放射の強さを下げて調整

 

※白目のモデリングについて、詳しくはこちらのリンクを参照してください。

 

EEVEEで周囲を照らすには

Cyclesは現実的な光の表現をするので、放射を設定したオブジェクトが発する光が、周囲を照らす様子も描画されます。

EEVEEは簡易表現(高速レンダリング)なので、オブジェクト間の相互影響は無視されます。
そのため放射を設定しても、そのオブジェクトが発光する様子が描画されるだけで、周囲がその光で照らされるようには描画されません。

f:id:hainarashi:20211008220622j:plain

CyclesとEEVEEの違い

※上の画像でEEVEE側の床がぼんやりと明るくなっているのは、スクリーンスペース反射による映り込みです。

 

EEVEEで周囲を照らす効果を追加するには、発光オブジェクトの近くにライトを配置します。
ライトのカラー・パワー・半径(サイズ)などは、発光オブジェクトに合わせて調整します。

f:id:hainarashi:20211008212423j:plain

ライトを配置して周囲を照らす

 

ライトは、発光オブジェクトから少しずらした位置に配置します。
ライトを発光オブジェクトに重ねてしまうと、発光オブジェクト自体に光をさえぎられ、おかしな影ができます。

f:id:hainarashi:20211008221742j:plain

ライトの位置と影

 

なお、ライトの種類は発光オブジェクトの形状に応じて使い分けます。
上の見本ではポイントライトを使っていますが、蛍光灯ならばエリアライトを使います。

 

補足

EEVEEで周囲を照らすには、他に「イラディアンスボリューム」を使う方法もあります。
しかし手間がかかる割に実用性が低いので、解説は省きます。
興味のある方はこちらのリンクを参照してください。

Eeveeレンダーで放射シェーダーをライトにする方法【Blender2.8】 – 忘却まとめ

 

補足:2.90以前の放射の強さについて

放射の強さは、Blender2.91から追加されたパラメーターです。
2.90以前は放射の強さが無く、働きとしての放射の強さの値は 1.0 で固定でした。
(多分、シェードレスの設定専用だったのだと思います。)

2.90以前のプリンシプルBSDFで発光の強さを操作するには、放射カラーをHSV分離して、V(明度)に数式ノード(乗算)をつなぎます。

f:id:hainarashi:20211008222509j:plain

2.90以前の、発光の強さの設定

 

 

以上、放射の使い方でした。

 

※本文添削・構成アドバイス:相方

 

twitter

灰ならし (@hainarashi) | Twitter

 

お借りした素材

今回の記事で使用した素材は、こちらからお借りしました。

 

参考サイト

Principled (プリンシプル) BSDF — Blender Manual