The inspiration for our project came when our team was discussing problems we had experienced while camping. We had all experienced the anxiety when arriving at a new campsite: is this site large enough? How will the tents be laid out? Is there enough space to separate the campfires from the tents? Where will the tables, chairs, coolers, and cooking equipment go? We thought that AR was the perfect technology to tackle this problem, as it would allow for easily placing campsite equipment in the real world, so a user would be able to visualize and walk around a campsite before committing to the layout and going through the intensive campsite set up process.
What it does
Glampsite allows a user to place various campsite equipment such as campfires, logs, tents, tables, chairs, coolers, sleeping bags, grills, and benches in the real world using Augmented Reality technology. The user is able to move, rotate, and delete these items, and can customize the size and style of them in a separate menu. Glampsite intelligently detects people in the frame of the camera and automatically occludes them, allowing for a friend to help set up without altering the AR experience. Once the user is happy with the positioning and layout, they can then take pictures of the site as they walk around it, to help assist them in the placement of various components like tents while setting up camp.
How we built it
We built Glampsite using the programming language Swift, in Apple's Xcode development environment. We used Apple's ARKit and RealityKit libraries to assist in AR development and programmed the front-end in SwiftUI.
Challenges we ran into
We learned that there are many types of 3D models, as there are no perfect solutions for rendering things in 3D. This meant that different rendering software needed different file formats, so we had to figure out how to transfer between different file formats. The library we used needed a particular file type of 3D model, so we had to figure out how to convert different types into this file format for use in our project, which was a difficult task. We used a library called RealityKit, which came out in 2019 and is therefore a very new, immature technology. We found there to be very few tutorials online for how to use it, and the ones we did find were of lower quality. We therefore had to figure out a lot of the implementation details on our own through trial and error. Finally, most of us had limited to no prior experience with the Swift programming language. So for some time, we were also trying to overcome the struggle of learning and refamiliarizing ourselves with a new programming language.
Accomplishments that we're proud of
We're quite proud of figuring out how to implement AR in an app. None of us had any experience in developing AR apps before this hackathon, so getting to a point where we could actually see our results on our phones and interact with the AR was extremely rewarding. We are also quite proud of the number of AR objects we were able to support. 3D models aren't easy to find or cheap, and although we only used free models, the search process took up a significant percentage of our time. As a result, being able to support 9 different types of items and even multiple of some type was also a proud moment for us.
What we learned
We gained hands-on experience in the implementation of Artificial Reality apps in iOS, and learned more about SwiftUI front-end programming. We gained a better understanding of graphics, specifically with regards to 3D modeling and texture mapping. We also learned more about how AR itself works, like how it implements ray casting to determine the distance to an object or surface in the view.
What's next for Glampsite
For Glampsite, we plan to add more models and customization options, including more sizes and styles of all of our campsite assets. And since no campsite it perfect, we would also like to make it easier to place AR objects on different kinds of terrain, since at the moment items can only be placed on a flat plane/surface.
Log in or sign up for Devpost to join the conversation.