UE HeightField マスクが一部にしか適用されない原因と対処法
概要
UE(Unreal Engine)から出力したLandscapeをHeightFieldとして処理する際、
マスクが一部にしか適用されない怪現象が発生することがある。
この問題は、HeightとMaskがLandscapeタイル単位で分離されたまま処理されていることが原因であり、
HeightField Tile Splice を使用することで解決できる。
注意
この問題は見た目では分かりづらく、後工程(Scatter / Mask処理)で初めて顕在化することが多い。
発生していた現象
UEから出力したHeightFieldをそのまま処理すると、
以下のように マスクが一部にしか反映されない 状態になる。

原因
この現象の原因は、
Height と Mask が Landscape タイルごとに分離された状態で存在していることにある。
- HeightFieldが複数タイルに分割されている
- 各タイルごとに height / mask が独立している
- マスク処理がタイル単位でしか効かない
その結果、全体にかけたつもりのマスクが
一部のタイルにしか影響しない 状態になる。

解決方法:HeightField Tile Splice
このようなケースで有効なのが
HeightField Tile Splice ノード。
役割
- 分離してしまった複数のLandscapeタイルを結合
- Height / Mask を 単一のHeightFieldとして統合
- タイル境界を意識せず処理可能にする

結果
HeightField Tile Splice を使用して統合した後にマスク処理を行うことで、
マスクが正しく全体に適用される ようになる。


Tips
実務上のポイント
UE Landscapeは内部的にタイル管理されている前提で考える
HeightField処理前に「タイルが分離していないか」を必ず確認
Erosion / Mask / Layer処理の前段で Tile Splice を挟むと安全
チェックリスト
- HeightFieldが複数Primitiveに分かれていないか
- Maskが意図した範囲にかかっているか
- タイル境界で不自然な処理結果が出ていないか
まとめ
- マスクが一部にしかかからない原因は Height / Mask のタイル分離
- UE由来のHeightFieldでは特に起こりやすい
HeightField Tile Spliceを使用することで- タイルを統合
- Height / Maskを一元化
- マスク分離問題を解消できる
- HeightField処理の初期段階での統合が重要