AOマップは、モデルの凹んだ部分や隙間にできる影を表現するテクスチャで、ポリゴン数を増やすことなくモデルの見た目をリッチにできます。

この記事では、Blenderを使ってAOマップをつくり、ワールドに組み込む基本的な方法を解説します。
ここではBlender4.2.1LTSを使って解説します。他のバージョンでは画面表示や機能などが異なる場合があります。
なぜAOマップを使うとモデルに立体感が生まれるの?
AOマップは、モデルに光が当たったときに自然にできる「環境光による影」をテクスチャとして記録したものです。この影は、モデルの形状の凹凸や、パーツとパーツの隙間など、光が届きにくい部分に現れます。
下図を見ると、環境光による影が入るとモデルに立体感が生まれることが分かります。また、AOマップはモデルの色などの見た目を構成するテクスチャとは別になるので、色の変更などをしてもAOマップをそのまま使うことができるのもメリットです。

BlenderでAOマップをつくる基本的な手順
Blenderの「ベイク(Bake)」機能を使うと、AOマップを比較的簡単につくることができます。ベイクとは、3Dモデルの情報をテクスチャに「焼き付ける」作業のことです。下記では、BlenderでAOマップをつくる基本的な手順を解説します。
モデルのUVを展開する
AOマップはテクスチャのため、適切にUVが展開されている必要があります。
AOマップをベイクするモデルのUVが重なっていると、影がおかしな場所に表示されたり、正しい結果が得られなかったりします。ベイク前には必ずUVが重なっていないか確認しましょう。
UV展開については下記の記事で解説しています。手順が分からない方はぜひ読んでみてください。
AOマップ用の新規画像テクスチャを作成する
AOマップのベイク結果を保存するための新しい画像ファイルを用意してください。
- UVエディターのヘッダーにある「新規(New)」ボタンをクリックしてください
- 表示されるダイアログで、以下の設定を行ってください
- 名前(Name):AO_Mapなど、分かりやすい名前を付けてください
- 幅(Width)・高さ(Height):モデルの細かさに合わせて適切な解像度を選んでください。解像度が高すぎると負荷が高まるので注意しましょう。まずは 1024 x 1024 などがおすすめです
- 生成方法(Generated Type):「ブランク(Blank)」を選択してください
- 「OK」をクリックしてください
- 作成した新しい空の画像がUVエディターに表示されます

ベイクのための設定をする
次に、ベイク機能を使うための設定を行います。
- プロパティエディター(デフォルトでは右側のパネル)の「レンダープロパティ(Render Properties)」タブ(カメラのアイコン)をクリックしてください
- 「レンダーエンジン(Render Engine)」を「Cycles」に変更してください
- ※ベイクはCyclesでのみ可能です
- 下にスクロールし、「ベイク(Bake)」パネルを展開してください
- 「ベイクタイプ(Bake Type)」を「アンビエントオクルージョン(Ambient Occlusion)」に設定してください
- 「選択物→アクティブ」にチェックを入れると、ハイポリのモデルからローポリのモデルへベイクすることができます
- より高品質なAOマップをつくりたい場合は試してみてください
- また、「光線距離(Max Ray Distance)」を調整することができます。この値は、AOマップが影を拾う距離を示します。デフォルトでは短いことが多いので、モデルのスケールに合わせて少し大きめに調整すると良い結果が得られることがあります(例: 0.1 ~ 1.0 程度)

ベイクを実行する
準備が完了したので、AOマップをベイクします。
- AOマップをベイクしたいモデルが選択されていることを確認し、オブジェクトモードにいる場合はそのまま進めてください
- プロパティエディター(デフォルトでは右側のパネル)の「マテリアルプロパティ(Material Properties)」タブをクリックしてください
- 右上の「+」を押して、新しいマテリアルを作成してください
- 画面の左上から「シェーダーエディター」を選択して、移動してください
- モデルのマテリアルノード(デフォルトでは「プリンシプルBSDF(Principled BSDF)」)が存在することを確認してください。シェーダーエディターで「Shift+A > テクスチャ > 画像テクスチャ(Image Texture) 」を追加してください
- この「画像テクスチャ」ノードで、先ほどUVエディターで作成したAO_Mapなどの画像を選択します。このノード自体は他のノードに接続する必要はありませんが、必ず選択された状態にしておきます。これがベイク結果の出力先になります
- 「レンダープロパティ(Render Properties)」タブに戻り、「ベイク(Bake)」パネルの「ベイク(Bake)」ボタンをクリックしてください
- ベイクが完了すると、UVエディターで作成した画像にAOマップがベイクされているのが確認できます

ベイクで生成した画像を保存する
ベイクが完了したら、生成されたAOマップの画像を保存します。
- UVエディターで、生成したAOマップの画像が表示されている状態で「画像(Image)メニュー > 名前を付けて保存(Save As)」を選択してください
- PNG形式で保存してください

Unityへのインポートとマテリアル設定をする
BlenderでつくったAOマップをUnityにインポートし、モデルに適用します。そしてclusterへアップロードして、最終的な見た目を確認しましょう。
- 保存したAOマップの画像ファイルを、UnityのProjectウィンドウ内のフォルダにドラッグ&ドロップしてください
- インポートしたAOマップの画像を選択し、Inspectorウィンドウの「Texture Type」が「Default」になっていることを確認してください
- 通常、AOマップはそのままの色情報として使用されるため、Normal Mapのように特別な設定は不要です
- 「sRGB (Color Texture)」のチェックボックスはオンのままで大丈夫です
- AOマップを適用したいモデルのUnityマテリアルを選択し、Inspectorウィンドウを開いてください
- Standardシェーダーの「Occlusion(Ambient Occlusion)」に、インポートしたAOマップの画像をドラッグ&ドロップしてください
- これで適用完了です!
- モデルの見た目が変わったことを確認しましょう。必要に応じて「Occlusion」スロットの下にあるスライダーで、AOマップの強さを調整できます
- 最後は、clusterにアップロードして確認しましょう。デバイスによって光の当たり方や表示のされ方が異なる場合もあるため、最終的な調整はclusterで確認しながら行うのがおすすめです

AOマップを使うことで3Dモデルの立体感などを生み出すことができます。適切に使うことでワールドのビジュアルをつくり込むことができるので、ぜひ試してみてください!






















