Office hours: Tuesday, 4-5pm
What we will cover:
There are many courses that can teach you how to use commercial computer graphics packages and APIs. This course, in contrast, will teach you how to build 3D computer graphics from the ground up. This will include 3D modeling, animation, and rendering. At the end of the semester you will have built your own complete working real-time 3D computer graphics systems that runs in Java in web browsers.
Why Java?
If this were a course in using 3D computer graphics, we would probably use an existing 3D platform such as the Unity game engine. But this is a course not in "driving the car", but rather in "building the car". The best way to do that is to have a reasonably fast programming language that allows you to show your work on-line. This rules out, for example, JavaScript (much too slow) and C++ (cannot run on-line without downloading binaries).
What you should already know
You do not need to be a "Java programmer" coming into this course. If you are already familiar with C++ or any similar language, you will not have any trouble picking up enough Java to do this course If you are already familiar with C++ or any similar language, you will not have any trouble picking up enough Java to do this course.
On the other hand, if you are not already an experienced programmer, then I do not suggest you take this course, as there will be weekly programming assignments, and you will not be able to keep up.
Computer graphics uses a lot of matrix math and some calculus. At the start of the course we will go over all of the matrix and vector math that you will need.
Text:
Class notes (so make sure you come to class!), will be posted on-line after each lecture.
Graders:
To be announced
Discussion list:
TBA
Lectures (tentative schedule):
Introductory lecture
Simple applets and 2D matrix transformations
3D matrix transformations
Modeling shapes with polygons
Perspective and animation hierarchy
Better animation hierarchy + Splines
Ray tracing 1
Ray tracing 2
Ray tracing 3
Z-buffers, part 1
Z-buffers, part 2
Advanced topics
Setting up a homepage and access to computers:
Most of you have the homepage and computers thing already figured out. But just to make sure you have at least one way to show your work on line, your NYU webpage can be activated and modified as follows:
To post assignments for this class, you should set up a subdirectory of your web site (preferably your NYU web site). Name this subdirectory "graphics". It should have a main "index.html" file, and that file should link to the various homework assignments. After the first class, you will send the grader an email, with subject line "graphics", telling him the URL.
For our introductory lecture I mainly went over the high level ideas of what we are going to do in this course, and showed some examples of computer graphics in action.
Homework assignment for this class, due before the start of next class: Put up on your class web page an essay describing what motivated you to take this course (eg: are you hoping to do computer graphics to make movies?), and any topics, material or ideas in particular you would like to see covered in this semester's class.
For our Feb 6 class we did two things:
Here is the code for the BufferedApplet.java class that I used to build my little java applet example.
Here is the code for the example1.java class that I wrote in class, which extends BufferedApplet.
Homework assignment for this class (due before start of class): Build your own simple interactive java applet. You can use my applet as inspiration and to see how various features work, but don't make your applet similar to mine! The key is to have fun with it, and do something cool.
To compile and run your applet from the command line, you can use the latest version of the Java Development Kit (JDK), which you can download from http://www.oracle.com/technetwork/java/javase/downloads
To compile all of your java files, you can just type in the command line:
javac *.java
You can also develop from an Integrated Development Environment (IDE) such as Eclipse.
You can download Eclipse from the Eclipse Downloads page. Be sure to download Eclipse IDE for Java Developers.
Installing Eclipse is slightly more involved if you are on Windows than if you are on a Mac. So if you are on Windows, you can read this Tutorial for installing Eclipse on Windows.
To get your Java applet running from the Web, or in appletviewer from the command line, you need an html file that contains an applet tag. The simple example1.html file I used in class looked like this:
<applet code=example1 width=640 height=480> </applet>If you have example1.html in your current directory, you can either type into the command line:
appletviewer example1.htmlor you can click on example1.html from a finder window, to launch the applet in a browser.