Your own virtual car showroom

Customise your cars the way you want

# spatial-computing

Project overview

Technologies

  • Virtual reality
  • OpenUSD

Tools

  • Reality Composer Pro
  • Xcode - SwiftUI, RealityKit
  • Blender

Key features

  • Customise life sized 3D cars

Contributors


Why did we make this?

  1. Create a novel new virtual reality browsing and shopping experience; a first of its kind on visionOS
  2. We wanted to create a rich, immersive, controllable VR shopping experience with a large, detailed 3D object (such as a car)
  3. We wanted to establish whether we could have full control manipulating (i.e. editing) custom 3D objects in realtime on visionOS

Methodology

Creating realistic materials

3D objects come in various formats and visionOS prefers USD, Universal Scene Description, which is what was imported into Reality Composer Pro. These objects comprise of two key elements: meshes and materials.

A mesh is the 3D description of the object itself and larger objects such as a car can be made up of various smaller meshes such as wheels and the chassis. A material is fairly self explanatory but both require their own specialist methods for building.

The meshes came from TurboSquid and were converted to USD but in the process the materials were lost so they needed to be recreated in the Shader Graph in Reality Composer Pro. This is done by creating layers and properties of the materials such as how metallic it is and index of refraction, etc.

Adding colour

The material needs to take in a base colour that is exposed in the UI layer of the app so the user can change the colour of that particular element of the car such as the paint job.

The rest of the materials properties that make it look like car paint stay the same such as the noise (that makes it like "sparkly") and metallic so that the material reflects light in a realistic way.

The benefit is so that you can see a life sized version of the car and have instant feedback for how your customisations look.


Beyond cars

Interior design

The techniques used in this prototype could also be used for designing interiors while being inside a digital version of the space. Walls, floors and furniture could all be customised in real time just by interacting with the window.


Contributor notes

While this was a great exploration into developing 3D software, something I have not ventured into before, it came with some challenges such as 3D asset design.

There is a lot that goes into creating realistic materials and meshes, both require their own expertise, which is why I imagine games take years to develop.

On reflection, if I were to do make this again I would reassess whether it needed to be fully immersive; I would just make it 2.5D and use 3D volumes for the cars rather than designing the 3D space too.


Polymorph open source library

A visionOS open source library for object manipulation

A DSL for vending SwiftUI views that allows the user to change attributes on a RealityKit Entity. Enabling a type-safe way of reaching out to RealityKit content with a readable syntax.