- (100 pts) Write a Python program that satisfies the following requirements. Draw an object with
PyOpenGL.
- (85 pts) Evaluation criteria 1 Requirements: [Each item is evaluated as satisfied, partially satisfied, or unsatisfied]
- (15 pts) Draw 3 or more 3D objects.
- Draw any shape of objects as you want.
- Each object should be a 3D polygon mesh. It can be drawn using a vertex array
or glVertex3f(). Do not use 2D plannar meshes.
- You can reuse your class assignment 2 (obj viewer) code if you want to use obj files for this requirement. In this case, an obj file path should be specified by a relative path and the obj files should be included in the submission zip file. Do not use drag and drop to open obj files. They must be automatically loaded when
the program starts.
- (15 pts) One of the objects should be main object. The user should be able to transform the main object using the mouse or keyboard.
- Specifically, the user should be able to use all of the following transformation on
the main object: translate, rotate, shear, scale, and reflect the main object.
- All these transformations should be performed w.r.t the local frame of the main
object.
- (15 pts) The rest of the objects should be automatically moved in response to the movement of the main object or other objects around it.
- Examples: Following the main object, pushed away from the main object to keep
a certain distance from it, bounced when colliding with the main object, and
so on.
- Each object must move separately. Do not move them identically so that they
overlap each other.
- (15 pts) Use perspective projection. The camera should be able to be switched between two modes:
- First-person view: Attach the camera to the main object just like FPS games. The camera should be translated & rotated along with the main object. (You dont neeed to draw a weapon!)
- Quarter view: The main object is always the target of the camera. The camera
never rotate, meaning that it always do panning when the main object moves.
- (15 pts) Use OpenGL lighting / shading.
- Use different material colors for each object.
- Use 2 or more light sources. Among them, at least one light should be animated.
- You can use either flat shading or smooth shading for each object.
- If you use obj files, you can just use the normal vector data in the obj files for
shading.
- Extra credit
- (5 pts) Use an animating hierarchical model composed of multiple meshes as an
object, for all objects.
- (5 pts) Use curves to express the movement of at least one object.
- (15 pts) Evaluation criteria 2 Completeness Overall evaluation of the degree of
completeness and difficulty of the program [Evaluated as excellent, moderate, or insufficient]
- Report
- You can use either English or Korean for the report.
- Since the program and code will be checked based on the report, you will get 0 pts if
you do not submit the report.
- For the same reason, the requirement items that are implemented in the code but not
listed in the report will be evaluated as unsatisfied.
- Make sure to make a report using the report form (CG-FinalAssignment-
ReportForm.docx) that is uploaded together with this assignment file.. E. What should be included:
- Introduction to the program, a brief description of how to run it, and how to use
it.
- Description of the implementation of each requirement
- How you implemented that requirement.
- How TA can verify that the requirement has been implemented, by performing a
programs specific feature.
- Submission: A zip file of the following files. Submit the zip file within the submission deadline through the Final Assignment on the Blackboard Lecture Home..
- A Python source file named py
- If the program consists of several Python source files, the name of the file to be
- A Python source file named py
executed must be main.py..
- A report file (docx)
- Obj files (if used in your program). . Remember that obj file paths MUST be specified by a relative path, to be opened in the TAs computer. Be sure to unzip the submission zip file to another directory and run the program before submitting it to see the program works. If the obj file fails to load, the assignment will be scored as 0 pts because the
programs functionality cannot be verified at all.
- The name of the zip file should be studentID-name.zip
- Runtime Environment
- Your program should be able to run on systems only with Python 3.7 or later, NumPy,
PyOpenGL, glfw. Do not use any other additional python modules.
- Only glfw is allowed for event processing and window & OpenGL context management. Do not use glut functions for this purpose.
- If your program does not meet this requirement, it will not run on TAs computer so
you will not get any score for this assignment
- If a run-time error occurs and interferes with the function check of the program, 0 points are given for the requirement that cannot be checked.
Reviews
There are no reviews yet.