Bachelor’s thesis

Information and Communications Technology

2020

Aissa Nylund OPTIMIZATION OF ARCHVIZ PROJECTS FOR STANDALONE VR-DEVICES BACHELOR’S THESIS | ABSTRACT

TURKU UNIVERSITY OF APPLIED SCIENCES

Information and Communications Technology

2020 | 37 pages

Aissa Nylund

OPTIMIZATION OF ARCHVIZ PROJECTS FOR STANDALONE VR-DEVICES

Architectural visualization, ArchViz for short, is the practice of modeling images and videos from architectural plans and blueprints. Its goal is to make to scale visualizations of buildings and spaces that can then be used for example as marketing material. The modern 3D-part of ArchViz focuses mainly on producing beautiful and often photorealistic images and videos, but not necessarily optimized lightweight solutions for virtual reality (VR) experiences. This thesis studies the use of game engines in ArchViz and its focus is on using them to create light but photorealistic applications that are suitable for VR.

The thesis was carried out in two parts. The first part was more theoretical and consisted of gathering information on available technology and comparing these technologies to find out which ones are the most suitable for VR ArchViz projects. The practical part of the thesis was building an optimized of the thesis commissioners Turku Game Lab’s renovated office space. Turku Game Lab is a game research department of Turku University of Applied Sciences. The finished project was analyzed to see which parts took the most graphical computation time and so were the most important to optimize.

The research and practical work complemented each other with the researched optimization methods being tested at the Game Lab Level and the best methods being applied to the final design. As a result, the commissioner has an optimized part of the project to apply to a larger whole.

KEYWORDS:

Optimization, Virtual reality, Computer graphics, Videogame graphics, CAD

OPINNÄYTETYÖ AMK | TIIVISTELMÄ

TURUN AMMATTIKORKEAKOULU

Tieto-ja viestintätekniikka

2020 | 37 sivua

Aissa Nylund

ARCHVIZ PROJEKTIEN OPTIMOINTI ITSENÄISILLE VR LAITTEILLE

Arkkitehtoninen visualisointi, lyhyesti ArchViz, on arkkitehtuurisista piirroksista kuvien ja videoiden tuottamista. Sen tavoitteena on tuottaa mitoiltaan realistisia rakennusten ja tilojen visualisointeja, joita voidaan käyttää esimerkiksi markkinointimateriaalina. ArchVizin moderni 3D-osa keskittyy pääasiassa kauniiden ja usein fotorealististen kuvien ja videoiden tuottamiseen, mutta ei välttämättä virtuaalitodellisuuskokemuksiin (VR) sopiviin optimoituihin kevyisiin ratkaisuihin. Tässä opinnäytetyössä tutkitaan pelimoottorien käyttöä ArchVizissä ja keskitytään erityisesti kevyiden mutta fotorealististen applikaatioiden luomiseen, jotka sopivat VR-laitteille.

Opinnäytetyö suoritettiin kahdessa osassa. Ensimmäinen osa oli teoreettista ja koostui tiedon keräämisestä käytettävissä olevasta teknologiasta ja näiden teknologioiden vertaamisesta jotta saataisiin selville, mitkä niistä ovat sopivimpia VR ArchViz -projekteihin. Opinnäytetyön käytännöllinen osa koostui optimoidun Unreal Engine -tason rakentamisesta opinnätetyön tilaajan Turku Game Labin uudistetuista toimitiloista. Turku Game Lab on Turun Ammattikorkeakoulun peliteknologiaa tutkiva osasto. Valmis projekti analysoitiin jotta pystyttiin havaita mitkä projektin osat käyttivät eniten graafista laskenta-aikaa ja täten tarvitsevat eniten optimointia.

Tutkimus ja käytännön työ täydensivät toisiaan sillä tutkittuja optimointimenetelmiä testattiin Game Lab Unreal projektissa, ja parhaiten toimivat niistä otettiin käyttöön viimeisessä versiossa. Opinnäytetyön seurauksena opinnäytetyön tilaajalla on optimoitu projektin osa jonka voi lopulta liitää suurempaan kokonaisuuteen.

ASIASANAT:

Optimointi, Virtuaalitodellisuus, Tietokonegrafiikka, Peligrafiikka, CAD

CONTENT

LIST OF ABBREVIATIONS (OR) SYMBOLS 6

1 INTRODUCTION 1

2 THE TECHNOLOGY NOW 3 2.1 of 3D graphics 3 2.2 Using CAD models in game engines 3 2.3 Game engines 4 2.4 Self-contained or standalone VR devices 8 2.5 CAD software 10

3 USING CAD MODELS IN GAME ENGINES 11 3.1 Optimization process 11 3.2 Keeping photorealism in mind 13

4 PLANNING THE WORK 15 4.1 Visualization of Turku Game Lab 15 4.2 Goals and requirements 15 4.3 Comparing testing methods 15

5 DEVELOPING THE OPTIMIZATION PROCESS 18 5.1 Optimization processes in Blender 18 5.2 The process of building an optimized Unreal Engine Level 19 5.3 Optimization with the GPU Visualizer 23

6 CONCLUSION 25

REFERENCES 27

PICTURES

Picture 1 Startup templates for new projects in Unreal Engine 4 Picture 2 Startup templates for new projects in 5 Picture 3 Combining multiple object’s textures together reduces draw calls from 22 to 1. (Jackson et al 2019) 11 Picture 4 Example of 3D model optimized from CAD to GLB (GL Transmission Format filetype) (Jackson et al 2020) 13 Picture 5 Example of Z-fighting in coplanar faces (Wikipedia 2020) 14 Picture 6 OVR Metrics Tool working in Performance HUD mode (Oculus 2020) 16 Picture 7 Unreal Engine GPU Visualizer visualizing a single Frame’s length (Zoomed in view of the relevant information in red square) 17 Picture 8 Top: the Game Lab model as is. Bottom: The optimized Game Lab model. 18 Picture 9 Top: Freshly imported .FBX in Unreal. Bottom: Removed unnecessary geometry. 19 Picture 10 Lightmap density view mode 20 Picture 11 Lightmap density optimized 20 Picture 12 Test lightbake and all the lighting components assigned. 21 Picture 13 Nav Mesh visualized 22 Picture 14 The first frame analysis of the project 23 Picture 15 Second frame analysis after processing was fixed 24

TABLES

Table 1 Comparisons between chosen game engines. 7 Table 2 Comparisons between chosen standalone VR devices (Wikipedia 2020, Lenovo 2020) 9 Table 3 Programs suitable for cleaning up and/or converting CAD files (Jackson, BryceHo, Manwaring, Dunham Kroes, ReneeW-CPub. 2020) 12

