Data-driven techniques for animating virtual characters