MayaのArnold を使ったAOテクスチャー(アンビエントオクルージョンマップ)を作成する方法

arnold_aomap_topimage

Mayaでアンビエントオクルージョンマップを作成する手順を紹介します。

以前はTransfer Maps を使用してテクスチャーに焼き付け(ベイク)てアンビエントオクルージョンを作成していましたが、MayaにArnoldが実装された為 Transfer Maps からアンビエントオクルージョンの項目がなくなり、Arnoldのテクスチャーレンダリングの機能を使ってアンビエントオクルージョンをテクスチャーに焼き付ける方法に変わりました。

Transfer Maps

手軽に生成できるので参考にしてもらえたらと思います。


AO(アンビエントオクルージョン)とは

アンビエントオクルージョンマップの作成方法を紹介する前にAO(アンビエントオクルージョン)の説明をしたいと思います。

AO(アンビエントオクルージョン)の表現手法

グローバルイルミネーションを簡易的に表現するための手法

環境光(ambient)からどのくらい遮蔽されているかを算出して明暗を割り出します。

簡易的な計算で割り出しますが、その代わり高速で結果もリアルなのでとても効果的な手法です。

AO(アンビエントオクルージョン)の表現手法

AO(アンビエントオクルージョン)のカラーの算出方法

基本的な考え方としてシェーディングポイントから上半球内に複数のレイを飛ばして、レイが上半球内に幾つヒットしたかの比率からカラーを割り出します。

シェーディングポイントから上半球内に複数のレイを飛ばして、レイが上半球内に幾つヒットしたかの比率からカラーを割り出します

カラー値の計算方法:
レイが上半球内にヒットした数 / 飛ばしたレイの数 = カラーの値


シェーディングポイントからレイを3本飛ばす設定にした場合を例にします。

・3本飛ばしたレイが全て上半球にヒットした場合

3本飛ばしたレイが全て上半球にヒットした

計算:3/3 = 1

1 = 明るい

1 = 明るい


・3本飛ばしたレイが遮蔽されて1本も上半球にヒットしなかった場合

3本飛ばしたレイが遮蔽されて1本も上半球にヒットしなかった

計算:0/3 = 0

0 = 暗い

0 = 暗い


・3本飛ばしたレイの2本だけが上半球にヒットした場合

3本飛ばしたレイの2本だけが上半球にヒットした

計算:2/3 = 0.666….

0.666.. = 薄暗い

0.666.. = 薄暗い



上記以外にシェーディングポイント間の値を補完して中間値を割り出す事によってスムーズなグラデーションのアンビエントオクルージョンが表現されます。

モデルに Arnoldのアンビエントオクルージョンシェーダーをアサインする

車のモデルを用意しました。


このモデルからアンビエントオクルージョンマップを生成して、その生成したアンビエントオクルージョンマップを再びこのモデルにアサインしたいと思います。

car model


フラットライティングにすると全て塗りつぶされ輪郭以外認識できません。

use flat lighting


アンビエントオクルージョンマップを生成後に、この車のモデルにアサインしてアンビエントオクルージョンの効果を確認してみましょう。

flat light

Hypershade・ハイパーシェード を開いて

左側の項目からArnoldを選択

aiAmbientOcclusion をクリック

aiAmbientOcclusion select

アンビエントオクルージョンのシェーダー

aiAmbientOcclusionが作られました。

aiAmbientOcclusion

aiAmbientOcclusion シェーダーのアトリビュートで設定を変更できます。

aiAmbientOcclusion attributes
Samples: レイの数 サンプルを多くするとノイズが減ります
Spread:法線ベクトルの角度スプレッド
Falloff:オクルージョンの減衰率
Near Clip :シェーディングされる点から最小の距離を指定
Far Clip :シェーディングされる点から最大の距離を指定
White:ベースの色
Black:影の色
Invert Normals:表面をトレースするか裏面をトレースするか
Self Only:同一オブジェクトのみ影響
Trace Set : オブジェクトセットがトレースされるかを定義。ArnoldParameters Tag をプロパティで使用
Inclusive : トレースを包括的モードにするか、排他的モードにするか選択
Normal:法線ベクトルを出力

基本的にはデフォルトで良いと思いますが、

[Samples] [NearClip] [FarClip] あたりを調整して

UV展開したモデルに aiAmbientOcclusion をアサインします。


左右対称のモデルなので片側だけにアサインしました。

arnold_aomap_car

アンビエントオクルージョンをテクスチャーマップにベイクする


テクスチャーにアンビエントオクルージョンをベイクする為に 

Render To Texture を開きます。

Arnold > Utilities > Render Selection To Texture

Render Selection To Texture

Render To Texture の設定が表示されました。

Render To Texture
Output Folder : テクスチャーを出力するフォルダ
Resolution : 出力するテクスチャーマップのサイズ
Camera Samples : アンチエイリアシングの品質
Filter : 最終的なピクセルカラーにするためのフィルタータイプ
Filter Width :フィルタの幅
Shader Override :現在アサインしているものとは別のシェーダーを割り当てる
UV Set : UV セット
Extend Edges : UV展開したモデルつなぎ目を修正
     OFF:空白部分を黒くする ON:空白部分をつなぎ目付近の色で塗りつぶす 
Udims :
All Udims :
U Start :レンダリングされるU座標のオフセット
V Start :レンダリングされるV座標のオフセット
U Scale :出力イメージのU方向スケール
V Scale :出力イメージのV方向スケール
Enable AOVs :AOVシェーダーを有効に
Normal Offset :ベイク処理するための精度係数
Sequence :フレームシーケンスをレンダリング

設定したら [Render] をクリック

プログレスバーで処理の進行を表示後

設定したフォルダにアンビエントオクルージョンがベイクされた

 exr ファイルが出力されました。

exrフォーマットの ファイルはPhotoshopで読み込めるので後から細かな調整も可能です。

exr_file

このアンビエントオクルージョンが焼き付け(ベイク)されたテクスチャーマップを

lambertマテリアルで車のモデルにアサインしました。

フラットライティングで表示するとアンビエントオクルージョンが
テクスチャーにベイクされて車の形状が確認できました。

AmbientOcclusion_flat_light

まとめ

1.Hypershadeでシェーダー[aiAmbientOcclusion]を生成 対象のモデルにアサイン

2.Render To Texture でテクスチャーマップの出力先など設定して[Render] をクリック

細かな設定を気にすること無くこれだけでアンビエントオクルージョンマップを作ることが出来ます。

以前の方法 Transfer Maps で作成していた頃よりノイズが少ないアンビエントオクルージョンマップが手軽に作れるようになったと感じます。

以上です



Twitter Facebook Pocket LINE はてブ

おすすめの関連記事:
コチラの記事も読まれています
あわせてよく読まれている記事