Virtual Reality for BIM - take 2: Practical Application
Chris Vorster
Director @ BUILDBIM | Civil Infrastructure DE/BIM Specialist | Director @ BIMWERX
Since my previous post on VR for BIM using Unity 3D with the Google VR SDK, quite a lot has happened in terms of my workflow development to produce these virtual models. I had to develop, modify and borrow a couple of C# & Java scripts (thanks to those who made contributions) to enable interactive model exploration, teleporting to predefined locations and jumping to other scenes in the project. This was not easy, but now that the workflow is in place, I can use it as a template for future projects of the same kind.
This time 'round I decided to use the Autodesk Infraworks 360 Model Builder tool to generate the ground data, roads, pathways, railways, water areas and surrounding buildings, which can be exported as FBX models afterwards. This proved efficient at first, but later I realised that vast resources are required to run any decent size terrain of this source on a mobile phone. So I had to split the export from Infraworks to export ground data and building separately. I also removed smaller buildings & irrelevant data from the Infraworks model to try and reduce the final size & complexity of the mesh that will ultimately be generated. I then processed these FBX models in 3DS MAX for further optimisation, and finally used the 3DS Max Game Exporter Extension to export the models (again as FBX):
The main model of the project, which is a Revit model, was also exported from Revit to 3DS MAX using FBX, simplified, optimised and again exported using the same 3DS Max Game Exporter Extension. I created another "simplified" version of the entire building using 3DS MAX and "Box" elements, wrapped with a texture of the building which as obtained by rendering each elevation of the building back in Revit.
The detailed Revit model:
Simplified "Box" model in 3DS MAX:
The result of the "Box" model in Unity:
The reason for the simplified "Box" model is to save resources when trying to navigate the model. I found that the detailed Revit (exported to FBX) was way to "heavy" to use in real-time.
Once I had all of the required geometry, I placed them into 2 separate scenes. The first scene would start where the viewer is placed outside of the proposed building in a street view, and can then walk towards the building entrance, and after reaching a certain area around the building, will then be "teleported" to another scene which hosts the detailed version of the Revit model, but only for 3 of the 18 floors:
Separate floors in Revit:
The second scene in Unity:
As you can see from the image above, only the first 2 floors, and then the topmost floors are in the second scene model. This is to keep resource requirements down, and since the viewer is now inside the building, he / she will never know the difference. I then placed collider objects in the model to transport / teleport the viewer from location to location:
The result is a reasonably responsive virtual environment, with realistic environmental / surrounding views both inside and towards the outside of the apartments. The compiled Android package was just under 100MB, and a serious processing powered phone was required to navigate the model with ease (Samsung Galaxy S6 was used with this model, in a Google Cardboard V2.0 headset).
There is definitely a benefit in doing this, even if it is just for learning & fun. Immediately after showing the previous "test" model around the office, I was asked to develop a VR model for an active project to impress our clients, and to demonstrate our capabilities. Online resources for Unity 5+ with Google VR SDK 0.8+ are still very limited (samples scripts for versions prior to Google VR SDK 0.8 will usually not work), but you'll find a couple of tutorials on YouTube and from the Unity sites.
This has truly been a rewarding experience, and I am definitely not done with this technology. From here I would like to move onto a better VR headset, for mobile phones at this stage, but definitely look at PC driven VR models and headsets for more resource hungry & realistic models.