Chaos Coronaを始める

K.Anninos

Chaos Corona for 3ds Max を触ってみる!

こちらでは autodesk社 3ds Max版Chaos Coronaを初めて使ってみる手順を紹介します。

3dsMaxとChaos Corona評価版のインストール

ここでは既に 3ds Max 2014~2023が動作している環境がある事を前提としています。
3ds Maxをお持ちでない場合Autodesk社のWEBサイトから体験版を取得できます。3dsMax体験版でもChaos Coronaは動作します。

まず、こちらを参照いただきChaos Coronaをダウンロードしインストールして3dsMaxを起動し、Chaos Coronaの評価版ライセンスを取得してください。
評価ライセンスがうまく取得できない場合こちらから相談ください。 Chaos Coronaは 3ds Max 2014~2023 をサポートしています。

シーンを開く

こちらから3dsMaxのシーンをダウンロードいただき、シーンファイルを開きます。

メモ: レンダリング設定を開くとこのシーンはレンダリングカメラが右下の“パース”にロックされています。 これは3dsMaxデフォルトではアクティブビュー(最後に操作したビュー)に自動的にレンダリングビューが切り替わる設定なので、これを右下の“パース”ビューに固定しています。インタラクティブレンダリング中に別のビューポートを触ってもインタラクティブレンダリングのカメラが切り替わりません。

レンダリングしてみましょう。真っ暗です。これはシーンにライトが存在しないからです。(レンダリングを途中で停止[Stop]して構いません)

照明(太陽光)を作成する

Coronaツールバーから Corona Sunを作成ボタンをクリックします。

フロントビューで以下図の様にクリックしてドラッグすると太陽が作成されます。
もう一度クリックして大量の位置を確定します。

修正タブに切り替えて “Add CoronaSky enviroment” ボタンを押します。
これで環境マップに Corona Skyマップがセットされます。
3dsMaxの“レンダリング”メニュー » 環境 から “環境と効果”のウィンドウを開くと(数字の8キーがショートカット)
環境マップにCoronaSkyがセットされているのを確認できます。

レンダリングすると以下の様になりました。(途中で停止してください)

インタラクティブレンダリングを開始する

ツールバーの“Start interactive rendering in the Corona VFB”(CoronaVFBでインタラクティブプレビューレンダリング[略してIPR]を開始)アイコンをクリックします。これでインタラクティブにシーンの変更を確認できます。

“Start interactive rendering in the Corona VFB”ボタンを実行すると、バーチャルフレームバッファー(VFB)と呼ばれる新しいウィンドウが開きます。
ビューポートで行った変更は即座にレンダリングに反映されます。

例えばツールバーから“Create Corona Light”(Coronaライトを作成)をクリックし

ビューポートのライトを置きたい場所でクリックしてドラッグする事でシーンにライトを追加できます。
即座にCoronaVFBのプレビューが更新される事が解ると思います。リアルタイム更新を確認したら、このライトを削除してください。

カメラを作成する

パースビューがアクティブになっている事を確認して、Coronaツールバーから“Create Corona Camera from View”(ビューからCoronaカメラを作成)ボタンをクリックします。

これによりアクティブなビュー(この場合パース)の視点のままCoronaカメラが作成されます。

露出を調整する

VFBではレンダリングされた画像を表示する以外に、右側のコントロール領域でレンダリング画像を調整することもできます。
特に重要なのが TONE MAPPING の領域です。 TONE MAPPINGの文字部分をクリックするとパラメーターにアクセスできます。

Simple Exposer(露出)で露出の調整ができます。下げると窓の外の空に露出が合い空のグラデーションが見える様になります。上げると室内に露出が合って室内がよく見える様になります。なお上下のスライダー(スピナと呼ばれます)を右クリックするとデフォルト値(この場合0.0)にセットされます。(スピナを右クリック=リセットは便利なので覚えておきましょう。)

