Data: This repository contains the dataset from the paper Evaluating Idle Animation Believability: a User Perspective, published in the Computer Animation and Virtual Worlds journal.
Code: It also contains scripts to reproduce the results and graphs from the paper. The provided scripts perform the analysis of the speeds, accelerations and jerks, with direct comparisons and by using PCA, t-SNE and UMAP representations.
Project page: The project page can be found here
If you use this dataset in your research, please cite it as follows:
@article{https://doi.org/10.1002/cav.70116,
author = {Landa, Eneko Atxa and Lazkano, Elena and Rodriguez, Igor and Rodriguez-Moreno, Itsaso and Irigoien, Itziar},
title = {Evaluating Idle Animation Believability: A User Perspective},
journal = {Computer Animation and Virtual Worlds},
volume = {37},
number = {3},
pages = {e70116},
keywords = {animation, idle motion, motion capture, motion perception},
doi = {https://doi.org/10.1002/cav.70116},
url = {https://onlinelibrary.wiley.com/doi/abs/10.1002/cav.70116},
eprint = {https://onlinelibrary.wiley.com/doi/pdf/10.1002/cav.70116},
year = {2026}
}
The repository contains 16 clips of acted idle animations and 10 clips of genuine idle animations. The number of the clip matches the ID of the person performing the animation, so clip 000_genuine.bvh and 000_acted.bvh are made by the same person.
The dataset contains 55.039 frames of acted idle motion and 27.273 frames of genuine idle motion.
You can directly clone this repository and use the BVH files provided in the acted and genuine folders.
To reproduce the results from the paper, follow these instructions.
Execute the plotAngularSpeeds.py script. You will need to have numpy, scipy and matplotlib. The script will first show the average angular speeds graph from the paper, but it will also show average angular accelerations and jerks.
First, generate the position csv files by running createCsvFiles.py. You will need to have bvhTools installed. You can easily install it with:
pip install bvhTools
This will generate two new folders inside the acted and genuine bvh folders, containing the csv files with the joint positions in every frame.
Then, execute the plotSpeeds.py script. You will need to have numpy, pandas, scipy and matplotlib. The script will first show the average speeds graph from the paper, but it will also show average accelerations and jerks.
Note: The graphs involving Mixamo animations can not be directly reproduced, as they need the animations from Mixamo, which cannot be redistributed without permission. You can download those animations from Mixamo and edit the scripts to do so. First search the keyword "idle" in Mixamo, and then extract the following animation clips to BVH.
- Catwalk idle
- Catwalk idle 01
- Catwalk idle 02
- Standing idle
- Idle (the first 5 animations that appear in Mixamo)
- Standard idle
- Unarmed idle 01 (2 animations)
- Warrior idle
- Neutral idle
- Wheelbarrow idle has been discarded because it has a different structure
After putting these 14 animations into a folder named mixamo, you can run createCsvFiles.py again, but just with the last uncommented part, so you calculate forward kinematics on mixamo animations.
Then, run normalizeMixamoCsv.py to normalize all the animations. (You will need the bvh python package: you can install it with pip install bvh)
After this preprocessing, you will be able to run mixamoPlotAngularSpeeds.py and mixamoPlotSpeeds.py, to reproduce the following two graphs from the paper.
These plots need functionalities from sklearn and UMAP to work properly. Install them with pip install scikit-learn, pip install umap-learn. clustering.py also needs the bvhTools package: pip install bvhTools.
The PCA, t-SNE and UMAP plots depicting the lower dimension representation of real and acted instances can be reproduced running the clustering.py script. By changing the mode variable in the top of the script, the user can choose between linear and angular time derivatives. Also, by changing the derivative variable, the user can choose between using speeds, accelerations or jerks.
The following plots are example PCA, t-SNE and UMAP representations using angular speeds.
PCA
t-SNE
UMAP
The PCA, t-SNE and UMAP plots depicting the lower dimension representation of real, acted and Mixamo instances can be reproduced running the clustering_mixamo.py script. Again, the Mixamo animations have to be downloaded from the mixamo repository, as explained here.
Finally, by changing the derivative variable, the user can choose between using angular speeds, angular accelerations and angular jerks.
The following plots are example PCA, t-SNE and UMAP representations using angular speeds.
PCA
t-SNE
UMAP
The dataset provided in this repository is released under the MIT License.
You are free to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the dataset, under the conditions outlined in the MIT License.
See LICENSE.txt for full license text.
The following videos contain some extracts of the dataset. Would you be able to determine whether each video corresponds to a real or and acted sample?
00.mp4
04.mp4
01.mp4
05.mp4
02.mp4
06.mp4
03.mp4
The first one is an acted sample, the second one a real one, and so on. Aren't they indistinguishable?










