====== Corona基本マテリアル設定 ======
このチュートリアルではChaos Coronaでの基本的なマテリアル設定を解説します。\\
[[https://www.oakcorp.jp/temp/CoronaMtl2020.zip|こちらからチュートリアル用のシーンデータをダウンロードしてください。]]
このシーンは予めレンダラーをCoronaに、レンダリングビューをCorona Cameraにロックしてあります。
{{ :chaosgroup:corona:mat_tute01.jpg?direct&600 |}}\\ \\
Chaos Coronaでは「**CoronaPhysicalMtl**」の1つでほぼ全ての質感表現を行う事ができます。とてもシンプルです。\\
なのでこの「**CoronaPhysicalMtl**」マテリアルの使い方だけ知っていればどんな質感でも作る事ができます。
**CoronaPhysicalMtl**はいわゆる「**PBRマテリアル**」(Physically Based Rendering用のマテリアル)呼ばれるマテリアルで、物理ベースレンダリングを行う業界標準の方式を採用しています。\\
CG業界でよく利用されている**Substance Painter**、**Substance Texture**のPBRセットアップが利用できるのはもちろん、V-RayのVRayMtl、ARNOLDのStandardSurface、UnityやUnreal EngineのPBRマテリアルともパラメーターに互換性があります。つまりV-RayやARNOLD, UnityやUnreal Engineの用のPBRマテリアル素材集を流用できる事を意味します。(自動変換ではありませんが、PBRマテリアルの意味を理解していればそれ程難しくありません)
それではスレートマテリアルエディタを開き、Materials > CoronaPhysicalMtl をViewにドラッグ&ドロップします。マテリアル名を「AAA」にします。\\
CoronaPhysicalMtlの出力ドットをビューポートにドラッグ&ドロップして、シーンの「猫」「ボトル」「カップ」「BOXオブジェクト」に割り当てます(同じマテリアルを4つのオブジェクトに割り当てます)\\
もう1つCoronaPhysicalMtlを作成してマテリアル名を「BBB」にします。「テーブル」に割り当てましょう
{{ :chaosgroup:corona:2022-05-27-17-28-05.mp4 |}}
ツールバーからCorona インタラクティブレンダリングを開始します。\\
シーンにライトが無いので真っ暗です。
{{ :chaosgroup:corona:mtl_start_ipr.jpg?direct&600 |}}\\ \\
ツールバーからライトを作成して、テーブルの上の方へ移動してみましょう。
{{ :chaosgroup:corona:2022-05-27-17-36-03.mp4 |}}\\ \\
===== デフォルトの質感(陶磁器) =====
CoronaPhysicalMtlデフォルトは「陶磁器」の様な質感をしています。「陶磁器」は「**非金属**」に該当します。\\
CoronaPhysicalMtl(PBRマテリアル)は大きく分けて「金属」か「非金属」の2種類に分かれます。\\
この「金属」か「非金属」かの切り分けはCoronaPhysicalMtlの「**Metalness**」のパラメーターで切り替わります。
{{ :chaosgroup:corona:metalness.jpg?nolink |}}\\ \\
なお「**Metalness**」のパラメーターは「金属」か「非金属」かの2値だけのパラメーターです。\\
0.5などの中間値は「現実世界では存在しない」マテリアルである事を理解する事が重要です。\\
「**Metalness**」にマップ(ビットマップ)を接続してコントロールできますが、このマップは基本的に「白」か「黒」かの2値マップである必要があります。(グレスケールでも構いませんが、白黒マップにアンチエイリアスがある場合、アンチエイリアス部分の中間値は金属と非金属質感のスムースな推移に使用すると考えてください)\\
デフォルトで「Metalness」は"**Non-Mmetal**"にセットされています。つまり「非金属」です。
まず、注目したいパラメーターは「**Roughnes**」です。このパラメーターで**反射のボケ具合をコントロールします**。BPRマテリアルではライトがマテリアルに反射する(映り込む)事でハイライトが発生するので「反射のボケ具合」=「ハイライトのシャープさ」(光沢度、つややかさとも言われます)をコントロールするパラメーターだとと考えてください。\\
Roughnesの値を変えながらインタラクティブレンダーを確認してみましょう。
{{:chaosgroup:corona:nonmetal_rouphness0.jpg?direct|}}\\ Roughnes が ゼロ(0.0) に近い程、ハッキリとして反射になります。つまりボケないので鋭いハイライトが発生します。
{{:chaosgroup:corona:nonmetal_rouphness025.jpg?direct|}}\\ Roughnes が 0.25 くらいで陶磁器のようなハイライトが発生します。
{{:chaosgroup:corona:nonmetal_rouphness05.jpg?direct|}}\\ Roughnes 0.5 になると 紙のようなマットな質感になります。
{{:chaosgroup:corona:nonmetal_rouphness1.jpg?direct|}}\\ Roughnes 0.5 以上~1.0 は殆ど使用する事はないでしょう。(光沢が全く無い質感になります)
Roughnes を 0.25 付近に戻します。\\
しかし、今シーンに「ライト1つ」の状態なので非常に質感が分かりづらいですね。\\
3D CGがリアルに見える肝になるのは「周りの環境が写り込む事」です。
Coronaツールバーから**Chaos Cosmos**を呼び出します。\\
HDRI > Day のカテゴリから Day 034 をシーンにインポートしましょう。
{{ :chaosgroup:corona:cosmos_hdri.jpg?direct&800 |}}
インポートするとプレビューが「真っ白」になりましたね。これは読み込んだHDRIが明るい日中のHDRI写真なので、カメラの露出が追いついていない事が原因です。
よくあるのがここで「HDRIが明るすぎるからHDRIイメージを暗くしよう」と考えてしまう事です。これは正しくありません。\\ 現実世界で太陽光をの明るさを簡単に調整する事ができない様に、太陽光下での見え方の調整はカメラ(人間の目)側の露出を絞って明るさを調整すると考える事が大切です。
Coronaでの露出補正はフレームバッファの「**Tone Mapping**」領域で全てがコントロールされます。他のレンダラーの様に物理カメラを使ってカメラ側で露出コントロールする事もできますが、Coronaでは物理カメラを使う場合もフレームバッファの「Tone Mapping」で一元管理されるので、フレームバッファの「Tone Mapping」だけで露出補正する事がお手軽です。
フレームバッファの「Tone Mapping」で **Simple Exposure** を **-5.50** くらいにセットすると太陽光下の露出が取れます。
{{ :chaosgroup:corona:simpleexposure.jpg?direct&800 |}}\\ \\
ライト1つのみの時と比較して、マテリアルも「より白く」見えるのが分かります。この様にマテリアルの見た目を確認するには周囲の環境光がいかに大切であるかが解ると思います。(業界ではルックデベロップメントを呼ばれます)\\
\\
\\
スレートマテリアルエディタで、Mapカテゴリから「**CoronaMultiMap**」をビューに追加します。CoronaMultiMapの出力を**マテリアルAAA**のBase colorに接続します。
すると、マテリアルAAAが割り当てられているオブジェクトにランダムに異なる色が付きます。
{{ :chaosgroup:corona:coronamultimap.jpg?direct&600 |}}
**CoronaMultiMap**は、ある条件でランダムに色を変化させるマップです。\\
初期設定ではInstanceとなっており、オブジェクト毎にCoronaMultiMapの下部にセットされているカラーがランダムで割当てられる仕組みになっています。
{{ :chaosgroup:corona:coronamultimap_instance.jpg?direct |}}
Roughnes を 0.25 のまま、今度は **IOR** の値を 3.0 に引き上げてみましょう。表面の反射率が上がったのが解ると思います。
{{ :chaosgroup:corona:ior3.jpg?direct&600 |}}
逆に **IOR** を 1.0 に引き下げます。反射がなくなりました。反射がなくなったので、スペキュラーハイライトも無くなります。
{{ :chaosgroup:corona:ior1.jpg?direct&600 |}}
このように光沢さは同じままで「**反射率**を落としたい(上げたい)」場合は IOR でコントロールします。\\
(Coronaでは IOR 1.0 ~ 3.0 が下限と上限の範囲です)
BPRマテリアルの「**反射率は IOR でコントロール**」と覚えてください。
**IOR** 1.5 にもどしてください。(数値スピナーを右クリックするとデフォルト値にリセットされます)
===== 金属マテリアル =====
今度はマテリアルを「金属」にしてみましょう。上部にある 「Metalness」を Metal に切り替えます。\\
一気に金属っぽくなります。
{{ :chaosgroup:corona:metalness_metal.jpg?direct&600 |}}
ここでも **Roughnes**を調整してみましょう。
{{:chaosgroup:corona:metal_roughness00.jpg?direct|}}\\ Roughnes 0.0 で完全なクローム
{{:chaosgroup:corona:metal_roughness01.jpg?direct|}}\\ Roughnes 0.1 でスチール
{{:chaosgroup:corona:metal_roughness03.jpg?direct|}}\\ Roughnes 0.3 でアルミニウム
{{:chaosgroup:corona:metal_roughness04.jpg?direct|}}\\ Roughnes 0.4 はパールの様になります。0.5以上は殆ど使用されません。
Roughnes 0.25 に戻します。
今度は **Anisotopy (異方性)** の **Amount** を 0.4 当たりに変更します。ハイライト(反射)が1方向(縦方向)に引き伸ばされてヘアライン加工の様になりました。
{{ :chaosgroup:corona:aniso04.jpg?direct&800 |}}\\ \\
Anisotopy の **Rotation** を 90 に引き上げると、引き伸ばしの方向が90度回転(横方向)します。
{{ :chaosgroup:corona:aniso_90degree.jpg?direct&800 |}}\\ \\
なお、**Rotation** を **0.0** に戻し、**Amount を -0.4 にセットしても90度回転した結果と同じになります**。\\
つまりAmountのプラスが横方向、マイナスが縦方向に引き伸ばす事を意味します。
{{ :chaosgroup:corona:aniso_negative.jpg?direct&600 |}}\\ \\
なお、この引き伸ばす方向(Rotation)はグラデーションマップでコントロールする事ができます。\\
スレートマテリアルエディタの、マップ>一般>グラデーションマップをビューに追加します。
グラデーションタイプを「らせん」にセットし UVタイリング値を 3.0 にセットします。
このグラデーションマップを、Base anido rot に接続します。\\
そしてグラデーションマップのヘアライン加工されたパネルの様になります。
{{ :chaosgroup:corona:2022-05-27-20-32-08.mp4 |}}
===== ガラスマテリアル =====
Anisotopyを 0.0 に戻し、Metalness を None-metalにセットします。
**Refraction(屈折)**の **Amount** を **1.0** に引き上げましょう。
すりガラスのような質感になります。
{{ :chaosgroup:corona:refraction10.jpg?direct&800 |}}\\ \\
**Roughnes** を 0.0 にセットすると完全な透明ガラスの様になります。(Roughnes 0.02くらいに少しぼかした方がリアルです)
{{ :chaosgroup:corona:refraction_rouph002.jpg?direct&800 |}}\\ \\
屈折率は IOR でコントロールできます。 注目したいのは **IOR 1.0** は何も屈折しないのでオブジェクトが見えなくなります。
{{:chaosgroup:corona:refraction_ior133.jpg?direct|}}\\ 水が 1.33
{{:chaosgroup:corona:refraction_ior150.jpg?direct|}}\\ ガラスは 1.5
{{:chaosgroup:corona:refraction_ior240.jpg?direct|}}\\ ダイアモンド 2.4
{{:chaosgroup:corona:refraction_ior100.jpg?direct|}}\\ 1,0 で表面で光が屈折しなくなり見えない
なお Refraction 領域にある **Dispersion [分光/回析]** をチェックすると、光の波長によって屈折率が変わり透過光が虹色に見える効果が追加されます。\\
たとえは IOR 2.4 [ダイヤ]と組み合わせると以下のような結果です(インタラクティブレンダーなので非常に荒いです)
{{ :chaosgroup:corona:refraction_disversion.jpg?direct&800 |}}
**Dispersion** のチェックを外し、IOR をデフォルトの **1.5** に戻します。
CoronaPhysicalMtl下部の** Media Options ロールアウト**を開き、**Absoption color** に濃い緑色をセットします。\\
**Distace** の値を引き上げるとガラスの厚さに応じて光が吸収されガラスに色が付きます。\\
現実のガラスは完璧な透明では無いので、少し着色するとリアルに見えます。
{{ :chaosgroup:corona:2022-05-27-20-58-17.mp4 |}}
{{ :chaosgroup:corona:wood_color.jpg?direct&600 |}}
===== リアルな木材マテリアル =====
今度はテーブルの質感を変更します。[[https://www.oakcorp.jp/_media/chaosgroup/corona/woodfloor051_1k_color.jpg?w=400&tok=356488|こちらから木材のテクスチャ画像(WoodFloor051_1K_Color.jpg)をダウンロードしてください]]。(このデータは著作権フリー素材集配布サイト ambientcg.com の **[[https://ambientcg.com/view?id=WoodFloor051|Wood Floor 051]]** から取り出したデータです)
{{ :chaosgroup:corona:woodfloor051_1k_color.jpg?direct&400 |}}\\ \\
テーブルに割り当てた マテリアルBBB を開き ColorのマテリアルスロットにWoodFloor051_1K_Color.jpgをドラッグ&ドロップします。テーブルに木目がテクスチャされました。見やすい様に少し視点を変更してください。\\ **Rhouphness** は 0.1 あたりが良いでしょうか。
{{ :chaosgroup:corona:wood_color.jpg?direct&600 |}}
木材をリアル見せるには表面の凹凸による反射の変化が必要です。
木材のBitmapを Base bumpのスロットに接続します。表面に凹凸が生まれリアルに見える様になります。\\
バンブの量は "Bump"でコントロールできます。Maps optionsでBase colorを一時的に無効にするとわかり易いです。
{{ :chaosgroup:corona:2022-05-30-17-21-26.mp4 |}}
スレートマテリアルエディタにて、マップ>一般>**ColorCorrection**をビューに追加します。\\
木目のテクスチャとBase Colorの接続の間にColorCorrectionを挿入します。
彩度や輝度を調整して、木目テクスチャをニス仕上げの様に変化させる事ができます。\\
また、マップのUVタイリング値を変更してテクスチャの縦横サイズを調整できます。
{{ :chaosgroup:corona:2022-05-30-17-24-18.mp4 |}}
===== リアルプラスチックマテリアル(SSS) =====
再び マテリアルAAAに戻り、Roughness を 0.2、Refractionを 0,0 に戻します。(初期値に近い設定に戻ります)
{{ :chaosgroup:corona:resrtcp.jpg?direct&600 |}}
CoronaPhysicalMtl下部の **Media Optionsロールアウト**を開き、**Subsurface Scatteringの Amountを 1.0 にします**。\\
その後、Radiusパラメーターを徐々に引き上げてみましょう。\\
**Radius 0.01** でも半透化しリアルなプラスチックの質感になります。
{{ :chaosgroup:corona:2022-05-30-17-33-37.mp4 |}}
以下は通常レンダリングのSSS(Radius 0.02)有り無しの比較です(GIFアニメーション)。SSS有りではよりプラスチック感が増しています。
{{ :chaosgroup:corona:sssonoff.gif?direct |}}
あくまで参考:Amount を少し引き上げ、Colorに模様をマップすると大理石の様ににもなります。\\ {{ :chaosgroup:corona:marble01.jpg?direct&200 |}}
最後にSubsurface Scatteringの Amountを 0.0 に戻してSSSの効果を無効化します。\\
===== 牛乳やジュース等の濁った液体(ボリュームスキャッター) =====
Roughnesを 0.1 程度にセットし、Refractionの Amount を 1.0 にしましょう。
{{ :chaosgroup:corona:resrtcp2.jpg?direct&600 |}}
CoronaPhysicalMtl下部の Media Options ロールアウトを開き、**Volumetric Scattering**の **Absoption color** を黒にセットし、**Scattering Color** を白にセットします。\\
**Distance** を **0.03** にセットすると 牛乳 の質感になります。
さらに**Scattering Color** を 明るい黄色にセットするとオレンジジュースの質感になります。
{{ :chaosgroup:corona:2022-05-30-18-12-42.mp4 |}}
SSSとの違いは、Volumetric Scatteringは「**濁った液体**」の表現に向いています。Distanceを引き上げてボリュームを薄くするとわかり易いです。(下図)薄いジュースのような質感です。
SSSは個体の半透明(皮膚や大理石、プラスチック)に向いています。
{{ :chaosgroup:corona:volime_scattering.jpg?direct&600 |}}
===== カーペイントマテリアル =====
様々な質感を作成してきました。今度はより高度なカーペイントの質感を作成してみましょう。
**マテリアルAAA**の**Refraction Amoun**tを **0.0** にセットして不透明に戻します。
その後、**Metalness**を"**Metal**"にセットし、Roughness を0.65 の様にセットして非常にマットな金属の様にします。いわゆるこれが下地塗装になります(目には見えないレベルの細かい金属ラメ入りという質感)
{{ :chaosgroup:corona:metal_parl.jpg?direct&600 |}}\\ \\
CoronaPhysicalMtl下部の** Cleacort Layer**の **Amount**を **1.0** にセットしてクリアコートを有効化します。\\
**Cleacort Layer**の **Rouphness** を **0.15** 程度にセットします。\\
これで下地塗装の上につややかなクリアコートを施した質感になります。Baseレイヤのぼやけた反射とクリアコートレイヤーのハッキリとしたで2重の反射(2重のハイライト)になり、より複雑なマテリアル構造となっています。たったこれだけでカーペイントが完成です。
{{ :chaosgroup:corona:carpaint.jpg?direct&600 |}}
イメージ的には、BaseLayerの上に 透明な反射層が重なっているイメージです。
{{ :chaosgroup:corona:basepluscort.jpg?nolink |}}
比較すると違いが解るかと思います。
{{ :chaosgroup:corona:crearcoat.gif?nolink |}}
以上で基本的なマテリアル設定の解説は完了です。