LIST OF ABBREVIATIONS (OR) SYMBOLS

VR Virtual reality experienced through virtual reality devices called VR glasses/goggles/headsets.

Standalone VR Virtual reality experienced with a standalone virtual reality device, meaning it doesn’t need external devices or cables.

Self-contained VR Same as Standalone VR

Mobile VR Like standalone VR, but uses a smartphone as the processor and screen.

AR Augmented reality. Adding digital content into real life imagery in real time.

ArchViz Architectural visualization. The practice of creating 2D and 3D images and models based on blueprints and plans of an architect.

CAD Computer aided design.

BIM Building information model.

Polygon A primitive plane that has a finite number of edges.

NURBS Non-Uniform Rational B-Splines.

FPS Frames per second. A unit that shows how many frames per second the device is displaying on a screen. Often used in performance testing.

Ray tracing Rendering technique that calculates the path light would take from its source to the viewers eye. The different bounces the simulated light ray takes create reflections, shadows and refractions. (Nvidia 2020)

Raster rendering The conventional way of rendering 3D objects into 2D screens. (Nvidia 2020)

Real time lighting Lighting simulated in real time by .

Baked lighting Lighting simulated by creating lightmap textures for objects. The textures need to be generated only once, but cannot be edited in runtime.

Plugin An extra addition to software, that can be from an outside source. Adds more functionality or modifies existing functionality of the parent software.

Topology Topology is the mathematical study of the properties of 3D models that are preserved through deformations like twistings, and stretchings of objects. (Weisstein 2020) UV map A way to present a 3D object’s on a 2D plane, used in wrapping textures onto a 3D model’s surface. The U and V are used as coordinates for the 2D plane to avoid confusion, since 3D space already uses X and Y. (Denham 2020)

Level In this thesis, capitalized Level refers to Unreal Engines component that is a collection of Static Meshes, Volumes, Lights and Blueprints

1 INTRODUCTION

Architectural visualization (ArchViz) is the practice of creating appealing images and videos from architectural plans and blueprints. A common ArchViz project consists of creating the concept images of buildings, building renovations, floor plans, and interior decoration. As with any concept work, it is crucial to have a fast workflow and easily modifiable projects, this is why ArchViz has moved to digital 3D software. When working in 3D, especially with Computer- aided design (CAD) software, creating, lighting, and texturing models is fast and efficient. Still, CAD software isn’t made for creating so-called game-ready assets, meaning the models created with CAD software are usually too heavy, and full of redundant information, for real- time applications like games.

Virtual reality (VR) has become a popular tool for visualizing concepts and spaces as it is a powerful way of displaying a project from all angles and on a real-life scale. Because of this ArchViz companies have started to research VR solutions. However, VR requires real-time graphics, which must be quite optimized to run on devices that are comfortable and easy to demonstrate concepts on for clients. Rendering the single images of videos doesn’t have the optimization problem, as all the work has to be done once, and the project can be left to render even outside working times. An easy middle-ground for lightweight VR solutions is to render a 360-degree image of the project and show that through a VR device. This limits movement inside the scene though and won’t accommodate interactivity. For a true 3D VR scene that can run on a standalone VR device, some heavy optimization is required.

Right now, there isn’t a simple solution for the problem, as the optimization process is very case dependent, and different companies have their own solutions. The point of this thesis is to examine why the projects need to be optimized and how. This was done by combining optimization knowledge from multiple game developer- and ArchViz sources and testing and combining their optimization methods. The optimization methods were tested in a project provided by the commissioner of this thesis Turku Game Lab. Different development software and VR hardware were also compared to see if the software and hardware themselves can affect the results.

The goal was to find out why optimization is so crucial for CAD model-based VR applications and to create a lightweight VR Level in Unreal Engine of the Game Labs new facilities. These goals were completed simultaneously by first gathering all the information needed, then building the project in the Unreal Engine game development engine, and simultaneously keeping in mind and applying the optimization methods. Since the Level will be viewed in VR as a part of a bigger visualization of the whole Edu City campus area, it needs to run very optimally and be modifiable in the future.

The thesis is divided into four main parts. The first part is a theoretical one that encompasses a look into the current relevant technologies and an explanation of what is important to note when working with CAD models. The technologies that are compared encompass different game development engines, self-contained VR devices and CAD model creation software. These technologies are first introduced and then have their relevant attributes collected into tables where they can be compared quickly. From these comparisons and the commissioner's wishes, the proper software was chosen for this thesis and project. The second part focuses on planning the practical part and acting as a bridge between the theoretical and practical sections. In this part, the project and different testing methods are introduced. This paves the way for the third part, which consists of building the optimized Unreal Engine Level for the thesis commissioner. Here the optimization processes are divided according to the software used. The part starts from optimization in the chosen software, Blender, and continues to export the 3D models into Unreal Engine.

The last part of the thesis, conclusions, looks into the future of these technologies, the thesis itself, and what could have been done differently. This part also introduces some new technological advances that happened during the writing of the thesis, for example, the new generation of Nvidia graphics cards’ use of AI.

This topic of the thesis is interesting because game development tools have gained popularity in non-entertainment media companies and are taken more seriously. Because most game engines have free hobbyist and student licenses, they have opened up visualization and simulation fields for many more groups of people for whom the fields were not as accessible before. Game engines are often also made to be user friendly and have multiple tutorials and courses provided by the companies and users. This also helps new people get into these tools faster and more efficiently. Also studying virtual reality and predicting it’s future at a point where it seems to again gain popularity as better equipment is released and hardware limitations are relaxing, is interesting. Studying these topics right this moment as new advances in technology seem to be made monthly, was exciting and provided a lot of interesting views and sources. 2 THE TECHNOLOGY NOW

2.1 Basics of 3D graphics

When discussing producing and optimizing , the most important things to consider are the amounts of geometry and the connections between them. The geometry is usually represented by polygons or Non-uniform rational basis splines (NURBS) and their connections and flow are referred to as topology. Proper topology in polygon models means fewer triangles to count and produces lighter scenes. Another thing proper topology makes simpler is unwrapping the models to make UV-maps, which are used to project materials and textures to a 2D plane, and from there on to the surface of the model. The U and V in the term UV-map refer to coordinates U and V, as X, Y, and Z are already used in describing 3D space. When unwrapping models, the most important things to consider is where the seams of different parts of the model, or UV islands, land, and to make sure there isn’t any stretching in the maps. If the UV doesn’t have a consistent scale and doesn’t use the space it's given properly, the texture won’t look right and a lot of data from the texture is wasted. (Katsbits 2019)

