Being Kon-TiKi a shooter, third person (third vessel more correctly), we needed or wanted some kind of minimap. The ocean is a vast place and without directions you loose your goal.
We already have made some frames for the minimap.
From pre-rendered high poly made in blender, with several thousands of triangles, to our current one which is simply a low poly torus with some displacement added.
Well, we started modeling it in blender and ended up with this, below. With a triangle count of 4758, we decided it was too much, so we rendered it and imported as a texture.
As a texture, we started with a different model, without the knot. You can see below the result. It was too plastic. Rejected.
We cannot forget the overall look of Kon-TiKi. LOW poly. SO we returned quickly to blender to make a quick torus with some decimations and displacements. And we got something more like what we wanted.
That is ok. We used it several days but something was not quite right. The shading was static (it was pre-rendered), so we could not have any kind of smart 3d minimap... It was just a picture placed on a 3d space. But...
We already were working with a low poly version, so why not using it as a mesh? Done that. The result for the minimap frame is below. There is a specific light attached to it, so that when the player moves and rotates, and lights on the frame do change the coloring. That was what we really wanted. Job done! Note, the thick part of the frame is where "north" is. Didn't like the way the knot was going.
So, just put some background and all the items and done. And that was what we did. But a flat background would look... boring. So, as we are really in 3d space for the minimap, just put some background circle and that is that. The only thing we did not want was a plain and plane circle.
The background was already a procedural generated circle so the first though was: add some noise to the vertex and that is that. The result, as expected, is below.... boring!
So, the solution we went for was to create the circle boundary, then generate some random points inside the circle and voilá. But before that, we needed some details. First, we needed some uniformly distribution of random points, instead of just choosing a random angle and random distance (our first try). And secondly, we choose to do a Delaunay triangulation of all those points to minimize extreme triangles (triangles with one side very long compared to the other ones). Below is the result, in mesh. A great improvement from the above one.
With this, we just needed to add some random noise to each vertex (in depth axis) so the lighting was visible. Note that in a static image, the difference in light is a bit indistinguishable.
Well, as most of the time, the minimap will face the camera, we do not really need to have it as a mesh, so we will get the generated data, and create a texture with the normal calculated from the above method. And we will end up with a good "3d" texture :)
p.s. the green triangle is your vessel. The red circle is the goal (a buoy) and the pink-ish circles are enemies.