CS488 - Assignment 5

September 01, 2014, at 06:55 PMerika

A final project proposal is reviewed and accepted/rejected by the course personel before beginning. My project, accepted, is the generation of a prairie landscape, with wind simulation. The user interacts with the scene by moving an object (default sphere) along the fractal terrain, colliding, where appropriate, with the trees distributed over the landscape. Read more...

A thorough description is to come (though don't hold your breath). In the meanwhile, screen shots and some brief descriptions are provided below.

The project aims to implement the paper Animating Prairies in Real-Time by Frank Perbet and Maric-Paule Cani both of iMAGIS-GRAVIR, INRIA Rhone-Alpes, Montbonnot, France. (Proceedings of the 2001 Symposium on Interactive 3D Graphics)

A basic terrain generation is created using quads. Some gentle fractal elements are used to create waves within the landscape. This is converted (erroneously, and then fixed through colourful debugging) to a triangle mesh, to ensure the quads don't break, or cause discontinuities between faces.

Terrain of differing resolutions are generated across the entire landscape to ensure that the basic terrain generation works. Vertex-based normals are computed, and finally a sphere - the "character" for our explorations - is added into the environment.

Several viewpoints around the sphere are explored to determine what's best, and keyboard controls are hooked up so that the ball and camera are appropriately animated. In the absense of fancy physics engine, a simple computation is applied to determine where the ball should be located to rest on top of the terrain for the given height, and to ensure we don't "walk" off the map. Finally, we start incorporating level-of-detail elements to the rendering. From the camera position, aka. the position of our red sphere, a fall off distance is computed for the given triangles/quads, and it is determined how refined the faces should be. Those further from the camera use larger instances, while those closer are more refined.

Time for some grass, since the prairies are covered in grasses. While the land used faces, lines were used for the grasses. Line height, and a slight amount of line segmentation to give the look of bending grasses, was implemented. Display lists (which apparently are obselete as of 2014) were used to ensure grass consistency between regions. And while the prairies may not have many trees, they were simply added (and without much special thought for attractiveness. Go-go-gadget simple fractal trees!).

Unfortunately, time was running out so a number of details were falling through the cracks for getting the implementation up and running. So, as one does, you do the best that you can accomplishing what you can with what time you have. Level-of-detail should ideally include texturing, which just wasn't working (which I've since determined were likely due to the textures being the 'wrong size' ie. not a power of 2, and not exactly square - all a requirement for the time), which would also include billboard representations for the trees and grass.

So, instead I created some UI overlays to show where the character was on the map, some super-user interactions to manipulate the camera to see the scene from a variety of angles, GUI for adjusting whether we were exploring priairies (sparse trees, fairly flat), or foothills (hilly, with more trees). Yes, the rendering became increasingly sluggish the more populated the terrain became. Finally, I threw together a snazzy user manual (printed off and everything!) inspired by the user manual of an N64 game I quite liked.

User Manual

Final Samples

BlogIt Side bar

Recently Written

erika: end hiding comments and categories

erika: end hiding comments and categories

Group-Specific Sidebar

Blix theme adapted by David Gilbert, powered by BlogIt