(preliminary announcement: final project presentations)
10 minute presentations to class:
run animation path, show some interactivity;
design overview, evolved project documents;
focus on one particular aspect and your solution;
note: all code is due at the latest Monday Sept 18 at midnight
Homework 8, due Thursday 8/31/2006 11:59pm
Reading: FCG Chapter 11 (you may skip 11.1.3 and 11.1.4)
Reading: Redbook Chapter 9
Blackboard quiz on textures (posted on Monday)
Homework 7, due Wednesday 8/30/2006 before the lab
Have a framework of your class project running.
Homework 6, due Thursday 8/24/2006 11:59pm
Reading: FCG Chapter 3, to the level covered in class
Class Project:
define overall goals in visualization and interactivity;
draw a sketch of one or more views of world;
identify coordinate systems and units;
draw scene graph including callbacks; (anybody know good tools?)
describe how a user will be able to modify the scene, including viewpoints;
describe which elements of your scene will be controllable through mouse clicking (direct mouse input);
compile detailed set of tasks, flag those that have unknown components;
distribute "unknown" tasks among group members and come back with
answers on how to do them (or drop them);
split up work, ensure that re-combining code is going to be easy;
identify "framework" deliverable for week 2;
Submit this homework either by email, through Blackboard's
dropbox, or as a hardcopy to me.
Project requirements and must-have features:
interactivity (mouse and/or keyboard) to control object, 3 people: click on object;
natural viewpoint control (with mouse/keyboard interaction);
framerate-independent animation;
demo mode with camera animation path, some object motion occurring;
lighting - at least one diffuse+specular light;
one moving light source (spotlight or attenuated);
different materials for geometry
use of appropriate and different textures
acceptable speed (frame rate above 10Hz);
optional: animated textures
project suggestions (your own suggestions are very welcome!):
computer network visualization:
LAN (or WAN);
animate packet "trains";
show different types of traffic, different nodes in network;
illustrate different attacks (trojan horse, denial-of-service,...);
key or menu controls to insert certain packets;
firewall and filter representation, modification;
viewpoints: following a packet from inside "cockpit" or behind,
looking inside a cable (pipe), different node types in detail;
map interaction (2D or 3D DTED):
click to set markers;
draw path between markers(render bin);
import or model some vehicles or other objects in Blender;
show vehicles moving on map/elevation grid;
LOD to show objects as billboard icons;
camera control: moving along with vehicle, on hill, birds-eye view
extend satellite visualization:
talk to Scott Johnson, Prof Agrawal (Space Systems)
figure out scale issue;
turn rays on, off;
control satellite position in azimuth and elevation;
show ray growing from ground to satellite and back to earth;
multiple animation paths: focus on ground station, focus on
satellite, follow entire sequence of actions;
model of ground station that produces the laser, on higher-res map;
click on world for ray target;
fold out world into map shape? animation in Blender;
Homework 5, due Thursday 8/17/2006 11:59pm
Reading: FCG Chapter 9
Reading: Red Book Lighting Chapter (5 or 6, depending
on edition)
Blackboard quiz on Lighting. (posted on Monday)
Build a Blender model for a Bifocal
Relay Mirror according to the model that I sent through
email. The model should consist of two Blender "objects" which
you export separately and import into an OSG scene graph. Add
the textured world (day or night) to the scene graph and have
the satellite orbit around the earth. (No other objects such as
rooms or merry-go-rounds should be displayed.) One key control
should control the orbiting axis of the satellite (eg tilt it in
one direction with respect to the earth's rotation axis), the
other its speed with respect to the earth rotation (make it
geo-stationary vs. moving relative to the earth). Another set
of key controls should rotate the two satellite telescopes with
respect to each other on the hinge that connects them.
For extra credit (20%) you can add red rays from the
telescope to two points on earth. The origin of one of the rays
from the earth has to be controllable in latitute and longitude
with keyboard or mouse input or textual input.
Submit exactly one file through Blackboard's Digital
Dropbox: a ZIP file/folder containing 1) the source code file,
2) a Windows executable if you develop on Windows, 3) all
.osg files that you're using, and 4) the Blender file/s (.blend)
that you created.
I would prefer if no command line arguments are required to
run your program, and if the .osg files are loaded from the
current directory (relative path) as opposed to from
c:\some.osg.
In case you will miss the lab: familiarize yourself with
Blender. For example, print the BlenderQuickStart.pdf, then
follow "Chapter 4: Your first animation" through the
non-animated part.
Complete the Blackboard quiz on "Transformations." (to be
posted)
Implement an animated solar system and two different
viewpoint controls via keyboard/mouse.
The solar system has to have one sun and at least three
planets, each in a different orbit and spinning at a
different frequency. The rotation need not be
keyboard-interactive.
At least one of the planets has to have two or more
moons, each orbiting with a different frequency.
The rotation need not be keyboard-interactive.
Dedicate six keys to control the camera position along
the axes of the current camera-oriented coordinate system.
So, pressing the forward key will move the camera forward in
a straight line, like a train, independent of the position
of the world coordinate system and the models.
Dedicate six other keys to "orbit the camera" around the
solar system's sun. One key pair controls the rotation
around the solar system's x axis, one pair the y axis, and
the third pair the rotation around the z axis. Better: use
mouse motion and mouse drag to control these three
dimensions instead of or in addition to the keys.
Write a comment at the top of your source file that
explains which keys control what.
20% extra credit: place a little marker (crosshair?) at
a fixed distance from the camera on the optical axis.
Instead of orbiting the camera view around the sun as in the
previous step, orbit the view around this marker. Note that
the marker moves with the camera, and so does the orbit
center.
20% extra credit: Make the rotation frequency
time-dependent by using glutGet(GLUT_ELAPSED_TIME) or some
other platform-dependent timing function of sufficient
precision.
Submit exactly two files through Blackboard's Digital
Dropbox: 1) the source code file, named
hw4_yourlastname.cpp, and 2) a Windows executable, named
hw4_yourlastname.exe. Please type "hw" in lower case. If
you do not develop on Windows, the source code is sufficient.
Homework 3, due Thursday 7/27/2006 11:59pm
Reading: Red Book Chapter 1
Reading: Red Book Chapter 2, you can skip "Displaying
Points, Lines, and Polygons", "Vertex Arrays", and "Some Hints
for...", but DO read "Normal Vectors" and "Attribute
Groups"
Blackboard quiz "Intro to OpenGL" (available on Monday)
Programm your first OpenGL program that uses primitives,
GLUT objects, transformations, and keyboard input. Start
from OpenGLprimer2 and extend it in the following way:
Remove the red teapot.
Render three line segments, one each along the postitive
x, y, and z axes, starting at the scene coordinate system
origin, in red, green, and blue, respectively. Their length
should be 0.5 units.
Make the viewpoint rotate around the scene's y
axis with the keys "d" (positive direction) and "c"
(negative direction). The camera should always stay in the
x-z-plane.
Use glutSolidSphere to add two yellow spheres to our
scene, the first one 1 unit above the center of the green
teapot, the other one 1 unit below. Make them 0.2 units
big.
Add key controls "f" and "v" to make those spheres orbit
around the (local) x-axis of the green teapot. This means
that as this teapot rotates around the z-axis (by pressing
"s" and "x"), the spheres remain in the same orbit with
respect to the green teapot.
Place a 2-by-2 quad "behind" the teapot scene that has a
different color for every vertex. It should be located 2
units down the negative z-axis, centered on the z-axis.
These screenshots show the scene (with the quad rendered as
points):
default view,45 degrees turned,spheres rotating in teapot's y-z-plane.
Submit exactly two files through Blackboard's Digital
Dropbox: 1) the source code file, named
hw3_yourlastname.cpp, and 2) a Windows executable, named
hw3_yourlastname.exe. Please type "hw" in lower case. If
you do not develop on Windows, the source code is sufficient.
Homework 2, due Thursday 7/20/2006 11:59pm
Reading: FCG Sections 2.1, 2.2, 2.3 (you can skip 2.3.3),
2.4, and 2.10.
Blackboard quiz "Math recap"
Where does the ray
P(t) = [4; 5; 6] + t*[-1; 5; -3]
intersect the following objects, if at all?
a plane H(P) = [8; 2; 4].P - 6 = 0,
a sphere H(P) = P.P - 36 = 0, and
a sphere H(P) = (P-e).(P-e) - 25 = 0, where e=[-3; 42; -16].
Specify both the respective values for t and the intersection
points. Vectors are noted in Matlab convention: the
semicolon ";" indicates a new row, that is, the vectors above
are 3x1 matrices, or column vectors.
I suggest you solve this in Matlab, but you can do it on
paper as well. You must submit your calculations and
formula along with the solution.
Suggestion: get a head-start on the hw3 reading.
Homework 1, due Thursday 7/13/2006 11:59pm
Read FCG Chapter 1. If unfamiliar with C++, read Rob Jagnow's
C++ Tutorial slides (on comfort) before reading Section 1.8.
Complete the C++/Programming quiz on Blackboard. The rules
for Blackboard quizzes are:
Blackboard quizzes are graded as pass/fail.
80% or more correct answers are requied to pass.
The quizzes can be retaken as often as desired before the
deadline ("unavailable time").
Questions with checkboxes can have multiple correct answers;
you need to check all correct answers to get points.
Familiarize yourself with your programming environment.
MSVS has a decent help functionality; start with
Contents->Visual Studio .NET->Visual C++. Playing with NeHe's
OpenGL tutorials (Visual C++ code) is another good way.
Make sure you can access \\comfort.ern.nps.navy.mil\mv3202$
and Blackboard.
Over the course of the quarter, we will need the following
free software:
I recommend that you download and install these packages now.
If you opt to rebuild from source packages, please make sure
you get compatible versions and allow a lot (a lot!) of time
for compilation.