2.2 Using CAD models in game engines

In most cases when bringing CAD models into game engines, the model needs to be converted from NURBs to polygons. NURBs are not used in-game engines, because even though they are lighter to calculate for the CPU, they need to be turned into polygons when rendering pictures for GPUs. This is because the two most used graphics application programming interfaces, OpenGL and Direct3D, cannot render NURBs. (Denham 2020)

The engineering and visualization industry benefits most from using NURBs because they allow the realistically accurate visualization of real-world objects. The real-time graphics industry, on the other hand, has focused on polygons and triangles, because hardware and software have developed around them and they are now the fastest objects to render in real-time. (Denham 2020) 2.3 Game engines

Game engines are software that streamlines the game development process. They have been built and shared, so every developer doesn’t have to make their own engine to start developing a game. They are essential tools for developing different features of a game and importing assets like 3D-models, audio, images, and animations into a project. Game engines make game development accessible for a wide variety of developers with specific skill sets. Even though game engines aren’t necessarily the first choice for architectural visualization projects, they hold the easiest access to tools for VR development. These tools are vital for efficient production pipelines. Right now, there isn’t a definitive best for VR development or ArchViz, but Unity and Unreal engine are used the most, for the reasons listed below. (Hale 2019)

The Unreal game engine is developed by the company Epic Games. The engine started out in 1995 as a developing platform for first-person shooter games and got its name from the first game developed on it, Unreal. In 1998, the first version of the Unreal engine was made available for modifying, or “modding”, Unreal. Since then the engine has diversified and has now been used in various other genres and non-game projects. (Thomsen 2012)

Unreal Engine’s main programming language is ++ and it has become popular because of its flexibility. Unreal also features a visual scripting tool called blueprints. Because of the blueprints and their accessibility Unreal has become easy to use for non-game developers and is popular in various visualization fields. Unreal Engine is also described as “source available”, which means its source code can be modified and viewed by people outside its development team. This has led to, for example, the Varjo VR glasses having their own version of the engine to better accommodate their needs and features. (Lee 2015, Varjo 2020)

Picture 1 Startup templates for new projects in Unreal Engine

Unreal Engine has right in its startup menu a template for ArchViz projects, shown in Picture 1, that has every plugin and feature suitable for ArchViz already demoed. Using this template, anyone unfamiliar with the engine may modify the ready-made Levels to showcase their models and scenes in realistic lighting conditions. Unreal also offers an ArchViz demo using ray tracing technology for free on their marketplace and a plugin built into the engine that can import various file types and convert them to be suitable for the engine. The plugin is called Unreal Datasmith and in Table 3 is a comparison of it and other model optimization tools.

Unity was developed in 2005 as a Mac OS X exclusive game engine. Since then Unity has evolved to be one of the most accessible and compatible engines in the market. Unity has especially been praised for mobile game development and its compatibility with over 25 different platforms. (Brodkin 2013)

Picture 2 Startup templates for new projects in Unity

The main focus of Unity has been to make game development available easily and flexibly. When starting a new project in Unity, the user can choose from five templates:2D, 3D, 3D with extras, Hight Definition render pipeline, and lightweight render pipeline Template, shown in Picture 2. These project templates help the user to get started fast without having to configure all the project settings by hand. (Brodkin 2013)

When working with ArchViz projects, the go-to template is the High Definition RP one. The High Definition Render Pipeline (HDRP) is a Scriptable high-fidelity Render Pipeline that has been built to ease the production of projects with high-quality graphics and real-time lighting. This render pipeline also supports scriptable , that can be used to produce unique visuals.

The LWRP Template on the other hand would work better with Mobile VR devices because it utilizes the Lightweight Render Pipeline. Meaning it is a great starting point for projects working on low-end to mid-tier devices and projects that won’t utilize real-time lighting or shaders. (Unity 2020)

Lastly, a list of other engines that should be mentioned. Unity Technologies has also developed Unity Reflect, a separate engine for working in real-time with building information models (BIM ). It has native integration with Autodesk Revit, Rhinoceros, and SketchUp. With Unity Reflect, developers can bring their visualization scenes and models from the source software into augmented- and virtual reality. (Unity 2020)

CryEngine was developed by Crytek and initially released in May 2002. It is a game engine that is known for producing great visuals. CryEngine shouldn’t be used for commercial projects though, because its EULA forbids its use for anything but entertainment games commercially. (CryEngine 2018)

Amazon Lumberyard is a newer engine based on CryEngine and developed by Amazon. It was launched in February 2016 and as of writing is still in a beta phase. Amazons' focus in developing Lumberyard is to make a fully customizable and free game engine for anyone to use. It also has integrations with Amazon's other products like the live streaming and fanbase building platform Twitch. (Amazon 2020)

Overall, the main things to consider when comparing engines for this project are: if the engine supports CAD models on its own, if the engine supports VR development on its own and if the engine's terms of use allow for non-video game projects. Other useful information for comparing different engines are what the main programming language the engine accepts is and if the engine has an active community of developers that can be consulted if problems arise.

Engine Unreal Engine Unity Unity CryEngi Amazon 4 Reflect ne Lumberyard

Native support Yes Yes Yes - Yes for CAD models

Native VR Yes Yes Yes Yes Yes development tools

Eula supports Yes Yes Yes No Yes non-game projects

Primary C++ C# C# C++ C++ programming language

Active Yes Yes Not yet No Yes developer community

Pricing Free until the 150$ per Same as Pay- Free developed month for pro Unity what- application 40$ per you- reaches $1 month for want million in sales plus*

*Unity Personal is free for companies with revenue below $100K in the past year (Bowell 2019)

Table 1 Comparisons between chosen game engines.

2.4 Self-contained or standalone VR devices

Virtual reality at its basics means computer-simulated environments but especially focuses on presenting these environments in a reality simulating way. This is done by making the user experience the environment through a head-mounted display (HMD) also known as a VR- device or VR-headset. There are multiple companies producing VR-headsets, most notable of them being HTC Vive, Oculus, and PlayStation VR (PSVR), but this project requires a standalone VR-headset, so it won’t include HTC Vive of PSVR. Self-contained, or standalone, VR devices are essentially VR devices that don’t need an external machine to run the software. These devices have stricter requirements concerning performance, so generally, real-time lighting won’t work in standalone VR. Some post-processing effects also suffer from visual glitches in VR, because of the image being viewed from two “screens” at once. Another problem that comes from the device displaying the image on two screens, is that everything must be rendered twice, so polygon/tri-counts double too. This makes even simple scenes heavier. (Bardi 2019)

