以下のようにUnrealEngineでCesiumCategraphicPolygonの指定範囲外(外枠)と指定範囲内(内枠)の非表示を組み合わせて地形表示を行う方法についてメモします。
試した環境
- UE5.3.2
- CesiumForUnrealプラグイン2.3.0
参考
以下のUnrealEngineのCesiumのサンプルプロジェクトのLevel13 - Cesium Tile Excluderを参照しています。
CesiumTileExcluder自体は利用しませんがCesiumTileExcluderを使って中途半端に表示されているタイルを非表示にしているやり方を参考にしました。
前提知識
以下のような公式ドキュメントで地形表示できることやCesiumCategraphicPolygonを使って指定した範囲を非表示にできることが前提です。
範囲外と範囲内の範囲内非表示の方法
- あらかじめCesium3DTilesetをレベルに追加しておきます
- 2つのCesiumCartographicPolygonをレベルに追加しておき範囲を設定しておきます
(以下の例だとCesiumCartographicPolygonの範囲内を非表示にし、CesiumCartographicPolygon2の範囲外を非表示にしたい)
- マテリアルインスタンスを作成して、以下のように設定します
Layer ParametersのClipping1は既存のClippingを参考にして一番上に追加します
(Cesium3DTilesetのMaterialプロパティのソースにはMI_CesiumThreeOverlaysAndClippingをコピーして設定しろと書いてあるのでその方が良いかも)
- 作成したマテリアルインスタンスをCesium3DTilesetアクタの[Cesium] > [Rendering] > [Material]に設定します
- Cesium3DTilesetにCesiumPolygonRasterOverlayコンポーネントを追加し、[Cesium] > [Polygons]に範囲内を非表示にしたいCesiumCartographicPolygonを指定します
- Cesium3DTilesetにCesiumPolygonRasterOverlayコンポーネントをもう一つ追加し、以下のように設定します
[Cesium] > [Polygons]に範囲外を非表示にしたいCesiumCartographicPolygonを指定します
[Invert Selection]をチェック、[Exclude Selected Tiles]をチェックしないようにして範囲外を非表示にします
[MaterialLayerKey]にマテリアルインスタンスで追加したClipping1レイヤーを指定します。