Unityでハイトマップを使用したときに、
画像のような歪みが発生してしまう場合の解決策。
CGモデルを修正することで解決するので、
その詳細について。
▼発生していた問題の詳細
↓
↓
歪みはハイトマップのパラメータを抑えるとマシになるのですが、
そもそも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上で比べてみます。
↓
明らかに、見た目がキレイになっています。
なので…、
近づいても歪まない。
解決です!
▼まとめ
今回学んだのは、
アホみたいなメッシュの割り方をしたり、
更には全体にスムージングをかけるようなムチャをしてはいけない、
ってこと。