top of page

Development

Each phase of development and testing followed a standard software development life cycle by implementing a waterfall method to assure connectivity and integration between systems. This method is particularly great for solo projects as the built in dependencies alight with solo-development executions. 

 

Planning and analysis took 5 months to complete with heavy literature and competitive reviews helping define project scope. Additionally, constraints of ease of implementation within the chosen engine heavily narrowed implementation options and feasibility within the timescale. 

Ultimately, five systems were identified as critical and were built over the next 12 months leaving room for implementation of feedback at each phase.

 

  • Large open world with physics interactions, lighting, foliage, and environment.

  • User interaction systems, namely movement, object interaction, and teleportation.

  • Information display systems capable of housing various educational information formats.

  • Inspired by educational principles found in discovery learning, the TEAL classroom model and anchored approach.

  • A system to facilitate interact with web delivered content.

Engine:

Unreal Engine 4

Modeling Software:

3DS Max, Blender, Revit, Rhino

Languages:

C++ & Unreal Blueprint

Texture Software:

Substance Painter, Photoshop

List of systems built for project:

 

  • Main Menu

  • Pause Menu 

  • User Preferences Menu

  • Favorites Lists

  • Save Function

  • Collision interaction systems for physics objects

  • Collision interaction systems for VR laser pointer

  • Object to immersive mode load and unload functionality

  • World composition immersive mode functionality

  • Information control panel and controls

  • Popup menu on collision to allow learning mode selection

  • Rotate menus to face user orientation

  • Close menus when user moves out of range

  • Teleport user to favorite functionality

  • Share user favorite list functionality

  • Web audio streaming feature

  • Information panel interactions to load various weblinks to screens

  • Collision driven web interaction systems

  • HUD displays for object interaction tutorial

  • Change number of lights on object functionality

  • Rotate, scale, and move the object functionality

  • Change color of light on object functionality

  • Change lighting intensity of the object functionality

  • Control shadows on object functionality

Design

Functionality:

Systems within the virtual environment were built with mult-media in mind. The system needed to support multiple formats 2D images, 3D models, video and audio playback, and thus necessitated an object type that was both adaptable and able to carry specific information. 

 

Each interactive object in the environment is at its base level a mesh. That mesh is either of the object as a whole, like in the case of sculpture or figure; or in the space of the container that best exhibits the particular format such as picture frames for paintings, or screens for video content. These objects needed to be light enough and replicable enough that inserting any mesh and changing text fields, would allow the user to create a whole new learning experience. This approach conforms to Unreal’s handling of objects and how they communicate.

Aesthetics:

Designs were inspired by science fiction and hope to resonate with the golden ear of science fiction aesthetics. Additionally, the design was inspired by more modern sources like Star Trek, Segan’s Starship of the imagination, Myst, and Ghost in the Shell. Combining these with materials and colors common in antiquity created the blend that is Terra’s unique visual style. 

 

Realizing that the project would be architecturally heavy and that a typical user will see a building in most frames of the interaction, focus was put on site lines and how eclectic, fabricated, and historic environments can interact within a virtual space to create the feel of a cohesive city was an iterative process.

 

The city aesthetic was important because it naturally allows the user to assume useful mental models that help them navigate virtual space with less friction. 

Code

Overview:

 

All code written for Terra Virtualis is native to Unreal in the form of Blueprints or C++. Most code that is meant to be altered by adaptors is made in blueprint and documented to allow ease of implementation. Unreal Object instance types are created to make it easier to change the object without looking at the code.

 

The code required to implement Unreal’s base systems was minimal, with most of the time being consumers writing shaders. The movement and interaction systems took minimum code work as they were alterations of existing Unreal functionality. 

 

Problem:

Enhanced immersive mode posed many code challenges such as giving users detailed control over environmental lighting, using custom interface buttons to control web elements, scaling, moving, rotating models, moving loaded content from a video screen to the hud, ect. Perhaps the greatest challenge of the system was implementing the system without drastically lengthening load times for the user. In planning it had been decided that the system would have to either spawn or be hidden within the map to not have a loading screen between the overworld and immersive learning environment. 

 

Solution:

This challenge was overcome by hosting information temporarily on the user pawn based on distance to an interactive object. This allowed for multiple objects to be loaded into memory and called when the user engaged immersive mode. Other solutions to reduce load times were to code the immersive environment, which is always under the level mesh, to reposition when a user goes between sections of the world composition barrier and causes a new load and to keep 360 images loaded onto the user and use a ‘fake load’ (turn the screen black and back) to allow the large image file to fully load before putting the user into the environment. 

Next:  

bottom of page