3D visualization of cities are often hard to navigate and be useful on a 2D screen with traditional input methods. With the power of the HoloLens, however, a user can walk and look around a virtual 3D map of a city like Atlanta as if they were really there.

How we built it

UrbaNav is built in Unity and programmed in C#. The assets for the buildings were generated in Blender from OpenStreetMap data, edited, and then imported into Unity. The ground plane containing green spaces and roadways was generated by a custom script using map tiles provided by Stamen also with OpenStreetMap data. The labels, information, and transit data about landmarks and attractions around Midtown and Downtown Atlanta was written and compiled by our team.

Challenges we ran into

Originally we wanted to incorporate MARTA's realtime transit API into our project so that the user could see train and bus arrival times for different locations. However, due to Unity's old .NET version, the code and libraries that we were planning to use didn't work and we were forced to leave it unimplemented when time ran out.

Another challenge that we ran into was the HoloLen's dictation service which would sometimes stop working and requiring a restart of the WiFi and application. We believe this was due to the overloaded WiFi in the venue.

Accomplishments that we're proud of

The user being able to find any building on the map using just their voice took a lot of effort to get working correctly. We had to switch from the keyword recognizer to the dictation service to accomplish this with freeform queries. After recognizing the request, the program then had to match it to a regular expression to find the building name while accounting for different possible requests ("show me the Georgia Aquarium" instead of "show me Georgia Aquarium" for example). Finally, it had to look up the requested building in OpenStreetMap building tags. Some buildings were missing tags and had to have theirs added while others like the Varsity had to have custom rules written because HoloLens kept recognizing it as "var city".

Share this project: