Lab 1b

Due: Sunday, Nov 15th 2020, 23:59

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.



Do the following before you proceed:


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.


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, imported complex model, ...) 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):

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.



Grading Criteria

Grading the labs will be based on the following:

In order to get a full mark, you need to do all of the assigned tasks AND adhere to to lab procedures while creating readable and efficient code. I.e. if you accomplish only 70% of the tasks correctly, but you do not adhere to lab procedures, your final mark will be 70*(1-0.05) = 66.5%.