📜 ⬆️ ⬇️

Virtual reality in real estate: case

One of our graduates of the “Gaming Internet Projects Management” program works in a team that implements projects in virtual reality . Right now they are working on a virtual showroom .

VR allows the developer to present his product range in real scale with a photorealistic image, the most complete sense of space, as well as the interaction he needs. The very opportunity to look at the future project as if it were real, to fully experience its scale and at the same time get amazing "tricks", for example, to teleport long distances, change the visual and physical properties of the environment - all this opens up new horizons for real estate presentation. Under the cut you will find the story of our graduate about how it was all done from a technical point of view.



Start: Revit VS Unreal


We initially performed apartment modeling in Revit, based on the specifics of the project. Directly transfer to Unreal gave a terrible geometry: “pasted” and with an incomprehensible topology. We tried several options of formats, export plugins to get a suitable model in 3d max. The miracle did not happen: the partition of a simple rectangular shape had 2-3 not glued vertices at a point, overlaps of polygons, extra edges, unfolded normals; objects with a curved surface had a dense mesh. Geometry correction sometimes took so much time that it was easier to re-do it. Therefore, we redid the wall frame and furniture in 3d max and used the revit geometry as a reference.
')

Content Production: Time VS Money


It immediately became clear that with the help of two and a half people it would not be possible to fill the object in time. We turned to 3ddd, Turbosquid, and the Unreal marketplace. As a result, we received models with unsuitable UV-scans, with a large number of triangles and with a confused topology, although in the description of the market it is said that the models are game-edged and without overlaps. So we had to edit and simplify the topology, re-do the sweep and refine the texture.

In the middle of the project, they turned to the Unreal marketplace, but even there everything was not smooth: some models were too low-poly, although this was not visible in the preview; complex materials where there is no need, wrong UV sweep, multiple UV channels.

At some point, lightmass refused to calculate lightmaps without explaining the rejection. We started checking the props, there were 500 of them in the leveler. First we went by the exception method: we made a copy of the level, deleted the props and tried to send it to the render. After going through half a prop, I found the wrong one; it was a towel in the toilet; returning to the level, they fixed the prop, but the lightmass still refused to count. It turned out that 80% of the props from the Unreal marketplace have the wrong scan and several UV channels. After fixing the problem, the problem disappeared. To avoid this in the future, we wrote a blueprint to check the props for UV bugs.

Code: Blueprint VS C ++


90% of the work is carried out by blueprints, without knowledge of programming languages, having only common foundations. The main task is to implement interaction with doors, cabinet doors, drawers so that the solution can be simply transferred to different door configurations. Configurations turned out 5: opening from right to left, left-to-right, top-down, away from you, towards yourself.

The classic opening option “came up, pressed“ E ”, the door opened” - they refused right away, they decided in VR to open the hand with the controller.



At first glance, this is a simple task, but it was necessary to take into account collisions with other objects, the displacement of the axis of rotation when opening, the opening side, and also to open without “sticking” the door to the controller when the trigger is pressed.



In the process, we made another bowling and a screamer in the closet, to distract from viewing the interiors.

Optimization: Picture VS FPS


Optimization is a rather painful process. The desire for a realistic picture, developed over the years in the cinema, causes pain when, for the sake of fps, you have to reduce the quality of shadows SSAO, the size of reflection maps, simplify shaders, texture size, etc.

The work began in version 4.13, then there was still no forward shading. With the advent of 4.14, it gave a 20-30 fps increase, but deprived SSAO, HDR Lighting, which in turn dramatically changed the picture and led to the reworking of the project. At the moment we decided not to do this, left for the next project.

Playtests: UX VS Users


Playtests were held in different age and gender categories. In the majority, people without VR experience, quickly mastered and certainly tried to open and touch objects. We specifically did not highlight active objects for greater realism.

It turned out that an inexperienced user confuses 2 buttons: teleport and action. At the training level, we first showed how to move in space, and then how to interact with objects, but users continued to click on the teleport both to move to a point and to open doors. We made tips for the buttons, but the situation has not changed. Therefore, we moved the actions and teleportation to the trigger, made a one-button control option and left only one controller.

We also noticed that users did not immediately understand how to use a “fishing rod”: they stretched their arms parallel to the floor, clicked on the teleport, “flew away” to the other end of the level and were lost. Therefore, we changed the “bait” to the option: when you press a trigger, a displacement icon appears on the floor, by turning the head, conditionally - by looking, the user selects the point to which he wants to move, then releases the trigger and moves to the desired point.

About feelings in VR: some users are trying to open the door, standing from her in the meter. We have to explain that the door opens, as in life: it is necessary to approach it, grasp the handle and pull. Also, by all means, they step over thresholds and are afraid to pass through the wall. In the development process themselves, they repeatedly found themselves wanting to lean on a virtual sofa or table.

External Control: Unreal.js VS Socket.io


To enable the manager to “lead” the sales process and help people who are not used to the new world, we developed a web application that allows you to focus on the houses and infrastructure of the district, move the user between levels and points within the level, as well as find an apartment parameters of interest and dynamically visualize suitable offers.

In order to minimize delays in communication with Unreal, I wanted to use the WebSocket protocol. The first one caught sight was the Unreal.js plugin that allows writing in Javascript and containing the WebSocketServer implementation. We made a prototype for version 4.13 with this plugin, everything worked fine. Unreal 4.14 was released, the plugin was updated in a few days, there are two items in the list of changes:

  1. compatible with 4.14 (!!!)
  2. "Drank" WebSocketServer (???)

Apparently, only we liked this implementation. They began to look for a replacement, found socketio-client-ue4, from the well-known in the getnamo community. Everything would be fine, but at that time only version 4.13 was supported and only lines could be received in Blueprint. We started writing a library for parsing JSON, but soon Getnamo was very pleased again, having done this work for us in a new release, for which many thanks to him!

In the end, it turned out better than we wanted. They wrote a separate server that synchronizes all running Unreal- and web-based applications in real time, which, for example, allows you to immediately exclude it from the sample for all others when booking a certain apartment by one user.

The demo project made has met its expectations and did not leave indifferent, both among inexperienced users and professionals. Many even complained that it was not possible to use such a service when they themselves purchased apartments. The only thing that is still not enough for a release is the presence of a bold and ambitious developer!

Here is how the whole thing looks like:



You can try it yourself and chat with the development team . A virtual showroom will be shown on Lecture Day at VSBI on February 11. Sign up here .

Source: https://habr.com/ru/post/321506/


All Articles