※記事製作時のバージョン:Blender2.93
プリンシプルBSDFで、いろいろな質感表現の方法を探っていくシリーズ。
第19回は発光の作り方です。
電灯、ディスプレイの画面、電光掲示板や信号機、ネオンサイン・・・などなど、発光の表現は放射で作ります。
放射
サーフェスを発光させます。
放射と放射の強さの2つのパラメーターがあります。
放射
発光の色を設定するパラメーターです。
放射のカラーは、ベースカラーとは別に、独自の色を設定できます。
例えば下の画像のような提灯を作る場合、放射のカラーをオレンジ色に設定すると、白い表面を内側からロウソクで照らされている雰囲気が出せます。
放射の強さ
発光の強さを設定するパラメーターです。
値が大きいほど、強く発光します。
入力値自体に上限はありませんが、70000くらいから先は変化が見られなくなりました。
最終的な発光の強さは[放射のカラーの明度(V)×放射の強さ]で決まります。
放射のカラーが黒(V = 0.0)の場合、放射の強さの値に関わらず、発光は OFF になります。
放射の性質
放射(と放射の強さ)は、プリンシプルBSDFの他のパラメーターに比べて、少し特殊な働きをします。
他のパラメーターは、お互いに組み合わさって質感を表現します。
放射は、他のパラメーターからの影響を受けず、ただ発光を追加します。
「質感」と「発光」は全くの別物と考えると、イメージしやすいです。
現実の順序は、
- まず発光していない状態の物質がある
- それが発光する
なので、マテリアルもこの手順で設定します。
いろいろな応用
その 1
放射の強さにキーフレームを打つと、点灯・消灯のアニメーションができます。
その 2
放射の強さにFカーブモディファイアーで変化を付けると、切れかけの蛍光灯が作れます。
その 3
ディスプレイなどは、画面自体が発光して映像を映し出す仕組みなので、放射で表現します。
そこに動画や連番画像をつなぐと、動画を再生しているディスプレイ画面になります。
その 4
放射の強さを普通に設定すると、全体が均一に発光するので、こまかい形状はよく分からなくなります。
発光させつつこまかい形状も見せたい場合は、レイヤーウェイトで放射の強さに変化を付けます。
その 5
アンビエントオクルージョン(AO)ノードを元に放射の強さを設定すると、面と面の距離が近い部分(窪んでいるところなど)を発光させられます。
SFチックな表現に使えます。
※マテリアルボールが消える部分は、動画編集ソフト(AviUtl)のシーンチェンジ効果を利用しています。
放射シェーダーとの使い分け
発光を表現するノードは、プリンシプルBSDFと放射シェーダーの2つがあります。
プリンシプルBSDFでは発光だけでなく、下地(発光していない状態)の陰影や反射光も描画されます。
放射シェーダーでは、陰影や反射光の無い、均一な発光だけが描画されます。
発光が弱い時は、それぞれの違いがはっきり現れます。
発光を強くすると、違いは目立たなくなります。
電灯やディスプレイの画面など、「発光していない状態」があるものはプリンシプルBSDFで作ります。
炎・雷・ライトセーバーなど、発光だけの現象を表現する場合は、放射シェーダーを使う方が簡単です。
ただし「Blenderで作ったマテリアルをエクスポートして、他のCGソフトで使う」ような場合は、炎や雷などもプリンシプルBSDFで作ります。
プリンシプルBSDFで発光だけにする、つまり陰影や反射光を消すには、次のように設定します。
- ベースカラー:黒(V = 0.0)
- スペキュラー:0.0
白目が暗くなる現象の対処方法
MMD(MikuMikuDance)用のキャラクターモデルをBlenderにインポートすると、白目の部分が暗くなってしまうことがあります。
※正しくはMMD用のモデルに限らない話なのですが、頻度が高いので代表格として扱います。
これは白目が凹ませてあるモデルで発生する現象です。
白目を凹ませるのはモデリング手法の一つで、次のようなメリットがあります。
- 目が大きくても顔の輪郭からはみ出さない
- 顔の調整が楽
- カメラ目線にしやすい
MMDでは問題ないのですが、Blenderのようなリアル系の描画をするCGソフトでは、凹んだ白目の中にライトの光が届かず、陰になってしまいます。
このようなモデルは、白目部分を次のように設定します。
- ベースカラー:黒(V = 0.0)
- スペキュラー:0.0
- 放射:白目部分のテクスチャをつなぐ
- 放射の強さ:1.0
これはシェードレス(Shadeless:陰影なし)という、「周囲からの光の影響を考慮せず、カラーをそのまま表示する」設定です。
ただし、この方法では暗いシーンでも白目だけがクッキリ見えてしまいます。
その場合は周囲の暗さに合わせて、放射の強さを下げて調整します。
※白目のモデリングについて、詳しくはこちらのリンクを参照してください。
- 色んな方法をご紹介するコーナー(目編) - MMDモデル作ったりなんだりする
- そこはかとなくアウトローなモデリング方法でセルルックの美女を作ってみた第3回:2次元キャラクターの「目」を魅力的に表現する為のアプローチ法 前編 | Mayaで作るセルルックキャラクター | AREA JAPAN
EEVEEで周囲を照らすには
Cyclesは現実的な光の表現をするので、放射を設定したオブジェクトが発する光が、周囲を照らす様子も描画されます。
EEVEEは簡易表現(高速レンダリング)なので、オブジェクト間の相互影響は無視されます。
そのため放射を設定しても、そのオブジェクトが発光する様子が描画されるだけで、周囲がその光で照らされるようには描画されません。
※上の画像でEEVEE側の床がぼんやりと明るくなっているのは、スクリーンスペース反射による映り込みです。
EEVEEで周囲を照らす効果を追加するには、発光オブジェクトの近くにライトを配置します。
ライトのカラー・パワー・半径(サイズ)などは、発光オブジェクトに合わせて調整します。
ライトは、発光オブジェクトから少しずらした位置に配置します。
ライトを発光オブジェクトに重ねてしまうと、発光オブジェクト自体に光をさえぎられ、おかしな影ができます。
なお、ライトの種類は発光オブジェクトの形状に応じて使い分けます。
上の見本ではポイントライトを使っていますが、蛍光灯ならばエリアライトを使います。
補足
EEVEEで周囲を照らすには、他に「イラディアンスボリューム」を使う方法もあります。
しかし手間がかかる割に実用性が低いので、解説は省きます。
興味のある方はこちらのリンクを参照してください。
Eeveeレンダーで放射シェーダーをライトにする方法【Blender2.8】 – 忘却まとめ
補足:2.90以前の放射の強さについて
放射の強さは、Blender2.91から追加されたパラメーターです。
2.90以前は放射の強さが無く、働きとしての放射の強さの値は 1.0 で固定でした。
(多分、シェードレスの設定専用だったのだと思います。)
2.90以前のプリンシプルBSDFで発光の強さを操作するには、放射カラーをHSV分離して、V(明度)に数式ノード(乗算)をつなぎます。
以上、放射の使い方でした。
※本文添削・構成アドバイス:相方
お借りした素材
今回の記事で使用した素材は、こちらからお借りしました。
- ディスプレイの3Dモデル:LED Monitor free VR / AR / low-poly 3D model | CGTrader
- ミクさんの3Dモデル:「Tda式初音ミク・アペンド」 / Tda さんの作品 - ニコニ立体
- マテリアルボール:
Material ball in 3D-Coat - Download Free 3D model by 3d-coat (@3d-coat) [a6bdf1d] - Sketchfab is licensed under Creative Commons Attribution
参考サイト
Principled (プリンシプル) BSDF — Blender Manual