[Oshita Lab.][Lecture] | [Jpanese] |
The class for 2024 spring quarter (Q1) is open online in an asynchronous way.
Student who want to take this class should register on the LiveCampus system and access to the Moodle course of this class.
Lecture slides, programming materials, and report materials are provided on this page.
Lecture videos, exercises, and repots submission are provided on the Moodle course.
This class covers advanced techniques on computer animation. The students can learn practical techniques through lectures and programming exercises.
Although this class is mainly taught in Japanese, some of class materials will be provided in both Japanese and English. Reports are acceptable in Japanese and English.
The class materials will be uploaded before each class.
No. | Date (Year/Month/Day) | Title | Slides | Codes |
1 | 2024/4/11 | Fundamentals in Computer Animation | Lecture slides (in Japanese) | Codes |
2 | 2024/4/15 | Camera Control | Lecture slides (in Japanese) | Demo and Codes |
3 | 2024/4/18 | Geometry Models | Lecture slides (in Japanese) | Demo and Codes |
4 | 2024/4/22 | Keyframe Animation (1) | Lecture slides (in Japanese) | Demo and Codes |
5 | 2024/4/25 | Keyframe Animation (2) | Lecture slides (in Japanese) | Demo and Codes |
6 | 2024/4/30 | Physics Simulation | Lecture slides (in Japanese) | Demo |
7 | 2024/5/2 | Collision Detection and Picking | Lecture slides (in Japanese) | Demo and Codes |
8 | 2024/5/8 | Character Animation (1) | Lecture slides (in Japanese) | |
9 | 2024/5/9 | Character Animation (2) | Lecture slides (in Japanese) |
Demo and Codes |
10 | 2024/5/13 | Character Animation (3) | Lecture slides (in Japanese) |
Demo and Codes |
11 | 2024/5/16 | Character Animation (4) | Lecture slides (in Japanese) |
Demo and Codes |
12 | 2024/5/20 | Character Animation (5) | Lecture slides (in Japanese) | |
13 | 2024/5/23 | Character Animation (6) | Lecture slides (in Japanese) | |
14 | 2024/5/27 | Character Animation (7) | Lecture slides (in Japanese) | |
15 | 2024/6/3 | Rendering Techniques | Lecture slides (in Japanese) |
Demo and Codes |
The report materials will be uploaded before each class.
Reports must be submitted through the course of this class on the Moodle e-learning system.
- Instruction
The students are encouraged to use the latex templates below. These templates use listings and jlisting packages to include program codes. You can download jlisting.sty here.
- 1. Camera Control
Extend the sample code of No. 2 Camera Control (view_sample.cpp) to include scroll mode (parameter), walkthrough mode (direct), scroll mode (direct), and walkthrough mode (parameter).
- 2. Keyframe Animation
Extend the sample codes of No. 4 and 5 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.
- 3. Picking
Extend the sample codes of No. 7 Picking (picking_sample.cpp) to include picking on the screen coordinates system and picking on the world coordinate system.
- 4. Character Animation 1
Extend the sample codes of No. 9 and 10 Character Animation (human_sample.cpp) to include forward kinematics, posture interpolation, keyframe motion, motion connection and transition, and CCD inverse kinematics.
- 5. Character Animation 2
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.
The programming materials will be uploaded before each class.
- Programming Environment
All sample codes here use C/C++ with OpenGL and GLUT (freeglut). Some sample codes use vecmath C++ library for handling matrices and vectors.
All sample codes are built on Windows 10 and Microsoft Viausl Studio 2022. They include Visual Studio project files.
- How to setup your C/C++ programming environment (in Japanese) [PDF]
- Software and library
- Microsoft Visual Studio Community 2022
- 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. 1 OpenGL Programming
- Sample code [opengl_sample.cpp] [印刷用PDF]
- Tutorial on OpenGL programming (in Japanese)
Class materials on computer graphics for undergraduates.
- No. 2 Camera Control
- Demo (for Windows) [view_demo.zip]
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.zip]
The sample code implements a part of the above demo. It contains the Visual Studio 2022 project.
The dolly mode is already implemented. Other modes must be implemented as a programming exercise and submitted as a report.
- Programming Guide for Camera Control (in Japanese) [PDF]
- No. 3 Geometry Models
- Demo (for Windows) [obj_viewer_demo.zip]
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 code [obj_viewer_sample.zip]
The sample code implements the above demo. It contains the Visual Studio 2022 project.
- Programming Guide for Obj Viewer (in Japanese) [PDF]
- No. 4-5 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 [obj_viewer_sample.zip]
The sample code implements the above demo. It contains the Visual Studio 2022 project.
The liner interpolations for positions and the liner interpolations of Euler angles for orientations are already implemented. The other interpolation methods must be implemented as a programming exercise and submitted as a report.
- Programming Guide for Keyframe Animation (in Japanese) [PDF]
- No. 6 Physics Simulation / No. 7 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. 7 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 2022 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.
- Programming Guide for Picking (in Japanese) [PDF]
- No. 9 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 2022 project.
- Programming Guide for BVH Motion Player (in Japanese)
See Section 1.2 of the Programming Guide for Character Animation.
- No. 9 to 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 2022 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.
- Programming Guide for Character Animation (in Japanese) [PDF]
- No. 15 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 can be implemented as a programming exercise.