Cesium Cartographic Polygon

Hello,
How can I use this new feature “Cesium Cartographic Polygon” in Unreal?

1 Like

Hi @shefypattambi,

Thanks for asking! The Cesium Cartographic Polygon actor, released in Cesium for Unreal 1.6.0, can be used to mask out or apply material effects to areas of terrain. We’re currently working on creating tutorials for this feature. In the meantime, the basic process is:

  1. Add a Cesium Cartographic Polygon actor to the level. You can find the actor by searching in the Place Actors panel.
  2. The actor looks like a square spline with four corners. Drag out these corners to your desired shape. You can add new points to the spline by holding the alt key down while dragging a point.
  3. Once you have the shape you want, click on Cesium World Terrain in your World Outliner and add a CesiumPolygonRasterOverlay component.
  4. Select the new component. In the details panel, you’ll see an array called Polygons. Add an element to that array and set the CesiumCartographicPolygon you previously added. The tileset should automatically update with that area masked out. If it doesn’t, select the tileset again and refresh it.

By default, the Polygon Raster Overlay is set to mask out terrain. You can also use it to apply material effects. That process is a little more complicated. I recommend you start by duplicating the “MI_CesiumThreeOverlaysAndClipping” material instance included in CesiumForUnreal Content/Materials/Instances.

If you open that, you can see the material is made of several Material Layers. To customize, you can create new Material Layers and Material Layer Blends and set them here.

Just make sure to set the Material Layer Key of the CesiumPolygonRasterOverlay to the name of your new material layer, and you’ll probably want to uncheck the “Exclude Tiles Inside” parameter, or else tiles might appear missing.

After you’ve made your material, you should set the “Material” parameter under Cesium | Rendering on the terrain tileset to your new material.

I hope this helps! Let me know if you have any further questions. This will be covered more comprehensively in an upcoming clipping tutorial, and after that a material editing tutorial.

6 Likes

Hi @agallegos ,

We just tried out this process and noticed that some tiles within the polygon aren’t excluded correctly at close distances including the tiles collisions. Is this a limitation of the tool or is this just a beta tool at the moment?

Hi @V2i,

This looks like a bug in the interaction of clipping with the water effect. I wrote an issue for it:

If you don’t need the water effect, you can work around it by turning off Cesium → Rendering → Enable Water Mask in the tileset actor’s Details. If you do need the water effect, you can work around the problem as follows:

  1. Find the MI_CesiumThreeOverlaysAndClippingAndWater material instance under CesiumForUnreal Content → Masterials → Instances in the Content Browser and double click it to to open it
  2. Go to the “Layer Parameters” tab, and drag the “Clipping” layer to the very top of the stack.
  3. Save and let UE recompile reshaders
  4. If the problem isn’t already fixed, click the Tileset Actor in the World Outline, and click the “Refresh Tileset” button near the top of the details panel.

Kevin

1 Like

I forgot to mention, though, since you mentioned collisions. The clipping is a purely visual effect. You will stil collide with the hidden parts of the meshes. Tiles that are entirely inside the clipping region will not be loaded at all, so you won’t collide with those. But the partial tiles will still be fully colidable.

We hope to address this in a future release, but as far as we know, Unreal Engine doesn’t provide any way for us to do this other than by manually performing an expensive cut of the meshes on the CPU at runtime.

Thanks for the help @Kevin_Ring ,

Just a follow up question. We have been provided photogrammetry dataset from Aerometrex. We tried clipping this data but due to it not being quantized data it is not supported. Is there an estimated timeline where clipping non-quantized data will be released/worked on?

There’s a PR in cesium-native that adds really basic support for raster overlays (including clipping) on arbitrary 3D Tiles:

There are definitely some caveats right now, though. I hope to get a production quality version of this into the product within the next release or two, so October or November. That’s a goal not a promise, of course.

Good to know it’s been worked on. We will check out the PR when we can. Thanks for the estimated goal timeline.

A post was split to a new topic: Georeference Origin Height not at 0,0,0

We hope to provide support for photogrammetry dataset as soon as possible,thanks!

1 Like

A post was split to a new topic: Cartographic Polygon Exclude Tiles Inside not working

A post was split to a new topic: Can’t add a Cartographic Polygon to a tileset in UE5

Can it be applied to Cesium3DTileset? I only found the example applied to Cesium World Terrain

Yes. Cesium World Terrain is represented by a Cesium3DTileset Actor in Unreal Engine.

I got a problem, it looks like it works but when look at “lighting only” the masked area is still there, which seems to be affecting the lighting of the building that I have overlayed


Same issue

The clipping works by setting the “Opacity Mask” material output to zero in the excluded area. I’m surprised to hear that Unreal would use such parts of the model for lighting, but, if it does, I’m not aware of anything we can do about that.

so only epic can do something about it ?

I don’t know everything about Unreal Engine. I certainly don’t have deep knowledge of its lighting systems. But if Unreal, under some lighting setup (you haven’t really described your lighting setup), is lighting based on parts of the model with an opacity mask of 0, that sounds like a bug to me. I could easily be wrong, though.

my lighting system is very basic, with the cesium light setup, if you try to cut out a piece in cesium, and you look at the lighting pass and wireframe pass it should still be there, but the other passes are fine