UE4建築コンテンツを制作する際に困ったこと、どう対応したか --01--


UE4建築コンテンツを制作する際に困ったことや疑問に思ったこと、それらのmozなりの解決方法を何回かに分けて書いていきます。

※なおUE4はまだ触って一年未満、しかも当方エンジニアでもプログラマでもないので的はずれな解決方法をしている可能性が多いにありますのでその点ご了承下さい。

 

 

○ライトマップUVの制作方法について(cinema4DからUE4へのエクスポート時など、UVを2つ以上設定できないツール、datasmithに未対応のツールからUE4にエクスポートする場合)

 

 僕はメインDCCツールがcinema4Dのため、UE4で必要となる2つ目のUV、ライトマップUVが設定できません。UE4はマテリアルUVとライトマップUVが必要となります。)

 

※追記masanagaさんhttps://twitter.com/tasklongにC4DでのUVチャンネルを複数のせる方法を教えていただきました!設定方法は後ほど

 

この場合はまず単純にDCCツール側でマテリアルUVを設定します。建築コンテンツならほとんどUVをこだわらなくてもOKのはずです、C4Dなら自動展開でほぼ一発。

 f:id:momomo_moz:20190109160127p:plain

 (とりあえずはこんな感じでOKです)

 

UE4でのインポート時に画像赤枠部分、"Generate Lightmap UV" にチェックを入れてインポートします。これでライトマップ用のUVが割り当てられます。

f:id:momomo_moz:20190109160426p:plain

 

staticmeshアセットエディタのUVタブに"UV チャンネル 01"がありUVが割り当てられていればライトマップUVが設定されています。

f:id:momomo_moz:20190109160443p:plain

 
○C4DでライトマップUVを予め設定しておく方法(追記)

先述のように、masanagaさんにC4Dで2つ目のUVを設定してライトマップUVを予め設定しておく方法を教えていただきました。



cinema4DでマテリアルUV、ライトマップUVを設定したいオブジェクトにUVWタグを2つ設定します。向かって左のタグから読まれていくので、自動的に右側にあるUVWタグがUE4でいうUVチャンネル1 つまりライトマップUVとなります。

このとき、2つ目のUVWタグの名前を1つ目のUVWタグと変えておかないとUE4でインポート時にUVが別れないのでご注意下さい(僕もここで困ってmasanagaさんに再度聞きました。)、

f:id:momomo_moz:20190109212003p:plain

命名規則までは詳しくはmasanagaさんも僕も検証していませんので、もしかすると名称によっては他エラーが出るかもしれませんが、

少なくとも

・マテリアル用のUVWタグ名称を"UVW"

・ライトマップ用のUVWタグ名称を"UVW1"

とすればC4DからでもマテリアルUVとライトマップUVをもたせた状態でUE4にエクスポートできました。

恐らくUVWタグ名称をそれぞれ違う名前にしておくのがクリティカルになるはずです。

 

※もちろん手動でライトマップUVを設定した場合はUE4インポート時のダイアログの"Generate Lightmap UVs" はチェックをオフにして下さい。

 

コリジョンの話

つづいてコリジョンの話です、コリジョンとはその名の通り衝突判定です、これがないとアクター(操作キャラクター)などが壁や床をすり抜けます、逆に開口部にコリジョンが設定されていると通り抜けられない現状などが起こります。

 

エディターに配置されているmeshのコリジョンは”表示”パネル内のコリジョンにチェックを入れると可視化できます。

f:id:momomo_moz:20190109161930p:plain

このようにワイヤーフレームコリジョンが表示されます。

コリジョンの設定は、設定したいメッシュを選択した状態で詳細タブの”collison”タブ、プリセットで選択できます。

f:id:momomo_moz:20190109162348p:plain

(詳しくはUE4ドキュメントをご参照下さい。)

建築コンテンツの場合、壁面形状や床、天井、開口部わまりなどかなり複雑なコリジョン形状になり、上記の設定の調整や、またはBlockingVolumeを組み合わせて配置する方法ではなかなか難しい場合があります。

 

そんなときに使用しているのが、メッシュのポリゴン形状に合わせてコリジョンを設定する方法です。設定法は

コリジョン設定をしたいstaticmeshをダブルクリックしてエディタを起動

・staticmeshエディタ内の詳細タブの下部にあるコリジョンタブ内、”Collison Complexity" タブ内を"Use Complex Collison As Simple"に設定する。

f:id:momomo_moz:20190109163821p:plain

 

上記設定で下記画像のように、メッシュのポリゴン形状に合わせたコリジョンが作成できます。(少し見にくいですが)

f:id:momomo_moz:20190109164009p:plain

ポリゴン形状に合わせたコリジョンはかなり便利ですが、オブジェクト数増加に伴ってFPSに効いてくる部分になるので、最適化を必要とする大規模建築コンテンツ(特にVR)の場合はBlockingVolumeなどと組み合わせて効果的に使用することが良いかと思われます。

 

次回は” Instanced Static Mesh”について書く予定です。