1. A method for providing synthetic motion data from a server system to user device for use in animating a Three-Dimensional (3D) character comprising: obtaining motion data from a storage device using the server system, wherein the motion data includes labels the describe high level characteristics of a motion and describes changes of 3D animation variables of a character over time; training a motion model using the server system wherein the motion model is based on the obtained motion data using supervised learning wherein the motion model forms association between the high level characteristics and the motion stored in the storage device; receiving a high level description of a sequence of desired motions wherein the high level description includes high level characteristics of a plurality of sequential motions in the sequence from a user device in the server system via a user interface generated by a server system; generating synthetic motion data for each of the plurality of sequential motions using the server system based upon the high level characteristics of each of the plurality of sequential motions and the motion model; generating synthetic data for transitions between each pair of sequential motions in the sequence using the server system; concatenating the synthetic motion data for the plurality of sequential motions and the transitions using the server system; streaming the concatenated motion data from the server system to the user device; and rendering an animation of a 3D character based upon the streamed synthetic motion data using the user device.