Dynamic 3D world rendering using Unity3D

Not bad!

But do you plan to release any software package or web service that can be accessed by normal users? In an easy way?

When this moment will come, will there be a release announcement or blog posting by you?

Current plan is start from releasing this as FREE unity asset for desktop and mobile platforms (e.g. Android) when all major features are implemented and it is stable (cannot estimate so far the concrete date, but for sure I need several months). I’m already aware about making it easy to use and considering this as a MUST requirement.

Nice thing, that core part has no dependency on Unity at all as I’m writing it using C++11 without any Unity or platform specific API. You call something like loadTile with quadkey, desired mapcss style + callbacks which are called to return you back generated mesh or raw data (node/way/relation for given region if you want to process it from your code). Then is up to specific engine to build “game object” from this data.

Theoretically it can be reused in some other 3D gaming engine or visualization software.

I will keep posting here and at Unity forum.

Another feature: offsetting polygons:

Here, some countries are moved up and water is moved down. All parameters are dynamically configurable via mapcss, e.g.:

area|z1[sr_geounit=Germany] {
color: gradient(orange);
height: 1;

It’s not difficult to process some places:

Here, text and sphere for each place are created on unity3d side from geodata provided by the library. Of course, visual representation can be improved: text from opposite side of globe should not be visible, but this is just example.

I made old implementation open source.

I updated initial post with the latest information

I was able to create Android build (armeabi-v7a). It contains so far some hardcoded values (sdcard path for offline map data, start geocoordinate), but shows that it is working and performance quite good even without any additional improvements which I’m pretty sure I can do.

Test build is here: https://1drv.ms/u/s!Amj1U012bYtsgp9HH9r6yx9bKP1cjg
(temporary, will remove it soon)

So, I added scene with bird-eye level of details (zoom=14) and globe [zoom=1]. See screenshots in updated first post.

Cool, thank you!

Just need to create unity asset and android build so that people can try it without guessing what is it and how to make it work :smiley:

Please do this! It would be great to use it.

Just released demo on google play: https://play.google.com/store/apps/details?id=com.utymap.demo

I added API for region loading and recorded some video: https://www.youtube.com/watch?v=Cf0nl9wH-Z4

I released new version with texturing support: https://github.com/reinterpretcat/utymap/releases/tag/ver1.1

Terrain is not only flat anymore:


Now, all trees (and street lights) are generated using L-System approach. I described my implementation a little bit here:


This is prototype of globe level scene where multiple LOD levels supported: on screenshot, I zoomed from 1 to 7 focusing on middle of Europe. So far, I’m trying to find optimal combination rendered objects vs zoom level.

In general, I want to render map starting from globe till full 3D details using only vector data provided by NaturalEarth and OpenStreetMap.

As usual, everything is customizable: color gradients, elevation noise, region elevation offset, texturing, etc. And it is possible to apply real Earth texture on top of generated mesh.

I’ve started to work on dynamic zoom level changes starting from planet scene:


Here, I’m using mapzen server to get vector data on demand.

I uploaded new video which demonstrates animation from ground to orbit LOD:


Improved version from orbit to ground: