This documentation aims to provide necessary knowledge for a smooth handover of the Computer Animation project, including project knowledge, technical knowledge, resources, communication, and others. To avoid lengthy, text-heavy documents that could overwhelm the readers, details of individual modules are covered in separated files as follows, and some sections in those files will be referenced in this documentation.
This project aims to build an engine that enables real-time character animations and simulations, as well as interactive user controls for them. Currently, it includes two basic modules: character animation and cloth simulation.
The character animation module is made up of Skeleton, Skin, and Animation. The final project allows switching between different views and control the animation clip.
A wide range of features have been implemented, including:
-
load character skeleton, skin, and animation from
.skel
,.skin
, and.anim
files (essentially JSON-like nested strings) and display them in 3D views. -
able to present:
- skeleton only, rendered as boxes
- undeformed skin at binding state
- skeleton after smooth skinning
- a short animation clip of this character
-
collapsible property panel for interactive user control:
-
use slider bar to change:
- Camera distance, azimuth, inclination;
- DOFs of every joint.
-
press
R
to reset all DOFs. -
animation controls:
- pause
- playback speed
- progress bar
- play mode (what to do after the end of the clip?), default is walking till the end of the world
- To infinity!
- Loop from start
- Stop at end
- Walk back and forth
-
The following features are milestones to be achieved (refer to JIRA for more details):
- support for various input file formats, estimated time: 2 weeks, due date: Jun 21, 2024, priority: high;
- textured character, estimated time: 1 week, due date: Jun 21, 2024, priority: high;
- textured ground/scene, estimated time: 1 day, due date: Jun 21, 2024, priority: medium;
- light control, estimated time: 1 week, due date: Jul 05, 2024, priority: low;
- animation blend, estimated time: 1 week, due date: Jul 05, 2024, priority: low;
The cloth simulation module uses a Mass-Spring System to simulate a piece of cloth.
The cloth simulation engine currently supports following features:
-
General
-
pause simulation
-
reset simulation
-
-
Cloth control & physics attributes
- move cloth
- translate +x (right):
D
- translate -x (left):
A
- translate +y (up):
W
- translate -y (down):
S
- translate -z (inward):
Q
- translate +z (outward):
E
- rotate clockwise:
C
- rotate counterclockwise:
Z
- translate +x (right):
- load different textures
- change draw mode among particles, springs, and cloth
- change pin mode & drop cloth:
- Pin Upper Corner
- Pin Upper Edge
- Drop Cloth
- stiffness: structural, shear, bending
- damping: structural, shear, bending
- friction/elasticity with ground & sphere
- move cloth
-
Wind control
- wind’s howling/calm
- move wind spawn
- Up:
W
- Down:
S
- Left:
A
- Right:
D
- Inward:
Q
- Outward:
E
- Up:
- wind velocity (value)
-
Light control
-
move light:
- Up:
W
- Down:
S
- Left:
A
- Right:
D
- Inward:
Q
- Outward:
E
- Up:
-
change light color with hue wheel
-
-
Move camera
- Up:
W
- Down:
S
- Left:
A
- Right:
D
- Inward:
Q
- Outward:
E
- Up:
-
User grab
- hold mouse left button to drag the cloth
- quit grab mode either by right click mouse button or unclick the checkbox
Milestones to be achieved in the coming months (refer to JIRA for more details):
- try optimization methods for both realistic considerations and performance, estimated time: 4 weeks, due date: Jul 5, 2024, priority: low
-
IDE:
- For Windows: Visual Studio or Visual Studio Code
- For Mac: Xcode or Visual Studio Code
-
Dependencies:
-
Version control: GitHub
-
Bug tracking: JIRA, Radar, GitHub Issues, Slack…
Note: In real-life situations, companies may require developers to use various (often internal) tools for version control and bug tracking.
- Classes & Hierarchy: see Miro
- Data Files
-
.skel
file, refer to 1.1 Load File in Skeleton.md -
.skin
file, refer to 2.1 Load File in Skinning.md -
.anim
file, refer to 3.1 Load File in Animation.md
-
-
Skeleton Posing: refer to 1.2 Skeleton Posing in Skeleton.md
-
Smooth Skinning: refer to 2.3 Smooth Skinning in Skinning.md
-
Blinn-Phong Illumination Model: refer to 2.4 Blinn-Phong Illumination Model in Skinning.md
-
Mass-Spring System: refer to 4.2 Mass-Spring System in ClothSimulation.md
-
Installation
-
For Windows:
-
Visual Studio (tested on VS 2022)
-
Git/GitHub Desktop
-
-
For Mac:
- Xcode
- Git/GitHub Desktop
-
Note: This application has not been tested on Mac and Linux, but the installation steps should be similar as long as all dependencies are included and referenced correctly.
- Running
-
Coding Standards
-
Version Control: Git/GitHub
-
Bug Tracking: JIRA, Radar, GitHub Issues, Slack…
- API documentations:
- Tutorials:
- LearnOpenGL
- YouTube playlist Introduction to OpenGL by Mike Shah
- YouTube playlist Skeletal Animation by OGLDEV
- Domain knowledge:
- Mathematics for 3D Game Programming and Computer Graphics, Third Edition 3rd Edition
- 3D Math Primer for Graphics and Game Development 2nd Edition
- Fundamentals of Computer Graphics 4th Edition
- Real-Time Rendering, Fourth Edition 4th Edition
- Physically Based Rendering, fourth edition: From Theory to Implementation 4th Edition
- OpenGL Programming Guide 9th Edition
- Physics for Game Programmers 2nd Edition
- Computer Animation 3rd Edition
- UCSD CSE 169 Computer Animation lecture slides: https://cseweb.ucsd.edu/classes/wi20/cse169-a/sessions.html
-
Email: randaldongdr@gmail.com
-
Slack: message, video meetings
-
iMessage: xxx-xxx-xxxx
-
Phone call: xxx-xxx-xxxx
-
Pair programming (if necessary): Tuple, Visual Studio Live Share, VS Code Live Share, etc.
Guidance on how to write handover documentations for future need: