【Unity】ハイトマップ適用時の歪みの解決方法

  • このエントリーをはてなブックマークに追加

Unityでハイトマップを使用したときに、
画像のような歪みが発生してしまう場合の解決策。

CGモデルを修正することで解決するので、
その詳細について。

▼発生していた問題の詳細

01 通常の距離なら問題ないが…

02 近づくと、歪みが発生

03 更に距離を詰めると、歪みが拡大していく

 

歪みはハイトマップのパラメータを抑えるとマシになるのですが、
そもそもCGモデルの方を修正することで根本的な解決ができました。

正直、ものすごく初歩的なミスでしたが、
解決するのに手間取ってしまったので記事にしておきます。

 

▼そもそも、Unityにおけるハイトマップとは?

今回出てくる「ハイトマップ」とは、
テクスチャマップで大きな凸凹や突起を描画するためのものです。

ハイトマップのパラメータを上下させる様子

 

実際に使用したハイトマップ

 

詳しくはUnityマニュアルの以下のページを御覧ください。
https://docs.unity3d.com/jp/530/Manual/StandardShaderMaterialParameterHeightMap.html

 

▼問題点

問題になっていたのはテクスチャマップではなく、CGモデルの方でした。

今回はBlenderという無料ツールを使用。
モデル自体はこんな感じのモノです。

これにスムージングをかけると…↓

はい。既にメッシュがおかしいですね。メッシュ自体が歪んでます。
コレこそが、Unity上での歪みを生み出す原因となっていました。
(素人みたいなメッシュ割で全体にスムージングを適用したからですね。反省してます)

なので、CGツール上で直していきましょう。
平面部分のエッジ等、余計なところにもスムージングがかかっているので、
手っ取り早く「辺分離(EdgeSplit)」のモディファイアで解決しましょう。

参考↓
https://wiki.blender.org/index.php/Doc:JA/2.6/Manual/Modifiers/Generate/Edge_Split

 

適用したいObjectを選んで、
モディファイアの一覧から辺分離を選択します。

すると、必要な箇所だけスムージングされている状態になりました↓

 

エクスポートしてUnity上で比べてみます。

改善前

改善後

明らかに、見た目がキレイになっています。

なので…、

近づいても歪まない。
解決です!

 

▼まとめ

今回学んだのは、
アホみたいなメッシュの割り方をしたり、
更には全体にスムージングをかけるようなムチャをしてはいけない、
ってこと。

  • このエントリーをはてなブックマークに追加

コメントを残す

*