Layered clothing that conforms to underlying body and / or clothing layers
The method addresses the limitations of existing clothing systems for 3D avatars by using automatic cage-to-cage fitting techniques to transform garments and fit them to any body geometry, achieving seamless customization and simplifying the process.
Patent Information
- Application Number
- JP2023556822
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-07-14
- Filing Date
- 2022-02-04
- Publication Date
- 2025-04-22
- Estimated Expiration
- 2042-02-04
AI Technical Summary
Existing methods for providing clothing for 3D avatars in electronic games require uniform topologies and predefined shapes, limiting customization and requiring complex calculations for fitting garments to irregular body shapes.
A computer-implemented method that uses automatic cage-to-cage fitting techniques to transform garments to fit any body geometry, allowing for customization without predefined shapes and simplifying the process by separating the work of avatar body creators and garment creators.
Enables seamless customization of garments for 3D avatars with any body shape, reducing the need for complex calculations and allowing for automatic fitting of garments, enhancing the flexibility and realism of 3D avatars in gaming environments.
Smart Images

Figure 0007667303000001 
Figure 0007667303000002 
Figure 0007667303000003
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 are incorporated by reference in their entireties herein.
[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, with the 3D avatars having different geometries / shapes for each avatar. For example, the avatars may have a variety of body shapes (e.g., tall, short, muscular, skinny, male, female, human, animal, alien, etc.), numbers and types of limbs, and are customizable with multiple clothes 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, such that the geometry of the clothing matches the geometry of the body. Thus, these techniques achieve some basic geometry matching between the clothing and the body using predefined shapes. However, such techniques (due to the existence of predefined shapes) provide limited ability to customize the body shape and clothing.
[0005] When further customization is required (e.g., due to non-uniform body shapes and clothing of the avatar), 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 cooperation 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 for providing layered clothing on a three-dimensional (3D) avatar includes: Identifying body feature points of a 3D avatar body cage 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 over the avatar body by at least partially enveloping the avatar body having the transformed first garment fitted thereover with 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 a processor to perform or control the execution of an operation. 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 the 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 transformed first garment to obtain a transformed second garment that fits the outer cage of the first garment; and fitting the transformed second garment over the avatar body by at least partially enveloping the avatar body with the transformed first garment fitted thereover in the transformed second garment.
[0008] According to yet another aspect, a display device operable to present a three-dimensional (3D) avatar having the garment layered thereon; 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 3D avatar body cage 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 transformed first garment to obtain a transformed second garment that fits the outer cage of the first garment; and An apparatus is provided that includes a processor, the processor being executable 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 a transformed first garment fitted thereon with the transformed second garment. [Brief description of the drawings]
[0009] [Figure 1] FIG. 1 illustrates an exemplary body cage according to some implementations. [Diagram 2] FIG. 2 illustrates another exemplary body cage according to some implementations. [Diagram 3] 11A-11C are diagrams illustrating examples of portions of a body cage grouped into corresponding body parts according to some implementations. [Figure 4] 13A-13C are diagrams illustrating examples of clothing layers deformed on a body cage according to some implementations. [Diagram 5] 5 illustrates an example of an outer cage formed based on portions of the clothing layer and body cage of FIG. 4 according to some implementations. [Figure 6A]A diagram showing an example of clothing being deformed on an avatar's body shape, according to some implementations. [Figure 6B] A diagram showing an example of clothing being deformed on an avatar's body shape, according to some implementations. [Figure 6C] 4A-4C are diagrams illustrating examples of clothing being deformed on an avatar's body shape, according to some implementations. [Figure 6D] A diagram showing an example of clothing being deformed on an avatar's body shape, according to some implementations. [Figure 7] FIG. 2 illustrates the initial state of a layer according to some implementations. [Figure 8] FIG. 2 illustrates a diagram depicting a layer being 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] 4A-4C are diagrams illustrating examples of clothing layers being transformed on an avatar body according to some implementations. [Figure 11] A diagram of an example 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 PREFERRED EMBODIMENTS
[0010] In the following detailed description, reference is made to the accompanying drawings, which form a part hereof. In the drawings, generally, like numerals identify like elements unless the context dictates otherwise. The exemplary embodiments described 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," and the like 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 are not necessarily referring 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 a layer of clothing to be fitted over an underlying layer 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 items of an avatar. Additionally, the cage-to-cage fitting is performed algorithmically by the gaming platform or software (or other platform / software operating to provide a 3D environment) without requiring the avatar creator (also referred to as the 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 may 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 generic templates of 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 an example. Other implementations of the cage-to-cage layering technique described herein may be applied in other types of 3D environments, such as virtual reality (VR) conferences, 3D sessions (e.g., online lectures or other types of presentations that include 3D avatars), augmented reality (AR) sessions, or other types of 3D environments that may include one or more users represented in the 3D environment by one or more 3D avatars.
[0015] At run-time during a game or other 3D session, the player / user accesses the body library to select a particular body, and accesses the clothing library to select clothing to place on the selected body. The 3D environment platform presenting the avatar then implements cage-to-cage fitting techniques to adjust the clothing (with an automatically determined preferred deformation) to conform to the shape of the body, thereby automatically fitting the clothing to the body (and any intermediate layers, if worn by the avatar). The user may further select additional clothing to fit on top of the underlying clothing (layered clothing), where the additional clothing is deformed to match the geometry of the underlying clothing.
[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. A body mesh 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 parts thereof.
[0017] In comparison, a cage is much simpler than the body mesh and represents an envelope of feature points around the avatar body that has a weak correspondence with the corresponding vertices of the body mesh. As described in more detail below, a cage may be used to represent not only a set of feature points on the avatar body, but also a set of feature points on the clothing.
[0018] 1 illustrates an example 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 / contours of a humanoid body form that serves as a mannequin.
[0019] The body cage 100 includes a number 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 number 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 a humanoid body geometry excluding fingers. Other examples might 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 might 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] The cage may be provided for any arbitrary avatar body shape or clothing shape. For example, FIG. 2 shows another exemplary body cage 200 according to some implementations. The example body cage 200 of FIG. 2 is an outer cage that envelops or is superimposed on the exterior / contour of a generic gaming avatar 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 number of feature points that differ in number compared to the body cage 100, such as a fewer or a 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) 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. Additionally, other body shapes may include fewer or more body parts depending on factors such as body geometry, desired resolution, processing power, type of avatar character (e.g., animal, alien, monster, etc.), etc.
[0024] Each of the 15 groups / parts in FIG. 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 the body cage 300 that define the left / right forearm, left / right upper arm, and torso may be used as an outer cage that is mapped to an inner cage of a jacket, in that the graphical representation of the jacket consists of a graphical mesh that renders 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 groups (as shown in FIG. 3) allows for customized fitting of clothing to non-typical body shapes. For example, a 3D avatar may be in the form of a "one-armed" avatar character that is missing a left arm. Thus, the body cage of that 3D avatar lacks groups of feature points corresponding to the left hand, left forearm, and left upper arm. Then, when a jacket is selected for fitting onto the 3D avatar, the right forearm, right upper arm, and torso of the jacket can be deformed to match the corresponding right forearm, right upper arm, and torso of the 3D avatar (body mannequin), while the left forearm and left upper arm of the jacket are not deformed (e.g., remain frozen in its original form from its parent space) since there is no cage of the left arm of the body mannequin to be subject to deformation.
[0026] Figure 4 shows an example of a clothing layer 400 deformed on 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 grey 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) that has 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 that constitute the left and right forearms, the left and right upper arms, and the 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 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, straight cut torso 408, etc.
[0029] According to various implementations, spatial distances (e.g., spatial distances between feature points of the inner cage of the garment layer 400 and corresponding feature points of the outer cage of the garment layer 400) are kept constant during fitting of the garment layer 400 to the outer cage of an existing layer (or avatar body). In this manner, feature points of the inner cage of the garment layer 400 may be mapped to feature points of the body cage 300 to "fit" the inside of the jacket to the avatar's torso and arms. Then, with the distances between feature points of the inner cage of the garment layer 400 and corresponding feature points of the outer cage of the 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 matching the shape of the avatar body, as shown in FIG. 4. In this manner, the clothing layer 400 may be modified in any suitable manner to fit any arbitrary shape / size of avatar body (body cage), including tall, short, slim, muscular, humanoid, animal, alien, etc.
[0030] In some implementations, additional clothing layers on top of other clothing layers may be positioned (e.g., in response to a user selection). FIG. 5 shows an example in which the clothing layers and a portion of the 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 the clothing layer 400 of FIG. 4 are now combined with the feature points of the body cage 300 to result in a composite outer cage 500 consisting of feature points of the exposed portions of the 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 part of the chest of the body not covered by the jacket provide another set of feature points, and these two sets of feature points (combined) provide the feature points of the outer cage 500.
[0031] The feature points of the outer cage 500 of FIG. 5 that correspond to and define the outer surface / shape of the jacket may be the same as the feature points of the outer cage of the 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 a higher resolution or closer fitting is desired for the next layer of garment above the outer cage 500, additional feature points may be calculated for the outer cage 500 that is encompassed by an area of the jacket (compared to the outer cage of the garment layer 400 of FIG. 4). Similarly, feature points may be calculated for the outer cage 500 that is encompassed by an area of the jacket (compared to the outer cage of the garment layer 400 of FIG. 4) if a lower resolution or less precise fitting 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.
[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 the outer cage 500. Thus, transformation (e.g., fitting) may be performed in a manner similar to that described in connection with FIG.
[0033] Thus, following the example of FIG. 4 and FIG. 5 for layering clothes, a first layer of clothes (clothing layer 400) is wrapped around the body by matching feature points of the "outer cage" of the avatar body (body cage 300) with feature points of the "inner cage" of the first layer of clothes. This matching may be done in the UV space of the cage so that it does not have to depend on the number of feature points that match exactly between the inner and outer cages. For example, the 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 the correspondence of two sets of vertices in UV space and not using the positions of those vertices, the correspondence between vertices is done in normalized space, thereby removing the difficult requirement of a strict vertex-to-vertex index mapping.
[0034] According to the techniques described herein, each avatar body and clothing item is therefore associated with an "inner cage" and an "outer cage." For 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 shape of the avatar body. For 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 the way that 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 transformed onto various avatar body shapes according to some implementations. FIG. 6A shows a generic game player shaped mannequin 600 with an outer cage of 15 groups of feature points as described above in connection with FIG. 3. FIG. 6A then shows different types of clothing that are fitted to the shape / size of the mannequin 600: 602 (shirt and shorts), 604 (shirt, pants, and sneakers), 606 (dress), 608 (blouse, skirt, and shoes), 610 (summer dress), and 612 (armor). Additionally, the mannequin 600 can also be "skinned" of other external graphical features, such as the gray skin and smile in FIG. 6A.
[0036] Figure 6B shows a mannequin 614 that has a different shape / size (e.g., muscular build and definition) than mannequin 600 of Figure 6A. Additionally, 616-626 show protective clothing fitted snugly onto mannequin 614, and then the same item of clothing of Figure 6A being modified to fit as an additional layer over the protective clothing.
[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 that have been skinned in 644-654 and 658-666, respectively, to look like "monsters" (e.g., avatars with horns, claws, fangs, ferocious animal-like faces, and other ornamentation), and further shows the same items of clothing of 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., 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 fit 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. Then, 684-694 show the same item of clothing of 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 a radial basis function (RBF) interpolation technique: 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 an implicit surface defined by a set of feature points of the inner cage.
[0042] The cage may be mathematically represented as a set of points in 3D space with corresponding normalized 2D UV coordinates. The computation may be optimized by solving a system of linear equations, which may use highly vectorized compute structures. Technical advantages may include at least the following: - the embodiment supports wrapping clothing around any body with no 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 capable of handling large mesh deformations resulting from 3D mesh translation, rotation and deformation.
[0043] RBF is a dictionary<key, value> Represented by a data structure or dictionary<key, value> It can be compared 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> For each pair of feature points, the RBF function is<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 an 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. Then, the RBF function (calculation) is 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 in all of the RBF functions. In this way, the next layer can be deformed to fit the existing layer.
[0046] Further details of the exemplary RBF technique may be ascertained by referring to FIG. 7 and FIG. 8. Beginning with FIG. 7, FIG. 7 shows a diagram 700 representing an initial state of layers according to some implementations. An inner cage of each of the four layers (e.g., Layer 0 to Layer 3, with Layer 0 being the bottom layer and going up to Layer 3, the top layer) is shown at 702, while an outer cage of Layer 0 to Layer 3 is shown at 704. The bottom layer 0 may be a body cage or a first layer of a garment placed on the body cage. In the initial state of FIG. 7, every layer is the same (e.g., has 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 cage of Layer 1 to Layer 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 1 to Layer 3.
[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 an avatar mannequin perspective, for example, the protrusions 706 may represent irregular contours of a body shape (e.g., fingers, ears, noses, elbows, horns, etc.). From a clothing perspective, 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 an outer cage having feature points (vertices) shown as filled dots, and an inner cage having feature points (vertices) shown as unfilled dots. Each pair of corresponding dots (one each from the inner and outer cages) is represented by an rbf<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, the distances D1 and D2 may be maintained when a new layer is fitted over an existing layer (described next in connection with FIG. 8). In this manner, 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 may still appear "baggy" even though the avatar body or the underlying clothing layer may have a different shape / contour (slim or otherwise not baggy). As another example, a "spiked jacket" may be fitted over an avatar, and then a scarf may be 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]
[0046] Referring now to Figure 8, Figure 8 shows a diagram 800 that represents new layers being formed on top of existing layers, according to some implementations. As shown in diagram 800 and 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 previous (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 a base layer used to convert a standard body template to the current avatar body.
[0053] Layer 1 (a second layer of 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 to now encase the combined body in garment. 2. Clothing layer N+1: A. Clothes layer N+1 is deformed around body+clothes layer N by matching the new outer cage from step 1B with the inner cage of clothes layer N+1. B. The outer cage of the 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 as many 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 FIG. 8, RBF interpolations are chained in order to get from any level to any other level in an upward overlap direction (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 a higher layer to a lower layer (e.g., to provide a deformation suitable for an item such as 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 a 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 the diagram 900 and the highest layer at the top of the diagram 900. The order / sequence in which clothing layers and other graphical 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 foot 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 graphical objects of subsequent levels in the hierarchy, such as clothing (innerwear) 910, shoes 912, clothing (outerwear) 914, accessories 916 (e.g., for the neck, such as a scarf, 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] 10 shows an example of clothing being deformed on an avatar body, according to some implementations, which may be considered in conjunction with FIGS. 7-9 above and their accompanying discussion.
[0062] Beginning 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 a 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 skin 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 on a generic mannequin 1006 is available for selection from a library of garments. 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 library of garments, or the inner / outer cage may be calculated later at run-time after the user selects the jacket from the library of garments. 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 transforming the outer cage of jacket 1004 from 1002 to maintain the vertex distance between the outer cage and the 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 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 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, some of the clothing shown in 1000 is visible underneath the jacket (e.g., the circular items visible in a straight line starting from the neck and going down to the torso).
[0067] 11 is a diagram of an example system architecture 1100 including a 3D environment platform that can support 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, and various other implementations may provide other types of 3D environment platforms, such as an online conferencing platform, a virtual reality (VR) or augmented reality (AR) platform, or other types of platforms that can provide 3D content. The description 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 they are 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 through the rendered 3D world of the electronic game.
[0069] An online gaming platform may also enable users of the platform to create and animate avatars and create other graphical objects for placement in the 3D world. For example, users of an online gaming platform may be enabled to create, design, and customize avatars, and to create, design, and fit various clothing to their avatars.
[0070] In FIG. 11, an example 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 communication 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] The system architecture 1100 may further include one or more storage devices 1124. The storage device 1124 may, for example, be a storage device within the online gaming platform 1102 or communicatively coupled to the online gaming platform 1102 via a network 1122 (as shown in FIG. 11 ). The storage device 1124 may store, for example, graphical objects rendered within the game 1106 by the game engine 1104 or game application 1112 / 1120, and configuration / property information of the graphical objects (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 delivery 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 to be calculated / compiled / transformed at run time for presentation during game play.
[0075] In some implementations, the storage device 1124 may be a non-transitory computer-readable memory (e.g., random access memory), a cache, a drive (e.g., a hard drive), a flash drive, a database system, or another type of component or device capable of storing data and other content. The storage device 1124 may also include multiple storage components (e.g., multiple drives or multiple databases), which may be spread across multiple computing devices (e.g., multiple server computers).
[0076] In some implementations, the 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 the online gaming platform 1102, may be a separate system, or may be part of another system or platform.
[0077] In some implementations, the 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 the online gaming platform 1102 and provide users with access to the online gaming platform 1102. The 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 the online gaming platform 1102. For example, a user may access the 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 a set of user-controlled entities or automated sources. For example, a set of individual users that are federated as a community or group within a 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 provide 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) in 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 the client device 1110.
[0081] In some implementations, the games 1106 may include electronic files that may 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 be executed in association with the game engine 1104, and the games 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 presents the game content to appear as 3D content regardless of whether a 3D representation of 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 enable 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 the games 1106, communicate with other users, and / or create and build objects (e.g., also referred to herein as "items" or "game objects" or "virtual game items" or "graphical objects") for the games 1106. For example, in generating user-generated virtual items, a user may, among other things, create a character, animations for a character, decorations (e.g., clothing, skins, accessories, etc.) for a character, one or more virtual environments for an interactive game, or build a structure to be used within the game 1106. In some implementations, users may buy, sell, or trade virtual game objects of the game, such as in-platform currency (eg, virtual currency), with other users of the online gaming platform 1102.
[0085] In some implementations, the 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 the 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 the 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 of 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 that 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, web blogs, real simple syndication (RSS) feeds, e-comics, software applications, and the like. 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, a game 1106 may be associated with a particular user or a particular group of users (e.g., a private game) or may be made generally available to users of the online gaming platform 1102 (e.g., a public game). In some implementations in which the online gaming platform 1102 associates one or more games 1106 with a particular user or group of users, the 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 the development or execution of the game 1106. For example, the game engine 1104 may include 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, among other features. 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 gaming 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 discussed above) or 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 a control command (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 commands (e.g., position and velocity information of a character participating in a 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 commands 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 commands to render the gameplay for presentation on the display of the client device 1110, including the avatars with layered clothing described above.
[0092] In some implementations, the control instructions may refer to instructions indicating in-game actions of the user's character. For example, the 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. The control instructions may include character position and velocity information. In some implementations, the control instructions are sent directly to the online game platform 1102. In other implementations, the control instructions may be sent from the client device 1110 to another client device, which generates the game play 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. The 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 gaming application 1112 or 1120, respectively. In one implementation, the gaming 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 for the game 1106, images, video items, web pages, documents, and the like. In one example, the gaming 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 gaming 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 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 into the online gaming platform 1102 through a game application. A user may access a user account by providing user account information (e.g., a username and password), which 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 the online gaming platform 1102 may also be performed by the 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 operating together. The 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 a website.
[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 the method 1200 are described in the context of a gaming application 1112 of 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 gaming engine 1104 in a gaming platform 1102. The exemplary method 1200 may include one or more operations illustrated by one or more blocks, such as blocks 1202 to 1212. Various blocks of the 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 illustrated in Figures 1-11. In one embodiment, operations of 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] At block 1202 ("IDENTIFY BODY FEATURES FOR A BODY CAGE OF A 3D AVATAR"), a user launches a gaming 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 may be a template for a more detailed avatar of a particular type (humanoid, alien, animal, etc.) that is skinned. The selected avatar from the library may already have a body cage configured on it (e.g., see FIGS. 1-3) and / or the gaming application 1112 may generate at least a portion of the body cage at run time. The gaming application identifies body cage feature points 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 run-time. Such cage of the first garment may include an inner cage and an outer cage (see, e.g., 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 utilizing 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 with 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 inner cage of second garment to outer feature points of outer cage of 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 the 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, coordinate positions of at least some of the interior feature points (of the interior cage of the second garment) take on values of coordinate positions of 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 over the existing layers. For example, in a 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 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 associated at that stage with different non-overlapping portions of the outer cage), fittings may be performed in parallel (e.g., fitting of a hat may be performed simultaneously with fitting of shoes, fitting of a shirt may be performed simultaneously with fitting of pants, fitting of socks may be performed simultaneously with fitting of gloves, etc.).
[0107] FIG. 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 execute 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 (portable device, mobile device, cell phone, smartphone, tablet computer, television, TV set-top box, personal digital assistant (PDA), media player, gaming device, wearable device, etc.). In some implementations, the computing device 1300 includes a processor 1302, a memory 1304, an input / output (I / O) interface 1306, and an audio / video input / output device 1314.
[0108] The processor 1302 can be one or more processors and / or processing circuits for executing program code and controlling basic operations of the computing device 1300. A "processor" includes any suitable hardware and / or software system, mechanism, or component that processes data, signals, or other information. A processor may include a general-purpose central processing unit (CPU), multiple processing units, systems with dedicated circuits for implementing functions, or other systems. Processing is not necessarily limited to a particular geographic location or has time 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 a memory.
[0109] The memory 1304 may be provided within the computing device 1300 for access by the processor 1302 and may be any suitable processor-readable storage medium suitable for storing instructions for execution by the processor and separate from and / or integrated with the processor 1302, such as, for example, a random access memory (RAM), a read-only memory (ROM), an electrically erasable read-only memory (EEPROM), a flash memory, etc. The memory 1304 may store software that may be executed on the computing device 1300 by the processor 1302, including an operating system 1308, one or more applications 310, and their associated data 1312. The applications 1310 are examples of tools that may be used to embody the game applications 1112 / 1120 or the game engine 1104. In some implementations, the applications 1310 may include instructions that, upon execution by the processor 1302, enable the processor 1302 to perform or control the execution of operations described herein in connection with transforming / fitting clothing layered on an avatar body.
[0110] Any of the software in memory 1304 may alternatively be stored in any other suitable memory 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 types of storage (such as magnetic disks, optical disks, magnetic tapes, or other tangible media) may be considered "storage" or "storage devices."
[0111] The I / O interface 1306 may provide functionality to allow the computing device 1300 to interface with other systems and devices. For example, network communication devices, storage devices, and input / output devices may communicate with the 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, touch screens, 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 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] For ease of illustration, Figure 13 shows one block for each of the processor 1302, memory 1304, I / O interfaces 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, the 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] A user device 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 the 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 included 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 in the audio / video input / output device 1314 may be connected to (or included in) the computing device 1300 to display pre- and post-processing of images as described herein, and 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 touch screen, 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 output or synthesis.
[0115] One or more of the methods described herein (e.g., method 1200) can be implemented by computer program instructions or code that can be executed on a computer. For example, the code can be implemented by one or more digital processors (e.g., microprocessors or other processing circuits) and can be 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, and the like. The program instructions can also be included in and provided as electronic signals, for example, in the form of software as a service (SaaS) delivered from a server (e.g., distributed systems and / or cloud computing systems). Alternatively, one or more of the methods can be implemented in hardware (such as logic gates) or in a combination of hardware and software. Exemplary hardware can be a programmable processor (e.g., a field programmable gate array (FPGA), 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, a mobile application ("app") running on a mobile computing device (e.g., a cell phone, a smartphone, a tablet computer, a wearable device (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 from the server for output (e.g., for display). 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 exemplary 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, e.g., 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 as sequential in this specification may be performed simultaneously. [Explanation of symbols]
[0119] 100 Body Cage 102 feature points 104 lines / edges 200 Body Cage 202 Features 300 Body Cage 400 clothing layers 402 Polygon Mesh 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 Gaming Applications 1124 Storage Device 1200 methods 1310 Application 1314 Audio / Video Input / Output Devices
Claims
1. 1. A computer-implemented method for providing layered clothing on a three-dimensional (3D) avatar, comprising: identifying body feature points of a 3D avatar body cage having an avatar body; mapping first internal feature points of an inner cage of a first garment to the body feature points of the body cage to obtain a transformed first garment that fits the avatar body, the first garment including a first external cage spaced at least a first distance from the first inner cage and having first external feature points along a first external surface of the first garment; fitting the transformed first garment onto the avatar body by at least partially enveloping the avatar body in the transformed first garment; mapping second internal feature points of an inner cage of a second garment to the first external feature points of the outer cage of the transformed first garment to obtain a transformed second garment that fits an outer cage of the first garment, the second garment including a second outer cage spaced at least a second distance from the second inner cage and having second external feature points along a second outer surface of the second 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 onto it in the transformed second garment.
2. 2. The method of claim 1, further comprising maintaining a distance between at least one of the first inner feature points of the inner cage of the first garment and a corresponding first outer feature point of the first outer cage of the transformed first garment such that a visual appearance of a surface feature of the first garment is at least partially maintained.
3. obtaining the avatar body from a first library of avatar bodies; 2. The method of claim 1, further comprising: obtaining the first garment and the second garment from a second library of garments, wherein the avatar body in the first library and the garment in the second library are independent of each other.
4. mapping the second inner feature points of the inner cage of the second garment to the first outer feature points of the outer cage of the transformed first garment; providing a first radial basis function (RBF) having a first key corresponding to a location of at least one first inner feature point of the inner cage of the first garment and a first value corresponding to a location of a corresponding first outer feature point of the outer cage of the first garment; and linking a second RBF to the first RBF, the second RBF having a second key corresponding to a location of at least one second inner feature point of the inner cage of the second garment and a second value corresponding to a location of at least one second outer feature point of an outer cage of the second garment; 2. The method of claim 1, wherein the second key of the second RBF is equal to the first value of the first RBF.
5. the body features of the body cage define an exterior surface of the avatar body; the first exterior feature points of the exterior cage of the transformed first garment define an exterior surface of the transformed first garment; The method of claim 1 , wherein the outer cage of the transformed second garment includes second outer feature points defining an outer surface of the transformed second garment.
6. The method of claim 1 , wherein the mapping and fitting steps are performed by a software application on a client device during run-time of the software application.
7. 2. The method of claim 1 , wherein the avatar body has a graphical skin, and the step of fitting the deformed first garment onto the avatar body includes fitting the deformed first garment onto the graphical skin of the avatar body.
8. In response to execution by a processor, the processor: Identifying a body feature point of a three-dimensional (3D) avatar body cage having an avatar body; mapping first internal feature points of an inner cage of a first garment to the body feature points of the body cage to obtain a transformed first garment that fits the avatar body, the first garment including a first external cage spaced at least a first distance from the first inner cage and having first external feature points along a first external surface of the first garment; fitting the transformed first garment onto the avatar body by at least partially enveloping the avatar body in the transformed first garment; mapping second internal feature points of an inner cage of a second garment to the first external feature points of the outer cage of the transformed first garment to obtain a transformed second garment that fits into an outer cage of the first garment, the second garment including a second outer cage spaced at least a second distance from the second inner cage and having second external feature points along a second outer surface of the second garment; fitting the transformed second garment over the avatar body by at least partially enveloping the avatar body with the transformed first garment fitted thereover in the transformed second garment; A non-transitory computer-readable medium having stored thereon instructions for performing operations including:
9. The operation, 9. The non-transitory computer readable medium of claim 8, further comprising an operation of maintaining a distance between at least one of the first inner feature points of the inner cage of the first garment and a corresponding first outer feature point of the first outer cage of the transformed first garment such that a visual appearance of a surface feature of the first garment is at least partially maintained.
10. The operation, obtaining the avatar body from a first library of avatar bodies; 9. The non-transitory computer-readable medium of claim 8, further comprising an operation of obtaining the first garment and the second garment from a second library of garments, wherein the avatar body in the first library and the garment in the second library are independent of one another.
11. mapping the second interior feature points of the inner cage of the second garment to the exterior feature points of the outer cage of the transformed first garment; providing a first radial basis function (RBF) having a first key corresponding to a location of at least one first inner feature point of the inner cage of the first garment and a first value corresponding to a location of a corresponding first outer feature point of the outer cage of the first garment; and chaining a second RBF to the first RBF, the second RBF having a second key corresponding to a location of at least one second inner feature point of the inner cage of the second garment and a second value corresponding to a location of at least one second outer feature point of an outer cage of the second garment; 9. The non-transitory computer-readable medium of claim 8, wherein the second key of the second RBF is equal to the first value of the first RBF.
12. the body features of the body cage define an exterior surface of the avatar body; the first exterior feature points of the exterior cage of the transformed first garment define an exterior surface of the transformed first garment; 10. The non-transitory computer readable medium of claim 8, wherein an outer cage of the transformed second garment includes second outer feature points defining an outer surface of the transformed second garment.
13. 10. The non-transitory computer-readable medium of claim 8, wherein the mapping and fitting operations are performed by a software application on a client device during run-time of the software application.
14. 9. The non-transitory computer-readable medium of claim 8, wherein the avatar body has a graphical skin, and wherein fitting the transformed first garment onto the avatar body includes fitting the transformed first garment onto the graphical skin of the avatar body.
15. a display device operable to present a three-dimensional (3D) avatar having the garment layered thereon; A memory storing a game application; a processor coupled to the display device and the memory and operable to execute the game application stored in the memory, the game application being configured to be executed by the processor; Identifying body feature points of a 3D avatar body cage having an avatar body; mapping first internal feature points of an inner cage of a first garment to the body feature points of the body cage to obtain a transformed first garment that fits the avatar body, the first garment including a first external cage spaced at least a first distance from the first inner cage and having first external feature points along a first external surface of the first garment; fitting the transformed first garment onto the avatar body by at least partially enveloping the avatar body in the transformed first garment; mapping second internal feature points of an inner cage of a second garment to the first external feature points of the outer cage of the transformed first garment to obtain a transformed second garment that fits into an outer cage of the first garment, the second garment including a second outer cage spaced at least a second distance from the second inner cage and having second external feature points along a second outer surface of the second garment; fitting the transformed second garment over the avatar body by at least partially enveloping the avatar body with the transformed first garment fitted thereover in the transformed second garment; and a processor to cause the apparatus to perform operations including:
16. The operation, 16. The apparatus of claim 15, further comprising an operation of maintaining a distance between at least one of the first inner feature points of the inner cage of the first garment and a corresponding first outer feature point of the first outer feature points of the outer cage of the deformed first garment such that a visual appearance of a surface feature of the first garment is at least partially maintained.
17. The operation, obtaining the avatar body from a first library of avatar bodies; 16. The apparatus of claim 15, further comprising an operation of obtaining the first garment and the second garment from a second library of garments, wherein the avatar body in the first library and the garment in the second library are independent of one another.
18. mapping the second interior feature points of the inner cage of the second garment to the exterior feature points of the outer cage of the transformed first garment; providing a first radial basis function (RBF) having a first key corresponding to a location of at least one first inner feature point of the inner cage of the first garment and a first value corresponding to a location of a corresponding first outer feature point of the outer cage of the first garment; and chaining a second RBF to the first RBF, the second RBF having a second key corresponding to a location of at least one second inner feature point of the inner cage of the second garment and a second value corresponding to a location of at least one second outer feature point of an outer cage of the second garment; 16. The apparatus of claim 15, wherein the second key of the second RBF is equal to the first value of the first RBF.
19. the body features of the body cage define an exterior surface of the avatar body; the first exterior feature points of the exterior cage of the transformed first garment define an exterior surface of the transformed first garment; 16. The apparatus of claim 15, wherein the outer cage of the transformed second garment includes second outer features defining an outer surface of the transformed second garment.
20. 16. The apparatus of claim 15, wherein the avatar body has a graphical skin, and the act of fitting the transformed first garment onto the avatar body includes an act of fitting the transformed first garment onto the graphical skin of the avatar body.
Citation Information
Patent Citations
Computer-implemented method for designing avatar with at least one garment
JP2016110652A
Method and apparatus for automating 3D item digital conversion in 3D item simulation
KR1020190070884A