|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Welcome to Surreal! Surreal, as the name
suggests, is a surrealistic scene of an art museum with moving
objects, a slide show, a secret room, and a lot more. As we
brainstormed, we came across ideas such as an ice-covered landscape,
a lakeside landscape, and a room with a large window, but we finally
decided to take the middle path between indoor and outdoor, with a
bit of creativity to top it off. After two weeks of non-stop
planning and programming, we finished the three scenes -- the
museum, the outside, and the secret room -- and after another week,
we finished the final touches on our animation. The animation
consists of a girl walking through the museum and entering a secret
room, but the scene could also be viewed using manual controls of
the camera (see DETAILS for directions). Although we are quite happy
with the outcome, we are not as satisfied with our code, as this was
our first openGL program (in fact, it is a mess, but our second
project is much cleaner!). Nevertheless, we hope that you enjoy our
program!
The authors are Makiko Yasui and
Dixon Koesdjojo Please visit our second project,
HAMS!
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
Scene definitions: 1. A museum with three
rooms. 2. An outdoor scene surrounding the museum. 3. A
"secret" surreal scene.
Ground
planes: 1. Museum floor. 2. Hills and green
plane. 3. Street path.
Perspective
projection is used in all three
scenes.
Double buffering is used for all
rendering.
Depth buffering is used to
perform hidden surfaces.
Lighting and
Shading: - Lighting, we have ambient light for
all three scenes and a spotlight for the "secret" surreal
scene. - Shading, we used all five types of materials defined in
OpenGL for shading.
Texture Mapping: We
used a lot of texture mapping for the objects, we applied the
different types of texturing (GL_REPLACE, GL_MODULATE, GL_BLEND) and
also applied them to 3D shapes, i.e. spheres and
nurbs.
Keyboard-and-Mouse-Based Camera
motion We implemented all posibilities of camera
movement: - Translating
(Up-Down-Left-Right-Forward-Backward). - Rotating
(Horizontal-Vertical-Panning), not dependant on the main xyz
axis. - Zooming (In-Out). - Mouse-based control for
rotation. - Camera reset. - Camera information saving. (To
switch to manual camera controls, download the code, open Main.cpp,
and change animationOn to false. The keyboard controls are listed in
the readme file.)
Procedural Wireframe
Model: We built basic shapes wireframe model, including:
boxes, cylinders, planes, rotating steps, from scratch without using
the built-in primitives object. And computed all the normals for
each planes of the objects created.
Object
Animations: - Girl animation: Walking, moving her arms,
moving her legs, moving her head. - Bouncing ball
(reflection). - Collision detection bouncing balls. - Shadow
clock. - Fountain. - Atoms orbit.
Scene
Animation: The scene animation was performed by
positioning the camera based on time. And having four acting
sequences for the girl.
Display Lists: We
used many display lists to optimize the overall
performance.
Reflections: We implemented
two reflective planes, both reflect animated
objects.
Shadows: We implemented a shadow
clock.
Multipass rendering: We used
stencil buffer to do multipass rendering for reflections and
shadows.
Animated Textures: We
implemented a slideshows.
Curved
Surfaces: We implemented some NURBS surfaces, including
the outdoor hills, the glass windows, and the roof
tent.
Culling: We implemented occlusion
culling. We divided the scenes into smaller areas and determined
which objects to be rendered accordingly. And also, we computed
whether or not certain objects are in the camera's view
frustum.
Particle Effects: We created a
fountain with random flowing water particles. The particle system is
configurable for different effects, i.e. we could have a rain
simulation.
Collision Detection: We
created an aquarium with three moving balls with different direction
vectors, when the ball hits the wall or another ball, it will
rebound accoring to the physical properties.
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
Entrance and Surreal - blah blah blah.
Three
Balls and a Girl - Collision detection system, between each
ball and the aquarium walls. It also has reflections.
Shiny
Wooden Floor - Reflection on a plane using the stencil
buffer (multipass rendering).
What
Time Is It? - A floating clock to show shadows on a plane
using the stencil buffer (multipass rendering).
Cool
Sunroofs - Transparent curved surfaces using NURBS.
Water
Fountain - Particle system to simulate a water
fountain.
Trees
and Hills - The use of curved surfaces (NURBS) and display
lists.
Cinema
Room - The use of time-based textures to perform
slideshows.
The
Other Side of the Board - blah blah blah.
The
Cafe Terrace on the Place du Forum, Arles, at Night - The
famous Van Gogh's painting.
Surreal
- Showing the use of textured NURBS surface for the tent roof,
display lists for the tables and chairs.
Sitting
at the Cafe Terrace
Front
View of the Cafe Terrace
From
Above
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
Copyright © 2003 Makiko Yasui
and Dixon Koesdjojo. All rights reserved. No portion of Surreal website
may be duplicated, redistributed or manipulated in any
form. |