Happy Friday! I ended up taking a break last week because Andreas and I decided last-minute
to join the ENGworks hackathon. I’m so glad we did because it was so much fun! It was my
first hackathon and I’ve been wanting to participate in one for a while now.
ENGworks offered a great opportunity with their online event. If you missed it but
you want to participate in a hackathon, AEC Hackathon
is hosting an online event
coming up and they have some excellent presentations scheduled. I will continue the series
on randomizing curtain
walls later this month, right now I wanted to take some time to provide more
information on our hackathon project.
Although I did not post last week, I still kept my pledge to donate to a different organization each week for the month of June. Staying informed, sharing stories and perspectives, and even just taking some time to laugh is so important right now. This is why last week we donated to our local NPR station.
It was June 18th that I found out about the ENGworks hackathon and the registration deadline was June 19th. I spoke with Andreas about the hackathon and asked if he wanted to participate with me. He was on board and we immediately started brainstorming. I feel like I have new thoughts weekly about how I want to change the AEC industry with technology. For the hackathon, we had to find a problem we could solve in less than 4 days with 3 additional days of brainstorming and prep. Ultimately, we landed on our idea: StreamVR. We are excited to say we received the award for Best Overall Project for our application.
VR is a powerful tool to convey design intent. Architects, clients, designers, contractors, and engineers can utilize VR to simulate use cases and to make decisions while experiencing the space. Although there are tools to view BIM (building information models) in VR, so far, the process has been linear, exporting a model from Revit into a rendering software. There is a disconnect between VR and BIM. By allowing users to make changes in VR and synchronize their changes back to Revit, design teams and owners can have more fluid conversations allowing design and documentation to exist in the same space.
Our plan for setting up the project was two fold. One piece involved setting up the VR application that runs on the headset, the other was the Revit plug-in. For the Revit plug-in we set up a data bus to stream information from the Revit API to our VR application. Next week, Andreas will be joining as a guest writer and we will share more in depth information on the Revit plug-in. This week, I will discuss a few of the lessons we learned going from downloading Unity to developing a VR application for the Oculus Quest in 7 days. You can watch our demo video on YouTube.
We learned this the hard way on day 3. After going through a number of tutorials for VR in Unity, I kept hitting road blocks. We found that most of the information was already out of date. We were originally referencing tutorials from late 2019 and even those released in November were already missing critical information. Thankfully we stumbled upon a youtube channel by Valem, the channel is also called Valem, that recently released a series of videos that introduces the Unity XR tool kit. If you are interested in developing for VR with Unity, I recommend you check out his Introduction to VR in Unity - UNITY XR TOOLKIT playlist. And we were on track again after going through his tutorials and able to move forward with our VR application.
Software Development Kits are a collection of development tools which include compilers, debuggers, and frameworks. For VR, there are SDKs that target specific headset devices. Unity has also developed an SDK that allows for functionality across different XR headsets. We started by using Oculus specific SDKs but our attempts were not working. We ultimately did not have time to fix all the bugs but thankfully found excellent resources for using the general Unity XR libraries which work across headsets. Ultimately, it’s a better path because, in theory, it allows for interoperability. If you are planning to develop in Unity, I would recommend reviewing and understanding the SDK options and how this fits in with your application.
When you have an idea for a project, it’s easy to want to complete everything and even easier to want to get the features you are working on to be perfect. I always try to remind myself: KISS - keep it simple stupid. And sometimes my husband has to remind me when I go down a rabbit hole. As with anything it’s important to prioritize. Identify your minimum viable product and work towards that goal. As new ideas come to mind, keep a list and add these features later. For the hackathon, we determined early on that our goal was to extract the model information from Revit and render it in the VR application. We focused on structural surfaces and FF&E families to limit the scope to something we could accomplish in 4 days. We also wanted to allow users to move families, create families, and paint surfaces in VR and have those changes synchronize back to Revit in real time. For the families, we started with only non-hosted families and we manually exported the FBX model files for testing. This helped to limit our scope and allow us to have a presentable project in just a few days.
These are a few items that I hope will be helpful as you jump into your next project or hackathon. Next week, Andreas will guest write a post that dives into how we extracted data from the Revt model and communicated with the VR application.
Check out our demo video and github to view the work we did!