Colors - A VR Project

Colors is a Daydream VR demo.

Colors is a Daydream VR demo.

In Colors, players can explore the world around them. As they move around, the grayscale terrain will come to life with color.

In Colors, players can explore the world around them. As they move around, the grayscale terrain will come to life with color.

As this was a mobile project, getting the ground to color around the player was a challenge. For performance reasons, I chose to do vertex coloring. The ground has a main diffuse texture applied, and vertex coloring masks where it appears.

As this was a mobile project, getting the ground to color around the player was a challenge. For performance reasons, I chose to do vertex coloring. The ground has a main diffuse texture applied, and vertex coloring masks where it appears.

With 40000+ verts in the terrain mesh, performance was bad. I wrote a script that chunked the mesh into pieces. Testing for which vertices were in range of the player only occurred on chunks near the player.

With 40000+ verts in the terrain mesh, performance was bad. I wrote a script that chunked the mesh into pieces. Testing for which vertices were in range of the player only occurred on chunks near the player.

A colleague placed the objects. To make object setup easier, each model was broken down into the chunks that could be colored. The model's name included its color and other info to automatically populate data.

A colleague placed the objects. To make object setup easier, each model was broken down into the chunks that could be colored. The model's name included its color and other info to automatically populate data.

For performance, the individual pieces of a model were baked into a single model. This allowed GPU instancing. To allow baked objects to batch together and still change colors, color data was baked into the tangents xyz channel (offered more precision)

For performance, the individual pieces of a model were baked into a single model. This allowed GPU instancing. To allow baked objects to batch together and still change colors, color data was baked into the tangents xyz channel (offered more precision)

Custom shaders taking advantage of instancing were written to allow for the object and ground coloring. Other shaders were written for water displacement, the sun, etc.

Custom shaders taking advantage of instancing were written to allow for the object and ground coloring. Other shaders were written for water displacement, the sun, etc.

The player starts with a guided tutorial. They are then free to either explore or play the built-in hidden object game.

The player starts with a guided tutorial. They are then free to either explore or play the built-in hidden object game.

Fruit is scattered throughout the level and when the player finds them, they are to color them appropriately. Coloring all fruit correctly completes the challenge.

Fruit is scattered throughout the level and when the player finds them, they are to color them appropriately. Coloring all fruit correctly completes the challenge.

Players color the object using a selection wheel.

Players color the object using a selection wheel.

There are time of day stones located in the game. Clicking on each stone will change of time of day by swapping out light maps.

There are time of day stones located in the game. Clicking on each stone will change of time of day by swapping out light maps.

To allow objects to be baked into a single object while still enabling per-object glow, emission was baked into the w channel of the tangents, much like color was baked into the xyz channels.

To allow objects to be baked into a single object while still enabling per-object glow, emission was baked into the w channel of the tangents, much like color was baked into the xyz channels.

Adjusting time of day changes sound effects, extinguishes the campfire/torches, and turns on/off light sources such as the lantern on the dock.

Adjusting time of day changes sound effects, extinguishes the campfire/torches, and turns on/off light sources such as the lantern on the dock.

There are several animals scattered throughout as well. If you get too close to them, they will either flee or hide.

There are several animals scattered throughout as well. If you get too close to them, they will either flee or hide.

Bird fleeing away

Bird fleeing away

Turtle hiding once player is too close.

Turtle hiding once player is too close.

The full scene viewed from above in the scene view. That's all! Thanks for taking a look!

The full scene viewed from above in the scene view. That's all! Thanks for taking a look!

Colors is a VR demo created for the Digital Worlds Institute. It was created in about two weeks time. For this project I mainly worked as a technical artist and programmer. I did some of the 3D modeling work as well as UVs and poly reduction.

Date
November 17, 2018