The Oculus Quest is a standalone VR headset developed by Oculus VR and published in May 2019. Because it is a standalone device, it runs on its own and its games need to be installed as Android application packages (APKs), as with other Android mobile devices.

The headset doesn’t require tracking pylons or any external devices, except for controllers, which can also be replaced with the user’s own hands in multiple applications. The hand tracking works the same way as the environment tracking of the device, using cameras on the outside of the headset. The cameras scan the environment to keep track of its orientation. They can also recognize the users’ hands and different positions of the hands, allowing the user to navigate menus and interact in games using hand gestures.

Oculus Quest also has a guardian system, that lets the user mark a safe play area in their environment. This helps users avoid injury and colliding into objects, by showing the play area’s borders as wireframe walls when approaching. (Robertson 2019)

Oculus Go is also a standalone VR headset developed by Facebook Technologies, Qualcomm and Xiaomi. It was released in May 2018 a year before Oculus Quest. It was the first device in the category of standalone VR devices. Before it, any mobile VR devices were accessories whereby a phone could be turned into a VR headset.

Unlike the newer Oculus Quest, the Go doesn’t support room-scale applications, it is meant to be used sitting or standing in place, and the only movement supported is moving one’s head or turning around, If an application requires moving around inside a digital world, this is done with an included laser pointer like controller. Oculus Go also lacks the Guardian system for this reason. Go is suitable for lightweight APKs and is an adequate system for showcasing interactable 360 panorama picture scenes. (Fitzsimmons, Lynch 2020)

The Lenovo Mirage Solo was developed by Lenovo and Google and released the same month as Oculus Go, May of 2018. From specifications though it matches more closely with Oculus Quest. It has the same support for room-scale applications though it has been criticized for its controller, which takes away from the possible immersion, since its like the Oculus Go controller, and makes moving in VR applications just pointing and clicking. Still, it is the first standalone VR headset using the Google Daydream platform. (Robertson 2018).

Overall important things to compare between devices are display resolution, pixels per degree (PPD ) refresh rate, and the headset weight. Display resolution is important for viewing clarity and minimizing eye strain. PPD measures pixel density while taking into account the field of view. Refresh rate informs how many times in a second the display hardware updates its buffer, unlike frame rate, which only calculates how many times a second the video source can feed a whole frame of new data. Finally, the headset weight can give insight into how comfortable it is to use and transport and the price can help users and developers assess the worth. (White 2020).

Device Oculus Quest Oculus Go Lenovo Mirage Solo

Resolution 1440x1600 1280x1440 1280x1440 (per eye)

PPD 14.4 12.8 11.63

Refresh 72Hz 60Hz to 72Hz 75Hz rate

Onboard Snapdragon 835 Snapdragon 821 Snapdragon 835 processor

Platform Oculus Mobile Oculus Mobile Google Daydream

Weight 571 g 467 g 645 g

Price US$399 (64 199$ (32 GB) 399$ (64 GB) Gigabytes (GB))

US$499 (128 GB)

Table 2 Comparisons between chosen standalone VR devices (Wikipedia 2020, Lenovo 2020)

2.5 CAD software

Computer-aided design (CAD) software is 3D-modelling software specially developed for making blueprints and designs for products. The user can create 2D or 3D CAD projects that can be updated as designs change and problems are discovered. CAD software is essential to many production industries and is used in architectural design and visualization for its versatility. Ordinary 3D models usually contain information on the model’s shape, the direction of its faces, coordinates for the model and its surface, and sometimes animations. CAD models potentially have much more information from notes to simulations to multiple versions of the same project. Some CAD software is also focused on the production of Building information models (BIM). CAD models can at their simplest be only drawings or shape information, while BIM models always have defined elements with element-specific information. The following software was chosen for their compatibility with the thesis project that will be built in Unreal Engine. (DesignTech 2020, CADLearning 2016)

Autodesk Revit is a BIM modeling software in the Autodesk family. It was first published in 1997 by Charles River Software and later acquired by Autodesk in 2002. Revit’s focus lies in giving engineers and architects the tools for creating digital construction documentation based on the models they create. Because of the more technical focus, Revit isn’t very popular among new designers and people more interested in building aesthetically pleasing, or conceptual buildings. Though Revit might seem laborious when trying to produce photorealistic or pleasing images, it still offers the Autodesk Raytracer rendering engine, which helps with creating physics-based lighting setups. (K, Sasi 2020)

SketchUp is a versatile 3D modeling program that can produce a variety of models. It was released in August 2000 by @Last Software. SketchUp’s strength is the variety of models that can be created with it. SketchUp can be used in various fields like ArchViz, interior design, landscape architecture, mechanical engineering, and video game design. This variety and ease of use make SketchUp popular with amateur CAD modelers. The only problem professionals note is the lack of communication with SketchUp and another modeling, rendering, and design programs. (K, Sasi 2020)

Rhino, unlike SketchUp and Revit, mainly uses Non-uniform rational B-splines (NURBS), a mathematical model that focuses on producing precise curves and surfaces. Its stable release was in 2018 and it was developed by Robert McNeel & Associates. Rhino’s advantage lies in its focus on details. With NURBS, the user can create very precise models based on real-world parameters, and so recreate building blueprints with details down to a millimeter.

Rhino is quite simple to use but requires plugins to produce photorealistic renderings. Luckily, Rhino is very compatible with other software and has a wide array of third-party plugins available. Other minor issues arise from Rhino’s lack of animation capabilities and the difficulty of translating NURBS to polygons when bringing models from rhino to Unreal Engine. (K, Sasi 2020) 3 USING CAD MODELS IN GAME ENGINES

3.1 Optimization process

All types of CAD models need some level of optimization before they can be exported into a game engine. Only rarely a model can be automatically optimized within the engine, and even then, the scene and project need to be very simple so the project will run smoothly, especially in VR. The optimizing of CAD models can happen in multiple ways and often resembles the way models created with other techniques are optimized. The optimization process usually starts in the program the asset is created in. A very effective method that impacts memory consumption and file size, is to change texture sizes.

Changing the resolution of various maps in a material won’t change the appearance of a model much. For example, changing a model’s roughness map texture from a resolution of 2048 x 2048 pixels to the same texture map in the size 1024 x 1024 pixels, won’t change the look much, as surface roughness is not something the user will consciously notice in such detail. This same method can be also used with metallic maps but should not be applied to normal maps and base color textures, as these create visual blurring and loss of geometry, which is very noticeable. (Jackson, BryceHo, Manwaring, Dunham Kroes 2019)

