Inspiration
Scientists have been warning people of the alarming rate at which sea levels are rising for some time now. However, for many people who live far away from the coastline or who have never experienced firsthand the consequences of climate change, it might be hard to visualize just how high the tides are reaching. To create a concrete example of how much higher coastal city levels are likely to be in 2050, SimulSea displays the increases in U.S. coastal city levels between now and then. 🌊🌊🌊
What it does
SimulSea is a multiplatform mobile app that offers two augmented reality experience options based on rising sea levels. One allows users to pick from a list of 8 U.S. coastal cities (Boston, New York, Washington D.C, Houston, Miami, Los Angeles, San Francisco, and Seattle) and the other detects the user’s phone’s location to redirect the user to the AR experience of the closest coastal city from the list above. Each augmented reality experience loads a 3D hand figure at the coastal city's expected sea level in 2050, converted from inches to meters and rounded to four decimal places.
How we built it
To make this app operate on both iOS and Android devices, I constructed a single codebase in VSCode that had Dart, Swift, and C code, however, I mostly programmed the app in Dart alongside the Flutter framework. This applied to all code except for the hand GLB file, which was placed into a separate repository so that the app could load it during runtime without having to fish for the file. Additionally, the Google ARCore library was used to construct the hand figure for augmented reality. The location of the user, as well as the coordinates of the coastline cities, were obtained using Geolocator and Latlong, two location service plugins that were also utilized.
Challenges we ran into
For the longest time, I tested and ran the app on my code editor’s phone emulator. However, it quickly became clear that I would need to move my app to an actual phone as I started developing the augmented reality components of the app. It turns out that the camera permissions and capabilities of a computer and an emulator are noticeably different from those of an actual phone. And once location services were implemented, it took a while to figure out why it was not generating the closest coastal city and it turns out that the app does have access to location services; it just doesn't ask for permission and instead requires that location service permissions be manually granted within the settings of the user’s phone.
Accomplishments that we're proud of
I was thrilled when the code for my app's augmented reality and location services worked on my project. Both of which ran and performed better than expected. I am particularly proud of the point where I figured out how to calculate distances between a user's position and a coastal city through two Flutter libraries (Geolocator and Latlong) without having to rely on one completely; Geolocator could retrieve the user's location, but could not easily save coastal city coordinates, while Latlong had difficulty retrieving locations but excelled at saving coastal city coordinates.
What we learned
How to access a phone's camera and enable it for Google ARCore experiences, how to build and show augmented reality objects on a Dart and Flutter-based app, and how to retrieve location services and user geographic coordinates for a mobile app with Geolocator and Latong.
What's next for SimulSea
Although it was great that the app could identify the closest city based on a user's location, in practice it is probably not as useful and thought-provoking as it would be if the app could identify the actual predicted sea level of the precise city, town, or municipal that the user was located in. I will probably work on SimulSea's location feature so that, for instance, if I were located in Queens, NY, the sea level projection would be generated for Queens rather than just New York, NY.
Built With
Dart (Programming Language) Flutter (Framework) Google ARCore (SDK) Google Location Services (SDK)
Try it out
https://github.com/yLeah/simulsea https://github.com/yLeah/GLBgLTF
Built With
- android
- arcore
- augmented-reality
- dart
- flutter
- glb



Log in or sign up for Devpost to join the conversation.