Building For VR Collaboration
This post was originally published on VRFocus on April 11, 2018.
Last year, IrisVR released a tool called Inspect Element for Prospect. This feature allows users to select an element in their project and view its properties, such as the layer the object belongs to or the material it is made of. The user can then flag it if it needs to be fixed later in the original 3D modeling tool.
The design, development, and testing of this feature involved all the teams at IrisVR in some capacity. This blog post will detail how we came up with the feature, how we developed it, and how we made sure that the tool would meet the needs and expectations of our users along the way.
Most of our users belong to the Architecture, Engineering and Construction industry and and rely on 3D building models to get work done. The objects they create have data associated with them — sometimes, tons of it! This data creation is known as Building Information Modeling (BIM) and it helps designers and engineers make sure that the decisions made regarding the program distribution, structural typology, material finishes, or mechanical systems selected are the right ones.
At IrisVR, our goal is to help users catch issues early to save time and money and keep the project stakeholders on the same page, and this led us to conceptualize a new tool, called “Inspect Element” that exposes BIM data in VR and facilitates an easier review and QA/QC process. This tool allows multiple people to review a given element in the shared virtual environment that Prospect provides. We knew we also needed to output a document to help record the design review done while in VR, help fix the 3D model, and move the project forward.
Conceptualizing the “Inspect Element” Tool
Selecting an object on a 2D screen is a straightforward interaction. To make this action intuitive in virtual reality, I took inspiration from the typical interaction in 3D modeling tools on a screen and how we interact with objects in the real world. I looked specifically at what we can touch when we are on a construction site. To communicate with the rest of the team and to show users what the new tool would do, I spent some time sketching ideas on a notebook and on a whiteboard.
The tool would have two parts: a VR component and a Library component. In VR, the requirements were:
- Provide visual feedback to the user when they pointed at an object
- Allow the user to select an object and display its BIM properties, starting with name, layer and material
- Allow the user to paint it red and flag it for review
The Library requirements were:
- Display a list of the objects that had been flagged in VR and when
- Ability to share the list with colleagues easily
- Use the list to find the elements in the original program
To test with our users, I built a proof of concept using C# in Unity to showcase what the Inspect Element tool would do. The prototype was rough, but it helped in conversations with architects and with the developers on our team. The video below shows the expected UX flow while reviewing a Revit model in VR:
I created mockups for our VR tool to get feedback from our users in terms of which information they wanted to see. It was clear that we needed to include the Element Name (also the Family Name in the case of Revit elements), the layer the object belonged to and the name of the material assigned to it.
Along with the images above, I provided our engineers with notes regarding which button activates the feature (the trigger), if other actions (such as teleportation or taking screenshots) are permitted while this tool is being used, and any edge cases that needed to be addressed.
As a group and every week, the interaction team reviews together design work done by each of us. In this discussion, the case for objects with textured materials was made: what would an object that has a texture look like when flagged? Another image was added:
As we were working on this feature, our users asked repeatedly that we add a toggle right in the Inspect Element tool so that the entire layer the object belonged to could be switched off. This new action added complexity that we needed to document. For instance, if the layer of an object is set to off in this tool, we needed to make sure to display the same state in the Layers tool list.
In the Library, I followed a similar process and mocked up a new panel for the settings drawer called Flagged Elements. The list had to include the Element IDs, the name of the object (also including the Family Name), and would group the objects by date, to let the user know when the review was made.
A button reading Export Report at the bottom would let the user download a CSV file that would contain all of the necessary information. A user could print this spreadsheet or copy the Element IDs and use them to find the objects in their 3D model.
Development — Part 1 (infrastructure)
Along with interaction/design discussions, we meet as often as possible with the development team to get their early feedback on what will be needed to support a new feature and understand how long it will take to get it built. The Inspect Element tool was especially complex because it meant new work and some “rewiring” in different parts of our export and loading processes.
We needed to export and save the name of the objects, their Element IDs, and the name of the materials they use while opening the door to support BIM data in the future. This would have to happen for all the file formats we support. While we decided to support flagging elements for all of them, we settled for only providing the object name and the element ID data for Revit files based on our user insights.
Additionally, it required a major change in how Prospect was grouping objects in VR so that we could highlight and select individual elements as needed without seeing a performance reduction. We also needed a new graphics system to create an outline around the selected object, a new tool that would change the appearance of the objects temporarily while keeping track of their state, and a new setting per file (Flagged Elements) that would display in the Library next to Viewpoints.
Creating an outline for an object selected was a very involved process, so we decided to settle for painting the entire object instead — in green when selected, and in red when flagged.
Development — Part 2 (Multiuser Meetings support)
As we released Prospect 1.7, we were gearing up for our Multiuser Beta release in 1.8. We needed to add support for the Inspect Element tool while in a Meeting.
Activating this feature while in a project with other users meant:
- Adding two extra fields in the VR menu to reflect who currently had selected the element (Selected by) and who flagged it (Flagged by). It is important to note that, while in a Meeting, we don’t currently share a user’s menu content with other users in the session, so for two users to review the properties of an object together, they must select it and interact with their own menus independently. Letting each other know that they were looking at the same element at the same time was a basic requirement.
- Adding an extra field in the exported report from the Library (the CSV file) to log the name of user who flagged a given element. This is relevant to keep track of issues and to document who found them.
- If a user turned changed the visibility of the layer of an object, it needed to send that layer state to the server so that all users could see that change as well.
Design and Development Iteration
In Prospect 2.0, we were able to add blue outlines to an object when it gets selected. Finally, the tool could successfully represent the state of an object that is selected and flagged at the same time, while giving the user a better visual feedback of its extents.
As we continue to add support for this feature, we will be working on fully integrating with Rhino and SketchUp to output the list of elements that were flagged, we will be displaying BIM data from Revit, and we will providing a list of flagged elements not only in the Library but also while in VR. All of this with the goal of supporting our users across platforms and make the connection between their design tools and Prospect as seamless as possible.
Takeaways for our team
We learned a few things from creating the Inspect Element tool for Prospect:
- Sketches are useful but VR prototypes are key to communicate ideas within our company and with our users.
- While the scope for this feature was huge, we were able to reduce it due to development constraints and we released a feature that worked really well. Improving features over time is something we embrace and releasing an early version gave us more time to test and get feedback.
- Providing support in Multiuser Meetings for the features we design means an extra layer of work for the entire team. From now on we will consider from the very beginning the design and development implications of having multiple people interact with our tools while in a Meeting in VR.
Prospect Pro Plus
If you are interested in trying out the Inspect Element tool, you can download Prospect Pro Plus here!