Picture 3 Combining multiple object’s textures together reduces draw calls from 22 to 1. (Jackson et al 2019)

Another way to greatly affect application performance is to combine multiple objects textures into one atlas. Picture 3 showcases 22 draw calls reduced to one, by combining the textures of eight objects. This method can be also done to meshes. Draw calls are often the applications run time performance hinderers. (Torres Bonet 2020)

Many CAD models contain parts that will never be visual in an ArchViz project, or in a game project in general. These parts should be deleted to save in triangle counts and simplify object hierarchies. Sometimes files also contain unused textures, materials, and nodes, that might not take up too much memory on their own but will add up quickly. Hierarchies should be cleaned up in any case, since large amounts of objects in a single asset can contribute to slow runtime performance. Very often this can be done simply by combining meshes and removing unnecessary nodes without affecting the object appearance. (Jackson et al 2019)

After cleaning up the model in the program it was created in, it should be converted into a filetype that a game engine will accept.

As shown in Table 3, there are multiple applications suitable for converting CAD models into more suitable filetypes. Studios is the self-claimed standard in video game content optimization. It is a powerful software with all the tools needed for optimizing standard 3D models and CAD models. The only downside is its price of USD 30k per year. Unreal Datasmith on the other hand is a plugin for Unreal Engine and is enabled by default when starting an ArchViz project in Unreal. It is a powerful importer tool but doesn’t optimize models very well. Its settings allow the user to choose the target polycount, but the results aren’t comparable to optimizing by hand. In this thesis, Blender was chosen, as it is free, open-source and versatile. Unreal Datasmith would have been the most optimal if the model that was used was in a filetype that Unreal doesn’t accept without Datasmith (Simplygon 2020).

Software Simplygon Unreal Autodesk Blender Studios Datasmith Inventor

Import FBX, OBJ STEP, Catia, JT, STEP, Catia, JT, Collada (DAE), OBJ, FBX, and OBJ, FBX, and FBX, PLY, OBJ, more more STL, glTF, GLB, and more

Export FBX FBX, OBJ FBX, OBJ, STL FBX, OBJ, glTF 2.0, and more

Convert/Transcode No Yes Yes Yes

Optimization Yes No Yes yes

Table 3 Programs suitable for cleaning up and/or converting CAD files (Jackson, BryceHo, Manwaring, Dunham Kroes, ReneeW-CPub. 2020)

Picture 4 Example of 3D model optimized from CAD to GLB (GL Transmission Format filetype) (Jackson et al 2020)

Optimizing CAD models for standalone VR devices will inevitably change the model's appearance slightly. Especially in a case where the object has smooth curving surfaces, as in Picture 4 where the triangle count was reduced greatly, but the model now has angled surfaces instead of smooth curved ones. This is rarely a real problem visually, as the details and surface shading information can be projected from the high triangle count model into the low triangle count model. After doing this, the lower triangle count model has the shading information of the higher one in a normal map and will appear smooth on surfaces. Still, the edges of the model will reveal its angled surface, but especially in VR where models are often viewed from some distance, this rarely presents a problem. (Jackson et al 2020)

3.2 Keeping photorealism in mind

The biggest obstacles photorealism brings to the optimization process are that every model needs to have very solid geometry that the engine will understand when simulating lighting. A big part of photorealism comes also from textures and materials. Physically-based materials are an absolute must when creating photorealistic scenes. For the materials to look photorealistic, their texture sizes need to be large enough and their UV maps need to be consistent in both their quality and scale. Materials can compensate much for simple models, not all models need to be accurate to the millimeter to look photorealistic if the lighting and materials look real enough. (De Moor 2019)

Textures on the other hand take a lot of memory in larger sizes, so sometimes the most realistic 4K textures are too heavy for standalone VR devices. Lighting also can become an obstacle. If the created scene needs to have interactions, the interactions will be very limited with baked lighting. Most standalone VR devices, especially on their own, cannot handle real- time lighting, so for example, moving objects becomes an issue. (Wald, Dietrich, Benthin, Efemov 2006)

Picture 5 Example of Z-fighting in coplanar faces (Wikipedia 2020)

There are also two things to look out for when optimizing CAD models especially: so-called Z- fighting and inverted normal. These cause visual glitches that harm immersion greatly. Z- fighting occurs when two geometry faces are coplanar or nearly coplanar, this appears visually as the plane flickering as shown in Picture 5. Z-fighting can be fixed by increasing the distance between the faces by a small amount, or deleting one of the faces if that is an option. Inverted face normals can cause multiple problems. They can render as holes in the model, or affect normal map baking, by causing shading imperfections. Face directions should always be checked before baking normal maps or exporting models, as for example, Blender doesn’t render normals facing away from the camera differently in the default viewport. (Polycount 2014)

4 PLANNING THE WORK

4.1 Visualization of Turku Game Lab

The commissioner of this thesis, Turku Game Lab, had requested that their already done model of the renovated Game Lab office and teaching space should be exported to Unreal Engine and made into an explorable space in standalone VR. The bulk of the task falls on importing the assets properly from the 3D software Blender, to the Unreal game engine. Then building the scene lighting and VR functionality, while making sure nothing brakes and everything runs smoothly on the Oculus Quest VR device.

4.2 Goals and requirements

The goal is to make the Game Lab scene to look as real as possible, so the Lab can be toured in VR in the future. The scene should be light enough to run smoothly so users won't get dizzy from picture choppiness. The scene should also look like the Game Lab of course and make the user feel like they know the space after taking the virtual tour. Photorealism isn’t the main point because of the limits posed by standalone VR, but it is something that has to be kept in mind and strived for. The scene and APK that will be produced should be cleanly made also for it will be used in a bigger visualization of the Edu City area, and has to be smoothly integrated into the bigger project. Working cleanly and documenting the project is important for its future development and longevity.

4.3 Comparing testing methods

There are multiple ways to test application performance, but the ones that affect user experience and device health, are frame rendering, CPU usage, GPU usage, and battery usage. Frame rendering is one of the most critical ones as it measures what the user sees while playing. It can be measured by different aspects of frames per second or FPS.

There is no universally agreed proper FPS value, but many consoles and mobile devices aim at stable 30 frames per second, pc games use 60 to 120 frames per second. Oculus recommends apps created for Oculus Quest standalone VR headset maintain a stable 72 FPS. Oculus also iterates that there should be 50 to 100 draw calls per frame and 50 000-100 000 triangles or vertices per frame (Oculus 2020).

