ですが自分は最近までライティングビルド時のエラーについて苦しめられてきました;
今回解決方法がわかったので3dsmaxを用いて手順を解説していきたいとおもいます。
:Object has overlapping uvs
このような感じにエラーがよくおきると思います。
何故起きるのか結論から言うとライトマップ用のUVが重複しているからです。
アンリアルエンジンでは3dcgでよく使われる拡張子のobjやfbxなどのUVの他にライトマップ用のUVというものが必要なのでこれを追加することでエラーを解除することができます。
具体例を用いて手順を追って説明していきます。
1、重複するUVを持つオブジェクトを編集してみる。
デフォルトのティーポットに重複するようにUVをはりました。
objファイルで書き出しUE4で表示してみます。
そうすると...
このように表示されます。
影がメチャクチャな状態ですね。
UE4内で編集画面をみると...
このようになっています。
白いUVのラインが他のUVと重複しています。これだといけないので編集します。
平均化で適当にならべてみました。objでインポートします。
このように表示されました。影がおかしいですね。
エディタ内のUVは以下のようになっています。
つまり重複があるとエラーが発生します。
しかしこれは展開用のUVとライトマップ用のUVをひとつのUVで使っているので影がメチャメチャであります。
2、ライトマップ用のUV(セカンドUVチャンネル)を作成する
まず大前提として覚えておいて貰いたいのは拡張子objは一つのUVしかもつことができません。ですのでインポート時にfbxを選ぶ必要があります。
以下3dsmaxでセカンドUVチャンネルの作り方をレクチャーします。
まず角度でフラット化してみました。
次に画像のように
新規UVWアンラップを追加します。
チャネル→マップチャネルを2にするとこのようなビューポートが表示されるので
移動を選択しましょう。
fbx形式でインポートします。
FBXインポート時はこのようなチェックボックスの設定が望ましいです。
ソース→FBXインポートのリファレンス
UE4で表示してみます。
このように表示されました。
左上にあるUVチャンネルが2になってることを確認してみてください。
右側にあるスタティックメッシュの設定です。
UE4内のUVチャネルは3dsmaxだと
UVチャンネル1(3dsmax)→UVチャンネル0(UE4)
という具合になります。
ライトマップUVは
lightmap coordinate index を変えれば変更可能です。
lightmap resolution はライトマップの解像度のことです。
この際以下の画像のように重複するUVがライトマップUV以外にある場合も大丈夫です。
影がまだ角ばっていますね。
望ましくありません。
detail>lighting>cast insert shadow にチェックをいれます。
上手にやけました♪
またムーブアブルオブジェクトの場合
例:スピードツリーアセットなど
は可動性の部分をムーバブルに変更するだけでもきちんと影が出来ると思います。
またスカイライトをムーバブルにすることでもfixすることができます。
またライトソースをムーバブルにし、cast static shadow をオフとfixできたりします。
おしまい。
このほかにオブジェクトをブループリント化してエラーを回避する方法もあり動画もあがっていますが影がなくなるみたいです。
0 件のコメント:
コメントを投稿