Skip to content

Repository files navigation

GCDance: Genre-Controlled 3D Full Body Dance Generation Driven By Music

GCDance cover

Music-driven dance generation is a challenging task, as models must respect genre conventions, preserve physical realism, and achieve fine-grained synchronization between movement and musical beat and rhythm. Despite recent progress in music conditioned generation, many methods still struggle to express distinctive genre specific style. We present GCDance, a diffusion based framework for genre specific 3D full body dance generation conditioned on music and descriptive text. The approach introduces a text based control mechanism that converts prompts, including explicit genre labels and free form descriptions, into genre specific control signals, enabling accurate and controllable synthesis of genre consistent motion.

Data Preparation

This project employs the FineDance dataset for both training and evaluation.

1️⃣ Download and Placement

  • FineDance Dataset
    Download from Google Drive and extract to ./data:
    Google Drive Link

  • SMPL Models
    Download required SMPL models from the official SMPL-X website and place them in ./assets:
    SMPL/SMPL-X Official Site

  • Textual Descriptive Dataset
    (To be released soon)

2️⃣ Preprocessing

  • Motion feature extraction
python preprocess/pre_motion.py \
  --motion_dir ./data/finedance/motion \
  --store_dir ./data/train/motion_fea319
  • Music feature extraction
python preprocess/pre_music.py \
  --music_dir ./data/finedance/music_wav \
  --store_dir ./data/train/music

Pretrained Checkpoint

We provide a pretrained GCDance checkpoint for evaluation and generation:

Google Drive Link

Download it and place it under ./checkpoint, then point to it with the --checkpoint argument when running test.py / test_10.py, e.g.:

python test.py --test_gen

Training

To train the model:

accelerate launch train.py --wandb 

Multi-Task Learning Options

We provide two multi-task optimization strategies. Note: Aligned training requires high GPU memory (recommended:2 NVIDIA A100).

Aligned Training

accelerate launch train.py --wandb --mtl_method Aligned

Nash Training

accelerate launch train.py --wandb --mtl_method Nash

Evaluation

During evaluation, 18 music tracks are segmented into multiple 120-frame clips. For each track, 15 clips are randomly selected (totaling 270 segments) and repeated 10 times to compute the mean performance.

To prepare the test data, you may either:

  • Option A — Process the test data manually:
python slice_test_data.py
  • Option B — Use the preprocessed test data: Download from Google Drive and place it in the project root directory: Google Drive

After preparing the data, run the following command to evaluate the randomly selected 270 motion segments:

python test_10.py

Generate

python test.py --test_gen

Visualization

python vis.py --motion_save_dir 

Citation

If you find this work useful, please consider citing:

@article{liu2026gcdance,
  title={GCDance: Genre-Controlled Music-Driven 3D Full Body Dance Generation},
  author={Liu, Xinran and Dong, Xu and Qian, Shenbin and Kanojia, Diptesh and Wang, Wenwu and Feng, Zhenhua},
  journal={IEEE Transactions on Multimedia},
  year={2026},
  publisher={IEEE}
}

Acknowledgements

We would like to express our sincere gratitude to the EDGE and FineDance projects for their foundational datasets and research support.

About

A framework for genre-controllable 3D dance generation from music, published in IEEE Transactions on Multimedia.

Resources

Stars

9 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages