How would you implement a dynamic region borders visualization system?


For a project, I need to display the 3D borders of a region computed dynamically; my region is composed of multiple “region entities”, each having a radius of influence, and I want to

  1. Make a union of all the influences of a given region
  2. Actually display this influence on the ground

Think of it as in Civ 5 influence borders (red-white on this example).

For now, I managed to do it by creating a texture per region, projecting the position and influence of every element contained in this region on it (making the union) and then displaying the texture on a plane. It works as intended, but there are a couple limitations:

  1. The texture obviously has to be fixed size, so the region as a whole can’t be larger than an arbitrary “x” value (square)
  2. The rendering quality is not really optimal. I tried generating/disabling mipmaps for my generated texture, playing with qualities and stuff, but couldn’t get better than this.

Shots of the current result (yellow outline):

From far above (result ok)

From closer (result less ok, due to texture limitations)

Anyone would have an idea on how to do this in a better way?

You could try to manually create ring meshes then combine it. (Mesh Boolean Operation - Subtraction) I think you might be able to get a decent looking result by using Vertex Color on the resulting mesh.

You could look at Pro Builder experimental feature to test it. [1]

There are several approaches you could take to improve your current solution:

  • Dynamic texture generation: Instead of creating a fixed-size texture, you could generate the texture dynamically at runtime, adjusting the size and resolution of the texture based on the size and complexity of the region. This would allow you to display larger regions without running into the limitations of a fixed-size texture.

  • Use a mesh instead of a plane: Instead of projecting the texture onto a plane, you could use a mesh to represent the region’s borders. This would allow you to create more complex and detailed shapes, such as those with concavities or irregular shapes.

  • Use a volume rather than a surface: Instead of representing the region’s borders as a surface, you could represent them as a volume using a 3D mesh or geometry shader. This would allow you to display the region’s borders as a 3D object rather than a flat plane.

  • Use a particle system: Another option would be to use a particle system to represent the region’s borders. This would allow you to create a more fluid and dynamic visual effect, with the particles changing position and color over time to indicate the region’s influence.

  • Use a combination of approaches: Finally, you could use a combination of these approaches to create a more sophisticated and dynamic representation of the region’s borders. For example, you could use a dynamic texture to project the region’s borders onto a mesh or volume, and use a particle system to add visual effects and animation.