Lab 1b
Illumination
Due: Sunday, November 30th 2014, midnight
Start Early!!!
- Individual Effort:
- No team participation is really encouraged in the case of the
homework or the labs.
You're are not allowed to use any libraries or extra code except
gl-matrix, webgl-utils.js and some helper functions
in order to initialize WebGL / load shaders. Especially Three.js is not allowed! If you're not sure or want to use some library, ask the teaching assistants before.
- Late Submission:
- In general late submission is not encouraged/accepted unless
there is a very good reason.
You are encouraged to submit on time. We are on a tight schedule. Being late
for one lab could affect the time left for you to complete subsequent labs.
All labs are due at the midnight of the specified due date.
Late Submissions are possible, yet they will be penalized.
- One day late: 15% penalty
- Two days late: 30% penalty
- Three days late: 50% penalty
- Four or more days late: 100% penalty.
Objectives:
- To understand the development of graphics programs.
- To understand illumination models.
- To become closely familiar with the WebGL rendering pipeline.
- To become experts in debugging graphics code.
- To have fun.
Do the following before you proceed:
- Make sure you have read and understood the background and
became familiar with the working environment that you should
have gotten to know in Lab 1a.
- You have a fridge full of nutritious food.
Goal:
The goal of this lab is to create a simple, interactive 3D application and explore shading and illumination models. The focus
is on the development of a graphics program and how to handle surface properties and lighting. Most of the concepts
are laid out in the book as well as in class with example programs.
Tasks:
Follow this guideline step-by-step. Make sure that you thoroughly test
your program after each step so that you can find bugs easier and quicker. Create a scene with 9 3D shapes which can be seen from the camera.
The shapes should be 3D and not flat. For example: cubes, spheres, cones, or a combination of them. Ensure that at least one of the shapes
in the scene contains a curved surface (sphere, cone, cylinder, etc...) in order to better see the effects of the shading models.
This assignment directly follows
assignment 1a,
which may be used as a starting point. Implement the following shading and illumination models using a point light source initialized at coordinates (0, 10, 0).
-
(15%) Shade the models - Gouraud/diffuse
Implement Gouraud shading (vertex shading) with diffuse illumination.
-
(15%) Shade the models - Gouraud/specular
Implement Gouraud shading (pixel shading) with the Phong illumination model to produce a specular highlight.
-
(20%) Shade the models - Phong/diffuse
Implement Phong shading (pixel shading) with diffuse illumination.
-
(20%) Shade the models - Phong/specular
Implement Phong shading (pixel shading) with the Phong illumination model to produce a specular highlight.
-
(30%) Add additional user interaction with the shapes and lights
Respond to user interaction from the keyboard. Implement the
following:
-
selection
- The user should be able to select the active lighting and shading models used by pressing the number keys between 'u' (Gouraud/diffuse), 'i' (Gouraud/specular), 'o' (Phong/diffuse), and 'p' (Phong/specular).
-
Light transformations
- The user should be able to toggle between interacting with the shapes and interacting with the light. Use the 'L' key to toggle between the two interaction modes. Lights should
rotate and translate using the same keys as in assignment 1. Object interaction should work as before. Light transformations are with respect to the global coordinates.
Extra Credit (max 10%)
In some of the bonus tasks you will have to create a ground plane. You only have to implement it if you are doing the corresponding extra tasks.
-
(10%) Implement shadows
Using either the projection method, or shadow maps, produce an accurate shadow on the ground plane. The user should be able to turn the shadows on and off.
-
(5%) Cooke-Torrance illumination model
Implement the Cooke-Torrance shading model. This model should also be selectable by the user using the 'k' key.
-
(5%) Spot-light source
Implement a spot-light source. The user should be able to select the type of light source (point or spot). The spotlight should always be pointing at the object
and the beam should be narrow enough that it can be seen on the ground plane. Use an inner and outer radius for the spot-light, with the amount of illumination
falling off smoothly between them.
Hints
- Remember the difference between Phong illumination and Phong Shading: Phong illumination is the lighting model and Phong shading is how the surface properties are interpolated
across the faces from the vertices.
- Do not write all your code in one big file. Be as modular as you can.
Submission
- Be sure to double check your final submission by unzipping it
in another directory on a computer in the PC LAB and testing it. (Especially for
last minute submissions.) A project that doesn't run will lose
more points than one that is one day late.
- Be sure to submit any comments or remarks in a 'readme.txt' file.
- Submit your files at cewebs.cs.univie.ac.at.
Grading Criteria
Grading the labs will be based on the following:
- 80%: Correctness and adherence to assignment specification.
- 10%: Readability and structure of code, use of comments, indentation, etc.
- 5%: Efficiency and speed (only an issue if its very inefficient)
- 5%: Adherence to lab procedures (submitting, naming conventions, etc)
Last modified: October 2, 2014
Michael Phillips /
michael dot phillips at univie DOT ac DOT at