$29
• Overview
This assignment is designed for you to understand 3D rendering and transformation. In this homework, you are asked to build a snowman and to show some animation with our rendering engine.
First, define your own 3D primitive objects (other than a cube, like a sphere, a cylinder, a pyramid, etc) which are the building blocks for a snowman. Using your 3D primitives of at least 3 different kinds, you should ’build’ a snowman. It is recommended to define the snowman hierarchically so that you can control some parts of the snowman intuitively.
Starting with our skeleton code, you should make your own 3D environment (background). You may port your HW1 implementation as a background. Then, bring your snowman into the scene, and make your snowman move by applying some 3D affine transformations (i.e. translation, rotation, and scaling) to some parts of the snowman. The animation effects should be controlled by a keyboard and/or mouse interaction. At least one of the animations should reflect that the snowman is a 3D model in a 3D environment.
By filling out MouseButtonCallback(), CursorPosCallback(), KeyboardCallback() in main.cpp, you can implement basic keyboard and mouse interaction. Also, you can use glfwGetKey() and glfwGetMouseButton() in GLFW to check the state of the keyboard and mouse (pressed or released). See: https://www.glfw.org/docs/latest/input_guide.html for more de-tail. Please try to show your creativity and imagination in composing the scene (e.g., interesting objects and animation effects).
Please also note that we provide you a sample ’HW1’ solution so that you can refer its source code for implementing animation control (timing). It is also implemented in the skeleton code, but you will not get any credit if you use the sample solution as your background.
Please keep the due date! You also need to write a comment in your code and write up 2-3 page (10pt, 1.5 space) reports explaining what and how you have done to meet the spec-ifications given below. Do not just copy your code to your report. Please explain ’how’ your implementation satisfies the specification
CS380 KAIST
Homework Assignment #2
• Specification & Grading
Specification
Grades
1.
Background
10
2.
Snowman
25
2.1
At least 3 different kinds of objects(primitives) other than cubes (15)
2.2
Building a snowman (10)
3.
Animation
35
3.1
Implementing animations for the snowman (20)
3.2
Implementing keyboard and mouse interaction (15)
4.
Documents
10
5.
Creativity
20
Total
100
Table 1: Specification and Grading
CS380 KAIST