[Oshita Lab.][Lecture] | [Jpanese] |
This class is no longer open after 2021 due to the reorganization of graduate school. This page contains the class materials of 2021. A new class “advanced computer animation” that takes over this class will be open in 2022.
This class covers advanced techniques on computer graphics and animation. The students can learn practical techniques through lectures and programming exercises.
This class is taught in Japanese for the sake of average Japanese students who are not so fluent in English. Although some materials have English version, most of materials are Japanese only. Reports in Japanese or English are acceptable. A foreign student who are not so fluent in Japanese can still take this class. The students also must have fundamental programming skills of C++. Basic knowledge on computer graphics and OpenGL programming are not mandatory but desirable.
No. | Date | Title | Slides | Codes |
1 | 2021/4/8 | Fundamentals in Computer Graphics | Slides (Japanese)
[pdf for display]
[pdf for print] |
|
2 | 2021/4/13 | Fundamentals in OpenGL Programming | Slides (Japanese)
[pdf for display]
[pdf for print] |
Codes |
3 | 2021/4/15 | Camera Control | Slides (Japanese)
[pdf for display]
[pdf for print] |
Demo and Codes |
4 | 2021/4/20 | Geometry Models | Slides (Japanese)
[pdf for display]
[pdf for print] |
Demo and Codes |
5 | 2021/4/22 | Shadow Drawing | Slides (Japanese)
[pdf for display]
[pdf for print] | Demo and Codes |
6 | 2021/4/27 | Keyframe Animation (1) | Slides (Japanese)
[pdf for display]
[pdf for print] |
Demo and Codes |
7 | 2021/5/6 | Keyframe Animation (2) | Slides (Japanese)
[pdf for display]
[pdf for print] |
Demo and Codes |
8 | 2021/5/11 | Physics Simulation | Slides (Japanese)
[pdf for display]
[pdf for print] |
Demo |
9 | 2021/5/13 | Collision Detection and Picking | Slides (Japanese)
[pdf for display]
[pdf for print] |
Demo and Codes |
10 | 2021/5/18 | Character Animation (1) | Slides (Japanese)
[pdf for display]
[pdf for print] |
|
11 | 2021/5/20 | Character Animation (2) | Slides (Japanese)
[pdf for display]
[pdf for print] |
Demo and Codes |
12 | 2021/5/25 | Character Animation (3) | Slides (Japanese)
[pdf for display]
[pdf for print] |
Demo and Codes |
13 | 2021/5/27 | Character Animation (4) | Slides (Japanese)
[pdf for display]
[pdf for print] |
Demo and Codes |
14 | 2021/6/1 | Character Animation (5) | Slides (Japanese)
[pdf for display]
[pdf for print] |
|
15 | 2021/6/3 | Advanced Rendering Techniques | Slides (Japanese)
[pdf for display]
[pdf for print] |
Reports must be submitted through the course of this class on the Moodle e-learning system.
The students are encouraged to use the latex templates for making their reports.
- 1. Camera Control
Extend the sample code of No. 3 Camera Control (view_sample.cpp) to include scroll mode (parameter), walkthrough mode (direct), scroll mode (direct), and walkthrough mode (parameter).
- 2. Shadow Drawing
Extend the sample codes of No. 5 Shadow Drawing (shadow_sample.cpp) to include shadow by texture mapping and shadow by projection.
- 3. Keyframe Animation
Extend the sample codes of No. 6 and 7 Keyframe Animation (keyframe_sample.cpp) to include position interpolation by Hermite curve, position interpolation by Bezier curve, position interpolation by B-Spline curve, and orientation interpolation by quaternion and SLERP.
- 4. Picking
Extend the sample codes of No. 9 Picking (picking_sample.cpp) to include picking on the screen coordinates system and picking on the world coordinate system.
- 5. Character Animation
Extend the sample codes of No. 11 and 12 Character Animation (human_sample.cpp) to include forward kinematics, posture interpolation, keyframe motion, motion connection and transition, and CCD inverse kinematics.
- Programming Environment
All sample codes here use C/C++ with OpenGL and GLUT. Some sample codes use vecmath C++ library for handling matrices and vectors.
All sample codes are built on Windows 10 and Microsoft Viausl Studio 2019. Some sample codes contain Visual Studio project files.
- How to setup your C/C++ programming environment [PDF]
- Software and library
- Microsoft Visual Studio Community 2019
- freeglut
The precompiled library freeglut-3.2.1-bin.zip can be installed. Alternatively, if you want to compile it by yourself, you can refer to Prof. Tokoi's web page at Wakayama University (in Japanese).- vecmatch C++
- No. 2 OpenGL Programming
- Sample code [opengl_sample.cpp] [印刷用PDF]
- How to compile on Linux[PDF]
- OpenGL function reference[PDF]
- No. 3 Camera Control
- Demo (for Windows) [view_demo.exe]
This demo implements three types of camera control modes by two approaches.
- Press M key to switch the camera control mode among dolly mode, scroll mode and walkthrough mode.
- By right and left mouse button drag, the camera is controlled according to the current mode.
- Sample code [view_sample.cpp] [PDF for print]
The sample code implements a part of the above demo. The dolly mode is already implemented.
Other modes must be implemented as a programming exercise and submitted as a report.
- No. 4 Geometry Models
- Demo (for Windows) [obj_viewer.exe]
This demo implements loading and drawing geometry models (in obj file format).
- Press L key to load a geometry model (in obj file format)
- By right and middle mouse button drag, the camera is controlled.
- Sample data (Obj + Mt format)
- Pyramid model [pyramid.obj] [pyramid.mtl]
- Car model [car.obj] [car.mtl]
- Sample code 1 [obj_viewer_sample.zip]
The sample code in C of the primary processes for loading and drawing geometry models (in obj file format).
- Sample code 2
The sample code in C++ of the primary processes for loading and drawing geometry models (in obj file format).
- No. 5 Shadow Drawing
- Demo (for Windows) [shadow_demo.zip]
This demo implements three methods of shadow drawing.
- Press M key to switch the shadow drawing method among no shadow, texture mapping, shadow projection and shadow volume.
- Press O key to switch the objects in combinations of car and pyramid.
- Press D key to switch the modes for drawing additional information.
- In texture mapping mode
The drawing mode is switched among normal and non-transparent.
- In shadow projection mode
The drawing mode is switched among normal, non-transparent, and without using stencil buffer.
- In shadow volume mode
The drawing mode is switched among normal, object contours, front side of shadow volume, back side of shadow volume, and front and back sides of shadow volume.
- Press S key to start and stop animating objects.
- By left mouse button drag, the direction of light is controlled.
- By right and middle mouse button drag, the camera is controlled.
- Sample code [shadow_sample.zip]
The sample code implements a part of the above demo.
It contains the Visual Studio 2019 project. It requires vecmath c++ for compile.
Loading and drawing geometry models is already implemented. Some parts of the shadow drawing methods must be implemented as a programming exercise and submitted as a report.
- Sample code (for printing)
The sample code of the primary processes for shadow drawing.
- No. 6-7 Keyframe Animation
- Demo (for Windows) [keyframe_demo.zip]
This demo implements keyframe animation.
- Press space key to switch between animation mode and layout mode.
- Press P key to switch the interpolation method for positions among linear, Hermite, Bezier, and B-Spline.
- Press O key to switch the interpolation method for orientations between linear interpolation of Euler angles and Spherical Linear Interpolation of quaternions .
- Press F key to switch the display mode among normal, trajectory and all frames .
- In layout mode, click an object and drag the axis to translate and rotate the object at the keyframe.
By clicking the object, the operation mode is switched among translation in the world coordinates, rotation in the local coordinates, translation in the local coordinates, and rotation in the world coordinates.- Press P key to add a new keyframe. Press D key to delete the last keyframe.
- Sample code [keyframe_sample.zip]
The sample code implements a part of the above demo.
It contains the Visual Studio 2019 project. It requires vecmath c++ for compile.
The liner interpolations for positions and Euler angles are already implemented. The other interpolation methods must be implemented as a programming exercise and submitted as a report.
- Sample code (for printing)
The sample code of the primary processes for keyframe animation.
- No. 8 Physics Simulation / No. 9 Collision Detection
- Sample library and demo
Open Dynamics Engine (ODE)。A free software library for physics simulation.
- Official website http://www.ode.org
- Introduction in Japanese http://demura.net/ode
- No. 9 Picking
- Demo (for Windows) [picking_demo.zip]
This demo implements two methods of picking.
- By clicking left mouse button, an object is selected (picked).
- Press P key to switch the picking method between the screen coordinates and the world coordinates .
- Press D key to switch the modes for drawing viewing line in the world coordinates method.
- Sample code [picking_sample.zip]
The sample code implements a part of the above demo.
It contains the Visual Studio 2019 project. It requires vecmath c++ for compile.
Some parts of the picking processes must be implemented as a programming exercise and submitted as a report.
- Sample code (for printing)
The sample code of the primary processes for picking.
- No. 11 Character Animation (BVH motion viewer)
- Demo (for Windows) [bvh_player.exe]
BVH motion viewer
- Press L key to load a motion data (in BVH file format).
- Sample code [bvh_player_sample.zip]
The sample code implements the above demo.
It contains the BVH class, sample GLUT application, and Visual Studio 2007 project.
Below is the sample code of the BVH class.
- No. 11 and 12 Character Animation
- Demo (for Windows) [human_demo.zip]
Character animation demo program This demo program contains multiple applications. The application can be selected by clicking the middle button of mouse (or CTRL key and the right button of mouse) or switched sequentially by pressing M key.
- Motion Playback
Press S key to stop and start animation. While it is stopped, press N key to next frame and press P key to previous frame. Press W key to change playback speed. Press L key to select a BVH motion file to be played.
- Keyframe Motion Playback
A BVH motion is converted to a Keyframe motion and played.
- Forward Kinematics
The positions and orientations of the body segments and the positions of the body joints are computed by forward kinematics and visualized.
- Posture Interpolation
Posture interpolation between two example postures. By dragging on the screen, the weight of posture interpolation is controlled. The figure color is changed according to the blending weight.
- Motion Interpolation
Motion interpolation between two example motions. By dragging on the screen, the weight of motion interpolation is controlled. The figure color is changed according to the blending weight.
- Motion Connection and Transition
By clicking the left button of mouse, the character switches to the next motion. Otherwise, the character repeates the current motion. The figure color is changed according to the current motion or the blending weight during motion transition.
- Inverse Kinematics by CCD method
By dragging a joint, the position of the end-effector is controlled. The end-effector is translated on the surface in parallel to the screen. By selecting a joint by the CTRL key and the right button of mouse, the base joint is specified.
The following demos are extended applications and are not included in the programming exercises.
- Inverse Kinematics (Analytical, Jacobian matrix, and CCD)
- Multiple Motion Interpolation
- Motion Analysis
- Locomotion Along Path
- Motion State Machine
- Crowd Simulation
- Human Body Deformation
- Sample code [human_sample.zip]
The sample code implements a part of the above demo.
It contains the Visual Studio 2019 project. It requires vecmath c++ for compile.
The framework of data structure and functions for character animation are already implemented. Some parts of the methods must be implemented as a programming exercise and submitted as a report.
- Sample code (for printing)
The sample code of the primary processes for character animation.