https://github.com/spicycactuar/skeletal-blending
Skeletal animation blending of BVH files
https://github.com/spicycactuar/skeletal-blending
animation-blending computer-graphics cpp opengl qt5 skeletal-animation
Last synced: 2 months ago
JSON representation
Skeletal animation blending of BVH files
- Host: GitHub
- URL: https://github.com/spicycactuar/skeletal-blending
- Owner: SpicyCactuar
- Created: 2024-11-06T01:42:06.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-20T22:59:02.000Z (over 1 year ago)
- Last Synced: 2025-05-14T15:18:56.032Z (about 1 year ago)
- Topics: animation-blending, computer-graphics, cpp, opengl, qt5, skeletal-animation
- Language: C++
- Homepage:
- Size: 104 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Skeletal Blending

Qt application showcasing skeletal animation blending of BVH (Biovision hierarchical data) data.
A single character with basic movement (rest, run and veer) can be moved around an undulating terrain.
Each bone is rendered from a recursive hierarchical joint transformation matrix constructed as follows:
$J = J * T_{J} * R_{J}$
Joint rotation is applied first, following translation and finally the accumulated transform.
Animations are blended by `slerp`ing between keyframe rotations over a fixed period of time.
## Project Structure
```plaintext
skeletal-blending/
├── src/ # Source code
├── assets/ # Static assets (.dem and .bvh files)
├── skeletal-blending.pro # QMake project
└── README.md # Project README
```
## Build
```bash
qmake
make
```
## Run
```bash
bin/skeletal-blending
```
## Controls
| Key(s) | Action |
|-----------------------|------------------------------------|
| `↑` / `↓` / `←` / `→` | Move character around |
| `P` | Reset character to initial state |
| `W` / `S` | Move camera forwards and backwards |
| `A` / `D` | Move camera left and right |
| `R` / `F` | Move camera up and down |
| `Q` / `E` | Yaw camera left and right |
| `X` | Exit application |
## Technologies
* **C++**: `>= C++17`
* **Qt**: `5.12.x`
* **OpenGL**: `>= 4.0`
Newer versions of Qt might work correctly, if no breaking changes that affect the application were introduced.