ブロック積み上げ実験(2) ライトマップの調整
「前回スタティックライトだと上手くいかなったので、今日はライトマップの調整をしてみる」
妹「聞いたことはあるかもしれない」
「ライトもメッシュも両方共スタティックの時だけ使われる、どこに光が当たるかを記録したテクスチャ。ビルドした時に作られる。スタティックライトで表示がおかしく、他でおかしくないとなると、ライトマップが真っ先に疑われるところ」
「他のブロックとくっついてるとこは暗くなってて、ライトマップが粗いと隣にちょっとにじんじゃって、それが原因でつなぎ目のとこが暗くなってるんじゃないかと」
「スタティックメッシュの設定で、ライトマップの大きさを変える。個別のスタティックメッシュアクターでも変えられるけど。
「ライトマップの大きさを256ピクセル四方にした部分はこうなる。128とかだとまだつなぎ目が見えるから、これぐらい必要」
妹「これはちゃんとつながってるね。ライトマップを大きくすればよかったのか」
「まあそうなんだけど、ライトマップはブロック1つごとにできちゃうわけで、あんまり大きくするとメモリがたくさん必要になるのが難点。64ピクセル四方の16倍の面積になるから。速度的にはムーバブルのライトで毎フレーム計算するより速そうなんだけど」
「逆にもっと荒くして、つなぎ目がどうとか以前の状態にするという手も。これは左側のブロックを32ピクセルまで落とした場合」
妹「これはだいぶ汚いね」
「中途半端になるよりはいいという場合もあるかもしれない。ライトマップ絡みだと他に、UVマップがちゃんとしてないってのもあるんだけど、今回の場合それではなさそう」
妹「ちゃんとしてないというのは?」
「同じ色だから別々のポリゴンだけど同じ部分のテクスチャを参照してるみたいな。色は同じでも陰影の付き方が違うから、光があたったりあたらなかったり、変なことになる場合はある。あとはポリゴンの大きさに対して割り当てたテクスチャが狭すぎるとか。ローポリ系のモデルだとテクスチャの節約でそういう作り方することがある」
ブロック積み上げ実験
↑ムーバブルなライト
↑ステイショナリーなライト
↑スタティックなライト
↑ブロックが発光する(エミッシブカラー)
妹「これは何をやってるの?」
「ボクセルで作った……まあボクセルでなくてもいいんだけど、ブロックを積み上げてマップをちょちょっと作れるようにしたいなあと。そんな感じの実験をしてるところ」
「こういうブロックをMagicaVoxelで作って、Qubicleにインポートして、エクスポートして、UE4にもってきている」
妹「なんか途中に余計な工程が挟まってない?」
「ポリゴン数の削減とかテクスチャとかの関係でそれが一番楽そうだったから。まあブロックはそれでいいとして、ブロック同士の隙間のところがいまいち綺麗にならない」
妹「2Dでもブロック同士の隙間が変になることあったけど」
「それと同じ原因ではないかも。ちゃんとつながったポリゴンではないからという点は同じだと思うけど。一番見た目がよくないのがスタティックなライトにした時だった。つなぎ目がはっきり見えちゃう。ムーバブルは全体的に縞模様がでるけど、つなぎ目自体は見えない。ステイショナリーはその中間ぐらいの」
妹「エミッシブカラーじゃ駄目なの?」
「駄目ではないんだけど、多少の陰影はついてたほうが、立体感があっていいかなあと。Qubicleでの保存方法での違いもあるかもしれない。とりあえず光源をムーバブルにすればそれらしくなることはわかった」
アンリアル花占い 制作メモ(3)「花びらにもコリジョンがある」
「今回はそんなに複雑なことしてないから、もう書くことないんだけど、昨日ちょっと書き忘れたコリジョンの問題」
「これをちゃんとやっておかないと、花びらのActorOnCLickedに反応しなかったり、別のに反応したりというのがあったんで、コリジョンは花びらスプライト1枚ごとに調整してある。まあだいたいだけだと」
妹「手動でやらないと駄目なの?」
「自動でも出来るよ」
「自動でやるとしたら、Shrink Wrappedで設定するとこういう感じになる。他のは角張りすぎてて、細かい判定には向かない。この状態から頂点をいじると、その時点で設定がFully Customに変わるから、そこから精度を高めていくこともできる。Shrink Wrappedのままでもそれなりの精度はあるけど、ちょっと頂点数が多すぎるかも。あと、大きめか小さめかでというと、大きめにした方が、クリックの取りこぼしはなくなる。違うのが反応するのはともかく、反応自体しないと故障と勘違いするかもしれないし」