Completion: 2018
Studio: Bounding Box Games
Platforms: Rift, Quest
Engine and tools: Unreal, Visual Studio, Jira, Perforce
Team size: 1
Project length: 1 year
Responsibilities: Design & Development

Summary of Contributions

My decision to create a VR photo viewing app was derived from necessity. I needed a way to view my 360 photos in VR. Most of the applications out there were for 360 video viewing as their primary function and they might also view photos. I built this with simple navigation and a clean and easy to use interface.

Features

Gallery view of thumbnail images.
Picture directory navigation.
View regular and 360 images: rotate, scale, pan.
Slideshow with adjustable speed.

Architecture

Levels

Startup Level
    Splash screen is presented to the user.
    Prepare database - create the database if it doesn't exist, perform an integrity check.
    Create the gallery of thumbnail images.
    Create object pool of thumbnail objects and spawn an initial amount for immediate use.
Environment Level
    Load the background environment - cubemap.
Navigation Level
    Allows input from the player controllers.
Audio Level
    Prepare background music & sount effects.

Object Pools

Creates a pool of image thumbnail objects used in the gallery.

Threads

Worker threads are used to make the code efficient and the experience responsive.
    Create thumbnail images.
    SQLite database storage and retrieval.
    Compresses the image before storing in the database. Compression in determined by the codec of the WIC Library.
    Creates the mipmaps.
    Broadcasts when work is complete.

Scenes and Controllers

Gallery (thumbnail) Scene

Displays a defined number of thumbnail images in the scene. With controller input the user can scroll through the images left or right. Previously viewed thumbnails, which are no longer in view, will be collected, cleaned and placed in the object pool.

Image Scene

Displays an individual image: sphere mesh, quad mesh, folder mesh.

Player Controllers

Widget touching components.
Haptic feedback for targeting and button interactions.
Image interactions can be smooth or step.
Regular image interaction: rotate, scale, pan.
360 image interaction: yaw, pitch, roll.
Slideshow with timer.

UI Widgets & Buttons

Settings Widget

Picture folder location, audio levels, slide show speed, tooltips, haptic input, and cache.
Settings data is saved using the SaveGame class.

Environment