The Frame Pipeline

Everything in YA3 is procedural, so the frame pipeline is quite extensive.

On a high level, each frame of YA3 consist of the following subroutines: Input, Interaction Mapping, Tree Generation, Simulation, Tree Construction and Rendering. Each of these modules have well defined interfaces and work independently of one another. Intuitively, each frame must handle user input from the Kinect (or other input device), map the input to the generation of the trees and ultimately construct meshes for the trees and then render them.

framePipeline

 

Calculating Camera Paths

The camera path calculated in several steps and always taking into account the current layout of the trees. In the first part an algorithm find the bound of the forest, creating a convex hull. This hull is then extruded and finally smothed using berziéer curves.

camera_path1 camera_path2 camera_path3

The direction of the camera is always always looking at the closest tree and transitions between the different trees are smoothed as well for a better experience.

camera_path_to_spawn camera_path_to_idle

There are two more movements, the first is the movement to spawn location, where it tries to find the closest available spawn location and moves there quickly. The other movement is when it need to get back to the idle camera path. It then finds the idle path near the closest tree and makes the camera move to and then exatly along the idle path and the switches to the idle path.