Patent Publication Number: US-11663764-B2

Title: Automatic creation of a photorealistic customized animated garmented avatar

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
     The present application claims priority of U.S. Provisional Patent Application No. 63/142,294 filed on Jan. 27, 2021, entitled “Automatic Creation of a Photorealistic Customized Animated Garmented Avatar for a Person,” which is incorporated herein by reference in its entirety for all purposes. 
    
    
     TECHNICAL FIELD 
     The present disclosure pertains to automatic generation of a photorealistic customized computer animation (video) of a user wearing one or more selected cloth garments and/or accessories, in a selected scene. 
     BACKGROUND 
     In online shopping, a customer usually selects cloth garments and/or accessories based on a size and preferences of the customer. Online shopping websites conventionally provide pictures of a garment on a model and a size table for the garment. To have a rough estimate of how the garment would look on the customer, the customer needs to compare customer measurements with a size of the model and imagine how the garment could look on the customer. However, the realistic look of the garments on the customer may differ from the look of the garments on the model. Therefore, the customers may be unsatisfied by the garments and return the garments back to a seller. 
     SUMMARY 
     This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This summary is not intended to identify key features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. 
     In an example embodiment, a system for automatic creation of a customized avatar animation of a user is provided. The system may include a production module and a runtime module. The production module may be configured to receive production parameters and create, based on the production parameters, a multidimensional array of a plurality of blank avatar animations. Each blank avatar animation may have a predetermined number of frames and a plurality of features associated with each frame. The runtime module may be configured to receive user parameters. The user parameters may include body dimensions, hair, and images of a face of a user. The runtime module may be configured to select two blank avatar animations from the plurality of blank avatar animations. The two blank avatar animations may be closest to the user based on the body dimensions. The runtime module may be further configured to interpolate corresponding frames of the two blank avatar animations to produce an interpolated avatar animation. The runtime module may be configured to composite the face and the hair with the interpolated avatar animation using a machine learning technique to render the customized avatar animation. 
     According to another embodiment, a method for automatic creation of a customized avatar animation of a user is provided. The method may commence with receiving production parameters by a production module. The method may further include creating, by the production module, based on the production parameters, a multidimensional array of a plurality of blank avatar animations. Each blank avatar animation may have a predetermined number of frames and a plurality of features associated with each frame. The method may further include receiving, by a runtime module, user parameters. The user parameters may include body dimensions, hair, and images of a face of a user. The method may continue with selecting, by the runtime module, two blank avatar animations from the plurality of blank avatar animations. The two blank avatar animations may be the closest ones to the user based on the body dimensions. The method may further include interpolating, by the runtime module, corresponding frames of the two blank avatar animations to produce an interpolated avatar animation. The method may then continue with compositing, by the runtime module, the face and the hair with the interpolated avatar animation using a machine learning technique to render the customized avatar animation. 
     Additional objects, advantages, and novel features will be set forth in part in the detailed description section of this disclosure, which follows, and in part will become apparent to those skilled in the art upon examination of this specification and the accompanying drawings or may be learned by production or operation of the example embodiments. The objects and advantages of the concepts may be realized and attained by means of the methodologies, instrumentalities, and combinations particularly pointed out in the appended claims. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements. 
         FIG.  1    is a block diagram of an environment, in which systems and methods for automatic creation of a customized avatar animation of a user can be implemented, according to some example embodiments. 
         FIG.  2    depicts a workflow that may be utilized by a system for automatic creation of a customized avatar animation of a user, according to an example embodiment. 
         FIG.  3    shows a matrix of pre-generated garmented avatars, according to an example embodiment. 
         FIGS.  4 A and  4 B  are schematic diagrams illustrating the creation of an interpolated avatar, according to an example embodiment. 
         FIG.  5    is a schematic diagram illustrating interaction of a user with a system for automatic creation of a customized avatar animation of a user, according to an example embodiment. 
         FIG.  6    is a block diagram illustrating modules of a system for automatic creation of a customized avatar animation of a user, according to an example embodiment. 
         FIG.  7    is a block diagram showing a runtime session run by a system for automatic creation of a customized avatar animation of a user, according to an example embodiment. 
         FIG.  8    is a flow diagram that shows a method for automatic creation of a customized avatar animation of a user, according to an example embodiment. 
         FIG.  9    is a diagrammatic representation of an example machine in the form of a computer system within which a set of instructions for the machine to perform any one or more of the methods discussed herein is executed. 
     
    
    
     DETAILED DESCRIPTION 
     The following detailed description includes references to the accompanying drawings, which form a part of the detailed description. The drawings show illustrations in accordance with example embodiments. These example embodiments, which are also referred to herein as “examples,” are described in enough detail to enable those skilled in the art to practice the present subject matter. The embodiments can be combined, other embodiments can be utilized, or structural, logical and electrical changes can be made without departing from the scope of what is claimed. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope is defined by the appended claims and their equivalents. 
     In this document, the terms “a” or “an” are used, as is common in patent documents, to include one or more than one. In this document, the term “or” is used to refer to a nonexclusive “or,” such that “A or B” includes “A but not B,” “B but not A,” and “A and B,” unless otherwise indicated. Furthermore, all publications, patents, and patent documents referred to in this document are incorporated by reference herein in their entirety, as though individually incorporated by reference. In the event of inconsistent usages between this document and those documents so incorporated by reference, the usage in the incorporated reference(s) should be considered supplementary to that of this document; for irreconcilable inconsistencies, the usage in this document controls. 
     The present disclosure provides systems and methods for automatic creation of a customized avatar animation of a user. A system for automatic creation of a customized avatar animation of a user (also referred to herein as “system”) may preliminarily create a multidimensional array of animated three-dimensional avatars (also referred to as avatar animations). Each blank avatar animation may correspond to one predetermined body size, such as small, medium, or large, a body length, and other body parameters. The plurality of animated three-dimensional avatars may be generated for each garment provided for selection through a website. Specifically, a garment may be represented in form of a three-dimensional animated garment worn by the animated three-dimensional avatar. 
     The user experience can begin with a user taking at least two pictures of the user, such as a front view picture and a side view picture and providing the two pictures to the system. The system analyzes the two pictures received from the user to determine body dimensions of the user. In an example embodiment, the system provides 70 mm-accurate dimensions of the user. Upon determining the body dimensions of the user, the system selects two blank avatar animations that are the closest to the dimensions of the user, interpolates the selected blank avatar animations, and generates an interpolated avatar animation based on the body dimensions of the user. The interpolated avatar animation has dimensions of the avatar that correspond to the dimensions of the user. The system can use a machine learning technique to composite a face and hair of the user taken from the pictures of the user with the interpolated avatar animation and generate a customized avatar animation associated with the user. Therefore, the customized avatar animation generated by the system is a “digital double” of the user in the form of a three-dimensional (3D) avatar (3D model) generated based on the size and other parameters of the user. The user can then customize the digital double in real time with augmented reality (AR) tools, such as by adding makeup, changing hairstyle, adding a scene, and so forth. 
     The user can then select one or more garments for the 3D avatar to wear from their own closet, closet of an influencer, or from a clothing brand. The user can also resize the garment, select shoes, and select accessories. Furthermore, the user may select a scene (e.g., a background environment) in which the 3D avatar needs to be located. In exemplary embodiments, the scene may include a runway, private jet, yacht, party, club, and the like. In an example embodiment, the system may generate the customized avatar animation of the user in the form of a still photo, 3D object, or virtual reality (VR)/AR interactive scene and photorealistically render the customized avatar animation. A physics simulation may be run on the garment so that the garment may flow in a realistic manner as the avatar moves. The final customized avatar animation can then be streamed to a user device. 
       FIG.  1    shows an example environment  100 , in which a system and a method for automatic creation of a customized avatar animation of a user can be implemented. The environment  100  may include one or more users  105 , one or more personal computing devices also referred to as user devices  110  associated with the users  105 , a network  120 , a system  200  for automatic creation of a customized avatar animation of a user, and a server or computing cloud  125 . The user devices  110  can refer to a mobile device such as a mobile phone, smartphone, or tablet computer. In further embodiments, the user devices  110  can refer to a personal computer, laptop computer, netbook, or any other computing device. 
     The user devices  110  can be communicatively connected to the system  200 . The system  200  can be implemented as a cloud-based computing resource(s). The system  200  may be in communication with the server or computing cloud  125 . The server or computing cloud  125  can include computing resources (hardware and software) available at a remote location and accessible over the data network  120 . The server or computing cloud  125  can be communicatively coupled to the user devices  110  via the data network  120 . The server or computing cloud  125  can be shared by multiple user(s)  105 . In certain embodiments, the server or computing cloud  125  may include one or more server farms/clusters including a collection of computer servers that can be co-located with network switches and/or routers. The system  200  may include a production module  210 , a runtime module  220 , and a database  230 . 
     The network  120  may include any wired, wireless, or optical networks including, for example, the Internet, intranet, local area network (LAN), Personal Area Network (PAN), Wide Area Network (WAN), Virtual Private Network (VPN), cellular phone networks (e.g., Global System for Mobile (GSM) communications network), Wi-Fi™ network, and so forth. 
       FIG.  2    depicts an exemplary workflow that can be utilized by modules of a system  200  for automatic creation of a customized avatar animation of a user, according to an example embodiment. Embodiments of the present disclosure provide for the customized computer animation to be generated by the system  200  in substantially real time (e.g., up to 15 seconds) for thousands of users at a same time, with minimal to no human intervention. To produce the customized avatar animations, parts of the process can be conducted in advance in a production workflow by a production module  210  of the system  200 , and other parts of the process may be conducted in real-time in a runtime workflow by a runtime module  220  of the system  200 . The production module  210  and the runtime module  220  may also produce other digital assets, such as an AR/VR scene, 3D object, and still images/photos. 
     In the production workflow, the system  200  creates scenes, garments, and avatars. In the runtime workflow, the system  200  determines which pre-generated avatars are closest in shape and dimensions to the user, and interpolates the closest avatars based on multiple dimensions of the user to generate an avatar representing the user. Each of these workflows is discussed in further detail below. 
     Production Workflow. 
     The production module  210  may be configured to receive production parameters. The production parameters may include parameters for creating animated 3D avatars. Based on the production parameters, the production module may create a multidimensional array of a plurality of blank avatars. The multidimensional array is a matrix of pre-generated 3D avatars (3D models) as shown in block  202 . Each blank avatar may have a predetermined number of frames and a plurality of features associated with each frame. In an example embodiment, the features may include a position of a body, position of body parts, color, lighting, presence of objects, tone, and so forth. 
     In exemplary embodiments, the multidimensional array is a matrix of 20 pre-generated avatars of different body shapes. Each of the pre-generated avatars may be provided with a garment proportionally sized based on body dimensions of the avatar. Garments may include clothes, accessories, shoes, and so forth, and may be provided by or associated with a seller, brand owner, advertiser, and so forth. The garments may be created by a garment designer as shown in block  204 . Each garment may be first designed as a 2D pattern  206 . Based on the 2D pattern  206 , 3D garments  208  may be created. The 3D garments  208  may include 3D models of garments. Based on the 3D garments  208 , a 3D mesh  212  of garments may be created. In exemplary embodiments, the 3D model of a garment that is input into the system  200  is based on a 3D computer-aided design (CAD) design of the garment. In other embodiments, the 3D model of a garment is derived from photogrammetry techniques. 
     The avatars may be pre-generated for each garment. While in one embodiment, 20 avatars are used, there can be fewer or more avatars in other embodiments, in a matrix of n×m size, where n is the number of avatar sizes and m is the number of garments. 
       FIG.  3    shows a matrix  300  of n pre-generated garmented avatars, according to an example embodiment. The matrix  300  may include a multidimensional array of pre-generated avatars  305 . The avatars  305  may be generated based on different body shapes  310 . The avatars  305  can be generated for each garment  315 , thereby creating the multidimensional array of pre-generated avatars  305 . 
     Referring back to  FIG.  2   , the avatars from the matrix of blank avatars may be (skeletally) rigged as shown in block  214 . In computer animation, rigging (also referred to as skeletal animation) is a technique in which an articulated object (e.g., a body) is represented by a surface representation used to draw the object (called the mesh or skin) and a hierarchical set of interconnected parts (called bones, and collectively forming the skeleton or rig) that act as a virtual armature used to animate (pose and keyframe) the mesh. Upon rigging, bones and joints are added to the 3D model of the avatar, such that the avatar has the ability to move the way that the bones and joints move, to produce a more realistic human-like animation. 
     Upon rigging and creating the 3D mesh of garments, the garments are added to the avatars and sized based on the sizes of the avatars, as shown in block  216 . 
     Each of 3D garments  208  is further draped in block  218  on each avatar. After the garments  208  are draped onto the avatars, a uniform topology can be enforced in an optional block  240  and weights for the garments can be calculated in an optional block  242 . A scene is added to each avatar in block  220 , and each of the 3D garments  208  is animated in block  222  using the cloth physical simulation in block  224 , resulting in 20 animated videos of garmented avatars for each garment. Thus, based on the production parameters, a multidimensional array of a plurality of blank avatar animations can be created, where each blank avatar animation has a predetermined number of frames and a plurality of features associated with each frame. 
     Furthermore, the production module  210  or the runtime module  220  can be further configured to capture a skin color from the images of the face or images of a body of the user. Based on the skin color, the production module  210  or the runtime module  220  may assign weights to skin tones of different body parts of avatars. The weights can be determined in the optional block  242 . An algorithm may automatically determine, based on the skin tone of a user cheek, a corresponding skin color for other body parts such as front of hands, back of hands, and so forth. The skin tone is not consistent across all body parts for most people, so the algorithm calculates weights for the skin on different body parts and allows a realistic rendering of the skin tone to be utilized for the 3D avatar of the user. 
     For an exemplary 15 second animation, the matrix of avatars includes garmented avatars running through a 360 frame animation for 15 seconds (24 frames per second results in 360 frames for 15 seconds) shown as a 360 frame mesh  256 . Specifically, the 360 frames may be composed into a 15 second animated video. As discussed herein, instead of a 360 frame animation, exemplary embodiments may produce 3D objects, AR/VR sequences, or stills pictures, as outputs. 
     Therefore, to ensure performance and quality, a matrix of pre-generated avatars is created for each garment. Having the matrix pre-generated in the production workflow prevents collisions between the garment and body parts that may occur when generating the animation for a user in real time at runtime. The production workflow ensures that all the garments are perfectly draped on the avatars during the production, the garments fit well the avatars, the garments are of the proper size, and no unwanted body parts are visible on the garmented avatar. 
     In some embodiments, accessories can be added to the avatars, which increases the size of the matrix. For example, if a tall shoe option and a low shoe option is added to each avatar, the size of the matrix is doubled. If a flat shoe option, mid heel shoe option, and tall heel shoe option is added to each avatar, the matrix triples in size. Similarly, if a purse or any other accessory is added to each avatar, the size of the matrix is multiplied. Further, for certain types of accessories, a same matrix can be utilized but with different animations. For example, if an avatar is holding a clutch or a purse, then the matrix needs to be expanded by adding the animated avatar in which the arm position of the animated avatar needs to be adjusted accordingly. 
     Another aspect of the production workflow is the cloth simulation while the avatar is moving. For example, if the animation includes a user walking down a runway and then does a 360 degree twirl, the garment will flow in a very specific way. In case of a long flowy dress, the cloth behaves a certain way and when the avatar twirls the cloth behaves in a different way. The physics simulation of how the garment moves with the avatar based on the weight of the cloth, and the garment and the animation, is a time-expensive calculation and a compute expensive calculation. Moving this step to the production workflow simplifies and speeds up the runtime workflow, enabling the system  200  to generate the garmented avatar for the user based on user parameter more quickly because the physics simulation has been already done. With the pre-generated cloth simulation, the system  200  produces a matrix of animated/simulated garmented avatars, and can choose between the avatars for 360 frames at runtime. While 360 frames are discussed herein as one example embodiment, there can be fewer or more frames in other embodiments. The techniques disclosed herein can be utilized to generate a photorealistic garmented avatar simulation of any length of time, any number of frames, and any number of frames per second. 
     Runtime Workflow. 
     When a user begins to use the system  200 , the runtime module  220  of the system  200  receives user parameters of the user. The user parameters may include body dimensions, hair, and images of the face of the user. In some example embodiments, the production parameters and the user parameters may further include one or more of the following: a scenario, a body position, a makeup, shoes, an accessory, an audio, a texture for the garment, a user video, a color of a garment, a user created garment, a pre-rolled video, and so forth. The scenario may include one or more of the following: a private jet scene, a yacht scene, a party scene, a club scene, and the like. In an example embodiment, the user parameters may be determined based on one or more images of a body of the user. Specifically, the user may use a user device to provide two images to the system  200 , for example, a front picture and a side picture of the user. In some embodiments, the user may also provide the body dimensions (e.g., height, chest measurement, waist measurement, hips measurements, wrist measurement, and so forth). An application associated with the system  200  may be running on the user device. The runtime module  220  may analyze the images of the user and capture body dimensions of the user based on the images. The images of the user may be analyzed. Based on the analysis, 70 mm-accurate dimensions of the body of the user may be determined. 
     Then, the runtime module  220  may select two blank avatar animations from the plurality of blank avatar animations pre-generated by the production module. The two blank avatar animations selected by the runtime module  220  may be the closest to the user based on the body dimensions. Specifically, the runtime module  220  can retrieve the matrix of animated videos of garmented avatars and selects two sample avatars that are closest in size to the dimensions of the user body. The two closest avatars in size may be one size smaller and one size larger than the size of the user. 
     The runtime module  220  may interpolate corresponding frames of the two blank avatar animations to produce frames of an interpolated avatar animation. Specifically, the animated videos for the two sample avatars with garments on them may be interpolated frame by frame in block  226  to create frames of a customized animated video of an avatar of the user. The weights for the interpolation can be calculated in the optional block  242 . An exemplary 15 second animated video results in 360 frames for each of the two blank avatar animations that are interpolated at runtime. The avatar of the user as well as the garment draping may be both interpolated at the same time, during the frame-by-frame creation of the garmented interpolated avatar animation. The interpolated avatar animation may be skeletally rigged. 
       FIGS.  4 A and  4 B  are schematic diagrams  400  and  450  illustrating the creation of an interpolated avatar, according to an example embodiment. The system may receive body parameters of the user, for example, a chest of size  4  and hips of size  18 . As shown in  FIG.  4 A , the system may select two blank avatar animations closest to the user based on the body dimensions. Specifically, the system may select a blank avatar animation  405  having a chest and hips of size  4  and a blank avatar animation  410  having a chest and hips of size  18 . The system may interpolate the blank avatar animation  405  and the blank avatar animation  410  to generate an interpolated avatar animation  415  having the body parameters of the user, namely a chest of size  4  and hips of size  18 . 
     The system may receive body parameters of the user, for example, a height of the user of 5′4″. As shown in  FIG.  4 B , the system may select two blank avatar animations closest to the user based on the body dimensions. Specifically, the system may select a blank avatar animation  455  having a height of 5′3″ and a blank avatar animation  460  having a height of 5′5″. The system may interpolate the blank avatar animation  455  and the blank avatar animation  460  to generate an interpolated avatar animation  465  having the body parameters of the user, namely, the height of 5′4″. 
     Referring again to  FIG.  2   , after the animated video of a user body wearing the garment is generated, a face and hair of the user may be customized onto the animated video. To this end, the runtime module  220  can use a machine learning technique to composite the face and the hair with the interpolated avatar animation in order to render the customized avatar animation. In an example embodiment, the machine learning may include Generative Adversarial Network (GAN). The customized avatar animation may be in the form of a 360-frame rendered video  234  (15 second animation). In an example embodiment, the pre-rendered accessories and scenes may be composited into the interpolated avatar animation as well. 
     By utilizing the matrix of pre-generated avatars as a starting point, at runtime the system  200  can simply run an interpolation algorithm, add a face and hair, and then render the interpolated avatar animation. This is a much simpler process than having to generate a garmented avatar at runtime for the user in real time. 
     After the interpolation algorithms are run, the garmented avatar of the user in form of the customized avatar animation may be rendered in block  228 . The rendering may be performed in a cloud server, on graphics processing units (GPUs) in a cloud farm, or on the user device. The rendering can be scaled dynamically. In an example embodiment, the rendered customized avatar may have a blank or stock face image and may be bald (no hair). At a later time, using deep learning and/or other machine learning algorithms, the face and hair of the user may be added in step  230  to the customized avatar animation. In exemplary embodiments, machine learning techniques such as the GAN can be utilized to composite the face and hair onto the animated garmented avatar in the customized avatar animation. 
     The face and hair of the user can be added to the animated garmented avatar as a post-production step. That is, the animated garmented avatar can be rendered with a blank face. The face of the user may be available to the system from images received from the user. Using machine learning algorithms, the face can be composed with the customized avatar animation of the garmented avatar for the user. Algorithmic models may be optimized and trained during the production and inference algorithms and GANs can be run at runtime to transfer the face of the user from a still image or a short video onto the customized avatar animation. 
     In another embodiment, the avatar animation can be pre-rendered without any garments, just a naked avatar moving such that an exact position of the face and hair can be determined. Once the dimensions of the user are received, blank avatars can be interpolated and a naked avatar of the user can be rendered. Upon generation of the avatar, the system  200  can create a video of only the face and hair of the user. Using machine learning algorithms, models, training, and inferences, the GANs can generate and then composite the face and hair of the user onto the target customized avatar animation. Thus, this provides a parallel flow where the face and hair can be generated in parallel to the generation of the interpolated avatar animation, instead of adding the face and hair to the interpolated avatar animation in a second step after the generation of the interpolated avatar animation. This allows the system  200  to only have to composite the scene in the final step of the process, instead of having to run machine learning algorithms in the final step of the process. 
     In a further embodiment, the face and hair of the user may be captured as a 3D image and added to the avatar using machine learning algorithms. This may occur in a parallel process to the rendering of the customized avatar animation. 
     In some embodiments, the customized avatar animation can be pre-rendered without garments when the user body dimensions are received by the system  200 . In this embodiment, the customized avatar animation can be pre-rendered with no garment (naked) to get a head position of the user. The face and hair of the user can be rendered in parallel to the generation of the naked avatar. As soon as the face and hair are received by the system, the system may start running the machine learning algorithm to generate the final customized avatar animation faster. 
     In the final step, audio can be added to the rendered scene with the customized avatar animation in block  232 . In some embodiments, the user can select the audio that needs to be added to the scene. In other embodiments, many different types of user-generated content can be available for the user to add to the rendered scene. For example, the user can manipulate texture of the garment by providing, for example, videos of the garment texture, thus allowing the avatar to do things in the digital world that are not possible in the real world. For example, instead of having simple plaid pattern on a garment, the avatar can have moving plaid, or a texture of the garment may be shown. Furthermore, user-generated content can include the ability for users to change the colors of the garment and create their own garments, shoes, accessories, and so forth. There are many different types of user-generated content that can be added to the rendered avatar in various embodiments. 
     In some embodiments, the customized avatar animation may begin with a view of the user walking down a runway of a fashion show on stage. While the user waits for the customized garmented avatar to be generated (typically up to 15 seconds), a pre-roll video may be rendered and shown to a user. In one example, the pre-roll video may include a scene of a fashion show. The pre-roll video may be a first person view showing what the user might view before the selected scene of the customized avatar animation starts. In the example of a fashion show scene, the pre-roll video may show what the user sees as they drive up to the fashion show in a limousine, walk down a red carpet with paparazzi, past the bouncers, big lights, and then onto the stage. The rendered animated scene can be customized for the user (i.e., the customized avatar animation). 
     As mentioned earlier, the rendering and/or compositing steps may occur on the user device  110 , in certain embodiments. In some embodiments, 3D objects may be sent to a cloud/cloud farm and animation and mesh generation can be calculated there. In the case of the AR or VR output, mesh animations may be sent to the cloud/cloud farm along with a material, lighting, and texturing list, and final rendering and compositing may occur on the user device. 
     After the final customized avatar animation has been generated for the user, customized avatar animation can be sent to the user device  110  for viewing via streaming or downloading in block  238  from a web browser or a dedicated software application operating on the user device  140 . The animation may further be encoded with one or more of: a compression technique, digital rights management information, encryption, blockchain, digital signature. Upon adding the customized avatar animation to the blockchain, the customized avatar animation may be digitally signed and a digital asset can be created. The digital asset can be shared and/or marketed. In some embodiments, the output video from the web services or on the user device may be transcoded or resized in block  236  based on the parameters of the user device. 
     Additionally, the band, quality, and/or resolution parameters may be adjusted to allow for optimal playback on the user device based on the size, processor, capabilities, current network availability, or other capacity limitations of the user device. The runtime module  220  may be further configured to perform one or more of the following actions on the customized avatar animation: render in a cloud on graphics processing units and cloud farms, scale based on demand, encode with a compression technique, encrypt, copy, protect, add to a blockchain, digitally sign, stream through an application on a mobile device or a web application, tag, and so forth. 
     Thus, the system  200  can receive dimensions of a user body and a 3D model of a garment as an input and output a photorealistic dressed avatar of the user that can be animated. In some embodiments, the output animation can be interactive. In other embodiments, multiple people may be placed in a scene together. 
       FIG.  5    is a schematic diagram illustrating interaction  500  of a user with the system  200  to obtain a customized avatar animation, according to an example embodiment. The system may receive user parameters from the user in block  505 . Specifically, the user may use a user device  110  to make and provide one or more pictures  510  of the user to the system. Upon receiving the user parameters, the system may receive a selection of a garment  515  from the user in block  520 . Upon receipt of the selection of the garment  515 , the system may select two blank avatar animations having parameters closets to the user parameters and produce an interpolated avatar animation  525  in block  530 . The system may further take a face  530  and hair of the user from the picture  510  and compose the face  530  and hair into the interpolated avatar animation  525  to create a customized avatar animation  535 . The system may render the customized avatar animation  535  on the user device  110 . 
     In an example embodiment, the production module or the runtime module may be further configured to receive a selection of a garment from the user and, upon receiving the selection of the garment, resize the garment for one or more of the plurality of blank avatar animations. The garment may be selected from one of the following: a user closet, an influencer closet, a brand closet, and so forth. The production module or the runtime module may be further configured to design a 3D garment using the resized garment. Upon designing the 3D garment, the 3D garment may be draped onto the one or more of the plurality of blank avatar animations. Upon draping, physics-based simulation may be performed on the draped 3D garment to render realistic movement of the 3D garment. In an example embodiment, the 3D garment may be designed and draped onto the one or more of the plurality of blank avatar animations simultaneously with the composition of the face and the hair with the interpolated avatar animation. The 3D garment may be designed using a photogrammetry, CAD, or other techniques. 
       FIG.  6    is a block diagram illustrating modules  600  of a system  200  for automatic creation of a customized avatar animation of a user, according to an example embodiment. The modules  600  of the system  200  may include modules running on a user device  110  associated with the user, modules running in a computing cloud  125 , and a database  230  that may include multiple databases. 
     The modules running on the user device  110  may include an operating system (such as iOS  605  or Android operating system  610 ), a browser running a webpage  615  associated with the system  200 , a user measurement module  620  enabling the user to provide parameters of the user, a hair selection module  625  enabling the user to select/change a hairstyle for the customized avatar animation, a scene selection module  635  enabling the user to select a scene for the customized avatar animation, and a playback module  640  enabling the user to playback the customized avatar animation on the user device  110 . The modules running on the user device  110  may further include an accessory selection module  645  enabling the user to select/change accessories for the customized avatar animation, a makeup selection module  650  enabling the user to select/change makeup for the customized avatar animation, and a sharing module  655  enabling the user to share the customized avatar animation, for example, in social networks, in messaging application, via email, and so forth. In an example embodiments, the modules of the user device  110  may be implemented by a processor of the user device  110 . 
     The modules running on the computing cloud  125  may include a garment manager module  660 , an avatar manager module  662 , a scene manager module  664 , an image analyzer module  666 , a user manager modules  668 , a face transfer module  670 , a hair transfer module  672 , a compose engine  674 , an accessory selection module  676 , a user measure application programming interface  678 , a cloth simulation module  680 , a rendering module  682 , an animation engine  684 , and an avatar dressing module  686 . 
     The databases  230  of the system  200  may include an avatar database  688 , a garment database  690 , a user scene store  692 , and an accessory database  694 . 
       FIG.  7    is a block diagram showing a runtime session  700  performed by a system for automatic creation of a customized avatar animation of a user, according to an example embodiment. The runtime session  700  may commence with receiving the description  705  of a user avatar. The description  705  of the user avatar may include body dimensions of the user or images of the user body. The system  200  may further receive garment and scene selection  710  from the user. In block  715 , the system  200  may create a customized avatar  720  of the user by selecting, based on the description  705  of the user, a set of the nearest fit avatars from an avatar database and interpolating the set of the nearest fit avatars to generate the customized avatar  720 . 
     In block  725 , the system  200  may adapt animation to the customized avatar  720  of the user to generate an adapted reference animation  735  (i.e., an interpolated avatar animation). The animation may be adapted based on reference avatar animation  730 . The reference avatar animation  730  may be taken from a database  230 . The database may store reference avatar animations, scene plates, camera and lighting data, and so forth. 
     In block  740 , the system  200  may perform garment simulation to provide a simulation  745  (i.e., an interpolated garment animation). The adapted reference animation  735  can be used for garment interpolation and simulation at block  740 , where it can be further modified to conceal portions of a simulation mesh of the avatar by covering them with by the interpolated garment. The garment simulation can be performed using the interpolation algorithms based on a set of nearest fit garments  750  from a 3D mesh of garments. The nearest fit garments  750  may be selected from a database  755  storing simulation meshes of garments including sized avatars  760  and sized garments  765 . 
     The system  200  may further receive scene data  770  from the database  230 . The scene data may include data related to accessories, plates, camera data, and lights. The system  200  may further receive face/hair integration data  775 . Based on the simulation  745 , the scene data  770 , and the face/hair integration data  775 , the system  200  may render a video in block  780 . The video may include the customized avatar animation. The rendering  780  may be performed either on a client side (on the user device  110 ) or on a server-side (in a cloud with displaying the rendered customized avatar animation on the user device  110 ). The user device  110  used for displaying the rendered customized avatar animation may act as one of output devices for the system  200 . 
     In an example embodiment, the system  200  may further include or be in communication with a three-dimensional (3D) printer  785 . The 3D printer  785  may be configured to construct a 3D object based on a model, such as a computer-aided design (CAD) model or a digital 3D model. The system  200  may send data related to the interpolated garment animation (i.e., an output in a form of the simulation  745 ) to the 3D printer  785 . In block  790 , upon receiving the data related to the interpolated garment animation, the 3D printer  785  may print a 3D garment in a form of a physical 3D object based on the received data. The received data associated with the simulation  745  may be used by the 3D printer  785  as a digital 3D model for printing the 3D garment. The 3D printing may be performed by depositing, joining, and/or solidifying a pre-selected material and using other applicable technological processes under computer control to create the 3D garment. In some embodiments, the 3D printing may be performed by a digitally driven loom and/or by any of stitching, weaving, or patterning processes for cloth. The pre-selected material for 3D printing may include plastics, metals, powders, resins, carbon fibers, or any other material applicable for 3D printing. Therefore, the 3D printer  785  used for 3D-printing the 3D garment may act as an output device for the system  200 . 
       FIG.  8    is a flow diagram that shows a method  800  for automatic creation of a customized avatar animation of a user, according to an example embodiment. The method  800  can be performed by processing logic that may be implemented in hardware (e.g., dedicated logic, programmable logic, or microcode), software (such as software run on a general-purpose computer system or a dedicated machine), or a combination of both. In one example embodiment, the processing logic is collocated with the production module  210  and the runtime module  220  (for instance, they may all execute on the same server). 
     The method  800  can commence at operation  805  with receiving, by a production module, production parameters. The production parameters may include one or more of the following: a scenario, a body position, make up, shoes, accessories, an audio, a texture for the garment, a user video, a color of a garment, a user created garment, a pre-rolled video, and so forth. 
     The method  800  may further include creating at operation  810 , by the production module, based on the production parameters, a multidimensional array of a plurality of blank avatar animations. Each blank avatar animation may have a predetermined number of frames and a plurality of features associated with each frame. 
     The method  800  may further include receiving at operation  815 , by a runtime module, user parameters. The user parameters may include body dimensions, hair, and images of a face of a user. The user parameters may further include one or more of the following: a scenario, a body position, make up, shoes, accessories, an audio, a texture for the garment, a user video, a color of a garment, a user created garment, a pre-rolled video, and so forth. 
     The method  800  may further include selecting at operation  820 , by the runtime module, two blank avatar animations from the plurality of blank avatar animations. The two blank avatar animations may be closest to the user based on the body dimensions. The method  800  may further include interpolating at operation  825 , by the runtime module, corresponding frames of the two blank avatar animations to produce an interpolated avatar animation. In an example embodiment, the predetermined number of frames is 360. 
     The method  800  may further include compositing, by the runtime module, at operation  830 , the face and the hair with the interpolated avatar animation to render the customized avatar animation. The face and the hair may be composed with the interpolated avatar animation using a machine learning technique. 
     In an example embodiment, the method  800  may further include receiving a selection of a garment from the user and resizing the garment for one or more of the plurality of blank avatar animations. Upon resizing, a 3D garment may be designed using the resized garment. The 3D garment may be draped onto the one or more of the plurality of blank avatar animations. The 3D garment may be designed and draped onto the one or more of the plurality of blank avatar animations simultaneously with the composition of the face and the hair with the interpolated avatar animation. Upon draping, physics-based simulation on the draped 3D garment may be performed to render realistic movement of the 3D garment. 
     In an example embodiment, the method  800  may further include capturing a skin color from the images of the face and assigning, based on the skin color, weights to skin tones of different body parts of avatars. 
       FIG.  9    shows a diagrammatic representation of a computing device or a machine in, for example, the electronic form of a computer system  900 , within which a set of instructions for causing the machine to perform any one or more of the methodologies discussed herein can be executed. In some embodiments, the machine operates as a standalone device, while in other embodiments it can be connected (e.g., networked) to other machines. In a networked deployment, the machine can operate in the capacity of a server, a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine can be or comprise a personal computer (PC), tablet PC, cellular telephone, web appliance, network router, switch, bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that separately or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methods discussed herein. 
     In an illustrative embodiment, the computer system  900  comprises at least one processor  905  (e.g., a central processing unit, a GPU, and so on, singly or in combination), and a memory, which in this example comprises a main memory  910  and a static memory  915 . The computer system  900  may further comprise a video display  925 , a signal generation device  940  (e.g., a speaker), and a network interface device  945 . In addition, the computer system  900  may comprise at least one input device  930 , such as an alphanumeric input device (e.g., a keyboard), a cursor control device (e.g., a mouse), a microphone, a digital camera, and so forth. Communication among the components may be accomplished via a bus  920 . It will be apparent to one of ordinary skill in the art that the computer system  900  can be implemented in a variety of ways—to give just one example, a speech processing system can be used in place of the video display unit  925  and input device  930 . 
     A drive unit  935  includes a computer-readable medium  950 , which stores one or more sets of instructions  955  and data embodying or utilized by any one or more of the methods or functions described herein. The instructions  955  can also reside, completely or at least partially, within the main memory  910  and/or within the processors  905  during execution thereof by the computer system  900 . The main memory  910  and the processors  905  also constitute machine-readable media. 
     The instructions  955  can further be transmitted or received over a communications network  960  via the network interface device  945  utilizing any one of a number of well-known transfer protocols (e.g., Hyper Text Transfer Protocol (HTTP), Controller Area Network, Serial, and Modbus). The communications network  960  may include the Internet, local intranet, PAN, LAN, WAN, Metropolitan Area Network, VPN, a cellular network, Bluetooth radio, or an IEEE 802.9-based radio frequency network, and the like. 
     While the computer-readable medium  950  is shown in an example embodiment to be a single medium, the term “computer-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term “computer-readable medium” shall also be taken to include any medium that is capable of storing, encoding, or carrying a set of instructions for execution by the machine and that causes the machine to perform any one or more of the methods of the present application, or that is capable of storing, encoding, or carrying data utilized by or associated with such a set of instructions. The term “computer-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical and magnetic media. Such media can also include, without limitation, hard disks, floppy disks, flash memory cards, digital video disks, random access memory, read only memory, and the like. 
     The example embodiments described herein can be implemented in an operating environment comprising computer-executable instructions installed on a computer, in software, in hardware, or in a combination of software and hardware. The computer-executable instructions can be written in a computer programming language or can be embodied in firmware logic. If written in a programming language conforming to a recognized standard, such instructions can be executed on a variety of hardware platforms and for interfaces to a variety of operating systems. Although not limited thereto, computer software programs for implementing the present method can be written utilizing any number of suitable programming languages such as, for example, HyperText Markup Language (HTML), Dynamic HTML, Extensible Markup Language, Extensible Stylesheet Language, Document Style Semantics and Specification Language, Cascading Style Sheets, Synchronized Multimedia Integration Language, Wireless Markup Language, Java™, Jini™, C, C++, C#, .NET, Adobe Flash, Perl, UNIX Shell, Visual Basic or Visual Basic Script, Virtual Reality Markup Language, ColdFusion™ Objective-C, Scala, Clojure, Python, JavaScript, HTML5 or other compilers, assemblers, interpreters, or other computer languages or platforms, as one of ordinary skill in the art will recognize. 
     Thus, systems and methods for automatic creation of a customized avatar animation of a user have been described. Although embodiments have been described with reference to specific example embodiments, it will be evident that various modifications and changes can be made to these example embodiments without departing from the broader spirit and scope of the present application. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.