Project Overview
For my master's university project, I am exploring the possibilities of virtual reality and how it can be used to aid architectural visualisation by creating a proof of concept app. The use of VR will allow clients to more naturally see and understand the designs, and therefore provide detailed feedback to the architects and designers. It can also be used to help create different interior designs to test colour schemes, design styles and furniture.
I am using my skills in VFX to create a highly detailed and photorealistic modern studio flat, and rendering it completely in Unreal Engine for user interaction in VR. The flat will be interactable, allowing the user to move and place objects, turn lights on and off, change the colours and/or textures of objects and furniture, and open and close doors.
Another key element of this project is to experiment with real time ray tracing to make the scene feel as real as possible. Ray tracing is a method of computer generated lighting that casts light rays from the camera, hitting objects and bounces off to hit another object, collecting material data as it goes for more accurate lighting. This is closer to how light works in real life, however is more computational expensive and has only been achievable in the last few years in real time.
Renders
These are just a few renders of items in the environment so far. Still a work in progress. These are rendered in Maya with Arnold GPU renderer. Fully ray-traced and PBR materials.
Planning
Before I started modelling the 3D assets and developing the user interface in Unreal Engine, I used AutoCAD to create blueprints to help plan out what I am going to do. However during development, I have slightly improved the styles and layout.
Maya
Once I came up with the type of building I wanted to model, I had to come up with the floor plans for it, and then model it in 3D with Maya. I knew that later down the pipeline in Unreal Engine, I wanted to be able to select each element in game to change the colours, etc, and the easiest way to achieve that was to separate everything into its own object. This is already done for most objects, but for the main building model, every wall, floor and ceiling has been extracted into its own mesh and is not actually connected to each other.
Unreal
I have never used Unreal Engine for a project before, and had to teach myself and learn how it works and how to use it to make my ideas work.
One example I had to figure out, is simple collision of objects. In a game engine, you need to be able to collide with objects so your character and other objects don't just pass through them, therefore requiring you to create a collision mesh for every object. I could use the original mesh (object model) as the collision mesh, however these can be too complex for this purpose and wastes computational power, so instead I created a low poly proxy mesh (low quality) of each object in Maya, then exported the mid poly mesh along with the low poly out together as an FBX (a 3D model file), however I needed to add the prefix "UCX_" to the low poly mesh name to indicate it's the collision mesh for Unreal.
A few features I have added are, working light switches, you can pick up and move objects, open and close doors, select objects and change it's colour and material properties, there's a music player, you can change the time of day and the lighting updates with realistic sun location, and there's a camera mode to take screenshots.
Audio Test
This is a quick audio test from a portable speaker I made. I wanted to learn how to add basic sound elements in Unreal Engine, so I made this speaker play some music when the user interacts with it. It has full 3D sound so the user can hear which direction the music is playing from, and also has sound attenuation so that the volume decreases the further away you are from it.
Project Management
To help with managing my project and keeping track of what I need to do, I created a critical path to roughly plot the main key areas of this project on a timeline. This allows to see if I am on target or not, and to make sure I'm not spending too long working on one aspect before continuing on to the next.
To break it down further and to know exactly what I have to create and what's been done, I created a kanban. This is so that I add ideas and elements I want to make in an "Ideas" column as a to-do-list, then have an "In-progress" column and a completed column. I like this methodical way of working where I can see exactly what I need to do, and then check it off the list when it's done. It's a good way to see visual progress and to stay motivated.
Due to COVID-19 however, I no longer have access to my university and the Oculus Rift S VR headset I was hiring for testing. Forunately I can carry on working on my project at home, however without the VR interface, despite that being a main focus of my project. I can use traditional keyboard and mouse input for the moment, and implement VR capabilities further down the line when I regain access to the headset. Product testing is another aspect I cannot easily do as I require people in person to test on, and because of the current quarantine, I cannot do. I can however use my family and myself to get basic testing done.
Even though we can't attend lectures physically, we do have online lectures where we can still recieve information and advice about the course and our projects.
My critical path here will need to be updated to reflect the changes I have had to make to my project because of the affects of COVID-19.