背景アーティストのぶろぐ背景アーティストのぶろぐUE4とかを触ったことを書くぶろぐ。実は背景あんまり関係ない。【UE4】ライトマップの適正パディングを確保する先日行われたUE4DeepDiveではLightmassについての勉強会が行われ、その内容の濃さに非常に感動しました。勉強会で使用されたスライド等はこちらにアップされておりますので、ご確認ください。ポストモーテムLightmassでライティングを行う以上ちゃんと作成しなければならないのがライトマップですが、なかなかに面倒な作業だったりします。ライトマップを作成するにあたりいくつか押さえておかなければならないポイントがあり、これらを守っていないときれいな結果が得られにくくなります。ライトマップUVはオーバーラップしないようにする。UVシェルはできる限りつなげる(必ずしもよいとは限らない場合もある)エッジのラインはピクセル(グリッド)の方向と合わせる。UVシェルのパディング(間隔)は最低4ピクセル確保する。とこれだけではなくもっと細々とあったりします。ライトマップについての解説は公式を読んでいただくのがよいのですが、hisamuさんがblogにわかりやすくまとめてくださっています。海外だとUDK(UE4の前のバージョン)でのライトマップの展開方法について数多くのサイトがあります。基本的な考え方はUE4も同じなので参考にしてみてください。Lightmapping今回私がやるのは、4つ目にあるパディングを4ピクセル確保するための方法についてです。■ライトマップの1ピクセルがわかるようにする※8/4改編もっとわかりやすくていい方法があったので書き直しました。以前の方法だと端数のグリッドができてしまいましたが、この方法だとぴったりと1グリッド1ピクセルになります。ライトマップUVをレイアウトするにあたり、必要なパディング(間隔)の値は公式サイトに記載があります。ライトマスが、にじみのアーティファクトを防ぐのに十分なパディングを自動的にエッジ周囲に行うからです。テクセルが必要になることに注意してください。ライトマップを展開してて思うのは4ピクセルの隙間ってどんくらい?ということで、1ピクセルがわかるようにグリッドの表示を変更して確認できるようにしてみます。ここの設定はあくまでも確認用なので、毎回やる必要はありません。UVエディタのビュー>グリッド□からグリッドのオプションを開きます。グリッドラインの間隔を1にします。次にサブディビジョンに使用する解像度を記入します。サブディビジョンを表示させるために、サブディビジョンラインにチェックを入れます。今回作成するライトマップはUE4のデフォルトで設定されている64ピクセルを想定して、サブディビジョンに64と入れてみます。入力したら適用を押します。するとグリッドがこのような感じになります。感じですが、縦横に64個グリッドが作成されているので、1グリッドが1ピクセルとなります。わかりやすく確認するなら16ピクセルの場合を想定して値を入力してみましょう。これでパディングが何ピクセルか確認しやすくなりました。■レイアウト機能で自動的に適正パディングを確保する※8/4改編パーセンテージ空間の数値の考え方について指摘を頂いたので、それを踏まえた内容に修正しました。次にパディングを確保しつつ、オーバーラップしないようにレイアウトする方法です。MayaのUVエディタにはレイアウトという機能があり、隙間を何パーセント確保するかを決めることができます。UVエディタのポリゴン>レイアウト□からオプションを開きます。赤枠にあるシェルの間隔のところでパディングは指定することができます。それ以外にもUVシェルのスケールを統一してくれたり、重ならないようにレイアウトしてくれたりするので、非常に便利です。レイアウト、レイアウト設定のところは私は普段使用している設定なので参考までにどうぞ。Maya側で間隔のプリセットが用意されていますが、どういう基準なのかはいまいち不明...。入力はUVの0-1の空間に対するパーセンテージになるので、UE4でデフォルトで指定されている64ピクセルのライトマップを想定して計算してみます。計算式はこんな感じに算出しました。xが求めたいパーセンテージの値です。x%計算するとx=6.25と出ます。このレイアウトのオプションで入力できるパーセンテージの値は5%が上限のようです。問題があり、計算で出したパーセンテージの値だと間隔が開きすぎてしまいました。5%を入れてみたものの...試しに3.125を入力してみると、ちょうど4ピクセル確保できてるように見えます。これはどういうことなんでしょうか??と思いましたが、もんしょさんから神の声3.125%で適切な理由って、各アイランドの上下左右に2ピクセルののりしろがあれば隣のアイランドのぶんと合わせて4ピクセルになるからじゃないかと思ったり。2016年8月3日たしかに!なるほど!もんしょさんありがとうございます!このことを踏まえて解像度事にパーセンテージをリスト化すると以下のようになります。0.7812%Maya様は5%以上は受け付けて下さらないので、32ピクセルの時はちょっと困りますね...。この数値を入力して、レイアウトしてみます。すると約4ピクセルのパディングが確保できたことが確認できます。感じなので、この一連の操作を楽にするようなmelがあればいいな~なんて思ったり...。■もっとわかりやすいやつ...しかし、このパーセンテージってわかりにくいですよね。Maya2016Extention2以降のバージョンをお使いであれば、レイアウトのオプションにUnfold3Dの方式が追加されており、もっとわかりやすく感覚的に使うことが可能です。方法はUnfold3Dに変更します。パッキング反復は回数が多いと何回も配置の計算をするので1回にしていますが、シェルの数がすごく多い場合などは20とかデフォルトの値を入れてもよいかもしれません。ここについては未検証。レイアウトのエッジ周囲のパディングは不要です。あるので0を入力してよさそうです。(ちょっと不安ですけども...)上記設定で適用をクリックすると以下のようなレイアウトになります。シェルのパディングは4ピクセル確保されており、タイルからはぴっちりくっついた状態になります。私はまだEx2をメインで使用できていないのですが、Unfold3Dのレイアウト機能はとても強力なので、使える方は使ってみるとよいかと思います。次にUE4で何か作るときにちゃんとライトマップの展開ができるようにと残したメモ程度のものなので、これで運用してたら何か問題が出てくるかもしれませんし、こういう場合どうすんだ?みたいなのもあるかもしれません。経歴ゲーム背景アーティスト。下請けの制作会社からゲーム開発会社を2社経てフリーランスに転身。UnrealEngineを使った開発に従事しておりました。背景、モデル製作等お仕事のご依頼などはこちらからお願いします。PremiumBloggerTemplates.com。