TONE MAPPINGの領域の[+]ボタンを押してBasicカテゴリから “Photographic Exposure”を追加します。このトーンマッパーはカメラのパラメーターを使ってレンダリングの露出補正を行います。いわゆる「フィジカルカメラ」と呼ばれる機能で、現実世界の一眼レフカメラと同じパラメーターでレンダリングの露出を調整できます。 例えば、Cameraの F-stopが小さい程明るくなり、F-stopが大きい程暗くなります。ISO等でも露出をコントロールできます。

なお他にも HighLight Compression(ハイライトの圧縮) で白飛びした部分の調整、 White Blance(ホワイトバランス) で太陽光や蛍光灯の色かぶりの補正が行なえます。VFB右側の機能はポストエフェクト(画像に対するエフェクト)なのでIPRだけでなく最終レンダリング中でもインタラクティブに調整できます。

Chaos Cosmosアセットを使用する

Chaos Coronaに付属している Chaos Cosmos を使うと、シーンに雑貨や家具等の小道具を簡単に無料で追加できます。ツールバーからChaos Cosmosを開く事ができます。 Chaos Cosmosを使用するにはChaosアカウントを使ってログインが必要です。Sign inから必ず行ってください。

シーンにモデルを追加するには、使用したいモデルのサムネイル右上にあるダウンロードをクリックします。ダウンロードが完了するとシーンにドラッグ&ドロップする事で配置できます。 向きやスケールは3dsMaxの機能で調整してください。 (一度ダウンロードした物はコンピュータ内に残りますので、再度ダウンロードする必要はありません。 )

例えば、室内に以下の様にお好きなアセットを配置してみましょう。一気に生活感が出てきましたね!

Coronaマテリアルライブラリーを使用する

Chaos CoronaにはCoronaマテリアルライブラリーも付属しています。ツールバーから呼び出す事ができます。

