Task 1: Specify camera and perspective projection transform
Specify an initial view and build the camera and perspective projection transform matrices; these will be uniform variables. You will also have a modeling transform as part of the sequence. The modeling transform will be a combination of those relating to the model (translating the teapot to origin, for example) as well as coordinate rotations applied to it. The sequence will be as follows
vec4 pos = M_Persp * M_Camera * M_model *vPosition
We will keep the camera the same for the assignment, but viewing parameters (near, far, left, right, top, bottom) will be varied interactively.
Task 2: Interactive manipulation of the View volume
Build sliders (use the HTML 'input' tag) to manipulate the parameters that control the perspective projection. You will vary the width and height of the projection window (the projection will be on the near plane in WebGL) and the near and far plane. To do this, first specify a camera specification to get a good view of the teapot, then build a UI (sliders, for example) to vary the parameters. You need to find a range that illustrates the view volume's clipping of the model; the near and far plane will clip along the depth axis, while changing the width and height will change the aspect ratio and distort the model and in extreme cases clip out the model.
There is no one specific answer. A good bit of trial/error is required to get a good range of parameters, as it will depend on t he camera specs you choose, and the view volume parameters.
Task 3: Model Rotations
Provide 3 sliders to rotate the model about the 3 coordinate axes. These transformations will be cumulative. Ensure the rotations are smooth to provide a full view of the model.
Notes:
You may use the following view parameters to start with, but you are welcome to find a different set of params:
eye = [0., 100., 100.];
to = [0., 0., 0.];
up = [eye[0], eye[1] + 1., eye[2]];
near = 6.; far = 300.;
width = 5.; height = 5.