Measuring CPU and GPU usage during a play session can also give vital information about user experience by spotting thermal throttling, unstable framerates, and high power usage.

Thermal throttling refers to the slowing down of CPU or GPU in case the device's cooling systems can’t keep the temperature of the components low enough. It stops when the component’s temperature has cooled enough, but can be a warning sign of optimization issues. Thermal throttling should be a last resort to cool down a component and even when used successfully the heat can damage the hardware over time. Thermal throttling can also cause visual slowing down and choppiness of the image, which can in turn cause dizziness and headache in VR users the same as unstable framerates (Fisher 2018).

Oculus and Unreal Engine both have their own analytic tools for testing application performance and optimization. Both recommend using the tools to find bottlenecks and then fixing them one at the time to avoid unnecessary work.

Picture 6 OVR Metrics Tool working in Performance HUD mode (Oculus 2020)

Oculus has Oculus Virtual Reality (OVR) Metrics Tool, an application that can be run in two different modes: Report mode and Performance HUD Mode. Report mode compiles a report after using the application, while the Performance HUD Mode displays a performance graph in real-time over the played application as shown in Picture 6. The tool reports on application framerate, device heat, CPU and GPU throttling values, and the number of tears and stale frames per second. (Oculus 2020)

Picture 7 Unreal Engine GPU Visualizer visualizing a single Frame’s length (Zoomed in view of the relevant information in red square)

In the Unreal Engine, one useful metrics tool is the GPU Visualizer. The GPU visualizer can display information per frame. As seen in Picture 7, the tool separates all parts of the frame and displays its “cost” in milliseconds. With this tool, it is easy to recognize which parts of the scene take up most of the time. The pictured frame takes 10.37 milliseconds to render, so the framerate of the application stays at 90 frames per second, an ideal framerate for desktop VR. Standalone VR, as stated before, works with 72 FPS, so it won’t need as harsh optimization, because for 72FPS the length of one frame can be 13ms. (Świerad 2017)

5 DEVELOPING THE OPTIMIZATION PROCESS

5.1 Optimization processes in Blender

Picture 8 Top: the Game Lab model as is. Bottom: The optimized Game Lab model.

Because the 3D models for the Game Lab were made in Blender from the start, their topology doesn’t need reworking. The whole project had 180K triangles before any unused objects were removed. Because the scene was built in Blender to be rendered in Blender, it needs some modifying before importing to Unreal. All the lights, lighting volumes, background images, cameras, and reflection maps will be removed and rebuilt in Unreal. Some objects, like the walls and floors, needed to be manually unwrapped again since their materials were just projected in Blender. Unwrapping them properly assures that in Unreal lightmaps and other baked textures will display correctly and UVs won’t be overlapping with each other. Other objects like the computer desks were unwrapped with Blenders' automatic smart UV project.

Materials will also be checked through to confirm they are as optimally assigned as possible. Picture 8 shows the comparison between the original game lab model as is and the optimized version that was converted to .FBX and imported into Unreal Engine. In the end, the FBX file had 43 materials, 133K triangles, and 154 objects.

5.2 The process of building an optimized Unreal Engine Level

Picture 9 Top: Freshly imported .FBX in Unreal. Bottom: Removed unnecessary geometry.

Some import problems arose from bringing the model into Unreal, few invisible objects came into view, seen in Picture 9. Unreal had applied the Boolean with which windows and doors had been “carved” from walls and various objects. The geometry left behind by the Booleans needed to be deleted, and after that the assets checked. Another problem was degenerate tangents, which was fixed by changing the import settings to import tangents and normals, instead of just the normals.

Picture 10 Lightmap density view mode

The next step was to make sure lightmap sizes were suitable for baking lighting. Generally in ArchViz projects, the lightmaps could be dense enough to show orange or red in the Lightmap density optimization view mode, but for VR and especially standalone VR devices, the lightmaps should show pale green to yellow. The starting lightmaps were showing mostly dark blue, as seen in Picture 10, which means they had small resolutions and would produce blurry and pixelated shadows after baking the lights.

Picture 11 Lightmap density optimized

After all object's lightmaps were in more optimal sizes, as seen in Picture 15, the lighting could be rebuilt. The rebuilding of lights consists of many states. The lights need to be created and their values assigned properly, all windows and see-through surfaces that have geometry obstructing them need to be assigned light mass portals. Lightmass portals essentially tell Unreal that the area is a window or a hole on the wall and can let light through. Reflection probes were also placed in every room that has reflective materials, so the materials will display their surroundings, and not the scenes skybox. Lastly, a light mass volume was placed to engulf the model so when baking the lighting, the engine will know what part to focus on, and not calculate all the empty space around the models.

Picture 12 Test lightbake and all the lighting components assigned.

After a test bake, it became clear that only putting a plane on top of the model as a roof wasn’t enough, and the roof needed to have thicker geometry since the sunlight was heavily “bleeding” through the ceiling seams. The final light configuration can be seen in Picture 12, but with the roof hidden for clarity.

Picture 13 Nav Mesh visualized

After the lights were configured, the scene still needed VR controls for testing. This was done by creating another project with the VR template and migrating the Virtual Reality Blueprint, and input settings to the original project. After this, the Motion Controller Pawn Actor is dragged into the Level. If the Level has a Player Start Actor is present, the player will start from that point, otherwise, the player will start at the Motion Controller Pawns location. The Motion Controller Pawn is an actor that has built-in all the Unreal VR functionalities like teleporting and grabbing. Still, the teleportation won’t work unless there’s an area that can be teleported at. Heres where Nav Mesh comes in. It is usually used for AI pathfinding, but it is also a very quick way to map out the playable area for VR. Nav Mesh is placed as a large Bounding Volume first over the whole teleport able area and then refined with Nav Modifier volumes. One thing to keep in mind is, that Nav Mesh won’t generate on a surface that has no collider. Picture 13 shows the Nav Mesh teleportable area in green. Cluttered areas like between desks were left out to keep users from clipping inside furniture. Nav Mesh can be quite performance heavy, but because in this application nothing but the player moves it won’t be a problem. 5.3 Optimization with the GPU Visualizer

Picture 14 The first frame analysis of the project

It became clear from the first frame analysis, shown in Picture 14, that the project was quite optimized to run at least with the Oculus Quest linked to a desktop. The parts that took the most GPU processing power were reflections and post-processing. Post-processing in general poses challenges to VR, because effects like Bloom or Lense Flares often cause visual glitches. Reflections on the other hand would be good to conserve as they are since they bring a lot of realism to the scenery.

Picture 15 Second frame analysis after post processing was fixed

