Giter VIP home page Giter VIP logo

computeranimation's Introduction

Computer Animation

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.

  1. Skeleton.md
  2. Skinning.md
  3. Animation.md
  4. ClothSimulation.md

1. Project Knowledge

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.

1.1 Character Animation

1.1.1 Overview

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.

1.1.2 Feature Status

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:

      1. Camera distance, azimuth, inclination;
      2. 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
        1. To infinity!
        2. Loop from start
        3. Stop at end
        4. 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;

1.1.3 Challenges & Solutions

1.2 Cloth Simulation

1.2.1 Overview

The cloth simulation module uses a Mass-Spring System to simulate a piece of cloth.

1.2.2 Feature Status

The cloth simulation engine currently supports following features:

  1. General 4. pause simulation
  2. Cloth control & physics attributes
    1. move cloth
      1. translate +x (right): D
      2. translate -x (left): A
      3. translate +y (up): W
      4. translate -y (down): S
      5. translate -z (inward): Q
      6. translate +z (outward): E
      7. rotate clockwise: C
      8. rotate counterclockwise: Z
    2. stiffness: structural, shear, bending
    3. damping: structural, shear, bending
    4. change pin mode & drop cloth:
      1. Pin Upper Corner
      2. Pin Upper Edge
      3. Drop Cloth
    5. Friction/elasticity with ground & sphere
  3. Wind control
    1. wind’s howling/calm
    2. move wind spawn
      1. Up: W
      2. Down: S
      3. Left: A
      4. Right: D
      5. Inward: Q
      6. Outward: E
    3. wind velocity (value)
  4. Light control
    1. move light:

      1. Up: W
      2. Down: S
      3. Left: A
      4. Right: D
      5. Inward: Q
      6. Outward: E
    2. change light color with hue wheel

  5. Move camera
    1. Up: W
    2. Down: S
    3. Left: A
    4. Right: D
    5. Inward: Q
    6. Outward: E
  6. User grab
    1. hold mouse left button to drag the cloth
    2. 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

1.2.3 Challenges & Solutions

2. Technical Knowledge

2.1 Tech Stack

Note: In real-life situations, companies may require developers to use various (often internal) tools for version control and bug tracking.

2.2 Architecture Design

  1. Classes & Hierarchy: see Miro
  2. Data Files

2.4 Key Algorithms

2.5 Deployment

  • 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

2.6 Development

  • Coding Standards

  • Version Control: Git/GitHub

  • Bug Tracking: JIRA, Radar, GitHub Issues, Slack…

3. Resources

4. Communication

5. Misc.

Guidance on how to write handover documentations for future need:

  1. handover-documentation-checklist.md
  2. handover.md

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.