Hi All,
Currently experimenting with Unreal + ArcGis for use in a flight simulator. I've managed to (kind of) get bodies of water working in an automated way. My current workflow is shapefile -> ESRI JSON -> load into UE. I then use the geometry of the polygons to create mesh modifications and also use the Geometry Script plugin to create dynamic meshes for each of the water bodies. This works *ok* for lakes and such:

They look fine from a distance, but fairly quickly fall apart when close up (1m^2 cube for reference):

As you can see, anywhere that my elevation data has a high slope after the mesh modifications are applied there is a big cliff. Not the end of the world, given the application, but this brings me to rivers and how I've gone about implementing this.
As I mentioned before I'm creating dynamic meshes using the geometry script tool. In order to have the water meshes at the correct height I draped my original vector data over my elevation data to give it Z values. Within Unreal, I then calculate an average height for each polygon and set each point in the polygon to that height. Not doing so i.e. each point has a different Z, results in strange geometry for the water meshes. Now, onto the rivers:


The rivers line up perfectly with my modifications but at various points they are set to too low of a Z. This is obviously because the river polygons cover much more distance and have a greater change in height compared to lakes. The same river as above but further down stream:

I guess my question is, can anyone think of a better way of doing this? It took me a lot of trial and error to get to this point. I've tried setting Z values for the meshes based on elevation data, I've tried triangulating the polygons in an effort to reduce the weird geometry mentioned previously. I've tried subdividing the river polygons - this kind of worked but resulted in stepping between the sections. I also tried using the ArcGis location component, thinking that perhaps the Unreal plugin was doing some interpolation of my elevation - the issue with this was that it can only be used when attached to an actor. It would be great if there was a function we could call to just get the elevation at a given location.
I've seen another post on here, trying to achieve similar with SLPKs and such. I also created a 3d SLPK based on my data but again that resulted in weird geometry (I assume because the polygons were not triangulated).