Blender

【Blender入門】Cycles Renderでリアルなガラスっぽいシェーダーをノードベースで作る

VR部代表の高木です。

VR部ではVket5にブースを出展予定で、代表の私を中心にモデリングやUnityを使った入稿作業をやっていました。

こういうわけで最近はVR部でBlenderやUnityを触る機会が多かったので、これからそこで培った技術をアウトプットしていきたいと思います。

今回は、「作成した3Dモデルの紹介用に、プリレンダリングしたフォトリアルな画像を作成する」ことを目標に、初心者にもやさしくBlenderの使い方を説明していきたいと思います。

マテリアルの設定はだいたいプリンシプルBSDFでほとんどの質感の表現ができるので、「Blender マテリアル」で調べたら様々な情報が出てくるのですが、今回はその一歩先の、ググってもあまり情報が出てこない「シェーダーエディター」の使い方を詳しく解説します!

題材は、「色収差のあるガラス屈折表現」です。

シェーダーエディターとは?

マテリアルをノードベースで直感的に編集する機能を「シェーダーエディター」といいます。

シェーダーエディターを開くには、図のようにそれぞれのブロックの左上にある「エディタータイプの選択」から「シェーダーエディター」を選択しましょう。

シェーダーエディターの作業領域は広いほうが良いので、下側のパネル(デフォルトはタイムライン)を大きく引き上げて図のような配置にしておきましょう。

屈折を設定するにあたって立方体より球のほうがレンダリングの都合がいいので、デフォルトキューブは削除してUV球を作成します。(オブジェクトモードでCubeを選択して「X」キーで削除、Shift + A キーで追加→メッシュ→UV Sphere)

UV球をなめらかな球面にするために、モディファイアーを追加→サブディビジョンサーフェス→レンダーのレベル数を6にします(PCスペックによっては減らしたほうが良いかも)(Blender 2.79までは細分割曲面という名前でした)

レンダーエンジンはデフォルトでEeveeになっているので、レンダープロパティからRender Engine を Cyclesに、デバイスを(GPUを使用できる人は)GPU演算に変更しておきましょう。

このマテリアルはアルベド(物体の本来の色)ではなく反射や屈折が主なので、効果をわかりやすくするためにHDRI環境テクスチャを光源にします。

右のワールドプロパティから、サーフェスのカラーを「環境テクスチャ」、画像をHDRI画像に設定します。(普通の360度パノラマ画像でも大丈夫です)

手元に画像がない場合は(普通はないです)、「HDRI画像 フリー」で検索して用途にあった画像を探すと良いですね。

また、ガラスはできるだけ明るくみせたいので、「強さ」を変更して 2.7 にしておきました。

右のプロパティパネルからマテリアルプロパティを選択、アウトライナーか3Dビューポートパネルから先ほど追加した球のオブジェクトを選択して、新規マテリアルを追加してみましょう。今回はMaterialという名前にしました。

「サーフェス」のプルダウンから「ノードを使用」がONになっているのを確認して、編集するノードの対象が先ほど作成したMaterialであるかも確認しておきます。今回はひとつしかマテリアルを作成していないので間違えようがないですが、複数のマテリアルを編集していると意外とごっちゃになってくるのでチェックを習慣づけます。

新規マテリアルを追加した段階で、自動でシェーダーエディターにもノードが追加されるはずです。

まずはシンプルにグラスBSDFだけのノードを作成します。

IOR(Index of Refraction)(屈折率)はデフォルト値の 1.45、粗さは 0 にします。

ちなみに反射はreflection、屈折はrefractionなので日本人にはかなり紛らわしい用語になっています。

カタカナではリフレクションとリフラクションという表記で区別しているみたいなので、間違えないように気を付けましょう。

ひとまずF12キーを押してレンダリングしてみます。

初期設定だとノイズが多いので、気になる人はサンプリング数を増やしましょう。私はPCスペックに余裕があるのでずっと1024にしています。

