Physics-based 3D Avatar Full-Body Motion Control from Sparse Data and Direction Control using Deep Reinforcement Learning
The contributions of this work are as follow:
- Enables a VR user with limited mobility to control a 3D avatar and explore spacious virtual environment
- Enables object interaction that satisfies physical laws with a key feature of sparse sensor reward
(Top) Motion sequences of the VR user performing throwing motion with direction control. (Bottom) Reconstructed full-body motion of the 3D avatar.
(Top) Motion sequences of the VR user performing punch motion with direction control. (Bottom) Reconstructed full-body motion of the 3D avatar.
- IssacGym Pr4
- Link: Webpage
- Composite Motion Learning with Task Control [Xu et al. SIGGRAPH 2023]
- Link: Github
- We provide our motion data in
assets/motionsandassets/retargeted.- Motions located in
assets/motionsare provided by Composite Motion Learning with Task Control. - The blocking/pickup/punch/throw motions located in
assets/retargetedare extracted from the demo provided by Mixamo. - Tennis motions shown in the project is not provided due to the commercial license.
- Motions extracted from Mixamo are retargeted to our skeleton model with the code provided by ASE. Please refer to an example retargeting script in
ase/poselib/retarget_motion.py.
- Motions located in
Motion sequence demo provided by Mixamo.
Block, pick fruits, punch motions are illustrated in the rows from top to bottom.
Example demo of tennis motion retargeted to our model
Overview of collecting VR user motion data
Data Acquisition from Movement SDK
- Real sensor data of VR headsets and motions of A VR user are extracted using MovementSDK and Unity3D.
Retargeting process
- Same retargeting method used in motion captured data is utilized to transfer the motion of real VR user's motion onto our skeleton model of IsaacGym.
python main.py <configure_file> --ckpt <checkpoint_dir>
- Example code of training punching motion
- options
--headless: Run headless without creating a viewer window--server: which server you are running the code- Others are stated in
main.py
- options
python main.py config/punch_joystick.py --ckpt 1121_punch_MIX --headless --server local
python main.py <configure_file> --ckpt <checkpoint_dir> --test
- Example code of testing punching motion
python main.py config/punch_joystick.py --ckpt 1121_punch_MIX/ckpt-20000 --test