左側のフローリングカテゴリに移動し、お気に入りのマテリアルを床に対してドラッグアンドドロップして割り当てる事ができます。(オブジェクトをリストから選択して マテリアルライブラリーのサムネイルを右クリック » Assign to Selected Objectsからでも割当てできます。
インタラクティブレンダリングで確認しましょう。

メモ: Coronaマテリアルライブラリーの全てのマテリアルは、リアルワールドスケールで設定されています。これにより、実スケールでモデリングしたオブジェクトのテクスチャのマッピングが簡単になります。

最終レンダリングする

VFBウィンドウで右上の「Render」ボタンをクリックすると、最終レンダリングが開始されます。
Chaos Coronaのレンダリングには基本的に「終わりは無く」永久にレンダリングが続けられます。
満足いく品質になったら「Stop」ボタンを押してレンダリングを完了します。

レンダリング設定ウィンドウ(F10)の Sceneタブ>General Settings領域でレンダリングを自動停止する時間またはノイズ量を設定できます。

たとえば Time limit (制限時間) で 10m をセットするとレンダリングは10分後に自動停止します。
または Noise level limit(ノイズレベル) でも停止させる事ができます。数値が低い程ノイズが少ない事を意味します。Noise level limit 6~7.0% はドラフトレンダリングに適しており、3~5%は最終レンダリングに適しています。 3%を設定して“Render”ボタンをクリックします。画像全体のノイズ量が3%未満に達するとレンダリングが自動停止します。これでCorona Rendererの基本のレンダリングは完了です。
ちなみに Corona Rendererに様々なGIサンプリングの設定は不要です。(ほぼ全自動)

デノイザーを使用する

デノイザーを使用すると高いNoise level limitでも綺麗なレンダリング出力が得られます。(つまりレンダリング時間を短縮できます)
レンダリング設定 » Scneneタブ » General Settings ロールアウト » Denoising からお好きなデノイザーを選択します。
デノイズはレンダリング停止条件でレンダリングが完了した後、もしくは停止した後に適用されます。

デノイザーのOn/Off比較はVFBの Denoiser からできます。(有効化はレンダリング設定からのみ)

Corona基本マテリアル設定

このチュートリアルではChaos Coronaでの基本的なマテリアル設定を解説します。
こちらからチュートリアル用のシーンデータをダウンロードしてください。

このシーンは予めレンダラーをCoronaに、レンダリングビューをCorona Cameraにロックしてあります。

Chaos Coronaでは「CoronaPhysicalMtl」の1つでほぼ全ての質感表現を行う事ができます。とてもシンプルです。
なのでこの「CoronaPhysicalMtl」マテリアルの使い方だけ知っていればどんな質感でも作る事ができます。

CoronaPhysicalMtlはいわゆる「PBRマテリアル」(Physically Based Rendering用のマテリアル)呼ばれるマテリアルで、物理ベースレンダリングを行う業界標準の方式を採用しています。
CG業界でよく利用されているSubstance PainterSubstance 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」にします。「テーブル」に割り当てましょう

ツールバーからCorona インタラクティブレンダリングを開始します。
シーンにライトが無いので真っ暗です。

ツールバーからライトを作成して、テーブルの上の方へ移動してみましょう。

デフォルトの質感(陶磁器)

CoronaPhysicalMtlデフォルトは「陶磁器」の様な質感をしています。「陶磁器」は「非金属」に該当します。
CoronaPhysicalMtl(PBRマテリアル)は大きく分けて「金属」か「非金属」の2種類に分かれます。
この「金属」か「非金属」かの切り分けはCoronaPhysicalMtlの「Metalness」のパラメーターで切り替わります。

なお「Metalness」のパラメーターは「金属」か「非金属」かの2値だけのパラメーターです。
0.5などの中間値は「現実世界では存在しない」マテリアルである事を理解する事が重要です。
Metalness」にマップ(ビットマップ)を接続してコントロールできますが、このマップは基本的に「白」か「黒」かの2値マップである必要があります。(グレスケールでも構いませんが、白黒マップにアンチエイリアスがある場合、アンチエイリアス部分の中間値は金属と非金属質感のスムースな推移に使用すると考えてください)
デフォルトで「Metalness」は“Non-Metal“にセットされています。つまり「非金属」です。

まず、注目したいパラメーターは「Roughnes」です。このパラメーターで反射のボケ具合をコントロールします。BPRマテリアルではライトがマテリアルに反射する(映り込む)事でハイライトが発生するので「反射のボケ具合」=「ハイライトのシャープさ」(光沢度、つややかさとも言われます)をコントロールするパラメーターだとと考えてください。
Roughnesの値を変えながらインタラクティブレンダーを確認してみましょう。

Roughnes が ゼロ(0.0) に近い程、ハッキリとして反射になります。つまりボケないので鋭いハイライトが発生します。
Roughnes が 0.25 くらいで陶磁器のようなハイライトが発生します。
Roughnes 0.5 になると 紙のようなマットな質感になります。
Roughnes 0.5 以上~1.0 は殆ど使用する事はないでしょう。(光沢が全く無い質感になります)

Roughnes を 0.25 付近に戻します。
しかし、今シーンに「ライト1つ」の状態なので非常に質感が分かりづらいですね。
3D CGがリアルに見える肝になるのは「周りの環境が写り込む事」です。

CoronaツールバーからChaos Cosmosを呼び出します。
HDRI > Day のカテゴリから Day 034 をシーンにインポートしましょう。

インポートするとプレビューが「真っ白」になりましたね。これは読み込んだHDRIが明るい日中のHDRI写真なので、カメラの露出が追いついていない事が原因です。 よくあるのがここで「HDRIが明るすぎるからHDRIイメージを暗くしよう」と考えてしまう事です。これは正しくありません。
現実世界で太陽光をの明るさを簡単に調整する事ができない様に、太陽光下での見え方の調整はカメラ(人間の目)側の露出を絞って明るさを調整すると考える事が大切です。

Coronaでの露出補正はフレームバッファの「Tone Mapping」領域で全てがコントロールされます。他のレンダラーの様に物理カメラを使ってカメラ側で露出コントロールする事もできますが、Coronaでは物理カメラを使う場合もフレームバッファの「Tone Mapping」で一元管理されるので、フレームバッファの「Tone Mapping」だけで露出補正する事がお手軽です。

フレームバッファの「Tone Mapping」で Simple Exposure-5.50 くらいにセットすると太陽光下の露出が取れます。

ライト1つのみの時と比較して、マテリアルも「より白く」見えるのが分かります。この様にマテリアルの見た目を確認するには周囲の環境光がいかに大切であるかが解ると思います。(業界ではルックデベロップメントを呼ばれます)

スレートマテリアルエディタで、Mapカテゴリから「CoronaMultiMap」をビューに追加します。CoronaMultiMapの出力をマテリアルAAAのBase colorに接続します。 すると、マテリアルAAAが割り当てられているオブジェクトにランダムに異なる色が付きます。

CoronaMultiMapは、ある条件でランダムに色を変化させるマップです。
初期設定ではInstanceとなっており、オブジェクト毎にCoronaMultiMapの下部にセットされているカラーがランダムで割当てられる仕組みになっています。

Roughnes を 0.25 のまま、今度は IOR の値を 3.0 に引き上げてみましょう。表面の反射率が上がったのが解ると思います。

逆に IOR を 1.0 に引き下げます。反射がなくなりました。反射がなくなったので、スペキュラーハイライトも無くなります。

このように光沢さは同じままで反射率を落としたい(上げたい)」場合は IOR でコントロールします。
(Coronaでは IOR 1.0 ~ 3.0 が下限と上限の範囲です)

BPRマテリアルの「反射率は IOR でコントロール」と覚えてください。

IOR 1.5 にもどしてください。(数値スピナーを右クリックするとデフォルト値にリセットされます)

金属マテリアル

今度はマテリアルを「金属」にしてみましょう。上部にある 「Metalness」を Metal に切り替えます。 一気に金属っぽくなります。

ここでも Roughnesを調整してみましょう。

Roughnes 0.0 で完全なクローム
Roughnes 0.1 でスチール
Roughnes 0.3 でアルミニウム
Roughnes 0.4 はパールの様になります。0.5以上は殆ど使用されません。

Roughnes 0.25 に戻します。

今度は Anisotopy (異方性) の Amount を 0.4 当たりに変更します。ハイライト(反射)が1方向(縦方向)に引き伸ばされてヘアライン加工の様になりました。

Anisotopy の Rotation を 90 に引き上げると、引き伸ばしの方向が90度回転(横方向)します。

なお、Rotation0.0 に戻し、Amount を -0.4 にセットしても90度回転した結果と同じになります。
つまりAmountのプラスが横方向、マイナスが縦方向に引き伸ばす事を意味します。

なお、この引き伸ばす方向(Rotation)はグラデーションマップでコントロールする事ができます。
スレートマテリアルエディタの、マップ>一般>グラデーションマップをビューに追加します。 グラデーションタイプを「らせん」にセットし UVタイリング値を 3.0 にセットします。

このグラデーションマップを、Base anido rot に接続します。
そしてグラデーションマップのヘアライン加工されたパネルの様になります。

ガラスマテリアル

Anisotopyを 0.0 に戻し、Metalness を None-metalにセットします。

Refraction(屈折)Amount を 1.0 に引き上げましょう。

すりガラスのような質感になります。

Roughnes を 0.0 にセットすると完全な透明ガラスの様になります。(Roughnes 0.02くらいに少しぼかした方がリアルです)

屈折率は IOR でコントロールできます。 注目したいのは IOR 1.0 は何も屈折しないのでオブジェクトが見えなくなります。

水が 1.33
ガラスは 1.5
ダイアモンド 2.4
1.0 で表面で光が屈折しなくなり見えない

なお Refraction 領域にある Dispersion [分光/回析] をチェックすると、光の波長によって屈折率が変わり透過光が虹色に見える効果が追加されます。
たとえは IOR 2.4 [ダイヤ]と組み合わせると以下のような結果です(インタラクティブレンダーなので非常に荒いです)

Dispersion のチェックを外し、IOR をデフォルトの 1.5 に戻します。

CoronaPhysicalMtl下部の Media Options ロールアウトを開き、Absoption color に濃い緑色をセットします。
Distace の値を引き上げるとガラスの厚さに応じて光が吸収されガラスに色が付きます。
現実のガラスは完璧な透明では無いので、少し着色するとリアルに見えます。

リアルな木材マテリアル

今度はテーブルの質感を変更します。
こちらから木材のテクスチャ画像(WoodFloor051_1K_Color.jpg)をダウンロードしてください。
(このデータは著作権フリー素材集配布サイト ambientcg.com の Wood Floor 051 から取り出したデータです)

テーブルに割り当てた マテリアルBBB を開き ColorのマテリアルスロットにWoodFloor051_1K_Color.jpgをドラッグ&ドロップします。テーブルに木目がテクスチャされました。見やすい様に少し視点を変更してください。
Rhouphness は 0.1 あたりが良いでしょうか。

木材をリアル見せるには表面の凹凸による反射の変化が必要です。 木材のBitmapを Base bumpのスロットに接続します。表面に凹凸が生まれリアルに見える様になります。
バンブの量は “Bump”でコントロールできます。Maps optionsでBase colorを一時的に無効にするとわかり易いです。

スレートマテリアルエディタにて、マップ>一般>ColorCorrectionをビューに追加します。 木目のテクスチャとBase Colorの接続の間にColorCorrectionを挿入します。

彩度や輝度を調整して、木目テクスチャをニス仕上げの様に変化させる事ができます。
また、マップのUVタイリング値を変更してテクスチャの縦横サイズを調整できます

リアルプラスチックマテリアル(SSS)

再び マテリアルAAAに戻り、Roughness を 0.2、Refractionを 0,0 に戻します。(初期値に近い設定に戻ります)

CoronaPhysicalMtl下部の Media Optionsロールアウトを開き、Subsurface Scatteringの Amountを 1.0 にします。
その後、Radiusパラメーターを徐々に引き上げてみましょう。
Radius 0.01 でも半透化しリアルなプラスチックの質感になります。

以下は通常レンダリングのSSS(Radius 0.02)有り無しの比較です(GIFアニメーション)。SSS有りではよりプラスチック感が増しています。

あくまで参考:Amount を少し引き上げ、Colorに模様をマップすると大理石の様ににもなります。

最後にSubsurface Scatteringの Amountを 0.0 に戻してSSSの効果を無効化します。

牛乳やジュース等の濁った液体(ボリュームスキャッター)

Roughnesを 0.1 程度にセットし、Refractionの Amount を 1.0 にしましょう。

CoronaPhysicalMtl下部の Media Options ロールアウトを開き、Volumetric ScatteringAbsoption color を黒にセットし、Scattering Color を白にセットします。
Distance を 0.03 にセットすると 牛乳 の質感になります。

さらにScattering Color を 明るい黄色にセットするとオレンジジュースの質感になります。

SSSとの違いは、Volumetric Scatteringは「濁った液体」の表現に向いています。Distanceを引き上げてボリュームを薄くするとわかり易いです。(下図)薄いジュースのような質感です。 SSSは個体の半透明(皮膚や大理石、プラスチック)に向いています。

カーペイントマテリアル

様々な質感を作成してきました。今度はより高度なカーペイントの質感を作成してみましょう。
マテリアルAAAのRefraction Amountを 0.0 にセットして不透明に戻します。
その後、Metalnessを”Metal“にセットし、Roughness を0.65 の様にセットして非常にマットな金属の様にします。いわゆるこれが下地塗装になります(目には見えないレベルの細かい金属ラメ入りという質感)

CoronaPhysicalMtl下部の Cleacort Layerの Amountを 1.0 にセットしてクリアコートを有効化します。
Cleacort Layerの Rouphness を 0.15 程度にセットします。
これで下地塗装の上につややかなクリアコートを施した質感になります。Baseレイヤのぼやけた反射とクリアコートレイヤーのハッキリとしたで2重の反射(2重のハイライト)になり、より複雑なマテリアル構造となっています。たったこれだけでカーペイントが完成です。

イメージ的には、BaseLayerの上に 透明な反射層が重なっているイメージです。

比較すると違いが解るかと思います。

以上で基本的なマテリアル設定の解説は完了です。