第0028回 / WeightMapを動的に書き換える。その3 | HK-87@UEのブログ

HK-87@UEのブログ

UE4で理想のVRゲームを作るまでの軌跡

WeightMapTexture および GrassData の仕組みはおおむね把握できたので
ソースを整えて形にしてみる。

結局 WeightMapTexture を書き換えても、
勝手には GrassData には反映されないようなので、

両方自前で書き換える必要があるようだ。

適当に道を敷いて草を生やしてみる。


コンポーネントの境界部に黒いラインが出てしまう問題について。
理由が判明。

コンポーネントのサイズが 15 x 15 だからといって
15 x 15 分しか値を書き込んでいないのが原因だった。

16行目、16列目には、となりのコンポーネントの値と同じものを書き込んでやる必要がある。

当初、バッファを1Landscape分用意して、16行・列目の境界部は
次のコンポーネントの0行・列目のバッファと共有すればいいだろう、と思ったのだが
各マテリアルレイヤーのチャンネル割り当てがコンポーネントごとに異なるのでダメだった。

仕方ないのでコンポーネントごとに境界部ののりしろも含めたバッファを用意しておく。

WeightmapLayerAllocations[].WeightmapTextureChannel の値を実行後に書き換えて

統一したチャンネル割り当てになるようにできないか?、とも試してみたがうまくいかず。
なにかまだ把握しきれていない仕組みがあるっぽい。

ひとまずマテリアルと草の動的配置はこれにて完成~。

 

動画