Arch 227B/Design C142/Design 242:


 

 


             3D Graphics in Java

 

[Winter 2001]     Mon and Wed 12:30 - 2:00pm CDA Lecture Room

[Instructor]:     Kostas Terzidis 1124D Perloff Hall tel. 825-8004

[E-mail]:         kostas@ucla.edu

[Class Notes]:    http://www.cda.ucla.edu/caad

[Prerequisites]:  Arch 227A or knowledge of Java language

T.A. 

 

           


{SCHEDULE}

 

[Week1]: Java basics review:

·         How do we compile, debug, archive, include libraries, setup.

 

[Week2]: Projection systems:

·         What is projection, 3D space, perspective and how to setup graphics and screen


 


[Week3]: Object creation/internal representation:

·         How do we represent a point, segment, face, solid, hole, and group as classes.

 

[Week4]: Transformations:

·         What are matrices and how do we use them for translation, rotation, scaling or reflection.

 

[Week5]: User interface:

·         How to create graphics user interfaces (GUIs) using working plane, snapping, zoom, and pan.

 

[Week6]: File I/O:

·         How to stream data over operating systems or networks and how to read and write DXF and VRML file formats.

 

[Week7]: Hidden line/Shading/Light:

·         What is a vector and how do we use it to calculate the light and shade on faces using  sorting, matching and color tables.

 

 

 


 

 


[Week8]: Topological editing/morphing:

·         How do we alter the geometry and topology of points, faces, objects and groups.

 

[Week9]: Texture mapping:

·         What is an image and how to map it to a polygon in 3D space.

 

[Week10]: Simple 3D animation:

·         What is multitasking and how to use threads to create real-time animation using parallel processing.

//*****************************************

This course introduces to the student basic concepts of programming for 3D architectural modeling.  The objective is to teach to student with little prior experience in programming the basics theories and techniques for developing simple modeling applications.  During the course students will asked to solve simple programming exercises that eventually will be tied up into a modeling system that they can use as a background for developing thesis OR studio tools().  Specifically, in a one quarter period student will learn how to write code in Java for:

 

·         3D object internal representations

·         Geometric and topological editing operations

·         3D transformations and projections

·         Graphic User Interface under a browser

·         Basic rendering algorithms

·         Basic DXF and VRML file input/output

 

Java has been chosen as the development language for its simplicity, portability, and its new features such as networking and threading.  The course material is presented in the form of lectures and labs.  The lectures cover theory topics and their objective is to give the basic concepts and the solution methods.  The lecture topics are presented to the student in the form of slide shows or hands-on presentations.  The labs are aimed to help student solve the exercises.  The exercises are designed to do two things: make the student solve a problem within the context of a larger problem (i.e. code within code) or to develop a method of solving a problem completely as a new piece (i.e. addition to existing code).  There will be a midterm and (maybe) short quiz questions intending to establish and re-iterate concepts and methods taught in the lectures.

 

The course is part of a three-course sequence.  The first one (Fall) introduced students to the basics of Java language and 2D graphics.  The winter quarter course (227B/142/242) gets into 3D graphics, rendering, and simple real-time animation.  Finally, the last part of the sequence (227C/143/243) will get into the physical environment introducing basic robotic manipulation and feedback systems.  Here is the story:

 

227A/241/141            2D Graphics in Java

227B/242/142            3D Environments in Java

227C/243/143            Basic Robotics: things that think

 

//******************************************

COURSE REQUIREMENTS AND GRADING

Students are expected to attend the lectures and participate in discussions.  The grade for this course will be based on four assignments, one midterm exam, short quizzes, and class attendance/participation.  The breakdown is as follows:

 

Assignments() {

ModelCreation()         = 10%

BasicTransformation()   = 10%

UserInterface()         = 20%

finalProject()          = 40%

}

Exams(){

midterm[20 questions]   = 20%

}

 

Some of the lecture classes will include short quizzes, in the form of 5 questions requiring short answers or explanations of a couple sentences or so.  These quizzes will cover conceptual and technical issues relating to the development of software or theoretical topics explained during previous lectures. 

 

The student is always expected to develop software critically, pointing out the advantages and disadvantages of the tools used and comment on their suitability to the task to be performed.  Class discussions and presentations will focus on these issues.

 

//*****************************************

REQUIRED MATERIAL AND READINGS

Each student will be required to open a CDA account. 

The CDA account will give Internet access and a 40 MB storage space.  Ask Paul Phillabaum to setup an account.

Purchase a box of ten High Density 3.5-inch diskettes.  These are available at bookstores and computer stores around the town.  You should always have at least two disks in the lab to make backups.  ALWAYS save often and back up your work.

 

To complete the class exercises the following hardware/software/NetWare will be used:

 

Hardware:

Pentium 500 (or more), 128 MB RAM, 10 GB Hard Disk, SVGA monitor

or

Mac G4, 128 MB RAM, 10  GB Hard Disk, high resolution monitor

 

Software:

Mac OSX or Linux or Windows NT or 2000, TextPad (free at www.textpad.com), JDK 1.3, OpenGL, and FormZ

 

Netware:

Ethernet connection, Netscape/IE, FTP

 

Required textbooks for the course are:

·         Java2 How to Program by Deitel and Deitel, Prentice Hall 1999

·         Computer Graphics by Hearn and Baker, Prentice Hall, 1997

 

The books should be available at the UCLA bookstore.  A partial list of readings and resource texts is included in the "Recommended Readings" section of this syllabus.  A series of Class Notes will be available on the Internet.  The address is http://cad.aud.ucla.edu/ and the username is arch226 and the password is cda123. 

 

 

//*****************************************

RECOMMENDED READINGS

 

The following is a list of books and articles that will be discussed in class and will help:

 

·         Foley, Van Dam, Feiner, and Hughes, Computer Graphics: Principles and Practice, Addison-Wesley, 1997

·         Kerlow, Computer Graphics, Van Nostrand Reinhold, 1997

·         Kernighan and Pike, The Practice of Programming, Addison Wesley, 1999

·         Flanagan, D., Java in a Nutshell, O'Reilly, 1999

·         Kostas Terzidis, Computer Concepts for Designers and Architects  (can be purchased at the Course Reader Material  at  1141 Westwood Blvd for $18.25).

·         Kostas Terzidis, 2D Graphics in Java  (can be purchased at the Course Reader Material  at  1141 Westwood Blvd for $15.00).