Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

CSCI336 3D Art Gallery

Introduction

Create and display an interesting 3D virtual environment of an art gallery. Place a variety of pictures, pedestals, ornaments, etc. around the environment. The scene should be fully textured, using several different textures, and lit.

The scene should contain a number of:

Animations (e.g. rotating fans, moving ornaments, moving lights, blinking lights, etc.)

Light sources – with at least two spotlights

Translucent surfaces (using alpha blending)

The scene should also have a night time and a day time setting (i.e. the same scene illuminated differently to represent two different times of the day).

Implement a ‘help’ display which can be toggled on/off when the user presses the ‘h’ key. This should show the frame rate, whether it is currently night or day, the current display state (described below), user interaction controls, etc.

User Interaction

The user must be able to cycle through the following states with the scene drawn in:

1. Wireframe mode with a

Black background with white lines

White background with black lines

Blue background with yellow lines

2. Solid mode with primitives

Coloured differently but without lighting or textures

Shaded using lighting only

Textured without lighting

Shaded using lighting and textured

3. The user should also be able to

Turn individual lights on/off

Toggle the translucent surfaces (i.e. toggle between translucent and opaque)

Implement a free roaming camera for user viewpoint navigation. The user must be able to move the camera around in the environment. The camera must also be able to rotate in all directions.

Also implement a flash light feature (a spotlight orientated in the direction of the camera and moves with the camera) that can be switched on/off. The user should also be given the option to change the intensity and colour of the flash light.

Advanced Features

Implement the following features:

1. A screenshot feature – whereby the user can take screenshots that will be saved as image files. The user must be able to take multiple images that are saved into a screenshot folder without overwriting previously saved screenshot image files that are already in that folder.

Screenshots should be taken by reading the contents of the front buffer.

2. Display the screenshot – the last screenshot taken should be displayed as a picture somewhere in the art gallery (please indicate where this picture is located in your readme file)

3. Motion blurring – this feature should allow the user to turn motion blurring on/off for the animated components in the scene (use the accumulation buffer)

4. Reflective surface – Make the gallery’s floor a reflective surface that is blended in with the textured floor (the stencil buffer should be used for this)

5. Full scene anti-aliasing – use the accumulation buffer and jitter the scene a number of times to create full scene anti-aliasing (note that the frame rate will definitely drop when this feature is turned on)