(あとポストエフェクトでレンダー結果にグレアを追加していますがこれについては別の記事で記載します)

レンダリング結果はこちら。これはこれで綺麗なんですが、なんだか偽物っぽい感じがしますよね。

これは、現実世界のガラスは色収差(光の波長によって屈折率が変わること)があり色がにじむためで、今回はこれを再現してよりリアルなガラス球を作っていきます。

ガラス球の資料を探したところ、佐藤鉄工株式会社の製品紹介ページに写真がありました。

http://www.satotekkou.co.jp/product/glass-kogaku

(ガラス内部に映った金属メッシュの色がにじんでいるのがわかると思います)

シェーダーエディターの使い方

まずは Shift + D キーでグラスBSDFを3つに複製しましょう。

そして、それぞれのカラーを、赤、緑、青の単色にします。

カラー選択モードがHSVになっている場合はRGBにして、それぞれの色を 1、それ以外を0にします。

次に、それぞれの色の成分を出力結果に混ぜ合わせるために、「Shift + A キー」→「シェーダー」→「シェーダー加算」を選択して2つ追加します。

ドラッグアンドドロップで、下記のようにノードをつなぎます。

最低限のノードが組み終わりました。それぞれのIORを変更してみましょう。ここでは赤のIORを1.40、青のIORを1.50にしてレンダリングしてみます。

だいぶ光の分散が分かりやすくなりました。ただ、ちょっとやりすぎ感がありますね。ここからパラメーターをちょうどいい値にしていくのですが、ここで数字を調節しやすいように、新たに数式ノードと値ノードを追加しましょう。

「追加」→「コンバーター」→「数式」で加算ノードと減算ノードを追加しましょう。(加算ノードは直訳のためかなぜか追加という名前になっている)

ここに「追加」→「出力」→「値」からノードを追加して、IORとDispersionという名前にリネームします。(Nキーを押して右のメニューを呼び出して、「アイテム」メニューの「ノード」にある「ラベル」に入力すると変更できます)

これで図のようにノードをつないでいけば、IOR(屈折率)やDispersion(分散)が簡単に変更できるようになります。

(上が減算ノード、下が追加ノードです。入力された屈折率より小さい値が入るのが赤色成分のグラスBSDF、大きい値が入るのが青色成分のグラスBSDF)

数値をいろいろ変えた結果、IORはそのままでDispersion 0.013 がイメージ通りのレンダー結果だったので、今回はこれで結果を保存しました。

今後もガラス製の何かを作るときは、このマテリアルを使いまわしていきたいと思います。

色付きガラスを作る場合はちょっとノードに改修が必要です。

具体的には、RGBを入力するノード、RGB分離とRGB合成のコンバーターノードを使用して、各成分だけを次のノードに伝えるノードを作ればカラーチェンジができるようになります。

スクショを貼っておきますのでぜひ参考にしてみてください!

まとめ

いかがでしたか?

一見複雑なことをしているように見えるノードでも、一歩ずつ考えていけばひも解くことができると感じていただけたのではないかと思います。

私自身Blenderのノードエディターの情報をググっても、最後の画像のような完成形だけ見せられて終わり、みたいなサイトが多く学習に苦労したので、今回は途中の制作過程も丁寧にまとめてみました。

この記事が参考になったという人は、ぜひSNSなどでシェアしていただけると励みになります!

 

AR, VR. XR の活用やMicrosoft Holo Lensを活用した建築業向けソリューション

GyroEyeに関するお問合せはこちら

※株式会社インフォマティクスのGyroEye公式サイトへ

スマホブラウザで、施設内インドアの経路案内や店舗案内がダイナミックに!

インドア空間のスマートデジタル化・AR活用はこちら

※株式会社インフォマティクスのインドアマップシステムMappedin(マップトイン)公式サイトへ

 

 

-Blender
-, , , , , , ,

© 2021 IoTプロトタイピング・VR・AR・Unity メディアラボ