WeightMapTexture および GrassData の仕組みはおおむね把握できたので
ソースを整えて形にしてみる。
結局 WeightMapTexture を書き換えても、
勝手には GrassData には反映されないようなので、
両方自前で書き換える必要があるようだ。
適当に道を敷いて草を生やしてみる。
コンポーネントの境界部に黒いラインが出てしまう問題について。
理由が判明。
コンポーネントのサイズが 15 x 15 だからといって
15 x 15 分しか値を書き込んでいないのが原因だった。
16行目、16列目には、となりのコンポーネントの値と同じものを書き込んでやる必要がある。
当初、バッファを1Landscape分用意して、16行・列目の境界部は
次のコンポーネントの0行・列目のバッファと共有すればいいだろう、と思ったのだが
各マテリアルレイヤーのチャンネル割り当てがコンポーネントごとに異なるのでダメだった。
仕方ないのでコンポーネントごとに境界部ののりしろも含めたバッファを用意しておく。
WeightmapLayerAllocations[].WeightmapTextureChannel の値を実行後に書き換えて
統一したチャンネル割り当てになるようにできないか?、とも試してみたがうまくいかず。
なにかまだ把握しきれていない仕組みがあるっぽい。
ひとまずマテリアルと草の動的配置はこれにて完成~。
動画
第0028回 / WeightMapを動的に書き換える。その3 #UE4 #VR https://t.co/cDTesXQo55 pic.twitter.com/HtBVKT15f4
— ue4-master (@ue4master80) August 11, 2019