By modifying the post-processing and disabling parts that wouldn’t work in VR the duration of a frame went from 13ms to 7.5ms. In other words, the FPS went from 75 to around 130. Because of this, the project now has more leeway for future development and its post- processing can be adjusted to suit the overall style when that is decided. 6 CONCLUSION

As speculated in the start of this thesis, optimization is an important process that has to be integrated into all parts of project development, especially with projects that use CAD models or VR technology. The best results for standalone VR can be achieved by making sure all 3D models, CAD, or other kinds are made with the project in mind. It is often difficult to later go back and optimize models that already have been converted into an asset filetype like .fbx or .obj. Still, often projects like these use ready-made assets from other sources, and in those cases, heavy editing of the assets is required. Sometimes this begs the question if using ready- made assets saves a considerable amount of time after all. As automatic optimization tools evolve to be more powerful, this question will hopefully lose its relevance.

These results also made clear the importance of pre and post-production work. It is crucial to plan projects like these very clearly and to assign plenty of time for preparing everything before starting production. Post-production also takes a lot more time than one would think. It saves time and resources to have a clear understanding of the project's end goal and to plan exactly what software and hardware will be used and how.

Another conclusion that wasn’t necessarily clear just from the information gathered, is that even though game engines are very lucrative for ArchViz companies, they might not necessarily be able to become relevant enough as visualization tools have also begun implementing VR visualization modes. These tools are often more simple and made only with realistic rendering and visualizations in mind, so compared to game engines, they have less “useless” features. Still, most of the best rendering software can be implemented as plugins to game engines, and as they behave very similarly in game engines as other software, they bridge the gap for many studios.

Combining knowledge of optimization and current technology was achieved quite well. The thesis was also a good exercise for strengthening old knowledge and gaining a better and more defined view of VR development in Unreal Engine. Even though the models provided for the testing project weren’t comparable to CAD models, they still needed optimization and the scene needed working on. In the end, it was clear that with well-optimized models that have good UV maps the scene can be made quite lightweight but fine-looking in Unreal Engine. With everything learned from this thesis, starting the project over would differ in that it should be done in much closer contact with the commissioner and the people who would continue the project and it would be completed much faster. Part of why this wasn’t the case this time was the Covid-19 pandemic forcing everyone to work from home and taking a toll on mental health. It still was a great opportunity to learn to adapt to different working situations and a good exercise on keeping up motivation through extraordinary times.

Continuing work on the project would require implementing the Level into the larger project and applying the right materials that will be decided by the commissioner. Another thing that should be done, is to apply a low poly version of the ICT city hallway to the outside of the current game lab model to make it look less like it is floating in the air. An HDRI captured from the corridor could work very well too. The project would also benefit from having all the lights re-baked on a more powerful computer, as the machine used for the project took over 12 hours to bake lights in the second-best quality. There wasn’t too much chance to change little details and balances as every change meant another 12 hours of computing and the bake failed a couple of times or crashed the engine. The highest quality bake was attempted, but the hardware gave up completely, and couldn’t finish the bake in a reasonable time. This was half expected though as the machine used has parts that are over 4 years old. It was still interesting to see how well it performed all things considered and proved that the newest hardware isn’t necessarily a must for creating decent renders.

While writing this thesis, many announcements from Epic and Nvidia came forward, that may change the future need for optimization in real-time applications completely. The new series of Nvidia graphics cards, called Ampere, have considerably more power than their predecessors and Nvidia seems to have leaned towards AI solutions in rendering, so graphics computation can rely more on predictions than accurate realistic physics calculations. This makes, for example, rendering raytraced lighting much faster, as fewer rays have to be cast and the AI will predict how the light would behave in spaces it doesn’t cover. They also revealed an algorithm called Deep Learning Super Sampling (DLSS) that can transform 1440p footage into 4k quality with much better performance and detail level than native 4k quality. (Nvidia 2020)

Epic revealed the new Unreal Engine 5, which uses a new technology called Nanite. Nanite can render over 20million triangles per frame, with real-time lighting and 8k textures. The demonstration they showcased was running in real-time on Playstation 5. The demonstration also showcased multiple extremely high poly assets in a single scene, which could imply for this thesis, that in the future the need for optimizing high poly CAD models will be diminished. This might also mean that Unreal Engine gains even more popularity among ArchViz companies. At least the companies that want to make very detailed and realistic visualizations. (Unreal 2020)

The thesis itself could be used as a base for future research of how optimization methods evolve and how virtual reality will look like in the future. It would be also very interesting to see research into how the aforementioned leaps in technology will affect the need for optimization in the future. There have been discussions already in entertainment game circles if current games being released aren’t polished enough, and if they need to be as large as they are when released. Many consumers feel left out by having to download several gigabytes of game files and updates with less than ideal connections and hardware. Gaming has become a very expensive hobby and especially virtual reality gaming is out of the reach of common consumers. If the new Unreal Engine can produce games that run easier on simpler hardware, but become larger in filesize with 8k textures and extremely high poly models, how will different types of games and players be affected? Will VR become more affordable and accessible in the future? Will optimization still stay as a relevant and important part of game development?

REFERENCES

Unity. 2020. Architechture, Engineering & Construction . Referenced: 14.4.2020 https://unity.com/solutions/architecture-engineering-construction

Unity. 2020. Unity Reflect. Referenced 8.6.2020 https://unity.com/products/reflect

Unity. 2020. High Definition Render Pipeline overview. Referenced 8.6.2020 https://docs.unity3d.com/Packages/[email protected]/manual/index.html

Nvidia. 2020. Graphics and Simulation, What is raytracing?. Referenced 04.6.2020 https://developer.nvidia.com/rtx/raytracing

Weisstein, Eric W. 2020. Wolfram Web Resource, Topology. Referenced 04.6.2020 https://mathworld.wolfram.com/Topology.html

Denham, Thomas. 2020. Concept Art Empire, What is UV Mapping & Unwrapping?. Referenced 4.6.2020 https://conceptartempire.com/uv-mapping-unwrapping/

Cryengine. 2018. Cryengine, Limited license agreement for the use of the cryengine. Referenced 8.6.2020 https://www.cryengine.com/ce-terms#

Varjo. 2020. Varjo Developer, Unreal Engine fork. Referenced 8.6.2020 https://developer.varjo.com/docs/v2.3.0/unreal/unreal-engine-fork

White, Andrew. 2020. Techgearoid, What Is Monitor Refresh Rate? (Definitive Guide). Referenced 8.6.2020 https://techgearoid.com/monitors/what-is-monitor-refresh-rate/

