Layered clothing conforming to underlying body and / or clothing layer
The automatic cage-to-cage fitting technique in 3D avatars allows for customizable and flexible fitting of clothing layers over underlying layers, addressing the limitations of predefined shapes in existing methods by enabling independent creation and customization of avatars and clothing.
Patent Information
- Application Number
- JP2025065102
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2021-07-14
- Filing Date
- 2025-04-10
- Publication Date
- 2025-07-23
- Estimated Expiration
- 2042-02-04
AI Technical Summary
Existing methods for providing clothing and accessories for 3D avatars in electronic games require complex calculations and close collaboration between body and clothing creators due to predefined shapes, limiting customization and flexibility.
An automatic cage-to-cage fitting technique is employed, allowing any body geometry to fit with any clothing geometry by mapping inner feature points of clothing items to outer feature points of existing layers, enabling independent creation and customization of avatars and clothing without complex calculations.
This technique separates the work of avatar and clothing creators, enabling customizable and flexible fitting of clothing layers over underlying layers, supporting diverse avatar shapes and sizes without the need for intensive user input or graphics processing.
Smart Images

Figure 2025108557000001_ABST
Abstract
Description
Technical Field
[0001] Cross - Reference to Related Applications This application claims priority to U.S. Patent Application No. 17 / 375,066, filed on July 14, 2021, which claims priority under 35 U.S.C. § 119(e) to U.S. Provisional Patent Application No. 63 / 161,376, filed on March 15, 2021, and both of these applications are hereby incorporated by reference in their entirety.
[0002] This disclosure generally relates to computer graphics, and more particularly, but not exclusively, to methods, systems, and computer - readable media for providing a graphical representation of overlaid clothing, such as overlaid clothing for a 3D avatar in an electronic game or other three - dimensional (3D) environment, on underlying graphic objects.
Background Art
[0003] Multi - user electronic game environments typically involve the use of avatars that represent players within the electronic game. The avatars are often three - dimensional (3D) avatars, and their 3D geometries / shapes are different for each avatar. For example, avatars may have various body shapes (e.g., tall, short, muscular, thin, male, female, human, animal, alien, etc.), the number and type of limbs, and can be customized by multiple pieces of clothing and / or accessories worn by the avatar (e.g., a shirt worn over the torso, a jacket worn over the shirt, a scarf worn over the jacket, a hat worn on the head, etc.).
[0004] To provide clothing and / or accessories for an avatar, game developers conventionally use a unified topology for the body and clothing so that the geometry of the clothing matches the geometry of the body. Thus, these techniques achieve some basic geometric matching between the clothing and the body using predefined shapes. However, such techniques provide limited ability to customize body shapes and clothing (due to the presence of predefined shapes).
[0005] When further customization is needed (e.g., due to non-uniform body shapes and clothing of the avatar), more intensive user input and graphics processing programming are required. For example, these techniques require the creator user (e.g., the one providing clothing items and / or different body shapes) to perform complex calculations to graphically generate clothing having a geometry that matches the geometry of the body. These processes are complex and also require close cooperation and collaboration between the body shape creator and the clothing creator. SUMMARY OF THE INVENTION MEANS FOR SOLVING THE PROBLEM
[0006] According to a first aspect, a method implemented by a computer provides draped clothing on a three-dimensional (3D) avatar. The method includes identifying body feature points of a body cage of a 3D avatar having an avatar body; mapping inner feature points of an inner cage of a first clothing item to the body feature points of the body cage to obtain a deformed first clothing item that fits the avatar body; fitting the deformed first clothing item onto the avatar body by at least partially enclosing the avatar body with the deformed first clothing item; To obtain a deformed second garment that conforms to the outer cage of the first garment, mapping the inner feature points of the inner cage of the second garment to the outer feature points of the outer cage of the deformed first garment; Fitting a deformed second garment over an avatar body having a deformed first garment fitted thereon by at least partially wrapping the avatar body with the deformed second garment.
[0007] According to another aspect, there is provided a non-transitory computer-readable medium storing instructions that, when executed by a processor, cause the processor to perform or control the performance of operations. The operations are Identifying body feature points of a body cage of a 3D avatar having an avatar body; Mapping inner feature points of an inner cage of a first garment to the body feature points of the body cage to obtain a deformed first garment that conforms to the avatar body; Fitting the deformed first garment over the avatar body by at least partially wrapping the avatar body with the deformed first garment; Mapping inner feature points of an inner cage of a second garment to outer feature points of an outer cage of the deformed first garment to obtain a deformed second garment that conforms to the outer cage of the first garment; Fitting the deformed second garment over the avatar body by at least partially wrapping the avatar body having the deformed first garment fitted thereon with the deformed second garment.
[0008] According to yet another aspect, A display device operable to present a three-dimensional (3D) avatar having overlapping garments; A memory storing a game application; A processor coupled to a display device and a memory and operable to execute a game application stored in the memory, the game application causing the processor to identify feature points of a body of a body cage of a 3D avatar having an avatar body, map inner feature points of an inner cage of a first garment to the feature points of the body of the body cage to obtain a deformed first garment that fits the avatar body, fit a deformed first garment onto the avatar body by at least partially wrapping the avatar body with the deformed first garment, map inner feature points of an inner cage of a second garment to outer feature points of an outer cage of the deformed first garment to obtain a deformed second garment that fits the outer cage of the first garment, and fit a deformed second garment onto the avatar body by at least partially wrapping the avatar body having the deformed first garment fitted thereon with the deformed second garment, or is executable by the processor to cause or control the execution of operations including the operations. An apparatus including a processor is provided.
Brief Description of the Drawings
[0009]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6A
Figure 6B
Figure 6C
Figure 6D
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11
Figure 12
Figure 13
Best Mode for Carrying Out the Invention
[0010] In the following detailed description, reference is made to the accompanying drawings which form a part hereof. In the drawings, generally, like reference numerals identify like components unless the context indicates otherwise. The illustrative embodiments described in the detailed description, the drawings, and the claims are not intended to be limiting. Other embodiments may be utilized and other changes may be made without departing from the spirit or scope of the subject presented herein. The aspects of the present disclosure as described and illustrated herein can be arranged, replaced, combined, divided, and designed in a variety of different configurations, and all of those configurations are contemplated herein.
[0011] References in this specification to "one embodiment," "an embodiment," "exemplary embodiment," etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, such feature, structure, or characteristic may be implemented in connection with other embodiments whether or not explicitly described.
[0012] The present disclosure addresses the above-mentioned drawbacks in a 3D environment by using an automatic cage-to-cage fitting technique for 3D avatars. This technique enables any body geometry to fit with any clothing geometry, including enabling a layer of clothing to fit on top of a lower layer of clothing, thereby providing customization without the restrictions imposed by a predefined geometry or the need for complex calculations to fit clothing items to any body shape of the avatar or other clothing items. Also, cage-to-cage fitting is algorithmically executed by a game platform or game software (or any other platform / software operating to provide a 3D environment) without requiring an avatar creator (also referred to as an avatar body creator or body creator) or a clothing item creator to perform complex calculations. As used herein, the term "clothing" or "clothing item" is understood to include clothing and accessories, as well as any other item that can be placed on an avatar in relation to a particular part of the avatar cage.
[0013] The implementations described herein enable the work of an avatar body creator to be separated from the work of a clothing creator. For example, an avatar body creator can create a body with a geometry of any desired / customized shape and size and publish the body to a body library hosted by a 3D platform. A clothing creator can independently create a general template for any clothing, such as a shirt, pants, etc., and publish the clothing template to a clothing library hosted by a 3D platform.
[0014] For purposes of illustration and explanation only, various embodiments are described herein in the context of 3D avatars used in 3D games provided by a game platform. It is understood that such a game environment is merely an example. Other implementations of the cage-to-cage layering technique described herein may be applied to other types of 3D environments such as virtual reality (VR) meetings, 3D sessions (e.g., online lectures or other types of presentations including 3D avatars), augmented reality (AR) sessions, or other types of 3D environments that may include one or more users represented within the 3D environment by one or more 3D avatars.
[0015] During execution in a game or other 3D session, a player / user accesses a body library to select a particular body and accesses a clothing library to select clothing to place on the selected body. Then, the 3D environment platform presenting the avatar implements a cage-to-cage fitting technique to adjust the clothing (by automatically determined suitable deformations) to conform to the shape of the body, thereby automatically fitting the clothing to the body (and any intermediate layers if worn by the avatar). The user can further select additional clothing to fit over the underlying clothing (layered clothing), and the additional clothing deforms to match the geometry of the underlying clothing.
[0016] The implementations described herein are based on the concepts of "cages" and "meshes". The mesh of a body is the actual visible geometry of the avatar. The mesh of a body can include graphic representations of arms, legs, torso, head, etc. and can be of any shape, size, and geometric topology. Similarly, a clothing mesh can be any arbitrary mesh that graphically represents clothing such as a shirt, pants, hat, shoes, or a part thereof.
[0017] In comparison, the cage represents an envelope of feature points around the avatar body that is much simpler than the body mesh and has a weak correspondence with the corresponding vertices of the body mesh. As will be explained in more detail below, the cage may be used to represent not only a set of feature points on the avatar body but also a set of feature points on the clothing.
[0018] Figure 1 shows an exemplary body cage 100 according to some implementations. The body cage 100 of the example of Figure 1 is an outer cage that encloses or is overlaid on the outer surface / contour of a mannequin-like human body shape that acts as a mannequin.
[0019] The body cage 100 includes a plurality of feature points 102 that define, or otherwise specify, or correspond to the shape of the mannequin. In some implementations, the feature points 102 are formed by the vertices of line segments / sides 104 of a plurality of polygons (or other geometric shapes) on the mannequin. In some implementations, the feature points 102 may not necessarily be formed by the vertices of any polygon and may be discrete points.
[0020] The body cage 100 of Figure 1 provides an example of a low-resolution body cage having 642 feature points (or some other number of feature points) related to the geometry of a human body excluding the fingers. Other examples may use a body cage having 475 feature points. For example, a body cage of a human geometry including fingers may have 1164 feature points (or some other number of feature points). A higher-resolution body cage may include 2716 feature points (or some other number of feature points). These numbers (and ranges thereof) of feature points are merely some examples - the number of feature points may vary from implementation to implementation depending on factors such as the desired resolution, the processing power of the 3D platform, user preferences, the size / shape of the mannequin, etc.
[0021] The cage may be provided for any arbitrary avatar body shape or clothing shape. For example, FIG. 2 shows another exemplary body cage 200 according to some implementations. The body cage 200 in the example of FIG. 2 is an outer cage that encloses or is overlaid on the outer surface / contour of the body shape of a general game avatar. Compared with the body cage 100 in FIG. 1, the body cage 200 in FIG. 2 may have the same number of feature points. In other implementations, the body cage 200 may have a different number of feature points, such as fewer or more feature points 202, compared with the body cage 100, as a result of different (simpler or more complex) geometric shapes of the game avatar and / or based on other factors. Therefore, the number of feature points for each body cage may be appropriately selected for different body shapes or other body properties.
[0022] In some implementations, for bandwidth and performance / efficiency purposes or for other reasons, the number of feature points may be reduced to a number less than the number given above, such as 475 feature points (or some other number of feature points). Further, in some implementations, the feature points (vertices) within the body cage may be arranged in 15 groups, each representing a part of the body shape. FIG. 3 shows an example of a portion of a body cage 300 grouped into corresponding body parts according to some implementations.
[0023] More specifically, the 15 body parts shown in FIG. 3 may be, with respect to a humanoid mannequin, the head, torso, hips, right leg, left leg, left lower leg, right lower leg, left upper leg, right upper leg, left hand, right hand, left forearm, right forearm, left upper arm, and right upper arm. The number of parts of any body shape may be more or less than the 15 body parts shown. For example, a "one-armed" avatar character may have 12 body parts (instead of 15) since the hand, forearm, and upper arm are omitted. Further, other body shapes may include a lesser or greater number of body parts depending on factors such as the body's geometry, the desired resolution, processing power, type of avatar character (e.g., animal, alien, monster, etc.).
[0024] Each of the 15 groups / parts of FIG. 3 includes feature points that define that part of the avatar body. And in turn, such a group of feature points can be mapped to the corresponding clothing. For example, the feature points within the body cage 300 that define the left / right forearms, left / right upper arms, and torso may be used as an outer cage that maps to the inner cage of a jacket in that the graphical representation of the jacket consists of a graphical mesh that logically and correspondingly fits the left / right arms and torso of the avatar body to render the left / right arms and torso of the jacket.
[0025] Furthermore, this division into a plurality of groups (as shown in FIG. 3) enables a customized fitting of the garment to an atypical body shape. For example, the 3D avatar may be in the form of a "one-armed" avatar character without a left arm. Thus, the body cage of the 3D avatar lacks a group of feature points corresponding to the left hand, left forearm, and left upper arm. Subsequently, when a jacket is selected to fit over the 3D avatar, the right forearm, right upper arm, and torso of the jacket can be deformed to fit the corresponding right forearm, right upper arm, and torso of the 3D avatar (body mannequin), and the left forearm and left upper arm of the jacket are not deformed (e.g., remain fixed in their original form from their parent space) because there is no cage for the left arm of the body mannequin to be deformed.
[0026] FIG. 4 shows an example of a garment layer 400 deformed over a body cage (such as body cage 300 shown in FIG. 3) according to some implementations. The garment layer 400 is a graphic representation of a jacket (shown in FIG. 4 with a gray shading) having parts that may be generated / rendered using a polygon mesh 402 consisting of a set of vertices, edges, and faces.
[0027] The garment layer 400 includes an inner cage (not shown in FIG. 4) having feature points corresponding to the feature points of the body cage 300. In particular, the feature points of the inner cage of the garment layer 400 are mapped to the feature points of the body cage 300 that make up the left and right forearms, left and right upper arms, and torso. In some implementations, this mapping includes directly mapping the feature points of the inner cage of the garment layer 400 to the coordinate positions of the corresponding feature points of the arms and torso of the body cage 300. Such a mapping may include a 1:1 correspondence when both cages have the same number of feature points, and the mapping may be n:1 or 1:n (where n is an integer greater than 1), in which case multiple feature points within one cage may be mapped to the same feature point of the other cage (or some feature points may not be mapped).
[0028] The clothing layer 400 includes an outer cage having feature points that are spaced from corresponding feature points of its inner cage of the clothing layer 400 and are linked to those corresponding feature points. The feature points of the outer cage of the clothing layer 400 define or are otherwise located along the contour / geometry of the outer surface of the jacket so as to define features such as the hood 404 of the jacket, the cuffs 406, the straight-cut torso 408, etc.
[0029] According to various implementations, the spatial distance (e.g., the spatial distance between a feature point of the inner cage of the clothing layer 400 and a corresponding feature point of the outer cage of the clothing layer 400) is kept constant during the fitting of the clothing layer 400 to the outer cage of an existing layer (or avatar body). In this way, the feature points of the inner cage of the clothing layer 400 may be mapped to the feature points of the body cage 300 such that the inner side of the jacket "fits" the torso and arms of the avatar. And, while keeping the distance between the feature points of the inner cage of the clothing layer 400 and the corresponding feature points of the outer cage of the clothing layer 400 constant, the outer contour of the jacket is also deformed to conform to the shape of the avatar body, thereby resulting in at least partially maintaining the visual appearance (graphic representation) of the features of the hood, cuffs, straight-cut torso, and other surfaces of the jacket while simultaneously conforming to the shape of the avatar body as shown in FIG. 4. In this way, the clothing layer 400 can be deformed in any suitable way to fit any arbitrary shape / size of an avatar body (body cage), such as tall, short, slim, muscular, humanoid, animal, alien, etc.
[0030] In some implementations, an additional clothing layer on top of other clothing layers may be placed (e.g., in response to a user's selection). FIG. 5 shows an example in which, in some implementations, a clothing layer of FIG. 4 and a portion of the body cage 300 are used to form an outer cage 500. More specifically, the feature points of the outer cage of the clothing layer 400 of FIG. 4 are now combined with the feature points of the body cage 300 such that they result in a composite outer cage 500 consisting of the feature points of the exposed portion of the body cage 300 and the feature points along the outer surface of the jacket. For example, the exposed outer surface of the jacket (formed by the jacket body, hood, and sleeves) provides one set of feature points, and the exposed legs, hands, head, and a portion of the chest of the body not covered by the jacket provide another set of feature points, and these two sets of (combined) feature points provide the feature points of the outer cage 500.
[0031] The feature points of the outer cage 500 of FIG. 5 that correspond to and define the outer surface / shape of the jacket may be the same as the feature points of the outer cage of the clothing layer 400 of FIG. 4. In some implementations, different and / or additional and / or fewer feature points may be used for the jacket region of the outer cage 500 compared to the feature points of the outer cage of the jacket (clothing layer 400) of FIG. 4. For example, if a higher resolution or a tighter fit is desired for the next layer of clothing on top of the outer cage 500, additional feature points may be calculated for the outer cage 500 encompassed by the jacket area (compared to the outer cage of the clothing layer 400 of FIG. 4). Similarly, if a lower resolution or a less tight fit is desired for the next layer of clothing on top of the outer cage 500, and / or due to other considerations such as an improvement in processing / bandwidth efficiency provided by using as few feature points as possible, feature points may be calculated for the outer cage 500 encompassed by the jacket area (compared to the outer cage of the clothing layer 400).
[0032] During operation, if the user wants to fit an additional clothing layer (such as an overcoat or other clothing) over the jacket (clothing layer 400) and / or over other parts of the avatar body, the feature points of the inner cage of such an additional clothing layer are mapped to the corresponding feature points of the outer cage 500. Thus, the deformation (e.g., fitting) can be performed in a manner similar to the method described in relation to FIG. 4.
[0033] Thus, according to the examples of FIGS. 4 and 5 regarding layering clothing, by matching the feature points of the "outer cage" (body cage 300) of the avatar body with the feature points of the "inner cage" of the first layer of clothing, the first layer of clothing (clothing layer 400) is wrapped around the body. This matching may be performed in the UV space of the cages such that it does not need to depend on the exact number of feature points that exactly match between the inner and outer cages. For example, the feature points may be vertices that have both position and texture space coordinates. The texture space coordinates are typically represented in the range of [0,1] with respect to U and V coordinates respectively. The texture space may be considered a "unwrapped" normalized coordinate space with respect to the vertices. By performing the correspondence of two sets of vertices in the UV space and not using the positions of those vertices, the correspondence between the vertices is performed in the normalized space, thereby removing the difficult requirement of an exact index mapping between the vertices.
[0034] According to the technology described in this specification, each avatar body and clothing item is thus associated with an "inner cage" and an "outer cage". In the case of an avatar body, the inner cage represents the default "mannequin" (different mannequins may be provided for different avatar body shapes), and the "outer cage" of the avatar body represents an envelope around the shape of the avatar body. With respect to a clothing item, the "inner cage" represents the inner envelope used to define how the clothing item wraps the underlying body (or the body on which the previous clothing layer is already fitted thereon), and the "outer cage" represents how the next clothing layer wraps around this particular clothing item when worn on the avatar body.
[0035] Figures 6A - 6D show examples of layered clothing deformed over the body shapes of various avatars according to some implementations. Figure 6A shows a mannequin 600 in the shape of a general - purpose game player having an outer cage consisting of 15 groups of feature points as described above in relation to Figure 3. And Figure 6A shows different types of clothing that fit exactly to the shape / size of the mannequin 600, namely, 602 (shirt and shorts), 604 (shirt, pants, and sneakers), 606 (dress), 608 (blouse, skirt, and shoes), 610 (summer dress), and 612 (armor). Further, the mannequin 600 can also be "skinned" with other external graphical features such as the gray skin and smiling face in Figure 6A.
[0036] Figure 6B shows a mannequin 614 having a different shape / size (e.g., a muscular build and definition) from the mannequin 600 in Figure 6A. Further, 616 - 626 show protective clothing that fits exactly on the mannequin 614, and then shows the same items of the clothing in Figure 6A that are deformed to fit as an additional layer over the protective clothing.
[0037] Figure 6B shows another mannequin 628 having a different (e.g., slimmer) shape / size than mannequin 614. Mannequin 628 has a blackish shirt, blackish leggings, and boots that fit snugly on it as shown at 630 - 640, and then has the same items of the clothing of Figure 6A that are deformed to fit snugly as an additional layer over the blackish shirt, blackish leggings, and boots.
[0038] Figure 6C shows mannequins 642 and 656 of different shapes and sizes, and both mannequins have their skins set at 644 - 654 and 658 - 666 respectively to look like a "monster" (e.g., an avatar with horns, claws, fangs, a face like a fierce animal, and other decorations). And further, 644 - 654 and 658 - 666 show the same items of the clothing of Figure 6A that are deformed to fit snugly as a clothing layer over the surface shape / features of the monster.
[0039] Figure 6D shows a mannequin 668 having a different shape / size (e.g., a larger build) than mannequin 628 of Figure 6B. Mannequin 668 has a blackish shirt, blackish pants, and sneakers that fit snugly on it as shown at 670 - 680, and then has the same items of the clothing of Figure 6A that are deformed to fit snugly as an additional layer over the blackish shirt, blackish pants, and sneakers.
[0040] Figure 6D also shows another mannequin 682 in the form of an "alien" (e.g., an avatar having a non - humanoid head / arm / leg shape), and 684 - 694 further shows the mannequin 682 with its skin set for alien features and / or alien clothing. Then, 684 - 694 shows the same items of the clothing of Figure 6A that are deformed to fit snugly as a clothing layer over the features / clothing of the monster.
[0041] According to various implementations, the mapping between the feature points of the inner cage and the outer cage can be performed using radial basis function (RBF) interpolation techniques. A set of RBFs (e.g., functions whose output depends on the distance between the input and some fixed point) calculates and stores the distance between the vertices of the mesh (feature points of the outer cage) and an implicit surface defined by a set of feature points of the inner cage.
[0042] The cage may be mathematically represented as a set of points in 3D space with corresponding normalized 2D UV coordinates. The calculations may be optimized by solving a system of linear equations, and solving the system of linear equations can use a highly vectorized compute structure. The technical advantages may include at least the following. - Embodiments support wrapping of clothing around any body without a shared topology that can be constructed independently of the cage, - Maintenance of distances (e.g., the relative distance between the vertices of the body and the vertices of the clothing is maintained by the intermediate cage during the RBF deformation step), and - Embodiments can handle large mesh deformations caused by translation, rotation, and deformation of the 3D mesh.
[0043] The RBF can be represented by a dictionary <key, value> data structure or be analogous to a dictionary <key, value> data structure. For example, Key = 1, Value = 100 Key = 2, Value = 200 rbf(1) = 100 rbf(2) = 200 rbf(1.5) = 150
[0044] In various implementations, an RBF function with key-value pairs <key, value> has the form rbf<key, value> for each pair of feature points, where key = the vertex position of the inner cage and value = the vertex position of the outer cage.
[0045] As an example, rbf<key, value> = 100 is set as the output of the RBF function, and the output of "100" is maintained (kept constant) for all RBF functions applied to all pairs of a feature point within the inner cage of the next layer and the corresponding feature point of the outer cage of the existing layer. Thus, when the vertex position of feature point 1 within the outer cage (of the existing layer) is given as input to this RBF function, the value of the corresponding feature point 1 within the inner cage (of the next layer) is calculated by the RBF function to be rbf<vertex position of feature point 1 within the inner cage, vertex position of the corresponding feature point 1 within the outer cage> = 100. And the RBF function (computation) is continuously executed for the vertex positions (feature points) of each outer cage of the existing layer such that the vertex position of the corresponding feature point of the inner cage (of the next layer) is specified / interpolated from the known vertex positions of the existing feature points within the outer cage and such that the output "100" of the RBF function is maintained for all RBF functions. In this way, the next layer can be deformed to fit the existing layer.
[0046] Further details of an exemplary RBF technique may be ascertained by referring to FIGS. 7 and 8. Starting with FIG. 7 first, FIG. 7 shows a diagram 700 representing the initial state of the layers according to some implementations. The inner cages of each of the four layers (e.g., layer 0 to layer 3, where layer 0 is the bottommost layer and goes up towards layer 3 which is the topmost layer) are shown at 702, while the outer cages of layers 0 to 3 are shown at 704. The bottommost layer 0 may be the body cage or the first layer of clothing disposed on the body cage. In the initial state of FIG. 7, at the points of the positions of the vertices (feature points) of the inner cage 702 and the outer cage 704, all the layers are the same (e.g., having the same values with respect to the vertex positions across the layers). Thus, the position of the vertex (feature point) within the outer cage of layer 0 is the same as the positions of the vertices (feature points) within the outer cages of layers 1 to 3. Similarly, the position of the vertex (feature point) within the inner cage of layer 0 is the same as the positions of the vertices (feature points) within the inner cages of layers 1 to 3.
[0047] As shown in the example of FIG. 7, each of the layers (both the inner cage and the outer cage) includes a protrusion 706, which is a structure that protrudes from and is different from the generally planar surface of the layer. From the perspective of an avatar mannequin, for example, the protrusion 706 may represent an irregular contour of the body shape (e.g., fingers, ears, nose, elbows, horns, etc.). From the perspective of clothing, the protrusion 706 may represent spikes, buttons, the fluffy / bulky parts of the clothing, etc.
[0048] Next, referring to the secondary view 708 of FIG. 7, the representation of each layer is shown. Each layer is defined by a pair of inner / outer cages. The layers of the secondary view 708 include the protrusion 706 together with an outer cage having feature points (vertices) shown as filled dots and an inner cage having feature points (vertices) shown as unfilled dots. Each pair of corresponding dots (one each from the inner and outer cages) is represented by an RBF function in the form rbf<key, value>, where key = the vertex position of the inner cage and value = the vertex position of the outer cage. In the geometry of some layers where there is no one-to-one correspondence between the feature points in the inner cage and the feature points in the outer cage (e.g., one of the feature points is missing or misaligned), RBF interpolation may be used to define the missing feature points (e.g., reconstruct or fill in the missing values).
[0049] The distance D1 between the corresponding dots (outside the protrusion 706) is the distance between the feature point in the outer cage and the corresponding feature point in the inner cage. The distance D1 can have a value of, for example, 0 pixels or more. The distance D2 is the distance between the feature point in the outer cage along the protrusion 706 and the corresponding feature point in the inner cage. The distance D2 can have a value of, for example, 1 pixel, 2 pixels, or a greater number of pixels such that the distance D2 is greater than the distance D1.
[0050] As described throughout this disclosure, distances D1 and D2 can be maintained when a new layer is fitted exactly over an existing layer (to be described next in relation to FIG. 8). In this way, the visual appearance of the features on the surface of the clothing layer can be at least partially maintained. For example, baggy pants fitted over an avatar will still look baggy even if the avatar body or underlying clothing layer has a different shape / contour (is slim or otherwise not baggy). As another example, a "spiked jacket" can be fitted over an avatar, and then a scarf can be fitted exactly over the spiked jacket to provide the visual appearance of a scarf that is suspended by the "spikes" of the jacket rather than following the peaks and valleys of each spike.
[0051] Referring now to FIG. 8, FIG. 8 shows FIG. 800, which represents a new layer formed over an existing layer according to some implementations. As shown in and described next with respect to FIG. 800, each successive (new) layer is inflated more and more to accommodate the previous (existing) layer.
[0052] Furthermore, the inner cage of the new layer is equal to the outer cage of the immediately previous (existing) layer. For example, layer 0 includes an inner cage 802 and an outer cage 804. Layer 0 may be, for example, the first layer of clothing fitted over an avatar body / mannequin. Alternatively, layer 0 may be a base layer used to transform a standard body template into the current avatar body.
[0053] Layer 1 (the second layer of clothing fitted over the first layer 0) includes an inner cage 806 that is deformed (inflated) to be equal to (e.g., in terms of shape, size, contour, etc.) the outer cage 804 of the previously fitted layer 0, and the outer cage 808 of layer 1 is also inflated correspondingly (e.g., to maintain the distance between corresponding feature points of cages 806 and 808).
[0054] Layer 2 (the third layer of clothing fitted over the second layer 1) includes an inner cage 810 that is deformed (inflated) to be equal to the outer cage 808 of the previously fitted layer 1, and the outer cage 812 of layer 2 is also inflated correspondingly. Layer 3 (the fourth layer of clothing fitted over the third layer 2) includes an inner cage 814 that is deformed (inflated) to be equal to the outer cage 812 of the previously fitted layer 2, and the outer cage 816 of layer 3 is also inflated correspondingly.
[0055] The steps for the sequential overlay of the layers shown in FIG. 800 of FIG. 8 may be described as follows. 1. Clothing layer N: A. Layer N deforms around the avatar body by matching the outer cage of the avatar body and the inner cage of clothing layer N. B. The outer cage of clothing layer N is also deformed to now wrap the combined body with the clothing. 2. Clothing layer N + 1: A. Clothing layer N + 1 deforms around the body + clothing layer N by matching the new outer cage from step 1B and the inner cage of clothing layer N + 1. B. The outer cage of clothing layer N + 1 is calculated by deforming it to wrap the combined geometry of the two layers of the body and clothing, i.e., the outer cages of the two layers of the combined body and clothing. 3. Continue the same approach as described above for the number of clothing layers N + 2, etc., worn by the avatar.
[0056] Thus, in accordance with the above, each layer defines a rule (using RBF interpolation) for how to get from the current layer to the next layer. In the example of FIG. 8, RBF interpolation is chained in sequence to get from any level to any other level in the upward overlapping direction (which may correspond to the outward direction starting from the mannequin in the case of the avatar cage wrapping the clothing layer). In some implementations, RBF interpolation can be chained in the reverse direction to get from the upper layer to the lower layer (e.g., to provide a deformation suitable for an item like an armor plate that compresses the layer under it rather than fitting over a puffy jacket).
[0057] FIG. 9 shows a diagram 900 representing the logical hierarchical overlap of objects such as clothing on an avatar body 902 according to some implementations. The symbolic separation between different layers is depicted by dashed lines in FIG. 9, with the lowest (base) layer at the bottom of FIG. 900 and the topmost layer at the top of FIG. 900. The order / sequence in which clothing layers and other graphic objects are placed on the avatar body 902 may be based on a logical arrangement. For example, socks should be placed directly on the feet and may be defined as an item placed in a layer in front of the shoes (which may be placed on top of the socks).
[0058] In the example shown in FIG. 900, the avatar body 902 forms the base (first level) graphic object. On top of this base graphic object, second level graphic objects such as socks 904, hand accessories (e.g., rings) 906, makeup 908, etc. may be placed.
[0059] After the second level, subsequent levels of graphic objects within a hierarchy such as clothing (innerwear) 910, shoes 912, clothing (outerwear) 914, accessories 916 (e.g., neckwear like a scarf, piercings for ears, nose, eyebrows, etc.), hair 918, and accessories 920 (e.g., front / back / shoulder accessories, hats, etc.) may follow in sequence.
[0060] It should be understood that the graphic objects depicted in FIG. 9 and the order of the various levels of graphic objects are merely examples. Other implementations may include different / fewer / additional graphic objects than those depicted in FIG. 9, and such graphic objects may be arranged at different levels, in the order related to (or out of order from) those depicted in FIG. 9.
[0061] FIG. 10 shows an example of clothing being deformed on an avatar body according to some implementations. FIG. 10 may be considered in conjunction with FIGS. 7 - 9 above and their accompanying descriptions.
[0062] Starting at 1000, first, the user has already selected an avatar body with a generally muscular build. The avatar body may be selected, for example, from a library of avatars provided by an avatar creator. Also at 1000, the user uses one or more tools (described later in relation to FIGS. 11 and 13) to select a first layer of clothing, and fits the first layer of clothing on the avatar body such that the shoes, pants, belt, and coat of the first layer of clothing are deformed to fit the muscular build of the avatar body. These clothing items within the first layer of clothing may be selected, for example, from a library of clothing items provided by a clothing creator.
[0063] Note that in 1000, one or more of the clothing items shown on the avatar body may instead be the skin provided for the avatar by the avatar creator, rather than clothing items that are fitted / deformed onto the avatar body using the techniques described herein.
[0064] Next, in 1002, a jacket 1004 wrapped around a generic mannequin 1006 is available for selection from a library of clothing. The jacket 1004 in 1002 can be a generic template of the jacket (as shown being worn on the generic mannequin 1006). The jacket 1004 in 1002 may be formed by a graphical mesh. The jacket 1004 in 1002 may have an inner / outer cage that has already been configured for that jacket 1004 while it is in the clothing library, or the inner / outer cage may be calculated later at runtime after the user selects the jacket from the clothing library. The jacket may be selected by the user, for example, as another piece of clothing to layer on top of the clothing shown in 1000.
[0065] Next, in 1008, the steps described above are performed, including mapping the inner cage of the jacket 1004 from 1002 to the outer cage of the clothing from 1000 so as to wrap the previous clothing from 1000 with the jacket, and deforming the outer cage of the jacket 1004 from 1002 so as to maintain the vertex distances between the outer and inner cages of the jacket 1004.
[0066] The result of the transformation at 1008 is shown at 1010. At 1010, the jacket 1004 from 1002 has been transformed to fit the solid avatar (from 1000) and the previous clothing layer. For example, the size of the jacket 1004 has been enlarged to match the combined size of the avatar and the previous / lower clothing layer, and the shape of the jacket 1004 has been conformed (e.g., inflated) to the combined shape of the avatar and the previous / lower clothing. Further, the jacket 1004 has maintained the visual appearance of its various contours / features (e.g., hood, cuffs, etc.) as a result of maintaining the distances between the feature points within the inner / outer cages. As can be seen, a portion of the clothing shown at 1000 is visible under the jacket (e.g., a circular item visible on a straight line starting from the neck and descending to the torso).
[0067] FIG. 11 is a diagram of an exemplary system architecture 1100 that includes a 3D environment platform capable of supporting a 3D avatar with layered clothing, according to some implementations. In the example of FIG. 11, the 3D environment platform is described in the context of a game platform 1102 for purely illustrative purposes, and various other implementations may provide other types of 3D environment platforms such as an online meeting platform, a virtual reality (VR) or augmented reality (AR) platform, or other types of platforms capable of providing 3D content. The descriptions provided herein regarding the game platform 1102 and other elements of the system architecture 1100 may be adapted to be usable with such other types of 3D environment platforms.
[0068] An online game platform (also referred to herein as a "user-generated content platform" or "user-generated content system") provides various ways for users to interact with each other while, for example, a user is playing an electronic game. For instance, users of an online game platform may work together towards a common goal, share various virtual game items, send electronic messages to each other, etc. Users of an online game platform may play the game using a character such as a 3D avatar having the above-described layered clothing that allows the user to navigate within the rendered 3D world of the electronic game.
[0069] In addition, an online game platform may enable users of the platform to create and animate avatars and create other graphic objects for placement by the user in the 3D world. For example, users of an online game platform may be enabled to create, design, and customize avatars and create, design, and fit various clothing to the avatars.
[0070] In FIG. 11, an exemplary system architecture 1100 (also referred to herein as the "system") includes an online game platform 1102, a first client device 1110A, and at least one second client device X 1110X (collectively referred to herein as "client devices 1110"). The online game platform 1102 may include, among other things, a game engine 1104 and one or more electronic games 1106. The system architecture 1100 is provided for illustration of one possible implementation. In other implementations, the system architecture 1100 may include the same, fewer, more, or different elements configured in the same or different ways as shown in FIG. 11.
[0071] A communication network 1122 may be used for communication between the online game platform 1102 and the client device 1110 and / or between other elements of the system architecture 1100. The network 1122 may include a public network (e.g., the Internet), a private network (e.g., a local area network (LAN) or wide area network (WAN)), a wired network (e.g., an Ethernet network), a wireless network (e.g., an 802.11 network, a Wi-Fi network, or a wireless LAN (WLAN)), a cellular network (e.g., a long term evolution (LTE) network), routers, hubs, switches, server computers, or combinations thereof.
[0072] The client device 1110A may include game applications 1112 and one or more user interfaces 1114 (e.g., audio / video input / output devices). Similarly, the client device X 1100X may include game applications 1120 and a user interface 1118 (e.g., audio / video input / output devices). The audio / video input / output devices may include one or more of a microphone, speakers, headphones, display devices, cameras, and the like.
[0073] System architecture 1100 may further include one or more storage devices 1124. The storage device 1124 may be, for example, within the online game platform 1102 or a storage device coupled to be communicable with the online game platform 1102 via the network 1122 (as shown in FIG. 11). The storage device 1124 may store, for example, graphic objects rendered in the game 1106 by the game engine 1104 or the game application 1112 / 1120, and the configuration / property information of the graphic objects (such as the coordinate information of feature points, size dimensions, etc. that can be used to generate the cage and for deformations as described above).
[0074] In some embodiments, the storage device 1124 can be part of one or more separate content delivery networks that provide graphic objects rendered in the game 1106. For example, an avatar creator can publish an avatar template to a library accessible on a first storage device, and a clothing creator can publish a clothing template to a library accessible on a second storage device (independently of the avatar creator). Then, the game application 1112 may pull (or may be pushed to the game application 1112) the graphic objects (avatars and clothing items) stored on the first / second storage device for calculation / compilation / deformation at runtime for presentation during gameplay.
[0075] In some implementations, the storage device 1124 may be a non-transitory computer-readable memory (e.g., random access memory), a cache, a drive (e.g., a hard drive), a flash drive, a database system, or another type of component or device capable of storing data and other content. Also, the storage device 1124 may include multiple storage components (e.g., multiple drives or multiple databases) that may span multiple computing devices (e.g., multiple server computers).
[0076] In some implementations, the online game platform 1102 may include a server having one or more computing devices (e.g., a cloud computing system, a rack-mounted server, a server computer, a cluster of physical servers, etc.). In some implementations, the server may be included in the online game platform 1102, be an independent system, or be part of another system or platform.
[0077] In some implementations, the online game platform 1102 may include one or more computing devices (such as rack-mounted servers, router computers, server computers, personal computers, mainframe computers, laptop computers, tablet computers, desktop computers, etc.), data stores (such as hard disks, memories, databases), networks, software components, and / or hardware components that execute operations on the online game platform 1102 and are used to provide users with access to the online game platform 1102. Additionally, the online game platform 1102 may include a website (such as a web page) or application backend software that may be used to provide users with access to content provided by the online game platform 1102. For example, a user may access the online game platform 1102 using a game application 1112 on a client device 1110.
[0078] In some implementations, the online game platform 1102 may be a type of social network that provides connections between users, or a type of user-generated content system that enables users (e.g., end users or consumers) to communicate with other users on the online game platform 1102. The communication may include voice chat (e.g., synchronous and / or asynchronous voice communication), video chat (e.g., synchronous and / or asynchronous video communication), or text chat (e.g., synchronous and / or asynchronous text-based communication). In some implementations of the present disclosure, a "user" may be represented as an individual person. However, other implementations of the present disclosure include the case where a "user" (e.g., a creating user) is an entity or an automated source controlled by a group of users. For example, a group of individual users associated as a community or group within a user-generated content system may be considered a "user".
[0079] In some implementations, the online game platform 1102 may be a virtual game platform. For example, the game platform may provide single-player or multiplayer games to a community of users who may access or interact with the games using client devices 1110 via a network 1122. In some implementations, a game (also referred to herein as a "video game", "online game", or "virtual game") may be, for example, a 2D game, a 3D game (e.g., a game generated by 3D users), a virtual reality (VR) game, or an augmented reality (AR) game. In some implementations, a user may participate in gameplay with other users. In some implementations, the game may be played in real time with other users of the game.
[0080] In some implementations, gameplay may refer to the interaction of one or more players using a client device (e.g., client device 1110) within a game (e.g., game 1106), or the presentation of interactions on a display of client device 1110 or other user interface (e.g., user interfaces 1114 / 1118).
[0081] In some implementations, game 1106 may include an electronic file that can be executed or loaded using software, firmware, or hardware configured to present game content (e.g., digital media items) to entities. In some implementations, game application 1112 may be executed in relation to game engine 1104, and game 1106 may be rendered in relation to game engine 1104. In some implementations, game 1106 may have a common set of rules or a common goal, and the environment of game 1106 shares a common set of rules or a common goal. In some implementations, different games may have different rules or goals.
[0082] In some implementations, a game may have one or more environments (also referred to herein as "game environments" or "virtual environments"), and multiple environments may be linked. An example of an environment may be a 3D environment. One or more environments of game 1106 may be collectively referred to herein as the "world" or "game world" or "virtual world" or "universe". For example, a user may construct a virtual environment that is linked to another virtual environment created by another user. Virtual game characters (such as 3D avatars with layered clothing as described herein) may cross virtual boundaries to enter adjacent virtual environments.
[0083] It may be noted that a 3D environment or 3D world uses graphics that provide a three-dimensional representation of geometric data representing game content (or at least present game content so as to appear as 3D content regardless of whether a 3D representation of the geometric data is used). A 2D environment or 2D world uses graphics that provide a two-dimensional representation of geometric data representing game content.
[0084] In some implementations, the online game platform 1102 can host one or more games 1106 and enable a user to interact with the game 1106 using the game application 1112 of the client device 1110. A user of the online game platform 1102 may play, create, interact with, or build the game 1106, communicate with other users, and / or create and build objects of the game 1106 (e.g., also referred to herein as "items" or "game objects" or "virtual game items" or "graphic objects"). For example, when generating user-generated virtual items, the user may, among other things, create characters, animations for the characters, decorations for the characters (e.g., clothes, skins, accessories, etc.), one or more virtual environments for interactive games, or build structures used within the game 1106. In some implementations, the user may buy, sell, or trade virtual game objects of the game, such as in-platform currency (e.g., virtual currency), with other users of the online game platform 1102.
[0085] In some implementations, the online game platform 1102 may send game content to a game application (e.g., game application 1112). In some implementations, game content (also referred to herein as "content") may refer to any data or software instructions associated with the online game platform 1102 or the game application (e.g., game objects, games, user information, videos, images, commands, media items, etc.). In some implementations, a game object (e.g., also referred to herein as an "item" or an "object" or a "virtual game item") may refer to an object that is used, created, shared, or otherwise represented in game 1106 of the online game platform 1102 or in game applications 1112 or 1120 of the client device 1110. For example, game objects may include parts, models, characters or their components (such as faces, arms, lips, etc.), tools, weapons, clothing, buildings, vehicles, currency, flora, fauna, components of the foregoing (e.g., windows of a building), etc.
[0086] The online game platform 1102 that hosts game 1106 may be noted as being provided for illustrative purposes. In some implementations, the online game platform 1102 may host one or more media items that may include communication messages from one user to one or more other users. Media items may include, but are not limited to, digital videos, digital movies, digital photos, digital music, audio content, melodies, website content, social media latest articles, e-books, e-magazines, digital newspapers, digital audio books, e-journals, web blogs, Real Simple Syndication (RSS) feeds, digital comics, software applications, and the like. In some implementations, a media item may be an electronic file that can be executed or loaded using software, firmware, or hardware configured to present the digital media item to an entity.
[0087] In some implementations, game 1106 may be associated with a particular user or a particular group of users (e.g., a private game), or may be made widely available to users of the online game platform 1102 (e.g., a published game). In some implementations where the online game platform 1102 associates one or more games 1106 with a particular user or group of users, the online game platform 1102 may use user account information (e.g., user account identifiers such as a username and password) to associate a particular user with game 1106.
[0088] In some implementations, the online game platform 1102 or the client device 1110 may include a game engine 1104 or a game application 1112 / 1120. In some implementations, the game engine 1104 may be used for the development or execution of a game 1106. For example, the game engine 1104 may include, among other features, a rendering engine (a "renderer") for 2D, 3D, VR, or AR graphics, a physics engine, a collision detection engine (and collision response), a sound engine, a scripting function, an animation engine, an artificial intelligence engine, a networking function, a streaming function, a memory management function, a threading function, a scene graph function, or video support for cinematics. The components of the game engine 1104 may generate commands (e.g., rendering commands, collision commands, animation commands, physics commands, etc.) that are useful for calculating and rendering the game, including commands for selecting an avatar, customizing an avatar, selecting a clothing item, deforming a clothing item as a layer on the avatar, and various other operations described herein. In some implementations, the game applications 1112 / 1120 of the client device 1110 may operate independently, in cooperation with, or in a combination of both, with the game engine 1104 of the online game platform 1102 to perform the operations described herein related to deforming and rendering overlaid clothing at runtime.
[0089] In some implementations, both the online game platform 1102 and the client device 1110 execute a game engine or game application (1104, 1112, 1120 respectively). The online game platform 1102 that uses the game engine 1104 executes some or all of the game engine functions (e.g., generates physics commands, animation commands, rendering commands, etc., including the deformation of the clothing layer described above), or may offload some or all of the game engine functions to the game application 1112 of the client device 1110. In some implementations, each game 1106 may have a different ratio between the game engine functions executed on the online game platform 1102 and the game engine functions executed on the client device 1110.
[0090] For example, the game engine 1104 of the online game platform 1102 may be used to generate physics commands when there is a collision between at least two game objects, while additional game engine functions (e.g., generating rendering commands, including deforming and displaying overlapping clothing) may be offloaded to the client device 1110. In some implementations, the ratio between the game engine functions executed on the online game platform 1102 and the game engine functions executed on the client device 1110 may be changed (e.g., dynamically) based on the conditions of the game play. For example, when the number of users participating in the game play of a particular game 1106 exceeds a threshold number, the online game platform 1102 may execute one or more game engine functions previously executed by the client device 1110.
[0091] For example, a user may be playing game 1106 on client device 1110 and may send control commands (such as right, left, up, down, user selection, or character position and speed information, etc.) to online game platform 1102. After receiving the control commands from client device 1110, online game platform 1102 may send game play commands (such as the position and speed information of characters participating in group game play, or commands such as rendering commands, collision commands, etc.) to client device 1110 based on the control commands. For example, online game platform 1102 may perform one or more logical operations (such as using game engine 1104) on the control commands to generate game play commands for client device 1110. In other cases, online game platform 1102 may pass one or more of the control commands to other client devices participating in game 1106 from one client device 1110. Client device 1110 may use the game play commands to render the game play for presentation on the display of client device 1110, including an avatar having the superimposed clothing described above.
[0092] In some implementations, a control instruction may refer to an instruction indicating an in-game action of a user's character. For example, the control instruction may include user input for controlling in-game actions such as right, left, up, down, user selection, gyroscope position and orientation data, force sensor data, etc. The control instruction may include character position and velocity information. In some implementations, the control instruction is sent directly to the online game platform 1102. In other implementations, the control instruction may be sent from the client device 1110 to another client device, and the other client device generates game play instructions using the local game engine application 1120. The control instruction may include instructions for playing an audio communication message or other sound from another user on an audio device (e.g., speaker, headphones, etc.), such as an audio communication or other sound generated using audio spatialization techniques as described herein.
[0093] In some implementations, a game play instruction may refer to an instruction that enables the client device 1110 to render the game play of a game such as a multiplayer game. The game play instruction may include one or more of user input (e.g., control instruction), character position and velocity information, or commands (e.g., physical commands, animation commands, rendering commands, collision commands, etc.).
[0094] In some implementations, the client device 1110 may include a computing device such as a personal computer (PC), a mobile device (e.g., a laptop, a mobile phone, a smartphone, a tablet computer, or a netbook computer), a television connected to a network, a game console, etc. In some implementations, the client device 1110 may sometimes be referred to as a "user device". In some implementations, one or more client devices 1110 may be connected to the online game platform 1102 at any time. It should be noted that the number of client devices 1110 is given by way of example and not limitation. In some implementations, any number of client devices 1110 may be used.
[0095] In some implementations, each client device 1110 may include an instance of game application 1112 or 1120 respectively. In one implementation, game application 1112 or 1120 may control a virtual character of a virtual game hosted by online game platform 1102, or enable a user to use online game platform 1102 and interact with online game platform 1102, such as viewing or uploading content such as game 1106, images, video items, web pages, documents, etc. In one example, the game application may be a web application (e.g., an application that operates in conjunction with a web browser) that can access, retrieve, present, or navigate content provided by a web server (e.g., a virtual character within a virtual environment, etc.). In another example, the game application may be a native application (e.g., a mobile application, app, or game program) installed and executed locally on client device 1110 that enables a user to interact with online game platform 1102. The game application may sometimes render, display, or present content (e.g., a web page, media viewer) to the user. In an implementation, the game application may also include an embedded media player (e.g., a Flash® player) embedded in a web page.
[0096] According to aspects of the present disclosure, the game application 1112 / 1120 may be an online game platform application for a user to build, create, edit content, upload it to the online game platform 1102, and interact with the online game platform 1102 (e.g., play a game 1106 hosted by the online game platform 1102). Thus, the game application 1112 / 1120 may be provided to the client device 1110 by the online game platform 1102. In another example, the game application may be an application downloaded from a server.
[0097] In some implementations, the user may log in to the online game platform 1102 via the game application. The user may access the user account by providing user account information (e.g., username and password), and the user account is associated with one or more characters available to participate in one or more games 1106 of the online game platform 1102.
[0098] Generally, the functions described in one implementation as being performed by the online game platform 1102 can also be performed by the client device 1110 or the server as appropriate in other implementations. Additionally, the functions attributed to specific components can be performed by different or multiple components operating together. Also, the online game platform 1102 can be accessed as a service provided to other systems or devices through an appropriate application programming interface (API), and thus is not limited to use on a website.
[0099] FIG. 12 is a flow diagram illustrating a computer-implemented method 1200 for providing overlaid clothing on a 3D avatar according to some implementations. For simplicity, the various operations of method 1200 are described in the context of being executed by game application 1112 of client device 1110. However, as already described above in connection with FIG. 11, some of the operations may alternatively or additionally be executed in whole or in part by game engine 1104 in game platform 1102. The exemplary method 1200 may include one or more operations represented by one or more blocks, such as blocks 1202 to 1212. The various blocks of method 1200 and / or any other process described herein may be combined into fewer blocks, divided into additional blocks, supplemented by further blocks, and / or deleted, depending on the desired implementation.
[0100] Method 1200 of FIG. 12 may be described herein in relation to the elements shown in FIGS. 1 - 11. In one embodiment, the operations of method 1200 may be executed in a pipelined sequential manner. In other embodiments, some of the operations may be executed out of order, in parallel, etc.
[0101] In block 1202 (entitled "Identifying body feature points of the body cage of a 3D avatar"), the user launches game application 1112, accesses the avatar body library, and selects an avatar to be used in a 3D environment (such as an online game). The selected avatar may be a general-purpose template with a common shape / size, or a more detailed avatar template of a specific type (such as humanoid, alien, animal, etc.) with a set skin. The avatar selected from the library may already have a body cage (see, for example, FIGS. 1 - 3) configured thereon, and / or game application 1112 may generate at least a part of the body cage at runtime. The game application identifies the body feature points of the body cage that define the shape of the avatar. Block 1202 may be followed by block 1204.
[0102] In block 1204 (entitled "Mapping inner feature points of the inner cage of a first piece of clothing to the body feature points of the body cage"), the user accesses the clothing item library and selects a first piece of clothing. Similar to the avatar body in block 1202, the first piece of clothing in the library may have a cage configured thereon, and / or game application 1112 may generate at least a part of the cage at runtime. Such a cage of the first piece of clothing includes an inner cage and an outer cage (see, for example, FIGS. 7 and 8). In block 1204, game application 1112 may map the inner feature points of the inner cage of the first piece of clothing to the body feature points of the body cage using RBF technology to deform the first piece of clothing to fit the avatar body. Block 1204 may be followed by block 1206.
[0103] In block 1206 ("fitting the first piece of clothing to the avatar body"), the game application 1112 fits the first piece of clothing to the avatar body. This fitting may be performed by the game application 1112 in block 1206 by at least partially wrapping the avatar body with the deformed first piece of clothing. For example, the coordinate positions of at least some of the inner feature points (of the inner cage of the first piece of clothing) take on the values of the coordinate positions of the feature points of the body of the body cage. Block 1206 may be followed by block 1208.
[0104] In block 1208 ("mapping the inner feature points of the inner cage of the second piece of clothing to the outer feature points of the outer cage of the first piece of clothing"), the user selects the second piece of clothing from the library. Similar to the first piece of clothing in block 1204, the second piece of clothing in block 1208 has an inner cage and an outer cage. The game application 1112 maps the inner feature points (of the inner cage of the second piece of clothing) to the outer feature points of the outer cage of the deformed first piece of clothing that is already fitted to the avatar body so as to deform the second piece of clothing to conform to the avatar body having the first piece of clothing fitted thereon. Block 1208 may be followed by block 1210.
[0105] In block 1210 ("fitting the second piece of clothing to the avatar body"), the game application 1112 fits the second piece of clothing to the avatar body (having the first piece of clothing already fitted thereon). This fitting may be performed by the game application 1112 in block 1210 by at least partially wrapping the avatar body (having the first piece of clothing already fitted thereon) with the deformed second piece of clothing. For example, the coordinate positions of at least some of the inner feature points (of the inner cage of the second piece of clothing) take on the values of the coordinate positions of the outer feature points of the outer cage of the deformed first piece of clothing. Block 1210 may be followed by block 1212.
[0106] In block 1212 (Repeat), an operation similar to the above-described operation may be performed to overlay and deform additional clothing over an existing layer. For example, in the first repeat described above in connection with blocks 1202 - 1210, the first piece of clothing is fitted over the body cage. In a second repeat that may be performed in block 1212, the additional clothing may be fitted over the first piece of clothing wrapped around the body cage. The repeats may be performed to fit additional clothing items for any number of items. In some implementations (e.g., when clothing items in successive fittings relate to different non-overlapping portions of the outer cage at that stage), the fittings may be performed in parallel (e.g., the fitting of a hat may be performed simultaneously with the fitting of shoes, the fitting of a shirt may be performed simultaneously with the fitting of pants, the fitting of socks may be performed simultaneously with the fitting of gloves, etc.).
[0107] FIG. 13 is a block diagram of an exemplary computing device 1300 that may be used to implement one or more features described herein. The client device 1110 and / or the game platform 1102 of FIG. 11 may be provided in the form of the computing device 1300 of FIG. 13. In one example, the computing device 1300 may be used to execute the methods described herein. The computing device 1300 can be any suitable computer system, server, or other electronic or hardware device. For example, the computing device 1300 can be a mainframe computer, desktop computer, workstation, portable computer, or an electronic device (such as a portable device, mobile device, cell phone, smartphone, tablet computer, television, TV set-top box, personal digital assistant (PDA), media player, game device, wearable device, etc.). In some implementations, the computing device 1300 includes a processor 1302, a memory 1304, an input / output (I / O) interface 1306, and an audio / video input / output device 1314.
[0108] Processor 1302 can be one or more processors and / or processing circuits for executing program code and controlling the basic operations of computing device 1300. A "processor" includes any suitable hardware and / or software system, mechanism, or component that processes data, signals, or other information. The processor may include a general-purpose central processing unit (CPU), multiple processing units, a system having dedicated circuits for realizing functions, or other systems. Processing is not necessarily limited to a specific geographical location or have temporal limitations. For example, the processor may execute the functions of the processor in "real time", "offline", "batch mode", etc. Some of the processing may be executed at different times and in different locations by different (or the same) processing systems. A computer may be any processor that communicates with memory.
[0109] Memory 1304 may be provided within computing device 1300 for access by processor 1302, and is suitable for storing instructions for execution by the processor, and may be any suitable processor-readable storage medium that is separate from and / or integrated with processor 1302, such as, for example, random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory, etc. Memory 1304 can store software that can be executed on computing device 1300 by processor 1302, including operating system 1308, one or more applications 310, and associated data 1312. Application 1310 is an example of a tool that can be used to implement game application 1112 / 1120 or game engine 1104. In some implementations, application 1310 may include instructions that enable processor 1302 to execute or control the execution of the operations described herein related to deforming / fitting clothing draped over an avatar body in response to execution by processor 1302.
[0110] Any of the software within memory 1304 may alternatively be stored in any other suitable storage location or computer-readable medium. Further, memory 1304 (and / or other connected storage devices) can store the instructions and data used in the features described herein. Memory 1304 and any other type of storage (magnetic disk, optical disk, magnetic tape, or other tangible medium) may be considered a "storage" or "storage device".
[0111] The I / O interface 1306 can provide functions to enable the computing device 1300 to interface with other systems and devices. For example, network communication devices, storage devices, and input / output devices can communicate with the computing device 1300 via the I / O interface 1306. In some implementations, the I / O interface 1306 can be connected to an interface device that includes input devices (such as keyboards, pointing devices, touchscreens, microphones, cameras, scanners, etc.) and / or output devices (such as display devices, speaker devices, printers, monitors, etc.), and these interface devices are collectively shown as at least one audio / video input / output device 1314.
[0112] The audio / video input / output device 1314 can include an audio input device (such as a microphone, etc.) that can be used to receive audio messages as inputs, an audio output device (such as speakers, headphones, etc.), and / or a display device that can be used to provide graphical and visual outputs such as the exemplary rendered 3D avatar with the overlaid clothing described above.
[0113] For ease of illustration, FIG. 13 shows one block for each of the processor 1302, memory 1304, I / O interface 1306, application 1310, etc. These blocks may represent one or more processors or processing circuits, operating systems, memories, I / O interfaces, applications, and / or software modules. In other implementations, the computing device 1300 may not have all of the components shown, and / or may have other elements including other types of elements instead of or in addition to the elements shown herein.
[0114] A user device can also implement the features described herein and / or be used with the features described herein. An exemplary user device can be a computer device that includes some of the same components as computing device 1300, such as processor 1302, memory 1304, and I / O interface 1306. An operating system, software, and applications suitable for the client device can be provided in the memory and used by the processor. The I / O interface for the client device can be connected to a network communication device and input and output devices, such as a microphone for capturing sound, a camera for capturing an image or video, an audio speaker device for outputting sound, a display device for outputting an image or video, or other output devices. For example, the display device within audio / video input / output device 1314 can be connected to (or included in) computing device 1300 for displaying pre- and post-processing of an image as described herein, and such display device can include any suitable display device, such as an LCD, LED, or plasma display screen, CRT, television, monitor, touch screen, 3-D display screen, projector, or other visual display device. Some implementations can provide an audio output device, such as voice output or synthesis that speaks text.
[0115] One or more of the methods described herein (e.g., method 1200) can be implemented by computer program instructions or code that can be executed on a computer. For example, the code can be implemented by one or more digital processors (e.g., a microprocessor or other processing circuitry), and can be stored in a computer program product that includes a non-transitory computer-readable medium (e.g., a storage medium), such as a magnetic, optical, electromagnetic, or semiconductor storage medium including, for example, semiconductor or solid state memory, magnetic tape, removable computer diskette, random access memory (RAM), read-only memory (ROM), flash memory, hard magnetic disk, optical disk, solid state memory drive, etc. The program instructions can be included in electronic signals in the form of software (SaaS) as a service delivered from a server (e.g., a distributed system and / or a cloud computing system), and can also be provided as electronic signals. Alternatively, one or more of the methods can be implemented in hardware (such as logic gates), or in a combination of hardware and software. Exemplary hardware can be a programmable processor (e.g., a field programmable gate array (FPGA), a complex programmable logic device), a general-purpose processor, a graphics processor, an application specific integrated circuit (ASIC), etc. One or more of the methods can be executed as part of or a component of an application running on a system, or as an application or software that runs in cooperation with other applications and an operating system.
[0116] One or more of the methods described herein can be executed as a stand-alone program that can be executed on any type of computing device, a program executed on a web browser, a mobile application (an "app") that can be executed within a mobile computing device (such as a cell phone, smart phone, tablet computer, wearable device (such as a wristwatch, bracelet, jewelry, hat, goggles, glasses, etc.), laptop computer, etc.). In one example, a client / server architecture can be used, for example, a mobile computing device (as a client device) sends user input data to a server device and receives final output data (such as for display) from the server for output. In another example, all calculations can be executed within a mobile application (and / or other application) on a mobile computing device. In another example, the calculations can be divided between a mobile computing device and one or more server devices.
[0117] Although the description has been described in relation to its specific implementations, these specific implementations are merely exemplary and not limiting. The concepts illustrated in the examples may apply to other examples and implementations.
[0118] It should be noted that the functional blocks, operations, features, methods, devices, and systems described in this disclosure may be integrated or separated into different combinations of systems, devices, and functional blocks as known to those skilled in the art. Any suitable programming language and programming technique may be used to implement the routines of a particular implementation. Different programming techniques, such as procedural or object-oriented programming techniques, may be used. The routines may be executed on a single processing device or multiple processors. Steps, operations, or calculations may be shown in a particular order, but the order may be changed in different particular implementations. In some implementations, multiple steps or operations shown as sequential herein may be executed simultaneously.
Description of Symbols
[0119] 100 Body Cage 102 Feature Point 104 Line Segment / Side 200 Body Cage 202 Feature Point 300 Body Cage 400 Clothing Layer 402 Polygon Mesh 404 Hood 406 Cuff 408 Straight-Cut Body 500 Composite Outer Cage 600 Mannequin 614 Mannequin 628 Mannequin 642 Mannequin 656 Mannequin 668 Mannequin 682 Mannequin 700 Figure 702 Inner Cage 704 Outer Cage 706 Protrusion 708 Secondary Figure 800 Figure 802 Inner Cage 804 Outer Cage 806 Inner Cage 808 Outer Cage 810 Inner Cage 812 Outer Cage 814 Inner Cage 816 Outer Cage 900 Diagram 902 Avatar Body 904 Socks 906 Hand Accessories 908 Makeup 910 Clothing (Inner Wear) 912 Shoes 914 Clothing (Outer Wear) 916 Accessories 918 Hair 920 Accessories 1004 Jacket 1006 General Mannequin 1100 System Architecture 1102 Online Game Platform 1104 Game Engine 1106 Game 1110A First Client Device 1110X Second Client Device X 1112 / 1120 Game Application 1124 Storage Device 1200 Method 1310 Application 1314 Audio / Video Input / Output Device
Claims
1. A computer-implemented method for providing overlaid clothing on a three-dimensional (3D) avatar, the method comprising: identifying body feature points of a body of a body cage of a 3D avatar having an avatar body; mapping inner feature points of an inner cage of a first clothing item to the body feature points of the body of the body cage to obtain a deformed first clothing item that fits the avatar body; fitting the deformed first clothing item onto the avatar body by at least partially wrapping the avatar body with the deformed first clothing item; mapping inner feature points of an inner cage of a second clothing item to outer feature points of an outer cage of the deformed first clothing item to obtain a deformed second clothing item that fits the outer cage of the first clothing item; fitting the deformed second clothing item onto the avatar body by at least partially wrapping the avatar body having the deformed first clothing item fitted thereon with the deformed second clothing item.
2. The method of claim 1, further comprising maintaining a distance between at least one of the inner feature points of the inner cage of the first clothing item and a corresponding outer feature point of the outer cage of the deformed first clothing item such that a visual appearance of features on a surface of the first clothing item is at least partially maintained.
3. The method of claim 1, further comprising obtaining the avatar body from a first library of avatar bodies and obtaining the first clothing item and the second clothing item from a second library of clothing items, wherein the avatar bodies in the first library and the clothing items in the second library are independent of each other.
4. The step of mapping the inner feature points of the inner cage of the second clothing item to the outer feature points of the outer cage of the deformed first clothing item comprises: providing a first radial basis function (RBF) having a first key corresponding to a position of at least one inner feature point of the inner cage of the first clothing item and a first value corresponding to a position of a corresponding outer feature point of the outer cage of the first clothing item; Chaining a second RBF to the first RBF, the second RBF having a second key corresponding to the position of at least one inner feature point of the inner cage of the second garment and a second value corresponding to the position of at least one outer feature point of the outer cage of the second garment, the chaining including The method according to claim 1, wherein the second key of the second RBF is equal to the first value of the first RBF. **Claim 5** The feature points of the body of the body cage define the outer surface of the avatar body. The outer feature points of the outer cage of the deformed first garment define the outer surface of the deformed first garment. The method according to claim 1, wherein the outer cage of the deformed second garment includes outer feature points that define the outer surface of the deformed second garment. **Claim 6** The method according to claim 1, wherein the mapping step and the fitting step are performed by the software application on the client device during the runtime of the software application. **Claim 7** The method according to claim 1, wherein the avatar body has a graphical skin, and the step of fitting the deformed first garment on the avatar body includes fitting the deformed first garment on the graphical skin of the avatar body. **Claim 8** In response to execution by a processor, the processor identifying feature points of the body of a body cage of a 3D avatar having an avatar body; mapping inner feature points of an inner cage of a first garment to the feature points of the body of the body cage to obtain a deformed first garment that fits the avatar body; fitting the deformed first garment on the avatar body by at least partially enclosing the avatar body with the deformed first garment; mapping inner feature points of an inner cage of a second garment to outer feature points of the outer cage of the deformed first garment to obtain a deformed second garment that fits the outer cage of the first garment; Fitting the modified second clothing on the avatar body by at least partially wrapping the avatar body having the modified first clothing fitted thereon, A non-transitory computer-readable medium storing instructions for causing or controlling the execution of operations including. **Claim 9** The operations include The non-transitory computer-readable medium according to claim 8, further including an operation of maintaining a distance between at least one of the inner feature points of the inner cage of the first clothing and a corresponding outer feature point of the outer cage of the modified first clothing so that at least partially the visual appearance of the features on the surface of the first clothing is maintained. **Claim 10** The operations include An operation of obtaining the avatar body from a first library of avatar bodies, and An operation of obtaining the first clothing and the second clothing from a second library of clothing, wherein the avatar body of the first library and the clothing of the second library are independent of each other. The non-transitory computer-readable medium according to claim 8, further including the operation. **Claim 11** The operation of mapping the inner feature points of the inner cage of the second clothing to the outer feature points of the outer cage of the modified first clothing includes An operation of providing a first radial basis function (RBF) having a first key corresponding to the position of at least one inner feature point of the inner cage of the first clothing and a first value corresponding to the position of the corresponding outer feature point of the outer cage of the first clothing, and An operation of chaining a second RBF to the first RBF, wherein the second RBF has a second key corresponding to the position of at least one inner feature point of the inner cage of the second clothing and a second value corresponding to the position of at least one outer feature point of the outer cage of the second clothing. The non-transitory computer-readable medium according to claim 8, including the operation, wherein the second key of the second RBF is equal to the first value of the first RBF. **Claim 12** The feature points of the body of the body cage define the outer surface of the avatar body, The outer feature points of the outer cage of the modified first clothing define the outer surface of the modified first clothing, The non-transitory computer-readable medium of claim 8, wherein the outer cage of the deformed second garment includes outer feature points that define an outer surface of the deformed second garment.
13. The non-transitory computer-readable medium of claim 8, wherein the mapping operation and the fitting operation are performed by the software application on the client device during the runtime of the software application.
14. The non-transitory computer-readable medium of claim 8, wherein the avatar body has a graphical skin, and the operation of fitting the deformed first garment on the avatar body includes the operation of fitting the deformed first garment on the graphical skin of the avatar body.
15. A display device operable to present a three-dimensional (3D) avatar having overlapping garments, A memory storing a game application, A processor coupled to the display device and the memory and operable to execute the game application stored in the memory, the game application causing the processor to Identify body feature points of a body cage of a 3D avatar having an avatar body, Map inner feature points of an inner cage of a first garment to the body feature points of the body cage to obtain a deformed first garment that fits the avatar body, Fit the deformed first garment on the avatar body by at least partially enclosing the avatar body with the deformed first garment, Map inner feature points of an inner cage of a second garment to outer feature points of the outer cage of the deformed first garment to obtain a deformed second garment that fits the outer cage of the first garment, and Fit the deformed second garment on the avatar body by at least partially enclosing the avatar body having the deformed first garment fitted thereon with the deformed second garment, An apparatus including a processor executable by the processor to perform or control the execution of the operations including.
16. The operations are The apparatus according to claim 15, further comprising an operation of maintaining a distance between at least one of the inner feature points of the inner cage of the first garment and a corresponding outer feature point of the outer cage of the deformed first garment so that the visual appearance of the features on the surface of the first garment is at least partially maintained.
17. The operation includes an operation of obtaining the avatar body from a first library of avatar bodies, and an operation of obtaining the first garment and the second garment from a second library of garments, wherein the avatar body in the first library and the garments in the second library are independent of each other, the apparatus according to claim 15.
18. The operation of mapping the inner feature points of the inner cage of the second garment to the outer feature points of the outer cage of the deformed first garment includes providing a first radial basis function (RBF) having a first key corresponding to the position of at least one inner feature point of the inner cage of the first garment and a first value corresponding to the position of the corresponding outer feature point of the outer cage of the first garment, and chaining a second RBF to the first RBF, the second RBF having a second key corresponding to the position of at least one inner feature point of the inner cage of the second garment and a second value corresponding to the position of at least one outer feature point of the outer cage of the second garment, the apparatus according to claim 15. wherein the second key of the second RBF is equal to the first value of the first RBF.
19. The feature points of the body of the body cage define the outer surface of the avatar body, the outer feature points of the outer cage of the deformed first garment define the outer surface of the deformed first garment, the apparatus according to claim 15, wherein the outer cage of the deformed second garment includes outer feature points that define the outer surface of the deformed second garment.
20. The apparatus according to claim 15, wherein the avatar body has a graphical skin, and the operation of fitting the deformed first garment onto the avatar body includes fitting the deformed first garment onto the graphical skin of the avatar body.
Citation Information
Patent Citations
Computer-implemented method for designing avatar with at least one garment
JP2016110652A
Neural network accelerator
KR1020200143608A
System and method for three-dimensional garment mesh deformation and layering for garment fit visualization
US20170161948A1
Virtual garment carousel
US20170352092A1
Virtual Reality Presentation of Layers of Clothing on Avatars
US20180315254A1