home
  course info
    outline
    assignments
    marks
    downloads
  graphics links
Shahzad Malik's 95.402 Page
 
 
Welcome to my page!
This is the TA page for Computer Science 95.402A, Fall 2001. On this page you'll be able to find links to most of the course related information, such as Professor LaLonde's notes, the course outline, assignments, marks, etc.

The current TA hours for 95.402 are as follows:
Ernest Szoka [www | email]:
Tuesday 5:30pm-7:30pm (3rd floor/4th floor labs, Herzberg)

Shahzad Malik [www | email]:
Tuesday 4pm-6pm and Friday 4pm-6pm (3rd floor/4th floor labs, Herzberg)

We will also try to update this page regularly with links and information which will help students with their final project. Since this is a project-oriented course, lots of cool and interesting effects in your final 3D engine can really boost your marks, and the Internet is full of excellent examples and demos from which you can get ideas! Check out the links page for some interesting sites.



Wednesday, November 28, 2001

Final Project Information
Professor LaLonde has not set any official project due date. It is up to each student to arrange a demo time with him for sometime in mid-December. You can contact Wilf LaLonde at (613) 839-2493 to set up a demo time and location.

Monday, November 12, 2001

BSP Tree Information
Ernest found the following interesting sites related to BSP trees:

BSP Tree Visualizer Applet
BSP FAQ


Tuesday, November 6, 2001

Assignment #6 Available
Assignment #6 has been handed out! It is due Tuesday, November 20, 2001, before midnight (or during the demo time).

Sunday, October 21, 2001

TGA Loader
Ernest has implemented a nice little Bitmap/TGA Loader for interested 402 students. It currently only loads 24 bit bitmaps and TGAs that are uncompressed, so Photoshop TGA's will work, but PaintShop Pro ones won't (unless you change the TGA settings). This is only an image loader, so turning it into an actual texture within your game engine is up to you!

Camera Code Problems
Some people have managed to create smooth camera movement by doing the move and rotate on each render pass (tick) and setting their move and rotate variables on key down, and removing said movement and rotation on key ups. The jittery camera is caused by people instantly updating their camera matrix on key down with glutIgnoreKeyRepeat set to true. The distinction here is that when you hit the key down, it moves a bit, and starts to move continuously a moment later when the repeat rate kicks in giving you crappy camera movement. As well the movement is not consistent from machine to machine and is also affected by how much you're rendering, so taking the actual amount of time elapsed since the last frame into account will help maintain consistent speed of camera movement. Here is some pseudo code to help you alleviate this problem. We suggest everyone implement this because it makes the game a lot more presentable and will help you in your final project.

globals:
move
rotate
oldTime

specialKeyPressed
{
on key pressed set move and rotate to appropriate fixed constant
}

specialKeyReleased
{
on key released clear move and rotate (or simply remove the appropriate value you set on specialKeyPressed)
}

game::tick
{
//get amount of time since last frame was rendered
ticks = (newTime - oldTime)
oldTime = newTime

tempMove = move
tempRotate = rotate

//multiply temp move/rotate by ticks and some arbitrary constant ratio
//the ratio determines the speed
tempMove *= ticks * someRatio
tempRotate *= ticks* someRatio

camera->moveBy(tempMove)
camera->rotateBy(tempRotate)
}

Here is a Time class that gives you the current amount of time that has elapsed as well as SecondsPerFrame and FramesPerSecond. Simply substitute Time.GetAverageSPF for ticks. Rember to inlcude the global header #include "includes.all" at the top of Time.cpp.


Tuesday, October 16, 2001

Assignment #5 Available
Assignment #5 has been handed out! It is due Tuesday, October 30, 2001, before midnight (or during the demo time).

Thursday, October 11, 2001

Hints for Assignment #4
  • Offset the skybox texture coordinates by (1.0 / texture_width) to get rid of seams on skybox edges.
  • Use TGA files with an alpha mask to do transparent/semi-transparent textures (use PhotoShop, Paint Shop Pro, or any other graphics program that supports TGA's and alpha channels) or use a separate bitmap (luminance) to hold the alpha mask.
  • Use OpenGL automatic texture generation to do cloud shadows or underwater caustics, rendering the scene a second time with the added texture and blending.

    Tuesday, October 9, 2001

    Assignment #4 Available
    Assignment #4 has been handed out! It is due Tuesday, October 16, 2001, before midnight (or during the demo time).

    Tuesday, October 2, 2001

    Friday TA Hour Change
    TA hours for Friday have changed slightly. They are now 4pm-6pm (instead of 11am-1pm).

    Wednesday, September 26, 2001

    Comments on Assignments
    The past assignments have been pretty status quo, but given the limited amount of time you've had to implement them it is understandable. You should try and go above and beyond the assignments to guarantee a higher mark for the final project whenever possible.

    In the future for handing in assignments you must at least do the following to get a mark:
  • Either demo the assignment during TA hours or hand it into the drop box (although we prefer that you demo it!)
  • IMPORTANT: make sure the game.exe runs properly from any location (not just from c:/3d/)
  • If you hand in the assignment in the drop box please include the .exe and pre-made worlds; do not force us to compile the project and/or build worlds. You do not have to include .map files and textures we already have (include textures if you have space on a CD). Also please don't include intermediate files like .obj, .ncb, .sbr, etc. You must include source for the game, and the .dsw/.dsp file in case we are unable to run the game.exe. Try not to zip everything.
  • Your game must render the geometry properly to get a mark. Small glitches are acceptable but at least have something that looks like what it's supposed to look like.
  • Textures should load relative to the World folder or relative to the Game folder (where the game.exe should be located)

    Some tips
  • For the second assignment if you want the teapots to retain a uniform scale (extent) over the rotation, scale after you rotate and not before. You will notice that the teapots with different x and z extents squish and deform from an overhead view as they rotate if the scale is done prior to the rotation.

    Assignment Marks
    Assignment "marks" will be available soon by clicking here. You can also access this page by clicking the respective link from the left menu bar.

    Tuesday, September 25, 2001

    Assignment #3 Available
    Assignment #3 has been handed out! It is due Tuesday, October 2, 2001, before midnight.

    Tuesday, September 18, 2001

    Some useful links
    Ernest Szoka has compiled a set of graphics-related links which are relevant to 95.402. Here they are:

    CFXWeb - A nice site with lots of technical articles and sample code related to computer graphics.
    GameDev.net - A regularly updated site with daily news, technical articles, and discussion forums for game developers.
    NeHe Productions - Lots of OpenGL-related information, tutorials, articles, and source code!
    FX-LoneRunner - This site has some good demos and source code for animating Quake2 player models.
    HalfLife Editing Resource Center - Contains some good information on editing worlds with WorldCraft.


    Assignment #2 Available
    Assignment #2 has been handed out! It is due Tuesday, September 25, 2001, before midnight.

    Tuesday, September 11, 2001

    Assignment #1 Available
    Assignment #1 has been handed out! It is due Tuesday, September 18, 2001, before class.

    Thursday, September 6, 2001

    Welcome back!
    Welcome to 95.402A, Fall 2001. First class is next Tuesday, September 11, 2001, 7:30pm in room 3235ME.
  •  
     
    If you have any comments or suggestions, email me at smalik@chat.carleton.ca