Click the image to download the class artifact library.

Robert H. Sawers II Jeff Tyrrill CSE 457, Spring 2004, Project 2 Extra credit: Texture mapping: Enable from the View menu (disabled by default, because it slows down the rendering). Hitchcock effect: Use CTRL+right drag up and down to increase or decrease the "Hitchcock factor". This applies a Z-transform about the plane that faces the camera and includes the viewing center (mLookAt). This is applied on each draw, so changing the viewing angle changes the plane. For example, Hitchcock-zoom out very far, and the view becomes nearly a parallel projection instead of a persective projection. In the View menu, choose "Reset Hitchcock Factor" to undo any effect applied. Camera twists: Use CTRL+left drag left and right to twist the camera. This is performed by changing the up vector (mUpVector). Related to this, a lot of code in camera has been re-written to better work with the twisting functionality. calculateViewingTransformParameters() now does nothing, and the routines in dragMouse() now directly change mLookAt, mPosition, and mUpVector. Care has been taken so that they behave as closely as possible to the original in re-writing the routines. To facilitate an intuitive camera view, there are two options with respect to the Up vector: "Locked" (default) and "Free". This is set in the View menu. "Locked" is like the original program. The up vector never moves except when explicitly twisting. "Free" recalculates the up vector for every view change (twist or not) to be directly up with respect to the viewer (perfectly perpendicular to the vector (mPosition - mLookAt)). This "free" mode is usually more intuitive and strictly meets the requirements of the twisting add-on. However, the original "locked" mode is sometimes more intuitive, especially when no twisting is being performed. In "locked" mode, the up vector can be reset once without entering "free" mode. An example of "locked" versus "free" mode: Viewing a globe. The default starting view is at the equator. In either mode, rotating left and right behaves the same. Rotate up and view Seattle. In "locked" mode, the up vector, which passes through the north and south poles, stays still, and rotating to the left and right follows a line of latitude around the world, parallel to the equator. In "free" mode, the up vector does not remain fixed through the poles, and dragging right starts out moving "west" on the globe, but then cuts south of the equator. (Eventually, it still gets back to the starting point of Seattle.)