CombineMeshesで結合したメッシュにライトマップを焼いたとき汚くなってしまう場合の対策をメモメモ…
※このページの内容の動作確認にはUnity2018.2を使用しています。
複数のメッシュをMesh.CombineMeshesメソッドを使って結合したあとにライトマップをベイクしたところ、かなり不自然で汚いノイズのような模様がついてしまいました。これは十中八九ライトマップ用のUVが作成されていないために起こる現象で、メッシュを作成したあとに次の処理を追加すれば防げます。
Unwrapping.GenerateSecondaryUVSet(mesh);
UnwrappingクラスはUnityEditor下にあるため、このスクリプトがEditorフォルダに入れられていない場合はビルド時にエラーになってしまうので注意。コンパイル時に除外するように指定しておきましょう。
#if UNITY_EDITOR Unwrapping.GenerateSecondaryUVSet(mesh); #endif
これで改善しました。
あ、もしもCombineMeshesとか関係なく「普通にインポートしたオブジェクトが汚くなる」という場合には、必ずインポート設定の"Generate Lightmap UVs"をオンにして、関連項目("Hard Angle"など)をいじるなどしてみてくださいね。
これでメッシュのUV2データがライトマップ用に最適化され、ちゃんと焼かれるようになるはずです。
0 件のコメント:
コメントを投稿