MODO 機能紹介・チップスサイト このサイトでは、MODOの基本機能やチップスをご紹介していきます。

ノーマルマップでソフトエッジ上に表れたハードエッジを取り除くには


https://www.youtube.com/watch?v=v9jSbzxRElk

ノーマルマップでスムーズなエッジをベイクした際に、なぜかハードエッジが表れてしまう場合があります。今回はそんな現象の回避方法を紹介します。

まずは簡単なサンプルを作ってみます。立方体を作成し、ポリゴンベベルツールでグループ化オプションをオフにし、それぞれのポリゴンをベベルします。マテリアルを適用したら、プロパティから丸めエッジ幅の値を少し大きめに設定してみます。この丸めエッジの機能はMODO特有の機能であり、ジオメトリを追加して丸みを演出していなくても、レンダリング時にハードエッジに丸みを与えてくれます。丸みを出したい箇所を指定したい場合には、ビデオ「エッジの丸め具合をコントロールするには」をご覧ください。

ただしこの大変便利な丸めエッジの機能はMODOの機能ですので、他のアプリケーションやゲームエンジンにデータを持っていっても再現させることはできません。こういった場合にはこの丸め具合をノーマルマップへとベイクすると良いでしょう。ベイクは何も高解像度のメッシュを低解像度へと移すだけではなく、自分自身のシェーディングの法線もベイクすることができます。

ではベイクウィザード機能を使って簡単にベイク処理を行ってみます。ゲームパレットベイクベイクウィザードを起動し、UVを指定したら、ベイクするメッシュをターゲットに指定し、テクスチャ出力を追加から法線を追加します。ベイクしてみるとおおよそうまくいってそうなんですが、ベイクしたエッジの中心にハードエッジが表れているのがわかります。立方体などのメッシュからベイクすると、こういったエッジが現れる時があるのですが、こういった場合にはいったんベイクした画像を除去し、UVを作り直します。

今回ベイクに使用したUVは、ボックスにデフォルトで付いていたUVですが、いったん新規でUVを作成し、UVパレット投影投影タイプアトラスにすることで、UV上でエッジを切り離します。さらにパックコマンドを実行し、一つ一つがばらばらになるよう配置します。MODOのバージョン12からは、このパック時におけるUV島とUV島との間隔をピクセル単位で指定することができます。この間隔を示すピクセル値はテクセル密度のパネルにある画像サイズを元に算出されます。望むとおりに配置できたら、ベイクウィザードで使用するUVを指定し直し、ベイクを行います。

そうすると、丸めエッジ上に表れていたハードエッジがキレイに除去されるのがわかります。このように、ベイクしたソフトエッジ上にハードエッジが表れたときには、その表れた箇所のエッジをUV上でポリゴンが共有しないように、切り離すなどの処理を行ってください。

また、もしUVの境界が狭かったり広すぎたりする場合には、システムメニュー > 初期設定レンダリング最終レンダリングベイク時のUV境界サイズオプションでボーダーサイズを指定するようにしてください。この値はベイク時の画像解像度やUVの配置具合によって適正な値というのは変わってきますので、都度注意して指定するようにしてください。

 

2018年10月17日