GeoBoxers in Denmark have developed Vibcraft: The city of Viborg in Minecraft. One of the most exciting parts of this job was modelling the world’s largest limestone mines: Mønsted and Daugbjerg mines – essentially bringing real mines to minecraft!

In this blog post we will give a technical overview of how GeoBoxers solved the task.


Mønsted in Minecraft. Visit the gallery.

Viborg’s ambition with the project was to give full access to all of the city and they were aware that this also included sub-terrain features such as true geology and the two old limestone mines. Due to the serious risk of getting lost, parts of the real mines are not accessible to the public. Thanks to Vibcraft it is now possible to explore these parts as well.


The mines are located west of Viborg (red square in the overview). The arrows mark the entrances to the mines. Green is Daugbjerg, purple is Mønsted.

The mines were surveyed beforehand as LiDAR (Light Detection And Ranging) point clouds using two different methods:

  • Daugbjerg mine was scanned with a Trimble TX5 laserscanner by survey student Morten Thinesen as part of his final thesis. This is a traditional laser scanning approach where each scanning station is transformed into a common reference system using transfer points (spheres). More than 90 stations were used and approximately 160 mio. points were collected.
  • Mønsted mine was scanned by engineering company COWI using the ZEB1 handheld laser scanner. This scanner contains an IMU thus allowing for a continuous scan as the operator moves through the mine. The Mønsted scan consists of approximately 30 mio. points.

The result of each of the scans was a series of points reflected randomly from the walls, roof and floor of the mine. Since the points have no information attached there is no telling what is actually air and what is solid underground – visualising the point cloud from an appropriate distance would reveal a shell structure much like an aluminum cast of an ant colony.

indgang Entrance to the Daugbjerg mine. The dataset was not georeferenced and we had to determine orientation/tilt e.g. by looking at the trees outside the entrance.

If the underground is filled with some sort of blocks, in our case a representation of the surrounding geology, the interior of the mines should be “dug out” by filling air into the solid underground. In order to accomplish that, we had to be able to determine the “inside” of the mines. The problem of determining the interior and exterior of a 2D set whose boundary consists of a number of closed curves is classical in mathematics as well as in geospatial analysis. It’s a problem with many nice solutions, and something which most GIS systems will be able to handle, very often via the GEOS-library.


A classical method to determine whether a point is inside a polygon is to count intersections between a line emanating from the point and the boundary of the polygon.

In 3D, the equivalent problem would be to determine the interior of a set whose boundary consists of a number of closed surfaces. This might not be common in GIS but it is a classical problem in differential geometry.

So, if we could determine the boundary of the mines from the given set of scanned points, the point cloud, we would be able to rely on well known algorithms for determining whether a given point lies in the interior.

However, the problem of surface reconstruction from a given point cloud is not trivial – and definitely not a problem which always has a unique solution. If the point distribution is quite homogeneous and there are some reasonable geometric and topological bounds on the surface we try to reconstruct, e.g. curvature bounds, a unique solution might exist. Surface reconstruction / triangular mesh generation can also be aided by extra information like oriented normals to each point.

In our case the point density was very inhomogeneous and the geometry and topology of the mines were unknown to us. Also, information on the normal direction or scan angle was not provided. Both topology and geometry was complicated by objects in the mines – walls, bridges, and other, to us, unknown objects:


A cross section of a tunnel. It is difficult to differentiate between tunnel walls and noise. Is this one tunnel with a vertical structure or is it two parallel tunnels separated by a wall?

Hence the reconstruction would necessarily include quite a bit of guesswork. It is not difficult to construct ambiguous point configurations even in 2D exemplifying the problem – several “solutions”, when sufficient constraints on topology and/or geometry are not given:


Where to close the gap? If we don’t know the topology of the boundary it could either be the green lines or the blue in the example above. 

Instead of using existing surface reconstruction algorithms we took a different approach. Based on ray tracing we developed a statistical measure of when a point was in the interior of the mines.


A horisontal section of a probability mask generated from ray tracing. The image shows a part of the Mønsted mine – scale is 0.5 m.

This was combined with classical morphological methods to yield the output 3D raster mask representing the interior.

mfin A part of the “inside mask” of the Mønsted mines. The masked voxels determine what should be replaced by air. There is a trade off between the desire to have nice and well defined tunnels (more filtering) and having an accurate representation of the input point geometry (less filtering). 

If not perfect, the result was satisfactory and the algorithms ran fast and were capable of handling the massive amount of input points. Further refinement of the 3D morphological filtering methods used would definitely be possible.

The geology below Viborg is dominated by sediments, clay and limestone. To map the geology, layers of coloured clay blocks were used to match materials in different depths.


The geology surrounding the mines is represented by layers of colored clay. The entrance to the Mønsted mine is clearly visible in the upper part of the image.

Below are some images from the Vibcraft server. The municipality of Viborg has chosen to keep the server open for public access, so why not take a stroll in the mines yourself?

Serverurl: (server runs version 1.7.10)

User-overview in map:

Information for users (in Danish):

To see the limestone mines when in Minecraft: . /warp moensted and enter through the purple portal.

Enjoy – and don’t get lost!


The Daugbjerg mine.


The Mønsted mine.



Gallery: Mønsted in Minecraft

ZEB1 handheld mobile mapper:

Mønsted Limestone Mine:

Daugbjerg Limestone Mine: