Features of physically based animation is committed to branch develop/dynamics. Currently, the main algorithm is Featherstone's forward dynamics, which takes in joint torques and external forces to compute joint accelerations, which is then used by the numerical integrater (currently RK4) to compute joint parameter (which is unit quat). Any kinematics tree can be simulated effeciently with this algorithm.
Experimental features of motion matching is added to the develop/motion_matching branch. The motion matching functionality includes
- animation preprocessor that extracts and serializes feature vectors from animation frames
- an motion matching controller running matching algroithm at runtime and computing model's pose
Switch to develop/motion_matching branch to try it out.
This project is a independently developed game engine dedicated to character animation. It implements a simple vulkan renderer and explore more on different techniques of doing realistic and fully controllable character animation. It also implements a FBX importer commandline tool for converting FBX resource to engine format. A StandAlone game is provided, for the purpose of testing the ability of the engine runtime. A selected feature list is described below.
- CMake 3.18 or higher.
- A C++ compiler that supports concepts. MSVC 16.8 or higher is recommanded.
In CMake GUI, choose
- Where is the source code: D:/InceptionEngine
- Where to build the binary: D:/InceptionEngine/build_x64
- Use default configuration.
Note that disk D: is not required. You can choose to clone this repo to other disk. However, the file name "build_x64" is required. It won't work if you build the binary to a folder not naming "build_x64", since this filename is hard coded in the source code.
- Vulkan 3D renderer backend
- ECS system for storing and ticking component
- Nativescripting system with C++ as the scripting language
- FBX importer commandline tool
- Hireachical transform system with functionality such as "MoveToInDuration", "RotateInDuration"
- Rigidbody system for simulating acceleration and speed
- Collision detection with capsule collider
- Adjusted and flexible third person following camera
- Play 2D sound
- Forward kinematic to compute bone transform in animation
- GPU linear skin
- Skeleton socket system for weapon handling or position recording
- Aim IK for aiming head-spine bone chain to some position
- FABRIK for controlling finger-shoulder bone chain
- Ball-and-socket constraint and hinge constraint in FABRIK
- Animation State Machine
- Event animation system (dynamically play specific animation in script)
- Animation blending
- Animation blending mask for playing partial animation
- Animation Callback system. Some places where you can set callback are any specific time stamp in animation, animation start, animation end, animation be interrupted, animation be blended out and etc.
- Dynamic animation speed control
- Vulkan
- FBXSDK
- glm
- glfw
- cereal
- irrKlang
- stb image