How did I do the Cesium flight simulator in an hour?
I’m working in the extended reality industry and noticed over the years that a working prototype is the most effective sales tool. People get instantly onboard and excited about what we are trying to sell. So, fast prototyping is a big part of my work.
As an Unreal Engine developer I love using so called blueprints, logical nodes that you can drag and drop. I know how to code using object oriented languages, however – if I need to try out something quickly, I choose blueprints over manual coding any given moment. Blueprints are context aware, you can’t make mistakes – only valid connections between different nodes are automatically approved by Unreal Engine.
However this time it wasn’t about work and sales, it was all about my friends and gaming! We’ve been playing online games as long as I can remember. We are mostly playing first person shooters like The Battlefield game series where you can fly, drive a car, walk, use helicopters and what not. We are currently anxiously waiting for the latest Battefield to be released, and while doing so we play against each other in a multiplayer environment I’ve created. It takes place in our real neighborhood in Helsinki, Finland. You can imagine that different tasks are located to our real home addresses “Hey Marco, I just bombarded your home, how copy?” 😀
So, I wanted to create a “digital Helsinki” – so big it would take minutes to do a flyover, so that would mean something like 700 square kilometers (about 270 square miles). Luckily the City of Helsinki and National Land Survey of Finland are maintaining open-source databases for lidar 3D Obj-files. I combined orthography images by the NLSF and 3D objects, vola! – I had my first digital Helsinki inside Unreal Engine. At some point I used not just 3D tiles but elevation model TIFF-images to create ground.
It looked great, but how heavy it was! I had to clean up every tile in blender, import it back to Unreal Engine, create more LOD’s (level of details), enhance framerate by reducing the amount of data in 3D files, smaller and more compressed orthography image textures to tiles… It looked really good, but it was heavy and only had the suburban area, nothing beyond that. And, it was flat – every flat earth society member’s wet daydream 😀 So after a couple of nice demos I gave up. I simply didn’t have time to optimize and start implementing some automated process or API to request tiles directly from existing data sources.
Not so long ago I was following a live video from Epic about new features coming in Unreal Engine 4.26 – and there it was, Cesium! They had solved all these things, how to manage tiles, cache, WGS84 <> UE unit conversion, earth was round – oh man! When this will be out, I need to test this right away.
Fortunately it didn’t take long to have the latest update in Unreal Engine. I simply downloaded the demo project, migrated my previously created F/A-18 Hornet blueprint actor – and there it was! I changed the starting point to Helsinki-Vantaa airport, placed the Hornet on the runway and started screen recording, a flight from Helsinki to Hanko (about 125 Km west from Helsinki). All that within an hour, including the video edit!
The aircraft was built using EasyFlight plugin from Unreal Engine marketplace. Also briefly studied opensky-network.org API how to integrate real-time air traffic to the scene. This was an additional one hour, so two hours in total.
So, Cesium is bringing us the whole world – that is so crazy cool! You can start creating different solutions, create digital duplicates, sail across the seas, simulate rocket launched and aviation, change time and date, practice nightflying, do smart city plans and concepts, do games, do business, create multiplayer gaming and educational experiences, and much more.
If you have any questions or comments, feel free to contact me https://www.linkedin.com/in/samimheinonen/