Wikipedia. 2020. Comparison of virtual reality headsets, Standalone (mobile device mounts and all-in- ones) Referenced 8.6.2020 https://en.wikipedia.org/wiki/Comparison_of_virtual_reality_headsets

Robertson, Adi. 2018. The Verge, Lenovo’s Mirage Solo is an innovative VR headset, but most people shouldn’t buy it. Referenced 8.6.2020 https://www.theverge.com/2018/5/4/17318648/lenovo-mirage- solo-google-daydream-standalone-vr-headset-review

K, Sasi. 2020. Design Everest, Architects: Here's How Revit, Rhino, and SketchUp Stack Up. Referenced 9.6.2020 https://designeverest.com/lounge/article/architects-here-s-how-revit-rhino-and-sketchup- stack-up

Jackson, BryceHo, Manwaring, Dunham Kroes. 2019. MicrosoftDocs, Best practices for converting and optimizing real-time 3D models. Referenced 9.6.2020 https://github.com/MicrosoftDocs/dynamics-365- mixed-reality/blob/master/mr-docs/import-tool/best-practices.md

Jackson, BryceHo, Manwaring, Dunham Kroes, ReneeW-CPub. 2020. MicrosoftDocs, Optimize your 3D models. Referenced 10.6.2020 https://github.com/MicrosoftDocs/dynamics-365-mixed- reality/blob/master/mr-docs/import-tool/optimize-models.md

pittsburghjoe-ahub. 2015. What is the ideal triangle count and draw calls limitation for developing on a Gear VR? [Online forum comment] Referenced 10.6.2020 https://forums.oculusvr.com/developer/discussion/31296/what-is-the-ideal-triangle-count-and-draw- calls-limitation-for-developing-on-a-gear-vr

GameBench. 2019. Game Performance Metrics that Matter: Guide to Interpretation and Action. Refeerenced 10.6.2020 https://blog.gamebench.net/game-performance-metrics-that-matter

Oculus. 2020. Oculus Developers, Testing and Performance Analysis. Referenced 10.6.2020 https://developer.oculus.com/documentation/unity/unity-perf/

Fisher, Ryan. 2018. What’s Thermal Throttling and How to Prevent It. Referenced 10.6.2020 https://www.techspot.com/article/1638-what-is-thermal-throttling/

Bowell, Andrew. 2019. Pricing for new Unity Pro and Plus subscriptions to change on January 1, 2020. Referenced 11.6.2020 https://blogs.unity3d.com/2019/10/17/pricing-for-unity-pro-and-plus- subscriptions-to-change-on-january-1-2020

Świerad, Oskar. 2017. Unreal art optimization, Measuring Performance. Referenced 11.6.2020 https://unrealartoptimization.github.io/book/process/measuring-performance/

Lee, Joanna. 2015. An overview of Unreal Engine. Referenced 11.6.2020 https://hub.packtpub.com/overview-unreal-engine/

Thomsen, Mike. 2012. History of the Unreal Engine. Referenced 11.6.2020 https://www.ign.com/articles/2010/02/23/history-of-the-unreal-engine

Brodkin, Jon. 2013. How Unity3D Became a Game Development Beast. Referenced 11.6.2020 https://insights.dice.com/2013/06/03/how-unity3d-become-a-game-development-beast/

Amazon. 2020. Amazon Lumberyard: Free. Powerful. Fully Customizable. Referenced 12.6.2020 https://aws.amazon.com/lumberyard/

Hale, Brent. 2019. TechGuided, The Best Game Development Engines for Aspiring Game Developers. Referenced 11.8.2020 https://techguided.com/best-game-engine/

Bardi, Joe. 2019. Marxent 3D Commerce: What is Virtual Reality? [Definition and Examples] Referenced 11.8.2019 https://www.marxentlabs.com/what-is-virtual-reality/

Lenovo. 2020. Mirage Solo with Daydream. Referenced 11.8.2020 https://www.lenovo.com/us/en/virtual-reality-and-smart-devices/virtual-and-augmented- reality/lenovo-mirage-solo/Mirage-Solo/p/ZZIRZRHVR01

DesignTech. 2020. DesignTech CAD Academy, Introduction to CAD. Referenced 11.8.2020 https://www.designtechcadacademy.com/knowledge-base/introduction-to-cad

Robertson Adi. 2019. theVerge, Oculus Quest review: a great system with a frustrating compromise. Referenced 12.8.2020 https://www.theverge.com/2019/4/30/18523000/oculus-quest-review-vr- headset-price-specs-features

Michelle Fitzsimmons, Gerald Lynch. 2020. Techradar, Oculus Go review. Referenced 12.8.2020 https://www.techradar.com/reviews/oculus-go

CADLearning. 2016. Autodesk: Understanding the Difference Between BIM and CAD. Referenced: 20.8.2020 https://knowledge.autodesk.com/support/revit-products/learn- explore/caas/video/youtube/lesson/143344-courseId-100332.html

Katsbits. 2019. Optimise models for export to games. Referenced 20.8.2020 https://www.katsbits.com/tutorials/blender/basic-optimise-models-for-export-to-games.

Torres Bonet Rubén. 2020. Unity Draw Call Batching: The Ultimate Guide [2020]. Referenced 20.8.2020 https://thegamedev.guru/unity-performance/draw-call-optimization/#tab-con-15

Polycount. 2014. Polycount : Z-Fighting Referenced 20.8.2020 http://wiki.polycount.com/wiki/Z- Fighting

De Moor Thomas. 2018. Photorealistic Graphics: The Future Looks Just Like Real Life. Referenced 20.8.2020 https://lab.onebonsai.com/photorealistic-graphics-the-future-looks-just-like-real-life- 504f46f87879 Wald Ingo, Dietrich Andreas, Benthin Carster, Efremov Alexander. 2006. Applying Ray Tracing for Virtual Reality and Industrial Design. Referenced 20.8.2020. https://www.researchgate.net/publication/251828087_Applying_Ray_Tracing_for_Virtual_Reality_and_ Industrial_Design

Denham Thomas. 2020. Polygonal and NURBS Modeling: What’s The Difference? Referenced 27.8.2020 https://conceptartempire.com/polygonal-vs-nurbs/

Nvidia. 2020. Nvidia GeForce RTX 30 Series | Official Launch Event. Referenced 1.9.2020 https://www.youtube.com/watch?time_continue=1&v=QKx-eMAVK70&feature=emb_title

Unreal Engine 5 Revealed! | Next-Gen Real-Time Demo Running on PlayStation 5. Referenced 1.9.2020 https://www.youtube.com/watch?v=qC5KtatMcUw