Project Multimedia and Finearts BA LMU Munich
OUTRUN VR Visuals by Tobias Potye
Unity 3D - C# - CS6 - FL
OUTRUN VR Visuals is a virtual reality (VR) music visualisation. Choosing a real-time music visualisation over a pre-rendered movie demands performance everytime it is played, but allows changes and re-usage of the content, even though a finished movie would run smoothly on nearly every device. There is also no bigger interaction possible with a finished movie. Ignoring the optimization issues on some mobile handhelds, this project shows a daily use case for VR. It also gives the user a new music experience. It technically runs with every kind and type of music.
Generate endless World
Implementation of a chunk generator, fed by a perlin noise generator to build up an endless world as starting point. Subdividing into cached chunks helps to only render seen parts of the world and to improve overall performance.
Differentiate Frequency bands
The implementation of Fast Fourier transform is a major key to audio visualisation. By dividing the 512 scanned frequencies to eight bands, the raw sound data gets more usable. Here are eight cubes animated to eight several bands. The bandline effect uses this data as an example too.
Making the environment react to music
Injection of the noise generator, by using another frequency band's amplitude for the mesh buildup makes the landscape react to the music. Separation of hight data between a so-called runway and four main zones left and right, avoides collisions with the environment mesh.
Adding a simple particel system as a ring of fog around the player improves the immersion. It hides the rendering end of the world. The user can not esacape from it, as it is relative to his position.
The Random-Instantiate script spawns objects depending on multiple set data. Taking prefabs, bands, timers, and random values makes the environment more alive. The Destroy-Timer script is added to every insantiated object and set to a specifec time, before it deletes the objects again. This cleans up used memory and safes performance.
Building a VR Interface for Navigation
Building the user interface around canvas to show graphical elements, such as buttons, texts and pictures on top makes things easy to understand. Hiding the pause/stop menu beneath the user camera, clears up the user interface.
Using a reticle as cursor
Using a reticle instead of a classic curser is a common way of navigation in virtual reality applications. The reticle shows the look point of the user. By focusing on a button and pressing a CardBoard hardware button, the user controls the UI. Assets for the Google CardBoard are included in Unity.
Using a frame timer
Using a frame timer gives some sort of time line, animations/events can be played/triggerd off. This also reduces lag, as we only render objects in fixed time. The playback will be the same on every device.
Composing the used track Syntharcade in FL Studio
Fruity Loop is a common digital audio work station (DAW). The used music is typical for the retro/synthwave/outrun genre. Syntharcade needed to be long and simple to match this. As I like this kind of music and aesthetic, this was an easy pick :)
Creating Scenes in Unity 3D
Unity 3D and Monodevelop are used for programming.
Playback Device + Google CardBoard
Using Google CardBoard plus smartphone is an easy way to start off in VR. This way the application gets a wider audience.
Mirroring to a TV
Mirroring via DLNA makes it easy to share the screen of a playback device to another. This can be used for presentations.
Demo Screen Record
BETA download: will be added