Reynaers Aluminium creates high-end aluminium window and door frames, for many different use cases and architectural styles. From modern villas to rustic cottages, from sky scrapers to stadiums. Traditionally, customers get a view of the product range through photographs and product samples, but Reynaers wanted something more. Something that resonates with their image.
To this end, my colleagues at CREATE and I built the World of Reynaers. It’s an interactive product catalogue which shows all of their products and how those products are used, while looking like an architectural visualization.
One of the biggest challenges with this project is the vast amount of custom window and door configurations per building. Each configurable location represents a window or door that needs to be made to measure, for every product variant, and all of them need to be animated.
Doing this by hand would imply vast amounts of work, and be entirely unmanageable. For instance, recently a new window handle was introduced, and all handles in the application had to be replaced. Later, we also discovered that one of the frames wasn’t quite the right thickness, and this needed to be fixed for all systems. If every window would have been a regular skeletal mesh, this would’ve been quite problematic – just imagine having to redo hundreds upon hundreds of models several times over.
Instead, I designed a system that creates the desired configurations at runtime. In the editor, you create data assets which define the systems’ properties: is it a fixed window or a turn-tilt one, is it a folding door and if so, how many segments does it have, does it have cross bars, can it have a sun screen, and so on. The data assets also specify which source models to use. From these models, a new one is created that’s made to fit the given size.
Animations are also handled this way: in the data assets, you can specify how far a sliding door can slide, how far a window should rotate, how long to wait after turning the handle, how long each animation should take.
The data assets can then be reused on all configurable locations. Even better, the data assets can be combined into arrays of windows, and those arrays can in turn be nested, allowing us to create complex configurations with little effort. If for instance the client wants to add an extra window above all double doors, this just takes a few clicks instead of days of work.
A second challenge which defines this project is the wide range of scenarios in which it can be used. For one, it runs as a standalone application, designed for touch or mouse input. However, in the experience center in the Reynaers headquarters, there’s a massive 2 x 4k video wall which is controlled over local network by the user at the touch screen, allowing guides to better show details to visitors, rather than having to huddle a group of people around a single monitor.
Next, the World of Reynaers runs in their CAVE, using Unreal’s recently acquired nDisplay plug-in. Here, the user can navigate freely between and within the buildings, and select the configurations directly by pointing at them with the controller.
Finally, there’s also full VR support, again allowing users to navigate freely throughout the world. Users can toggle between walking and flying mode, select configurations by pointing at them, and swap or animate them using a floating UI panel.
After experimenting with different movement modes and receiving feedback from the client, I chose to use full locomotion here, with a comfort vignette. The controller’s aim defines the direction, and the trigger the walking speed. We tested Unreal’s built-in teleporting first, but getting people at trade shows to actually use this without getting either disoriented or stuck up against a wall proved to be very challenging.
To further aid guides at trade shows, we developed an application which can send commands to the World of Reynaers. In the Unreal editor, we can define points of interest, and at the touch of a button the guide can send the user there. The guide can also open, close or swap the window or door at that location. We designed the command receiving plug-in to be as open as possible, so Reynaers now uses it for their own internal Unreal projects.
All of the above scenarios are built within a single project, and even run from the same executable. Adding
-cave as a command line argument to the standalone touch screen application runs it as a first person VR experience instead. Unreal’s framework makes this a breeze, and greatly improves this project’s maintainability.
For the World of Reynaers I did all code (mainly C++), lighting and general look, much of the level design, and all of the UI logic.