Mayaでアンビエントオクルージョンマップを作成する手順を紹介します。
以前はTransfer Maps を使用してテクスチャーに焼き付け(ベイク)てアンビエントオクルージョンを作成していましたが、MayaにArnoldが実装された為 Transfer Maps からアンビエントオクルージョンの項目がなくなり、Arnoldのテクスチャーレンダリングの機能を使ってアンビエントオクルージョンをテクスチャーに焼き付ける方法に変わりました。
![Transfer Maps](https://i0.wp.com/liquidjumper.com/Home/wp-content/uploads/2020/02/arnold_aomap_11.png?resize=278%2C218&ssl=1)
手軽に生成できるので参考にしてもらえたらと思います。
![]() |
|
AO(アンビエントオクルージョン)とは
アンビエントオクルージョンマップの作成方法を紹介する前にAO(アンビエントオクルージョン)の説明をしたいと思います。
AO(アンビエントオクルージョン)の表現手法
グローバルイルミネーションを簡易的に表現するための手法
環境光(ambient)からどのくらい遮蔽されているかを算出して明暗を割り出します。
簡易的な計算で割り出しますが、その代わり高速で結果もリアルなのでとても効果的な手法です。
![AO(アンビエントオクルージョン)の表現手法](https://i0.wp.com/liquidjumper.com/Home/wp-content/uploads/2020/02/arnold_aomap_description_03.png?resize=400%2C300&ssl=1)
AO(アンビエントオクルージョン)のカラーの算出方法
基本的な考え方としてシェーディングポイントから上半球内に複数のレイを飛ばして、レイが上半球内に幾つヒットしたかの比率からカラーを割り出します。
![シェーディングポイントから上半球内に複数のレイを飛ばして、レイが上半球内に幾つヒットしたかの比率からカラーを割り出します](https://i0.wp.com/liquidjumper.com/Home/wp-content/uploads/2020/02/arnold_aomap_description_04.png?resize=400%2C285&ssl=1)
カラー値の計算方法:
レイが上半球内にヒットした数 / 飛ばしたレイの数 = カラーの値
シェーディングポイントからレイを3本飛ばす設定にした場合を例にします。
・3本飛ばしたレイが全て上半球にヒットした場合
![3本飛ばしたレイが全て上半球にヒットした](https://i0.wp.com/liquidjumper.com/Home/wp-content/uploads/2020/02/arnold_aomap_description_06.png?resize=400%2C285&ssl=1)
計算:3/3 = 1
1 = 明るい
![1 = 明るい](https://i0.wp.com/liquidjumper.com/Home/wp-content/uploads/2020/02/arnold_aomap_description_02.png?resize=400%2C300&ssl=1)
・3本飛ばしたレイが遮蔽されて1本も上半球にヒットしなかった場合
![3本飛ばしたレイが遮蔽されて1本も上半球にヒットしなかった](https://i0.wp.com/liquidjumper.com/Home/wp-content/uploads/2020/02/arnold_aomap_description_07.png?resize=400%2C285&ssl=1)
計算:0/3 = 0
0 = 暗い
![0 = 暗い](https://i0.wp.com/liquidjumper.com/Home/wp-content/uploads/2020/02/arnold_aomap_description_00.png?resize=400%2C300&ssl=1)
・3本飛ばしたレイの2本だけが上半球にヒットした場合
![3本飛ばしたレイの2本だけが上半球にヒットした](https://i0.wp.com/liquidjumper.com/Home/wp-content/uploads/2020/02/arnold_aomap_description_08.png?resize=400%2C285&ssl=1)
計算:2/3 = 0.666….
0.666.. = 薄暗い
![0.666.. = 薄暗い](https://i0.wp.com/liquidjumper.com/Home/wp-content/uploads/2020/02/arnold_aomap_description_01.png?resize=400%2C300&ssl=1)
上記以外にシェーディングポイント間の値を補完して中間値を割り出す事によってスムーズなグラデーションのアンビエントオクルージョンが表現されます。
![]() |
|
モデルに Arnoldのアンビエントオクルージョンシェーダーをアサインする
車のモデルを用意しました。
このモデルからアンビエントオクルージョンマップを生成して、その生成したアンビエントオクルージョンマップを再びこのモデルにアサインしたいと思います。
![car model](https://i0.wp.com/liquidjumper.com/Home/wp-content/uploads/2020/02/arnold_aomap_10.png?resize=501%2C277&ssl=1)
フラットライティングにすると全て塗りつぶされ輪郭以外認識できません。
![use flat lighting](https://i0.wp.com/liquidjumper.com/Home/wp-content/uploads/2020/02/arnold_aomap_12.png?resize=204%2C149&ssl=1)
アンビエントオクルージョンマップを生成後に、この車のモデルにアサインしてアンビエントオクルージョンの効果を確認してみましょう。
![flat light](https://i0.wp.com/liquidjumper.com/Home/wp-content/uploads/2020/02/arnold_aomap_09.png?resize=500%2C273&ssl=1)
Hypershade・ハイパーシェード を開いて
左側の項目からArnoldを選択
aiAmbientOcclusion をクリック
![aiAmbientOcclusion select](https://i0.wp.com/liquidjumper.com/Home/wp-content/uploads/2020/02/arnold_aomap_08.png?resize=370%2C239&ssl=1)
アンビエントオクルージョンのシェーダー
aiAmbientOcclusionが作られました。
![aiAmbientOcclusion](https://i0.wp.com/liquidjumper.com/Home/wp-content/uploads/2020/02/arnold_aomap_07.png?resize=389%2C211&ssl=1)
aiAmbientOcclusion シェーダーのアトリビュートで設定を変更できます。
![aiAmbientOcclusion attributes](https://i0.wp.com/liquidjumper.com/Home/wp-content/uploads/2020/02/arnold_aomap_06.png?resize=437%2C436&ssl=1)
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](https://i0.wp.com/liquidjumper.com/Home/wp-content/uploads/2020/02/arnold_aomap_05.png?resize=510%2C269&ssl=1)
以下の記事を参照してください。
![]() |
|
アンビエントオクルージョンをテクスチャーマップにベイクする
テクスチャーにアンビエントオクルージョンをベイクする為に
Render To Texture を開きます。
Arnold > Utilities > Render Selection To Texture
![Render Selection To Texture](https://i0.wp.com/liquidjumper.com/Home/wp-content/uploads/2020/02/arnold_aomap_04.png?resize=484%2C477&ssl=1)
Render To Texture の設定が表示されました。
![Render To Texture](https://i0.wp.com/liquidjumper.com/Home/wp-content/uploads/2020/02/arnold_aomap_03.png?resize=457%2C348&ssl=1)
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](https://i0.wp.com/liquidjumper.com/Home/wp-content/uploads/2020/02/arnold_aomap_00.png?resize=512%2C512&ssl=1)
このアンビエントオクルージョンが焼き付け(ベイク)されたテクスチャーマップを
lambertマテリアルで車のモデルにアサインしました。
フラットライティングで表示するとアンビエントオクルージョンが
テクスチャーにベイクされて車の形状が確認できました。
![AmbientOcclusion_flat_light](https://i0.wp.com/liquidjumper.com/Home/wp-content/uploads/2020/02/arnold_aomap_02.png?resize=570%2C321&ssl=1)
![]() |
|
まとめ
2.Render To Texture でテクスチャーマップの出力先など設定して[Render] をクリック
細かな設定を気にすること無くこれだけでアンビエントオクルージョンマップを作ることが出来ます。
以前の方法 Transfer Maps で作成していた頃よりノイズが少ないアンビエントオクルージョンマップが手軽に作れるようになったと感じます。
以上です
![]() |
|
![]() |
|
![]() |
|
![]() |
|
BTOパソコンの草分け的ブランドFRONTIER(フロンティア) 3DCG/動画編集/ゲーム用途に合わせてCPUやGPUなどパーツを自由に選べてコスパにもこだわる方にオススメ。 |
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|