{"id":29795490,"url":"https://github.com/ubisoft/ubisoft-laforge-animation-dataset","last_synced_at":"2025-07-28T04:11:19.527Z","repository":{"id":38797193,"uuid":"255640365","full_name":"ubisoft/ubisoft-laforge-animation-dataset","owner":"ubisoft","description":"Ubisoft La Forge - Animation Dataset","archived":false,"fork":false,"pushed_at":"2022-09-10T09:16:51.000Z","size":281,"stargazers_count":973,"open_issues_count":8,"forks_count":178,"subscribers_count":30,"default_branch":"master","last_synced_at":"2024-07-28T16:33:36.242Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ubisoft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-14T14:59:02.000Z","updated_at":"2024-07-26T14:56:04.000Z","dependencies_parsed_at":"2022-07-09T10:46:06.533Z","dependency_job_id":null,"html_url":"https://github.com/ubisoft/ubisoft-laforge-animation-dataset","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ubisoft/ubisoft-laforge-animation-dataset","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubisoft%2Fubisoft-laforge-animation-dataset","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubisoft%2Fubisoft-laforge-animation-dataset/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubisoft%2Fubisoft-laforge-animation-dataset/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubisoft%2Fubisoft-laforge-animation-dataset/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ubisoft","download_url":"https://codeload.github.com/ubisoft/ubisoft-laforge-animation-dataset/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubisoft%2Fubisoft-laforge-animation-dataset/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267459961,"owners_count":24090791,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-28T04:11:11.495Z","updated_at":"2025-07-28T04:11:19.516Z","avatar_url":"https://github.com/ubisoft.png","language":"Python","funding_links":[],"categories":["Datasets"],"sub_categories":["Physics-Based Controller"],"readme":"# Ubisoft La Forge Animation Dataset (\"LAFAN1\")\n![LaFAN1](images/lafan1_1635_cropped.jpg)\n\nUbisoft La Forge Animation dataset and accompanying code for the SIGGRAPH 2020 paper [Robust Motion In-betweening](https://montreal.ubisoft.com/en/automatic-in-betweening-for-faster-animation-authoring/).\n\nShot in May 2017.\n\nThis dataset can be used under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License (see license.txt).\n\nIf you use this dataset or transition benchmarking code, please consider citing the paper:\n```\n@article{harvey2020robust,\nauthor    = {Félix G. Harvey and Mike Yurick and Derek Nowrouzezahrai and Christopher Pal},\ntitle     = {Robust Motion In-Betweening},\nbooktitle = {ACM Transactions on Graphics (Proceedings of ACM SIGGRAPH)},\npublisher = {ACM},\nvolume    = {39},\nnumber    = {4},\nyear      = {2020}\n}\n```\n\nYou may also want to consider the following papers, as they also use this dataset (or parts of it):\n* [Learned Motion Matching (Holden et al., 2020)](http://theorangeduck.com/media/uploads/other_stuff/Learned_Motion_Matching.pdf)\n* [Subspace Neural Physics: Fast Data-Driven Interactive Simulation (Holden et al., 2019)](http://www.theorangeduck.com/media/uploads/other_stuff/deep-cloth-paper.pdf)\n* [DReCon: Data-Driven Responsive Control of Physics-Based Characters (Bergamin et al., 2019)](https://static-wordpress.akamaized.net/montreal.ubisoft.com/wp-content/uploads/2019/11/13214229/DReCon.pdf)\n* [Robust Solving of Optical Motion Capture Data by Denoising (Holden, 2018)](http://theorangeduck.com/media/uploads/other_stuff/neural_solver.pdf)\n* [Recurrent Transition Networks for Character Locomotion (Harvey et al., 2018)](https://arxiv.org/pdf/1810.02363.pdf)\n\n## Cloning this repository using git lfs\n\nThis repository contains large files, e.g. `lafan1/lafan1.zip` (137M). In order to clone this repository including the complete zip files, you need to use [git lfs](https://github.com/git-lfs/git-lfs/wiki/Installation). \n\nExample using Ubuntu 20.04:\n\n```\ncurl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash\nsudo apt-get install git-lfs\ngit lfs install\ngit clone https://github.com/ubisoft/ubisoft-laforge-animation-dataset.git\n```\n\nIf you do not have git lfs installed, you will see this error when trying to run `evaluate.py`:\n\n\u003e BadZipfile: File is not a zip file\n\n\n## Data\nThe animation data is contained in the lafan1.zip file.  \nAll the animation sequences are in the BVH file format.  \nThere are 5 subjects in the dataset, 77 sequences, and 496,672 motion frames at 30fps (~4.6 hours).  \nEvery BVH file is named with the following convention: \\[*theme*\\]\\[*take number*\\]_\\[*subject ID*\\].bvh.  \nAny sequences sharing the same *theme* and *take_number* were recorded at the same time in the studio.  \nThemes are high level indicators of the actions in the sequences.\n\nThe following themes are present in the LaFAN1 dataset:\n\n|   Theme         |  Description                                  |Number of sequences|\n|:----------------|:------------------------------------------    |:-----------------:|\n| Obstacles       |  Locomotion on uneven terrain                 |17                 |\n| Walk            |  Walking locomotion, with different styles    |12                 |\n| Dance           |  Free dancing                                 |8                  |\n| Fall and get up |  Falling on the ground and getting back up    |6                  |\n| Aiming          |  Locomotion while handling or aiming a gun    |5                  |\n| Ground          |  Locomotion while crawling and crouching      |5                  |\n| Multiple actions|  Miscellaneous/multiple movements per sequence|4                  |\n| Run             |  Jogging/Running locomotion                   |4                  |\n| Fight           |  Various fight movements                      |3                  |\n| Jumps           |  Locomotion with one and two-leg jumps        |3                  |\n| Fight and sports|  Fight and sports movements                   |2                  |\n| Push and stumble|  Pushing, stumbling and recovery              |3                  |\n| Push and fall   |  Pushing, falling, and getting up             |2                  |\n| Sprint          |  Sprinting locomotion                         |2                  |\n| Push            |  Pushing adversary                            |1                  |\n\n## Code\n\n\n### Requirements\nYou should only need `numpy` installed in a python 3.X environment, but the code was developed with `python 3.7` and `numpy 1.17.4`\n\nYou can easily create a test environment with `conda` : \n\n`conda create -n lafan_env python=3.7 numpy=1.17.4`\n\n\n### Evaluating baselines\nFrom the command line:\n\n`python evaluate.py`\n\nTo validate that the results produced by the baseline evaluations are within the expected ranges, you can subsequently run:\n\n`python evaluate_test.py`\n\n---\n\nThe first run may take several minutes, as it will compute the training statistics.  \nFollowing runs should go faster.\n\n\nThe training statistics for normalization are computed on windows of 50 frames offset by 20 frames.  \nWe sample our test windows from Subject 5 at every 40 frames, and retrieve 2232 sequences for evaluation.\n\nIn the **Zero-Velocity** baseline, the last seed frame is repeated during the whole transition.  \nIn the **Interpolation** baseline, the global root position is linearly interpolated (LERP), and quaternions are spherically linearly interpolated (SLERP).  \n\n---\n\nYou should obtain the following results:\n\n\u003cimg src=\"images/benchmark_results.png\" alt=\"results\" width=\"533\"/\u003e\n\n\n### Evaluation metrics\nWhen running the baseline evaluations, we report three different metrics on global quaternions on positions to assess the quality of the generated transition.\n\n#### Global quaternion loss\nThe global quaternion loss (L2Q) is the L2 distance computed between estimated and ground-truth global quaternion vectors ***g***, averaged over each time step *t* and over all sequences *s* in the test set. \n\n\u003cimg src=\"images/L2Q.png\" alt=\"L2Qloss\" width=\"300\"/\u003e\n\n#### Global position loss\nThe global position loss (L2P) is the L2 distance computed between estimated and ground-truth normalized global position vectors ***p***, averaged over each time step *t* and over all sequences *s* in the test set.\n\n\u003cimg src=\"images/L2P.png\" alt=\"L2Ploss\" width=\"300\"/\u003e\n\n#### Normalized Power Spectrum Similarity (NPSS) on global quaternions\nThis is a distance metric based on the power spectrum of joint angles, as proposed by Gopalakrishnan et al. (2019).  \nIt is reported to correlate better with human judgement about motion.  \nIts motivation and implementation details can be found in [their paper][1].\n\n[1]: \u003chttp://openaccess.thecvf.com/content_CVPR_2019/papers/Gopalakrishnan_A_Neural_Temporal_Model_for_Human_Motion_Prediction_CVPR_2019_paper.pdf\u003e \"A Neural Temporal Model for Human Motion Prediction\"\n\n© [2018] Ubisoft Entertainment. All Rights Reserved\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fubisoft%2Fubisoft-laforge-animation-dataset","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fubisoft%2Fubisoft-laforge-animation-dataset","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fubisoft%2Fubisoft-laforge-animation-dataset/lists"}