Layered garments that conform to the underlying body and / or clothing layers
The cage-to-cage fitting technique addresses the challenge of fitting clothing to non-uniform avatars by automating the process, enabling customizable and flexible garment fitting without complex calculations, thus enhancing customization and reducing collaboration needs.
Patent Information
- Application Number
- JP2025065102
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-07-14
- Filing Date
- 2025-04-10
- Publication Date
- 2025-11-13
- 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 in fitting clothing to non-uniform body shapes.
A cage-to-cage fitting technique is used to automatically fit any clothing geometry to any body geometry by mapping inner feature points of garments to body feature points, allowing layers of clothing to be fitted over underlying layers without requiring complex calculations, decoupling the work of avatar and clothing creators.
Enables customizable and flexible fitting of clothing to any body shape, reducing the need for intensive user input and graphical programming, and allowing seamless layering of garments on avatars with varying geometries.
Smart Images

Figure 0007769829000001 
Figure 0007769829000002 
Figure 0007769829000003
Abstract
Description
[Technical Field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority to U.S. Patent Application No. 17 / 375,066, filed July 14, 2021, which is a nonprovisional application that claims priority under 35 U.S.C. §119(e) to U.S. Provisional Patent Application No. 63 / 161,376, filed March 15, 2021, both of which applications are incorporated herein by reference in their entireties.
[0002] The present disclosure relates generally to computer graphics, and more particularly, but not exclusively, to methods, systems, and computer-readable media for providing a graphical representation of layered clothing on an underlying graphical object, such as layered clothing for a 3D avatar in an electronic game or other three-dimensional (3D) environment. [Background technology]
[0003] Multi-user electronic gaming environments typically involve the use of avatars to represent players within an electronic game. The avatars are often three-dimensional (3D) avatars, and these 3D avatars vary in geometry / shape from avatar to avatar. For example, avatars may have different body shapes (e.g., tall, short, muscular, skinny, male, female, human, animal, alien, etc.), numbers and types of limbs, and are customizable with multiple 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 avatars, game developers traditionally use a uniform topology for the body and clothing so that the geometry of the clothing matches the geometry of the body. Thus, these techniques use predefined shapes to achieve some basic geometric matching between the clothing and the body. However, such techniques (due to the existence of predefined shapes) offer limited ability to customize body shapes and clothing.
[0005] When further customization is required (e.g., due to non-uniform body shapes and clothing of the avatars), more intensive user input and graphical programming is required. For example, these techniques require the creator user (e.g., the one providing the clothing items and / or different body shapes) to perform complex calculations to graphically generate clothing having geometry that matches the geometry of the body. These processes are complex and also require close coordination 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 computer-implemented method provides layered clothing on a three-dimensional (3D) avatar. The method comprises: Identifying body feature points of a body cage of the 3D avatar having an avatar body; mapping inner feature points of the inner cage of the first garment to body feature points of the body cage to obtain a transformed first garment that fits the avatar body; fitting the transformed first garment onto the avatar body by at least partially enveloping the avatar body in the transformed first garment; mapping inner feature points of the inner cage of the 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 fitting the transformed second garment onto the avatar body by at least partially enveloping the avatar body with the transformed first garment fitted thereon in the transformed second garment.
[0007] According to another aspect, a non-transitory computer-readable medium is provided having stored thereon instructions that, upon execution by a processor, cause the processor to perform or control the performance of operations. Identifying body feature points of a body cage of a 3D avatar having an avatar body; Mapping inner feature points of the inner cage of the first garment to body feature points of the body cage to obtain a transformed first garment that fits the avatar body; fitting the transformed first garment onto the avatar body by at least partially enveloping the avatar body in the transformed first garment; mapping inner feature points of the inner cage of the 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 fitting the transformed second garment onto the avatar body by at least partially enveloping the avatar body with the transformed first garment fitted thereon in the transformed second garment.
[0008] According to yet another aspect, a display device operable to present a three-dimensional (3D) avatar having the overlaid garment; a memory storing a game application; a processor, coupled to the display device and the memory, operable to execute a game application stored in the memory, the game application being configured to Identifying body feature points of a body cage of the 3D avatar having an avatar body; Mapping inner feature points of the inner cage of the first garment to body feature points of the body cage to obtain a transformed first garment that fits the avatar body; fitting the transformed first garment onto the avatar body by at least partially enveloping the avatar body in the transformed first garment; Mapping inner feature points of the inner cage of the 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 and a processor executable by the processor to cause or control the performance of operations including fitting a transformed second garment onto an avatar body by at least partially enveloping the avatar body having the transformed first garment fitted thereon with the transformed second garment. [Brief explanation of the drawings]
[0009] [Figure 1] 1 illustrates an exemplary body cage according to some implementations. [Figure 2] FIG. 1 illustrates another exemplary body cage according to some implementations. [Figure 3] 10A-10C illustrate examples of portions of a body cage grouped into corresponding body parts, according to some implementations. [Figure 4] 10A-10C illustrate examples of clothing layers deformed on a body cage, according to some implementations. [Figure 5] 5 illustrates an example of an outer cage formed based on portions of the garment layer and body cage of FIG. 4, according to some implementations. [Figure 6A]10A-10C illustrate examples of clothing deformed on an avatar's body shape, according to some implementations. [Figure 6B] 10A-10C illustrate examples of clothing deformed on an avatar's body shape, according to some implementations. [Figure 6C] 10A-10C illustrate examples of clothing deformed on an avatar's body shape, according to some implementations. [Figure 6D] 10A-10C illustrate examples of clothing deformed on an avatar's body shape, according to some implementations. [Figure 7] FIG. 10 is a diagram illustrating the initial state of layers according to some implementations. [Figure 8] FIG. 2 is a diagram depicting a layer formed on top of another layer according to some implementations. [Figure 9] A diagram representing the logical hierarchical layering of objects such as clothing on an avatar body according to some implementations. [Figure 10] 10A-10C illustrate examples of clothing layers being deformed on an avatar body according to some implementations. [Figure 11] FIG. 1 illustrates an exemplary system architecture including a 3D environment platform capable of supporting 3D avatars with layered clothing, according to some implementations. [Figure 12] 1 is a flow diagram illustrating a computer-implemented method for providing layered clothing on a 3D avatar, according to some implementations. [Figure 13] FIG. 1 is a block diagram illustrating an exemplary computing device according to some implementations. DETAILED DESCRIPTION OF THE INVENTION
[0010] In the following detailed description, reference is made to the accompanying drawings, which form a part hereof. In the drawings, like numerals generally identify like elements unless context dictates otherwise. The illustrative embodiments set forth in the detailed description, drawings, and 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 matter presented herein. The aspects of the present disclosure, as generally described herein and illustrated in the figures, can be arranged, substituted, combined, divided, and designed in a wide variety of different configurations, all of which are contemplated herein.
[0011] References herein to "one embodiment," "embodiment," "exemplary embodiment," etc., indicate that the described embodiment may include a particular feature, structure, or characteristic, but not every embodiment may include the particular feature, structure, or characteristic. Moreover, such phrases do not necessarily refer to the same embodiment. Furthermore, when a particular feature, structure, or characteristic is described in connection with an embodiment, such feature, structure, or characteristic may also be implemented in connection with other embodiments, whether or not explicitly described.
[0012] The present disclosure addresses the above-mentioned shortcomings in 3D environments by using an automatic cage-to-cage fitting technique for 3D avatars. The technique allows any body geometry to be fitted with any clothing geometry, including allowing layers of clothing to be fitted over underlying layers of clothing, thereby providing customization without limitations imposed by predefined geometries or requiring complex calculations to fit clothing items to any body shape or other clothing item of an avatar. Additionally, cage-to-cage fitting is performed algorithmically by a gaming platform or software (or other platform / software operating to provide a 3D environment) without requiring the avatar creator (also referred to as an avatar body creator or body creator) or 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 items that can be placed on an avatar in relation to a particular portion of the avatar cage.
[0013] The implementation described herein allows the work of an avatar body creator to be decoupled from the work of a clothing creator. For example, an avatar body creator can create a body with geometry of any desired / customized shape and size and publish the body to a body library hosted by the 3D platform. A clothing creator can create their own generic templates for any clothing, such as shirts, pants, etc., and publish the clothing templates to a clothing library hosted by the 3D platform.
[0014] For purely illustrative and descriptive purposes, various embodiments are described herein in the context of 3D avatars used in a 3D game provided by a gaming platform. It is understood that such a gaming environment is merely exemplary. 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) conferences, 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] At run-time during a game or other 3D session, a player / user accesses the body library to select a particular body and accesses the garment library to select garments to place on the selected body. The 3D environment platform presenting the avatar then implements cage-to-cage fitting techniques to adjust the garment (with automatically determined preferred deformations) to fit the shape of the body, thereby automatically fitting the garment to the body (and any intermediate layers, if worn by the avatar). The user can further select additional garments to fit on top of the underlying garment (layered garments), where the additional garments are deformed to match the geometry of the underlying garments.
[0016] The implementation described herein is based on the concepts of "cage" and "mesh." A body mesh is the actual visible geometry of an avatar. It includes the graphical representation 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 part thereof.
[0017] In comparison, a cage is much simpler than a body mesh and represents an envelope of feature points around an avatar body that has a weak correspondence with corresponding vertices of the body mesh. As explained in more detail below, a cage may be used to represent not only a set of feature points on an avatar body, but also a set of feature points on clothing.
[0018] 1 illustrates an exemplary body cage 100 according to some implementations. The example body cage 100 of FIG. 1 is an outer cage that encases or is superimposed over the exterior surface / contour of a humanoid body form that serves as a mannequin.
[0019] The body cage 100 includes a plurality of feature points 102 that define or otherwise identify or correspond to the shape of the mannequin. In some implementations, the feature points 102 are formed by the vertices of line segments / edges 104 of a plurality of polygons (or other geometric shapes) on the mannequin. In some implementations, the feature points 102 are not necessarily formed by the vertices of any polygons, but may be discrete points.
[0020] The body cage 100 of FIG. 1 provides an example of a low-resolution body cage with 642 feature points (or some other number of feature points) for humanoid body geometry excluding fingers. Other examples may use a body cage with 475 feature points. For example, a body cage for a humanoid geometry including fingers might 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) of feature points are just a few 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, size / shape of the mannequin, etc.
[0021] A 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 example body cage 200 of FIG. 2 is an outer cage that encases or is superimposed on the exterior / contour of a generic gaming avatar's body shape. Compared to the body cage 100 of FIG. 1, the body cage 200 of 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 compared to the body cage 100, such as a fewer or greater number of feature points 202, as a result of a different (simpler or more complex) geometric shape of the gaming avatar and / or based on other factors. Thus, the number of feature points per body cage may be selected appropriately for different body shapes or other body properties.
[0022] In some implementations, for bandwidth and performance / efficiency purposes or other reasons, the number of feature points may be reduced to fewer 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) in the body cage may be arranged into 15 groups, each representing a portion of the body shape. Figure 3 shows an example of portions 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) a head, torso, hip, right foot, left foot, 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 for 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) because the hand, forearm, and upper arm are omitted. Furthermore, other body shapes may include fewer or more body parts depending on factors such as body geometry, desired resolution, processing power, and the type of avatar character (e.g., animal, alien, monster, etc.).
[0024] Each of the 15 groups / parts in Figure 3 includes feature points that define that part of the avatar body. Such groups of feature points may then in turn be mapped to corresponding clothing. For example, feature points within body cage 300 that define the left / right forearms, left / right upper arms, and torso may be used as an outer cage that is mapped to the inner cage of a jacket, in that the graphical representation of the jacket consists of graphical meshes that render the left / right arms and torso of the jacket that logically and correspondingly fit the left / right arms and torso of the avatar body.
[0025] Furthermore, this division into multiple groups (as shown in FIG. 3) enables customized fitting of clothing to atypical body shapes. For example, a 3D avatar may be in the form of a "one-armed" avatar character, missing a left arm. Thus, the 3D avatar's body cage lacks groups of feature points corresponding to the left hand, left forearm, and left upper arm. Then, when a jacket is selected to fit onto the 3D avatar, the jacket's right forearm, right upper arm, and torso can be deformed to match the corresponding right forearm, right upper arm, and torso of the 3D avatar (body mannequin), while the jacket's left forearm and left upper arm are not deformed (e.g., remain frozen in their original form from their parent space) because there is no left arm cage of the body mannequin to be subjected to deformation.
[0026] Figure 4 shows an example of a clothing layer 400 deformed on top of a body cage (such as body cage 300 shown in Figure 3), according to some implementations. Clothing layer 400 is a graphical representation of a jacket (shown in Figure 4 with gray color coding) whose parts may be generated / rendered using a polygon mesh 402 consisting of a collection of vertices, edges, and faces.
[0027] The garment layer 400 includes an inner cage (not shown in FIG. 4 ) with feature points that correspond to feature points of the body cage 300. In particular, the feature points of the inner cage of the garment layer 400 are mapped to feature points of the body cage 300, which constitute the left and right forearms, left and right upper arms, and torso. In some implementations, this mapping involves directly mapping the feature points of the inner cage of the garment layer 400 to the coordinate locations of 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, or the mapping may be n:1 or 1:n (n is an integer greater than 1), in which case multiple feature points in one cage may map to the same feature points of the other cage (or some feature points may not be mapped).
[0028] Garment layer 400 includes an outer cage having feature points spaced apart from and linked to corresponding feature points of its inner cage of garment layer 400. The feature points of the outer cage of garment layer 400 define or otherwise lie along the contour / geometry of the jacket's exterior, such as defining features such as the jacket's hood 404, cuffs 406, and straight-cut torso 408.
[0029] According to various implementations, spatial distances (e.g., the spatial distance between feature points of the inner cage of garment layer 400 and corresponding feature points of the outer cage of garment layer 400) are kept constant during fitting of garment layer 400 to the outer cage of an existing layer (or avatar body). In this manner, feature points of the inner cage of garment layer 400 may be mapped to feature points of body cage 300 to "fit" the inside of the jacket to the avatar's torso and arms. Then, with the distance between feature points of the inner cage of garment layer 400 and corresponding feature points of the outer cage of garment layer 400 kept constant, the outer contour of the jacket is also deformed to match the shape of the avatar body, which can result in at least partially maintaining the visual appearance (graphical representation) of the jacket's hood, cuffs, straight-cut torso, and other surface features 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 manner to fit any arbitrary shape / size of avatar body (body cage), such as tall, short, slim, muscular, humanoid, animal, alien, etc.
[0030] In some implementations, additional clothing layers may be positioned on top of other clothing layers (e.g., in response to a user selection). FIG. 5 shows an example in which a portion of the clothing layer and body cage 300 of FIG. 4 are used to form an outer cage 500, according to some implementations. More specifically, the outer cage feature points of clothing layer 400 of FIG. 4 are now combined with the feature points of body cage 300 to result in a composite outer cage 500 consisting of feature points of the exposed portions of body cage 300 and feature points along the outer surface of the jacket. For example, the exposed outer surface of the jacket (formed by the body, hood, and sleeves of the jacket) provides one set of feature points, and the exposed legs, hands, head, and portion of the body chest not covered by the jacket provide another set of feature points, and these two sets of feature points (combined) provide the feature points of 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 garment layer 400 of FIG. 4. In some implementations, different and / or additional and / or fewer feature points may be used for areas of the jacket of the outer cage 500 of FIG. 5 compared to the feature points of the outer cage of the jacket (garment layer 400) of FIG. 4. For example, if higher resolution or a tighter fit is desired for the next layer of garment above the outer cage 500, additional feature points may be calculated for the outer cage 500 encompassed by an area of the jacket (compared to the outer cage of the garment layer 400 of FIG. 4). Similarly, if lower resolution or a less tight fit is desired for the next layer of garment above the outer cage 500, and / or due to other considerations such as improved processing / bandwidth efficiency provided by using as few feature points as possible, feature points may be calculated for the outer cage 500 encompassed by an area of the jacket (compared to the outer cage of the garment layer 400).
[0032] In operation, if the user wishes to fit an additional clothing layer (such as an overcoat or other clothing) over the jacket (clothing layer 400) and / or over other portions of the avatar body, feature points of the inner cage of such additional clothing layer are mapped to corresponding feature points of outer cage 500. Thus, transformation (e.g., fitting) can be performed in a manner similar to that described in connection with FIG.
[0033] Thus, following the clothing layering example of FIGS. 4 and 5, a first layer of clothing (clothing layer 400) is wrapped around the body by matching feature points of the avatar body's "outer cage" (body cage 300) with feature points of the first layer of clothing's "inner cage." This matching may be performed in the cage's UV space, so as not to rely on the number of feature points that match exactly between the inner and outer cages. For example, feature points may be vertices that have both positions and texture space coordinates. Texture space coordinates are typically expressed in the range [0, 1] for U and V coordinates, respectively. Texture space may be thought of as an "unwrapped" normalized coordinate space for vertices. By performing correspondence between two sets of vertices in UV space and not using the positions of those vertices, the correspondence between vertices is performed in normalized space, thereby removing the difficult requirement of an exact vertex-to-vertex index mapping.
[0034] According to the technology described herein, each avatar body and clothing item is therefore associated with an "inner cage" and an "outer cage." In the case of an avatar body, the inner cage represents a default "mannequin" (different mannequins may be provided for different avatar body shapes), and the avatar body's "outer cage" represents an envelope around the avatar body's shape. With respect to clothing items, the "inner cage" represents the inner envelope used to define how the clothing item encases the underlying body (or a body that has a previous clothing layer already fitted onto it), and the "outer cage" represents how the next clothing layer will be wrapped around this particular clothing item when worn by an avatar body.
[0035] 6A-6D show examples of layered clothing deformed on various avatar body shapes, according to some implementations. FIG. 6A shows a mannequin 600 in the shape of a generic game player, with an outer cage consisting of 15 groups of feature points as described above in connection with FIG. 3. FIG. 6A also shows different types of clothing, namely, 602 (shirt and shorts), 604 (shirt, pants, and sneakers), 606 (dress), 608 (blouse, skirt, and shoes), 610 (summer dress), and 612 (armor), that are fitted to the shape / size of the mannequin 600. Additionally, the mannequin 600 can be "skinned" with other external graphical features, such as gray skin and a smile in FIG. 6A.
[0036] Figure 6B shows a mannequin 614 that has a different shape / size (e.g., a more muscular build and definition) than mannequin 600 of Figure 6A. Additionally, 616-626 show a form-fitting protective garment on mannequin 614, and then show the same item of clothing from Figure 6A being modified to fit as an additional layer over the protective garment.
[0037] 6B shows another mannequin 628 having a different (e.g., slimmer) shape / size than mannequin 614. Mannequin 628 has a form-fitting dark shirt, dark leggings, and boots on it, as shown at 630-640, and then has the same item of clothing of FIG. 6A modified to form a form-fitting garment as an additional layer over the dark shirt, dark leggings, and boots.
[0038] Figure 6C shows mannequins 642 and 656 of different shapes and sizes, both skinned at 644-654 and 658-666, respectively, to appear as "monsters" (e.g., avatars with horns, claws, fangs, ferocious animal-like faces, and other adornments), and further shows the same items of clothing from Figure 6A deformed to fit as clothing layers over the surface shapes / features of the monsters.
[0039] Figure 6D shows a mannequin 668 that has a different shape / size (e.g., a larger build) than mannequin 628 of Figure 6B. Mannequin 668 has a form-fitting dark shirt, dark pants, and sneakers on it, as shown at 670-680, and then has the same items of clothing of Figure 6A modified to form a form-fitting garment as an additional layer over the dark shirt, dark pants, and sneakers.
[0040] Figure 6D also shows another mannequin 682 in the form of an "alien" (e.g., an avatar with a non-humanoid head / arm / leg shape), and 684-694 further show the mannequin 682 being skinned with alien features and / or alien clothing. 684-694 then show the same item of clothing from Figure 6A being modified to fit as a clothing layer over the monster features / clothing.
[0041] According to various implementations, the mapping between the feature points of the inner and outer cages may 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 distances between the vertices of the mesh (feature points of the outer cage) and the implicit surface defined by the 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 computation may be optimized by solving a system of linear equations, which can use a highly vectorized compute structure. Technical advantages may include at least the following: - embodiments support wrapping clothing around any body without a shared topology that can be constructed independently relative to the cage; - Distance maintenance (e.g., the relative distance between the body vertices and the clothing vertices is maintained during the RBF deformation step by the intermediate cage), and - The embodiment is able to handle large mesh deformations caused by translation, rotation and deformation of 3D meshes.
[0043] RBF is a dictionary<key, value> Represented by a data structure or dictionary<key, value> It can be analogized to a 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, key-value pairs<key, value> The RBF function with<key, value> where key = vertex position of the inner cage and value = vertex position of the outer cage.
[0045] For 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 feature points in the inner cage of the next layer and the corresponding feature points in the outer cage of the existing layer. Thus, if the vertex position of feature point 1 in the outer cage (of the existing layer) is given as input to this RBF function, the value of the corresponding feature point 1 in the inner cage (of the next layer) is calculated by the RBF function such that rbf<vertex position of feature point 1 in the inner cage, vertex position of corresponding feature point 1 in the outer cage> = 100. The RBF function (calculation) is then successively performed for the vertex positions (feature points) of each outer cage of the existing layer, such that the vertex positions of the corresponding feature points in the inner cage (of the next layer) are identified / interpolated from the known vertex positions of the existing feature points in the outer cage, and the output of the RBF function "100" is maintained for all of the 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 seen by reference to FIGS. 7 and 8. Beginning with FIG. 7, FIG. 7 shows a diagram 700 representing the initial state of layers according to some implementations. The inner cages of each of the four layers (e.g., Layer 0 to Layer 3, with Layer 0 being the lowest layer and going up to the top layer, Layer 3) are shown at 702, while the outer cages of Layers 0 to 3 are shown at 704. The bottom layer, Layer 0, may be a body cage or a first layer of clothing placed over the body cage. In the initial state of FIG. 7, all layers are the same (e.g., have the same values for vertex positions across layers) in terms of the positions of the vertices (feature points) of the inner cage 702 and the outer cage 704. Thus, the positions of the vertices (feature points) in the outer cage of Layer 0 are the same as the positions of the vertices (feature points) in the outer cages of Layers 1 to 3. Similarly, the positions of the vertices (feature points) in the inner cage of Layer 0 are the same as the positions of the vertices (feature points) in the inner cage of Layer 0.
[0047] 7, each of the layers (both the inner and outer cages) includes protrusions 706, which are structures that differ from / protrude from the generally planar surface of the layer. From the perspective of an avatar mannequin, for example, the protrusions 706 may represent irregular contours of a body shape (e.g., fingers, ears, noses, elbows, horns, etc.). From the perspective of clothing, the protrusions 706 may represent spikes, buttons, fluffy / baggy portions of clothing, etc.
[0048] Referring now to sub-diagram 708 of FIG. 7, a representation of an individual layer is shown. Each layer is defined by an inner / outer cage pair. A layer in sub-diagram 708 includes a protrusion 706, with the outer cage having feature points (vertices) shown as filled dots, and the 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<key, value> where key = inner cage vertex position, value = outer cage vertex position. In some layer geometries where there may not be a one-to-one correspondence between feature points in the inner cage and feature points in the outer cage (e.g., one of the feature points is missing or misaligned), RBF interpolation may be used to define missing feature points (e.g., to reconstruct or fill in missing values).
[0049] The distance D1 between 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 more pixels, such that the distance D2 is greater than the distance D1.
[0050] As described throughout this disclosure, distances D1 and D2 may be maintained when a new layer is snugly fitted over an existing layer (described next in connection with FIG. 8). In this way, the visual appearance of the surface features of a clothing layer may be at least partially maintained. For example, “baggy” pants fitted over an avatar will still appear “baggy” even though the avatar body or underlying clothing layer may have a different shape / contour (slim or otherwise non-baggy). As another example, a “spiked jacket” may be fitted over an avatar, and then a scarf may be snugly fitted over the spiked jacket to provide the visual appearance of the scarf being suspended by the “spikes” of the jacket rather than following the peaks and valleys of each spike.
[0051] Referring now to Figure 8, Figure 8 shows a diagram 800 representing new layers being formed on top of existing layers, according to some implementations. As shown in diagram 800 and as described below, each subsequent (new) layer is increasingly inflated to accommodate the previous (existing) layer.
[0052] Furthermore, the inner cage of the new layer is equal to the outer cage of the immediately preceding (existing) layer. For example, layer 0 includes inner cage 802 and outer cage 804. Layer 0 may be, for example, the first layer of clothing fitted onto the avatar body / mannequin. Alternatively, layer 0 may be the base layer used to convert a standard body template into the current avatar body.
[0053] Layer 1 (the second layer of the garment fitted over the first Layer 0) includes an inner cage 806 that is deformed (inflated) to be equal (e.g., in terms of shape, size, contour, etc.) to the outer cage 804 of the previously fitted Layer 0, and the outer cage 808 of Layer 1 is correspondingly inflated (e.g., to maintain the distance between corresponding feature points of cages 806 and 808).
[0054] Layer 2 (the third layer of the garment fitted over the second Layer 1) includes an inner cage 810 that is deformed (inflated) to match the outer cage 808 of the previously fitted Layer 1, and the outer cage 812 of Layer 2 is correspondingly inflated. Layer 3 (the fourth layer of the garment fitted over the third Layer 2) includes an inner cage 814 that is deformed (inflated) to match the outer cage 812 of the previously fitted Layer 2, and the outer cage 816 of Layer 3 is correspondingly inflated.
[0055] The steps for the sequential overlay of layers shown in diagram 800 of FIG. 8 may be described as follows. 1. Clothing Layer N: A. Layer N is deformed around the avatar body by matching the outer cage of the avatar body with the inner cage of clothing layer N. B. The outer cage of garment layer N is also transformed, now encasing the combined body in garment. 2. Clothing layer N+1: A. Garment layer N+1 is deformed around body + clothing layer N by matching the new outer cage from step 1B with the inner cage of clothing layer N+1. B. The outer cage of the above two combined body and clothing layers is computed by deforming the outer cage of clothing layer N+1 to enclose the combined geometry of the two body+clothing layers. 3. Continue the same procedure as above for the number of clothing layers N+2, etc. worn by the avatar.
[0056] Thus, in accordance with the above, every layer defines rules (using RBF interpolation) for how to get from the current layer to the next layer. In the example of Figure 8, RBF interpolations are chained in order to get from any level to any other level in an upward direction of overlap (which, in the case of an avatar cage wearing layers of clothing, could correspond to an outward direction from the mannequin). In some implementations, RBF interpolations may be chained in the reverse direction to get from an upper layer to a lower layer (e.g., to provide a deformation suitable for an item like armor plating that compresses a layer below the armor plating rather than expanding to fit over a puffy jacket).
[0057] 9 shows a diagram 900 representing the logical hierarchical layering of objects, such as clothing, on an avatar body 902, according to some implementations. The symbolic division between different layers is depicted by dashed lines in FIG. 9, with the lowest (base) layer at the bottom of diagram 900 and the highest layer at the top of diagram 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 placement. For example, socks may be defined as items that should be placed directly on the feet and are placed in a layer in front of shoes (which may be placed on top of the socks).
[0058] In the example shown in diagram 900, an avatar body 902 forms a base (first level) graphical object on top of which second level graphical objects such as socks 904, hand accessories (e.g., rings) 906, makeup 908, etc. may be placed.
[0059] The second level may be followed in turn by subsequent levels of graphical objects in the hierarchy, such as clothing (innerwear) 910, shoes 912, clothing (outerwear) 914, accessories 916 (e.g., neck accessories such as scarves, ear, nose, eyebrow piercings, etc.), hair 918, and accessories 920 (e.g., front / back / shoulder accessories, hats, etc.).
[0060] It should be understood that the graphical objects and the order of the various levels of the graphical objects depicted in Figure 9 are examples only. Other implementations may include different / fewer / additional graphical objects than those depicted in Figure 9, and such graphical objects may be arranged at different levels and in an order (or out of order) relative to those depicted in Figure 9.
[0061] Figure 10 shows an example of clothing being deformed on an avatar body, according to some implementations. Figure 10 may be considered in conjunction with Figures 7-9 above and their accompanying discussion.
[0062] Starting at 1000, a user has selected an avatar body that has a generally stocky build. The avatar body may be selected, for example, from a library of avatars provided by an avatar creator. Also at 1000, the user has selected a first layer of clothing using one or more tools (described below in connection with FIGS. 11 and 13) and fitted the first layer of clothing onto the avatar body such that the shoes, pants, belt, and coat of the first layer of clothing are deformed to fit the stocky build of the avatar body. These clothing items in the first layer of clothing may be selected, for example, from a library of clothing items provided by the clothing creator.
[0063] It should be noted that in 1000, one or more of the clothing items shown on the avatar body may alternatively be skins provided for the avatar by the avatar creator, rather than clothing items that are fitted / transformed onto the avatar body using the techniques described herein.
[0064] Next, at 1002, a jacket 1004 is available for selection from a garment library, as seen on a generic mannequin 1006. The jacket 1004 of 1002 can be a generic template for a jacket (shown as worn on the generic mannequin 1006). The jacket 1004 of 1002 may be formed by a graphical mesh. The jacket 1004 of 1002 may have an inner / outer cage already configured for the jacket 1004 while in the garment library, or the inner / outer cage may be calculated later at run time after the user selects the jacket from the garment library. The jacket may be selected by the user, for example, as another garment to layer over the garment shown in 1000.
[0065] Next, at 1008, the steps described above are performed, including mapping the inner cage of jacket 1004 from 1002 onto the outer cage of the garment from 1000 so as to encase the previous garment from 1000 with the jacket, and deforming the outer cage of jacket 1004 from 1002 to maintain the vertex distance between the outer cage and inner cage of jacket 1004.
[0066] The results of the transformation at 1008 are shown at 1010. In 1010, the jacket 1004 from 1002 has been transformed to fit the stocky 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 / underlying clothing layer, and the shape of the jacket 1004 has been adapted (e.g., inflated) to the combined shape of the avatar and the previous / underlying clothing. Additionally, the jacket 1004 has retained the visual appearance of its various contours / features (e.g., hood, cuffs, etc.) as a result of maintaining the distance between feature points within the inner / outer cages. As can be seen, portions of the clothing shown in 1000 are visible underneath the jacket (e.g., circular items visible in a straight line starting from the neck and descending to the torso).
[0067] 11 is a diagram of an exemplary system architecture 1100 including a 3D environment platform capable of supporting 3D avatars with layered clothing, according to some implementations. In the example of FIG. 11, the 3D environment platform is described in the context of a gaming platform 1102 purely for purposes of explanation; various other implementations may provide other types of 3D environment platforms, such as online conferencing platforms, virtual reality (VR) or augmented reality (AR) platforms, or other types of platforms capable of providing 3D content. The descriptions provided herein with respect to the gaming platform 1102 and other elements of the system architecture 1100 may be adapted for use with such other types of 3D environment platforms.
[0068] Online gaming platforms (also called "user-generated content platforms" or "user-generated content systems") provide various ways for users to interact with each other, such as while playing electronic games. For example, users of an online gaming platform may work together toward a common goal, share various virtual game items, send electronic messages to each other, etc. Users of an online gaming platform may play games using characters such as the 3D avatars with layered clothing described above that allow users to navigate the rendered 3D world of the electronic game.
[0069] Online gaming platforms may also allow users of the platform to create and animate avatars and create other graphical objects for placement in the 3D world. For example, users of the online gaming platform may be enabled to create, design, and customize avatars, and to create, design, and fit various clothing items to their avatars.
[0070] 11, an exemplary system architecture 1100 (also referred to herein as a "system") includes an online gaming platform 1102, a first client device 1110A, and at least one second client device X 1110X (generally referred to herein as a "client device 1110"). The online gaming 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 arranged in the same or different manners as shown in FIG. 11.
[0071] A communications network 1122 may be used for communications between the online gaming platform 1102 and the client devices 1110 and / or 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 a 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), a router, a hub, a switch, a server computer, or a combination thereof.
[0072] Client device 1110A may include a gaming application 1112 and one or more user interfaces 1114 (e.g., audio / video input / output devices). Similarly, client device X 1100X may include a gaming application 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, a speaker, headphones, a display device, a camera, etc.
[0073] System architecture 1100 may further include one or more storage devices 1124. Storage device 1124 may, for example, be a storage device within online gaming platform 1102 or communicatively coupled to online gaming platform 1102 via network 1122 (as shown in FIG. 11 ). Storage device 1124 may store, for example, graphical objects rendered within game 1106 by game engine 1104 or game application 1112 / 1120, and graphical object configuration / property information (e.g., coordinate information of feature points, size dimensions, etc. that can be used to generate the cage and for transformations as described above).
[0074] In some embodiments, the storage device 1124 can be part of one or more separate content distribution networks that provide the graphical objects rendered within the game 1106. For example, an avatar creator can publish avatar templates to a library accessible on a first storage device, and a clothing creator can publish clothing templates to a library accessible on a second storage device (separate and independent from the avatar creator). The game application 1112 can then pull (or have the game application 1112 push) the graphical objects (avatars and clothing items) stored on the first / second storage devices for calculation / compilation / transformation at runtime for presentation during game play.
[0075] In some implementations, storage device 1124 may be 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, storage device 1124 may include multiple storage components (e.g., multiple drives or multiple databases) that may be spread across multiple computing devices (e.g., multiple server computers).
[0076] In some implementations, online gaming platform 1102 may include a server (e.g., a cloud computing system, a rack-mounted server, a server computer, a cluster of physical servers, etc.) having one or more computing devices. In some implementations, the server may be included in online gaming platform 1102, may be a separate system, or may be part of another system or platform.
[0077] In some implementations, online gaming 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 (e.g., hard disks, memory, databases), networks, software components, and / or hardware components that may be used to execute operations on online gaming platform 1102 and provide users with access to online gaming platform 1102. Online gaming platform 1102 may also include websites (e.g., web pages) or application backend software that may be used to provide users with access to content provided by online gaming platform 1102. For example, a user may access online gaming platform 1102 using a game application 1112 on a client device 1110.
[0078] In some implementations, the online gaming platform 1102 may be some type of social network that provides connections between users, or some type of user-generated content system that allows users (e.g., end users or consumers) to communicate with other users on the online gaming platform 1102, where 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 a single individual. However, other implementations of the present disclosure encompass a "user" (e.g., a creating user) being an entity or automated source controlled by a set of users. For example, a set of individual users federated as a community or group within the user-generated content system may be considered a "user."
[0079] In some implementations, the online gaming platform 1102 may be a virtual gaming platform. For example, the gaming platform may offer single-player or multiplayer games to a community of users who may access or interact with the games using client devices 1110 over the network 1122. In some implementations, the games (also referred to herein as “video games,” “online games,” or “virtual games”) may be, for example, two-dimensional (2D) games, three-dimensional (3D) games (e.g., 3D user-generated games), virtual reality (VR) games, or augmented reality (AR) games. In some implementations, users may participate in gameplay with other users. In some implementations, games may be played in real time with other users of the game.
[0080] In some implementations, gameplay may refer to the interactions 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 or other user interface (e.g., user interface 1114 / 1118) of client device 1110.
[0081] In some implementations, the 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 an entity. In some implementations, the game application 1112 may execute in association with the game engine 1104, and the game 1106 may be rendered in association with the game engine 1104. In some implementations, the games 1106 may have a common set of rules or a common goal, and the environments of the games 1106 share a common set of rules or a common goal. In some implementations, different games may have different rules or goals from one another.
[0082] In some implementations, a game may have one or more environments (also referred to herein as a "game environment" or "virtual environment"), and multiple environments may be linked. An example of an environment may be a 3D environment. One or more environments of a game 1106 may be collectively referred to herein as a "world" or "game world" or "virtual world" or "universe." For example, a user may build a virtual environment that is linked to another virtual environment created by another user. A virtual game character (such as a 3D avatar with layered clothing as described herein) may cross a virtual boundary to enter an adjacent virtual environment.
[0083] It may be noted that a 3D environment or world uses graphics that provide a three-dimensional representation of geometric data representing the game content (or at least present the game content to appear as 3D content, regardless of whether a 3D representation of the geometric data is used), whereas a 2D environment or world uses graphics that provide a two-dimensional representation of geometric data representing the game content.
[0084] In some implementations, the online gaming platform 1102 may host one or more games 1106 and may allow users to interact with the games 1106 using game applications 1112 on client devices 1110. Users of the online gaming platform 1102 may play, create, interact with, or build games 1106, communicate with other users, and / or create and construct objects (e.g., also referred to herein as “items” or “game objects” or “virtual game items” or “graphic objects”) for the games 1106. For example, in generating user-generated virtual items, users may, among other things, create characters, animations for characters, decorations (e.g., clothing, skins, accessories, etc.) for characters, one or more virtual environments for interactive games, or build structures used within the games 1106. In some implementations, users 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 gaming platform 1102 .
[0085] In some implementations, online gaming platform 1102 may transmit 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 (e.g., game objects, games, user information, videos, images, commands, media items, etc.) related to online gaming platform 1102 or a game application. In some implementations, game objects (e.g., also referred to herein as “items” or “objects” or “virtual game items”) may refer to objects used, created, shared, or otherwise depicted in a game 1106 of online gaming platform 1102 or a game application 1112 or 1120 of a client device 1110. For example, game objects may include parts, models, characters or components thereof (such as a face, arms, lips, etc.), tools, weapons, clothing, buildings, vehicles, currency, flora, fauna, components of the above (e.g., windows on a building), etc.
[0086] It may be noted that the online gaming platform 1102 hosting the game 1106 is provided for illustrative purposes. In some implementations, the online gaming platform 1102 may host one or more media items, which may include communication messages from one user to one or more other users. The media items may include, but are not limited to, digital videos, digital movies, digital photos, digital music, audio content, melodies, website content, social media updates, e-books, e-magazines, digital newspapers, digital audiobooks, e-journals, weblogs, real simple syndication (RSS) feeds, e-comics, software applications, etc. In some implementations, the media items may be electronic files that can be executed or loaded using software, firmware, or hardware configured to present the digital media items to entities.
[0087] In some implementations, games 1106 may be associated with a particular user or a particular group of users (e.g., private games) or may be made generally available to users of online gaming platform 1102 (e.g., public games). In some implementations in which online gaming platform 1102 associates one or more games 1106 with a particular user or group of users, online gaming platform 1102 may associate a particular user with a game 1106 using user account information (e.g., a user account identifier such as a username and password).
[0088] In some implementations, the online gaming 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 developing or running the game 1106. For example, the game engine 1104 may include, among other features, a rendering engine (“renderer”) for 2D, 3D, VR, or AR graphics, a physics engine, a collision detection engine (and collision response), a sound engine, scripting capabilities, an animation engine, an artificial intelligence engine, networking capabilities, streaming capabilities, memory management capabilities, threading capabilities, scene graph capabilities, or video support for cinematics. Components of the game engine 1104 may generate commands (e.g., rendering commands, collision commands, animation commands, physics commands, etc.) that help compute and render the game, including commands to select an avatar, customize an avatar, select clothing items, transform clothing items as layers on an avatar, and various other operations described herein. In some implementations, the game application 1112 / 1120 of the client device 1110 may work independently, in cooperation with the game engine 1104 of the online game platform 1102, or a combination of both, to perform the operations described herein related to transforming and rendering layered clothing at runtime.
[0089] In some implementations, both the online gaming platform 1102 and the client devices 1110 run a game engine or game application (1104, 1112, 1120, respectively). The online gaming platform 1102, using the game engine 1104, may perform some or all of the game engine functionality (e.g., generate physics commands, animation commands, rendering commands, etc., including the clothing layer deformations described above) or may offload some or all of the game engine functionality 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 functionality running on the online gaming platform 1102 and the game engine functionality running on the client device 1110.
[0090] For example, the game engine 1104 of the online gaming platform 1102 may be used to generate physics commands when there is a collision between at least two game objects, while further game engine functionality (e.g., generating rendering commands, including transforming and displaying layered clothing) may be offloaded to the client device 1110. In some implementations, the ratio of game engine functionality executed on the online gaming platform 1102 to game engine functionality executed on the client device 1110 may be changed (e.g., dynamically) based on gameplay conditions. For example, if the number of users participating in gameplay of a particular game 1106 exceeds a threshold number, the online gaming 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 a game 1106 on a client device 1110 and may send control commands (e.g., right, left, up, down, user selection, or character position and velocity information, etc.) to the online gaming platform 1102. After receiving the control command from the client device 1110, the online gaming platform 1102 may send gameplay instructions (e.g., position and velocity information for a character participating in group gameplay, or commands, such as rendering commands, collision commands, etc.) to the client device 1110 based on the control command. For example, the online gaming platform 1102 may perform one or more logical operations on the control command (e.g., using the game engine 1104) to generate gameplay instructions for the client device 1110. In other cases, the online gaming platform 1102 may pass one or more of the control commands from one client device 1110 to other client devices participating in the game 1106. The client device 1110 may use the gameplay instructions to render the gameplay for presentation on the display of the client device 1110, including the avatars with the layered clothing described above.
[0092] In some implementations, control instructions may refer to instructions indicating in-game actions of a user's character. For example, control instructions may include user inputs for controlling in-game actions, such as right, left, up, down, user selection, gyroscope position and orientation data, force sensor data, etc. Control instructions may include character position and velocity information. In some implementations, control instructions are sent directly to the online game platform 1102. In other implementations, control instructions may be sent from the client device 1110 to another client device, which generates gameplay instructions using a local game engine application 1120. The control instructions may include instructions for playing voice communication messages or other sounds from another user on an audio device (e.g., speakers, headphones, etc.), for example, voice communication or other sounds generated using audio spatialization techniques as described herein.
[0093] In some implementations, gameplay instructions may refer to instructions that enable a client device 1110 to render gameplay of a game, such as a multiplayer game. Gameplay instructions may include one or more of user input (e.g., control instructions), character position and velocity information, or commands (e.g., physics commands, animation commands, rendering commands, collision commands, etc.).
[0094] In some implementations, the client devices 1110 may each 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 network-connected television, a game console, etc. In some implementations, the client devices 1110 may also be referred to as "user devices." In some implementations, one or more client devices 1110 may connect to the online gaming platform 1102 at any time. It may 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 a game application 1112 or 1120, respectively. In one implementation, the game application 1112 or 1120 may enable a user to use and interact with the online gaming platform 1102, such as controlling a virtual character in a virtual game hosted by the online gaming platform 1102, or viewing or uploading content such as games 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., virtual characters in a virtual environment, etc.). In another example, the game application may be a native application (e.g., a mobile application, app, or game program) that is installed and executed locally on the client device 1110 and enables a user to interact with the online gaming platform 1102. The gaming application may render, display, or present content (e.g., a web page, a media viewer) to the user. In implementations, the gaming application may also include an embedded media player (e.g., a Flash player) that is embedded in a web page.
[0096] According to aspects of the present disclosure, the game application 1112 / 1120 may be an online gaming platform application through which a user builds, creates, edits, and uploads content to the online gaming platform 1102 and interacts with the online gaming platform 1102 (e.g., plays games 1106 hosted by the online gaming platform 1102). Thus, the game application 1112 / 1120 may be provided to the client device 1110 by the online gaming platform 1102. In another example, the game application may be an application that is downloaded from a server.
[0097] In some implementations, a user may log in to the online gaming platform 1102 through a game application. The user may access a user account by providing user account information (e.g., a 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 gaming platform 1102.
[0098] In general, functionality described in one implementation as being performed by online gaming platform 1102 may be performed by client device 1110 or server, as appropriate, in other implementations. In addition, functionality attributed to a particular component may be performed by different or multiple components working together. Online gaming platform 1102 may also be accessed as a service offered to other systems or devices through an appropriate application programming interface (API), and thus is not limited to use in websites.
[0099] FIG. 12 is a flow diagram illustrating a computer-implemented method 1200 for providing layered clothing on a 3D avatar, according to some implementations. For simplicity, various operations of method 1200 are described in the context of a game application 1112 on a client device 1110 performing the operations. However, as already described above in connection with FIG. 11 , some of the operations may alternatively or additionally be performed in whole or in part by a game engine 1104 on the game platform 1102. The example method 1200 may include one or more operations represented by one or more blocks, such as blocks 1202 through 1212. Various blocks of method 1200 and / or any other processes described herein may be combined into fewer blocks, divided into additional blocks, supplemented by further blocks, and / or eliminated based on a desired implementation.
[0100] The method 1200 of Figure 12 may be described herein with reference to elements shown in Figures 1-11. In one embodiment, the operations of the method 1200 may be performed in a pipelined sequential manner. In other embodiments, some operations may be performed out of order, in parallel, etc.
[0101] In block 1202 (“Identify Body Feature Points for 3D Avatar Body Cage”), a user launches the game application 1112 and accesses a library of avatar bodies to select an avatar for use within a 3D environment (e.g., an online game). The selected avatar may be a generic template with a general shape / size, or it may be a template for a more detailed avatar of a specific skinned type (e.g., humanoid, alien, animal, etc.). The avatar selected from the library may already have a body cage configured on it (e.g., see FIGS. 1-3 ), and / or the game application 1112 may generate at least a portion of the body cage at run time. The game application identifies feature points for the body cage that define the shape of the avatar. Block 1202 may be followed by block 1204.
[0102] In block 1204 (“Map inner feature points of inner cage of first garment to feature points of body of body cage”), the user accesses a library of clothing items and selects a first garment. Similar to the avatar body in block 1202, the first garment in the library may have a cage configured thereon, and / or the game application 1112 may generate at least a portion of the cage at runtime. Such a cage of the first garment may include an inner cage and an outer cage (see, for example, FIGS. 7 and 8 ). In block 1204, the game application 1112 may map inner feature points of the inner cage of the first garment to feature points of the body of the body cage using RBF techniques to deform the first garment to fit the avatar body. Block 1204 may be followed by block 1206.
[0103] At block 1206 (“Fitting First Garment to Avatar Body”), the game application 1112 fits the first garment to the avatar body. This fitting may be performed by the game application 1112 at block 1206 by at least partially enveloping the avatar body in the transformed first garment. For example, coordinate positions of at least some of the interior feature points (of the interior cage of the first garment) take on values of coordinate positions of the body feature points of the body cage. Block 1206 may be followed by block 1208.
[0104] In block 1208 ("Map inner feature points of the inner cage of the second garment to outer feature points of the outer cage of the first garment"), the user selects a second garment from the library. Like the first garment in block 1204, the second garment 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 garment) to outer feature points of the outer cage of the transformed first garment already fitted to the avatar body, so as to transform the second garment to fit the avatar body with the first garment fitted on it. Block 1208 may be followed by block 1210.
[0105] At block 1210 (“Fitting Second Garment to Avatar Body”), the game application 1112 fits the second garment to the avatar body (which has the first garment already fitted thereon). This fitting may be performed by the game application 1112 at block 1210 by at least partially enveloping the avatar body (which has the first garment already fitted thereon) with the transformed second garment. For example, the coordinate positions of at least some of the interior feature points (of the interior cage of the second garment) take on the values of the coordinate positions of the exterior feature points of the exterior cage of the transformed first garment. Block 1210 may be followed by block 1212.
[0106] In block 1212 (“Iterate”), operations similar to those described above may be performed to layer and transform additional garments on the existing layers. For example, in the first iteration described above in connection with blocks 1202-1210, a first garment is fitted over the body cage. In a second iteration, which may be performed in block 1212, additional garments may be fitted over the first garment worn over the body cage. Iterations may be performed to fit additional garment items for any number of items. In some implementations (e.g., when garment items in successive fittings are currently associated with different, non-overlapping portions of the outer cage), fittings may be performed in parallel (e.g., hat fitting may be performed simultaneously with shoe fitting, shirt fitting may be performed simultaneously with pants fitting, socks fitting may be performed simultaneously with glove fitting, etc.).
[0107] 13 is a block diagram of an example computing device 1300 that may be used to implement one or more features described herein. The client device 1110 and / or the gaming 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 perform the methods described herein. The computing device 1300 may be any suitable computer system, server, or other electronic or hardware device. For example, the computing device 1300 may be a mainframe computer, a desktop computer, a workstation, a portable computer, or an electronic device (such as a portable device, a mobile device, a cell phone, a smartphone, a tablet computer, a television, a TV set-top box, a personal digital assistant (PDA), a media player, a gaming device, a 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 audio / video input / output device(s) 1314.
[0108] Processor 1302 can be one or more processors and / or processing circuits for executing program code and controlling basic operations of computing device 1300. A "processor" includes any suitable hardware and / or software system, mechanism, or component for processing data, signals, or other information. A processor may include a general-purpose central processing unit (CPU), multiple processing units, a system with dedicated circuitry for implementing functions, or other systems. Processing need not be limited to a particular geographic location or have temporal limitations. For example, a processor may perform its functions in "real time," "offline," "batch mode," etc. Portions of processing may be performed at different times and in different locations by different (or the same) processing systems. A computer may be any processor in communication with memory.
[0109] Memory 1304 may be provided within computing device 1300 for access by processor 1302 and may be any suitable processor-readable storage medium suitable for storing instructions for execution by the processor, separate from and / or integrated with processor 1302, such as random access memory (RAM), read-only memory (ROM), electrically erasable read-only memory (EEPROM), flash memory, etc. Memory 1304 may store software that may be executed on computing device 1300 by processor 1302, including an operating system 1308, one or more applications 310, and their associated data 1312. Applications 1310 are examples of tools that may be used to embody game applications 1112 / 1120 or game engine 1104. In some implementations, applications 1310, upon execution by processor 1302, may include instructions that enable processor 1302 to perform or control the execution of operations described herein related to transforming / fitting clothing layered on an avatar body.
[0110] Any of the software in memory 1304 may alternatively be stored in any other suitable storage location or computer-readable medium. Additionally, memory 1304 (and / or other connected storage devices) may store instructions and data used in the features described herein. Memory 1304 and any other type of storage (such as magnetic disk, optical disk, magnetic tape, or other tangible medium) may be considered "storage" or "storage device."
[0111] The I / O interface 1306 may provide functionality to allow computing device 1300 to interface with other systems and devices. For example, network communication devices, storage devices, and input / output devices may communicate with computing device 1300 via the I / O interface 1306. In some implementations, the I / O interface 1306 may be connected to interface devices including input devices (keyboards, pointing devices, touchscreens, microphones, cameras, scanners, etc.) and / or output devices (display devices, speaker devices, printers, monitors, etc.), collectively referred to as at least one audio / video input / output device(s) 1314.
[0112] The audio / video input / output devices 1314 may include audio input devices (e.g., microphones, etc.) that may be used to receive audio messages as input, audio output devices (e.g., speakers, headphones, etc.), and / or display devices that may be used to provide graphical and visual output, such as the exemplary rendered 3D avatar with layered clothing described above.
[0113] 13 shows one block for each of the processor 1302, memory 1304, I / O interface 1306, applications 1310, etc. These blocks may represent one or more processors or processing circuits, operating systems, memory, I / O interfaces, applications, and / or software modules. In other implementations, computing device 1300 may have less than 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] User devices may also implement and / or be used with the features described herein. An exemplary user device may be a computer device including several components similar to computing device 1300, e.g., processor 1302, memory 1304, and I / O interface 1306. An operating system, software, and applications suitable for a client device may be provided in the memory and used by the processor. The I / O interface for the client device may be connected to a network communication device and input and output devices, e.g., a microphone for capturing sound, a camera for capturing images or video, an audio speaker device for outputting sound, a display device for outputting images or video, or other output devices. For example, a display device within audio / video input / output device 1314 may be connected to (or included in) computing device 1300 to display pre- and post-processing images as described herein; such a display device may include any suitable display device, e.g., an LCD, LED, or plasma display screen, a CRT, a television, a monitor, a touchscreen, a 3-D display screen, a projector, or other visual display device. Some implementations may provide an audio output device, for example, text-to-speech voice output or synthesis.
[0115] One or more 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 executed by one or more digital processors (e.g., microprocessors or other processing circuits) and stored in a computer program product that includes a non-transitory computer-readable medium (e.g., storage medium), such as a magnetic, optical, electromagnetic, or semiconductor storage medium, including semiconductor or solid-state memory, magnetic tape, removable computer diskettes, random access memory (RAM), read-only memory (ROM), flash memory, rigid magnetic disks, optical disks, solid-state memory drives, etc. The program instructions can also be contained in and provided as electronic signals, for example, in the form of Software as a Service (SaaS) delivered from a server (e.g., a distributed system and / or cloud computing system). Alternatively, one or more methods can be implemented in hardware (such as logic gates) or a combination of hardware and software. Exemplary hardware can be a programmable processor (e.g., a field programmable gate array (FPGA), complex programmable logic device), general-purpose processor, graphics processor, application-specific integrated circuit (ASIC), etc. One or more methods may be implemented as part of or a component of an application running on the system, or as an application or software running in conjunction with other applications and the operating system.
[0116] One or more methods described herein may be performed within a standalone program that may run on any type of computing device, a program running on a web browser, or a mobile application (“app”) running on a mobile computing device (e.g., a cell phone, a smartphone, a tablet computer, a wearable device (such as a watch, armband, jewelry, hat, goggles, glasses, etc.), a laptop computer, etc.). In one example, a client / server architecture may be used, e.g., a mobile computing device (as a client device) sends user input data to a server device and receives final output data for output (e.g., for display) from the server. In another example, all computations may be performed within a mobile app (and / or other apps) on the mobile computing device. In another example, computations may be split between the mobile computing device and one or more server devices.
[0117] Although the description has been given in connection with specific implementations thereof, these specific implementations are illustrative only and not limiting, and the concepts illustrated in the examples may be applied 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 techniques may be used to implement the routines of a particular implementation. Different programming techniques, for example, procedural or object-oriented programming techniques, may be used. The routines may be executed on a single processing device or multiple processors. Although steps, operations, or computations may be shown in a particular order, the order may be changed in different particular implementations. In some implementations, multiple steps or operations shown herein as sequential may be performed simultaneously. [Explanation of symbols]
[0119] 100 Body Cage 102 minutiae 104 lines / edges 200 Body Cage 202 minutiae 300 Body Cage 400 clothing layers 402 polygon meshes 404 Food 406 Cuffs 408 Straight Cut Body 500 Composite Outer Cage 600 mannequins 614 Mannequin 628 Mannequin 642 Mannequin 656 Mannequin 668 Mannequin 682 Mannequin 700 Figures 702 Inner cage 704 Outer Cage 706 Protrusion 708 Secondary Figures 800 Figures 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 Figures 902 Avatar Body 904 socks 906 Hand Accessories 908 Makeup 910 Clothing (Innerwear) 912 shoes 914 Clothing (Outerwear) 916 Accessories 918 Hair 920 Accessories 1004 Jacket 1006 General-purpose mannequin 1100 System Architecture 1102 Online Game Platform 1104 Game Engine 1106 Games 1110A First Client Device 1110X Second client device X 1112 / 1120 Game Application 1124 Storage Device 1200 methods 1310 Application 1314 Audio / Video Input / Output Devices
Claims
1. A computer-implemented method for providing layering clothing on a three-dimensional (3D) avatar, comprising: identifying an outer cage of a first garment to be fitted to the avatar body; mapping an inner cage of the second garment to the outer cage of the first garment to deform the second garment to fit over the first garment; identifying an outer cage of the second garment, the outer cage of the second garment including a plurality of points that encase the second garment and are spaced a distance from the inner cage of the second garment; mapping an inner cage of the third garment to the outer cage of the second garment to deform the third garment to fit over the second garment; A method comprising:
2. The outer cage of the first garment includes a first plurality of points that encase the first garment; the inner cage of the second garment includes a second plurality of points; and 2. The method of claim 1, wherein mapping the inner cage of the second garment to the outer cage of the first garment comprises mapping the second plurality of points of the inner cage of the second garment to the first plurality of points of the outer cage of the first garment.
3. The plurality of points of the outer cage of the second garment encasing the second garment includes a third plurality of points; and 3. The method of claim 2, wherein the distance extends between one point of the third plurality of points on the outer cage of the second garment and a corresponding point of the second plurality of points on the inner cage of the second garment.
4. Identifying a body cage of the avatar body, the body cage including a plurality of points encasing the avatar body; mapping points of an inner cage of the first garment to points of the body cage to deform the first garment to fit onto the avatar body; The method of claim 1 further comprising:
5. The method described in claim 1, wherein the distance is one of a plurality of different distances separating the plurality of points of the outer cage of the second garment from the inner cage of the first garment.
6. The method of claim 1, wherein the outer cage of the first garment encases the mesh of the first garment and the outer cage of the second garment encases the mesh of the second garment.
7. The method of claim 6, wherein the step of mapping the second plurality of points of the inner cage of the second garment to the first plurality of points of the outer cage of the first garment comprises an n:1 or 1:n mapping of the second plurality of points to the first plurality of points; and The method of claim 2, wherein n is an integer of 1 or greater.
8. A non-transitory computer-readable medium having stored thereon instructions that, in response to execution by a processor, cause the processor to perform or control an operation, the operation comprising: identifying an outer cage of a first garment to be fitted to the avatar body; mapping an inner cage of the second garment to the outer cage of the first garment to deform the second garment to fit over the first garment; identifying an outer cage of the second garment, the outer cage of the second garment including a plurality of points enveloping the second garment and spaced a distance from the inner cage of the second garment; mapping an inner cage of the third garment to the outer cage of the second garment to deform the third garment to fit over the second garment; Including, Non-transitory computer-readable medium.
9. The outer cage of the first garment includes a first plurality of points that encase the first garment; the inner cage of the second garment includes a second plurality of points; and 9. The non-transitory computer-readable medium of claim 8, wherein mapping the inner cage of the second garment to the outer cage of the first garment comprises mapping the second plurality of points of the inner cage of the second garment to the first plurality of points of the outer cage of the first garment.
10. The method of claim 1, wherein the plurality of points on the outer cage of the second garment encasing the second garment includes a third plurality of points; and 10. The non-transitory computer-readable medium of claim 9, wherein the distance extends between one point of the third plurality of points of the outer cage of the second garment and a corresponding point of the second plurality of points of the inner cage of the second garment.
11. The operation is identifying a body cage of the avatar body, the body cage including a plurality of points encasing the avatar body; mapping points of an inner cage of the first garment to points of the body cage to deform the first garment to fit onto the avatar body; 10. The non-transitory computer-readable medium of claim 8, further comprising:
12. A non-transitory computer-readable medium as described in claim 8, wherein the distance is one of a plurality of different distances separating the plurality of points of the outer cage of the second garment from the inner cage of the first garment.
13. A non-transitory computer-readable medium as described in claim 8, wherein the outer cage of the first garment encases the mesh of the first garment and the outer cage of the second garment encases the mesh of the second garment.
14. The method of claim 13, wherein mapping the second plurality of points of the inner cage of the second garment to the first plurality of points of the outer cage of the first garment comprises an n:1 or 1:n mapping of the second plurality of points to the first plurality of points; and n is an integer equal to or greater than 1, 10. The non-transitory computer-readable medium of claim 9.
15. An apparatus comprising: a memory in which instructions are stored; a processor, coupled to the memory, operable to execute the instructions to cause the processor to perform or control operations; Including, The operation is identifying an outer cage of a first garment to be fitted to the avatar body; mapping an inner cage of the second garment to the outer cage of the first garment to deform the second garment to fit over the first garment; identifying an outer cage of the second garment, the outer cage of the second garment including a plurality of points enveloping the second garment and spaced a distance from the inner cage of the second garment; mapping an inner cage of the third garment to the outer cage of the second garment to deform the third garment to fit over the second garment; Including, Device.
16. The outer cage of the first garment includes a first plurality of points that encase the first garment; the inner cage of the second garment includes a second plurality of points; and and wherein the act of mapping the inner cage of the second garment to the outer cage of the first garment includes an act of mapping the second plurality of points of the inner cage of the second garment to the first plurality of points of the outer cage of the first garment.
16. The apparatus of claim 15.
17. The method of claim 16, wherein the plurality of points on the outer cage of the second garment encasing the second garment includes a third plurality of points; the distance extends between a point of the third plurality of points on the outer cage of the second garment and a corresponding point of the second plurality of points on the inner cage of the second garment; the act of mapping the second plurality of points of the inner cage of the second garment to the first plurality of points of the outer cage of the first garment includes an n:1 or 1:n mapping of the second plurality of points to the first plurality of points; and n is an integer equal to or greater than 1, 17. The apparatus of claim 16.
18. The operation is identifying a body cage of the avatar body, the body cage including a plurality of points encasing the avatar body; mapping a plurality of points of an inner cage of the first garment to the plurality of points of the body cage to deform the first garment to fit onto the avatar body; further comprising:
16. The apparatus of claim 15.
19. The device described in claim 15, wherein the distance is one of a plurality of different distances separating the plurality of points of the outer cage of the second garment from the inner cage of the first garment.
20. The device described in claim 15, wherein the outer cage of the first garment encases the mesh of the first garment and the outer cage of the second garment encases the mesh of the second garment.
Citation Information
Patent Citations
Computer-implemented method for designing avatar with at least one garment
JP2016110652A
Method and apparatus for automating 3D item digital conversion in 3D item simulation
KR1020190070884A
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