Layered clothing hidden surface removal for avatar bodies

By specifying body feature points, mapping garment feature points, and performing hidden surface erasure operations, the method efficiently renders stacked garments on 3D avatars, addressing the challenges of existing technologies in achieving satisfactory visual results.

JP7654904B2Active Publication Date: 2025-04-01ROBLOX CORP
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2024520607
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2022-09-08
Filing Date
2022-10-13
Publication Date
2025-04-01
Estimated Expiration
2042-10-13

AI Technical Summary

Technical Problem

Existing methods struggle to efficiently and computationally effectively render stacked garments on 3D avatars in electronic games and virtual experiences, often resulting in unsatisfactory visual results.

Method used

The method involves specifying body feature points of a 3D avatar's body cage, mapping garment feature points to fit the avatar body, performing hidden surface erasure operations to identify hidden surfaces, and fitting garments to the avatar body while not rendering hidden surfaces.

Benefits of technology

This approach allows for efficient and visually satisfying rendering of stacked garments on 3D avatars, improving computational efficiency and aesthetic quality.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007654904000001
    Figure 0007654904000001
  • Figure 0007654904000002
    Figure 0007654904000002
  • Figure 0007654904000003
    Figure 0007654904000003
Patent Text Reader

Abstract

An automatic inter-cage fitting technique is used to fit 3D geometry to any target 3D geometry for a 3D avatar in a three-dimensional (3D) environment, such as an online game. Each graphical representation of an item of clothing has an inner cage and an outer cage. The inner cage of a clothing item (current layer) is mapped to the outer cage of another clothing item (previous / underlying layer) that is fitted to the 3D avatar. This mapping allows the current layer to conform to the shape of the previous layer. The technique allows any body geometry to be fitted with any clothing geometry, including allowing a clothing layer to be fitted on top of an underlying layer. A hidden surface removal (HSR) operation may be performed to identify surfaces of an underlying layer that are hidden by an overlying layer, and such hidden surfaces are not rendered.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application is an international application claiming priority under 35 U.S.C. §119(e) to U.S. Provisional Application No. 63 / 255,489, filed October 14, 2021, and U.S. Provisional Application No. 63 / 404,925, filed September 8, 2022, 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, virtual experience, or other three-dimensional (3D) environment. [Background technology]

[0003] Multi-user electronic games or virtual experience environments typically involve the use of avatars to represent players within the electronic game. Different three-dimensional (3D) avatars have different geometries / shapes for each avatar. For example, avatars may have various body shapes (e.g., tall, short, muscular, skinny, male, female, human, animal, alien, etc.), number and types of limbs, etc., 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] When layering clothing onto an avatar, it can be difficult to achieve visually pleasing results in a computationally efficient manner. [Prior art documents] [Patent documents]

[0005] [Patent Document 1] U.S. Patent Application Serial No. 17 / 375,066 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; performing a first hidden surface removal (HSR) operation to identify faces of the body cage that are hidden by the transformed first garment; fitting the transformed first garment to the avatar body by at least partially enveloping the avatar body in the transformed first garment, wherein faces of the avatar body that correspond to the identified faces of the body cage are not rendered; 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; performing a second HSR operation to identify faces of an outer cage of the transformed first garment that are occluded by the transformed second garment; and fitting the transformed second garment to the avatar body by at least partially enveloping the avatar body having the transformed first garment fitted thereon with the transformed second garment, wherein faces of the transformed first garment that correspond to identified faces of the outer cage are not rendered.

[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 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; performing a first hidden surface removal (HSR) operation to identify faces of the body cage that are hidden by the transformed first garment; fitting the transformed first garment to the avatar body by at least partially encasing the avatar body in the transformed first garment, wherein faces of the avatar body that correspond to the identified faces of the body cage are not rendered; 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; performing a second HSR operation to identify faces of an outer cage of the transformed first garment that are obscured by the transformed second garment; and fitting the transformed second garment to the avatar body by at least partially enveloping the avatar body having the transformed first garment fitted thereon with the transformed second garment, wherein faces of the transformed first garment that correspond to identified faces of the outer cage are not rendered.

[0008] According to yet another aspect, A processor; coupled to the processor and causing the processor to, upon execution by the processor, 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 the body feature points of the body cage to obtain a transformed first garment that fits the avatar body; performing a first hidden surface removal (HSR) operation to identify faces of the body cage that are obscured by the transformed first garment; fitting the transformed first garment to the avatar body by at least partially encasing the avatar body in the transformed first garment, wherein faces of the avatar body that correspond to the identified faces of the body cage are not rendered; 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; performing a second HSR operation to identify faces of an outer cage of the transformed first garment that are obscured by the transformed second garment; and An apparatus is provided that includes: fitting a transformed second garment to an avatar body by at least partially enveloping the avatar body having the transformed first garment fitted thereon with the transformed second garment, wherein surfaces of the transformed first garment that correspond to identified surfaces of the outer cage are not rendered; and a non-transitory computer-readable medium having stored thereon instructions for performing or controlling the performance of operations to effect the fitting. [Brief description of the drawings]

[0009] [Figure 1] FIG. 1 illustrates an exemplary body cage according to some embodiments. [Diagram 2] FIG. 1 illustrates another exemplary body cage according to some embodiments. [Diagram 3] 13A-13C illustrate examples of portions of a body cage grouped into corresponding body parts according to some embodiments. [Figure 4] 13 illustrates an example of a clothing layer deformed on a body cage according to some embodiments. [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 embodiments. [Figure 6] 1 illustrates an example of a mesh and cage according to some embodiments. [Figure 7] FIG. 1 illustrates a representation of layers of clothing and their cages according to some embodiments. [Figure 8] FIG. 2 illustrates an avatar before Hidden Surface Removal (HSR) is applied according to some embodiments. [Figure 9] FIG. 1 illustrates an avatar after Hidden Surface Removal (HSR) has been applied according to some embodiments. [Figure 10] FIG. 1 illustrates an exemplary technique for determining whether a surface is potentially visible, according to some embodiments. [Figure 11] FIG. 1 illustrates a method for performing HSR according to some embodiments. [Figure 12] FIG. 1 illustrates a method for performing HSR according to some embodiments. [Figure 13] FIG. 1 illustrates a method for performing HSR according to some embodiments. [Figure 14] FIG. 1 illustrates a method for performing HSR according to some embodiments. [Figure 15] FIG. 1 illustrates an example system architecture including a 3D environment platform capable of supporting 3D avatars with layered clothing, according to some embodiments. [Figure 16] 1 is a flow diagram illustrating a computer-implemented method for providing layered clothing on a 3D avatar using HSR, according to some embodiments. [Figure 17] FIG. 13 is a diagram of improving visibility determination for HSR, according to some implementations. [Figure 18] FIG. 13 is a diagram of improving visibility determination for HSR, according to some implementations. [Figure 19]FIG. 13 is a diagram of improving visibility determination for HSR, according to some implementations. [Figure 20] FIG. 1 illustrates an example of a problem that may be encountered when performing HSR. [Figure 21] FIG. 1 illustrates an example of a hidden cage reduction technique. [Figure 22] FIG. 1 is a block diagram illustrating an exemplary computing device in accordance with some embodiments. 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] This disclosure describes 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, cage-to-cage fitting is performed algorithmically by a gaming platform or software (or other platform / software operating to provide a 3D environment) without requiring an avatar creator (also referred to as an avatar body creator or body creator) or clothing item creator to perform complex calculations. As used herein, the term "clothing" or "one piece of clothing" is understood to include a graphical representation of 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] When one garment is layered over an avatar's body parts and / or over another garment, techniques for hidden surface removal (HSR) are disclosed herein. For example, for computational performance and aesthetic reasons, surfaces (of the underlying garment and body parts) that are overlaid / covered by a particular garment should not be rendered (e.g., made visible). HSR involves the process of identifying which surfaces (or portions thereof) are not visible from a particular viewing angle, and then performing rendering such that such surfaces are hidden (or otherwise not rendered), thereby allowing the necessarily visible portions of a graphic (e.g., an avatar with overlaid garments placed on it) to be visible.

[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 embodiments 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 avatar 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). When one clothing is fitted to the body and / or underlying clothing, HSR may be performed so that no hidden surfaces are visible in the rendered result. The user may further select additional clothing to fit over the underlying clothing, which is deformed to match the geometry of the underlying clothing.

[0016] The embodiments described herein are based on the concepts of "cage" and "mesh". A body "mesh" (or "render mesh") is the actual visible geometry of an avatar. A body "mesh" contains the graphical representation of body parts such as arms, legs, torso, head, etc., and can be of any shape, size, and geometric topology. Similarly, a clothing "mesh" ("render mesh") can be any arbitrary mesh that graphically represents clothing, such as a shirt, pants, hat, shoes, etc., or parts thereof.

[0017] In comparison, a "cage" represents an envelope of feature points around an avatar body that is simpler than the body mesh and has a weak correspondence with corresponding vertices of the body mesh. As explained in more detail below, a cage may be used to represent not only a set of feature points on an avatar body, but also a set of feature points on clothing.

[0018] FIG. 1 illustrates an exemplary body cage 100 according to some implementations. The example body cage 100 of FIG. 1 is an outer cage that encases or is superimposed over the exterior surface / contour of a humanoid body form that serves as a mannequin. The underlying humanoid body form (mannequin, not shown) that is encased by the body cage 100 may be represented or composed by a body mesh that includes multiple polygons and their vertices. The polygons of the body mesh (and the polygons of the garment mesh) may be triangles, with the surface area of ​​each triangle providing a "face" or "mesh face."

[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 embodiments, 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. According to various embodiments (although not depicted as such in FIG. 1 ), the polygons may be triangles, with the surface area of ​​each triangle providing a "face" or "cage face." In some embodiments, 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 embodiments. The example body cage 200 of FIG. 2 is an outer cage that encases or is superimposed on the outer surface / contour of the body mesh 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 some embodiments, the body cage 200 may have a number of feature points that differs 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 embodiments, for bandwidth and performance / efficiency purposes or other reasons, the number of features of the cage may be reduced to a number less than those given above, such as 475 features (or some other number of features). Additionally, in some embodiments, the features (vertices) in the body cage may be arranged into multiple groups (e.g., 15 groups), each of which represents 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 embodiments.

[0023] More specifically, the fifteen body parts shown in FIG. 3 are (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 fifteen body parts shown. For example, a "one-armed" avatar character may have twelve body parts (instead of fifteen) 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] 4 shows an example of a clothing layer 400 deformed on a body cage (such as the body cage 300 shown in FIG. 3), according to some embodiments. The clothing layer 400 is a graphical representation of a jacket (shown in FIG. 4 with gray color coding) whose parts may be generated / rendered using a polygon mesh 402 (e.g., a clothing mesh) composed of a collection of vertices, edges, and faces (which may be triangular faces or other polygonal 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 embodiments, 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] The garment layer 400 further includes an outer cage having feature points spaced from and linked to corresponding feature points of its inner cage of the garment layer 400. The feature points of the outer cage of the garment layer 400 define or otherwise lie along the contour / geometry of the outer surface of the jacket, such as defining features such as the jacket's hood 404, cuffs 406, straight cut torso 408, etc.

[0029] According to various embodiments, 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 embodiments, 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 embodiments. 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 502 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 embodiments, 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, 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, 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).

[0032] In operation, when a user provides input to fit additional clothing layers (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 layers are mapped to corresponding feature points of the outer cage 500. Thus, deformations may be performed in a manner similar to that described in connection with FIG.

[0033] Thus, according to 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 (UV refers to the coordinate system) 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 a position and a texture space coordinate. 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, which removes 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] As already explained above, a mesh is the actual visible geometry of an avatar and / or its clothing. For example, a body mesh includes a graphical representation of the arms, legs, torso, head, etc. of an avatar's body, and a clothing mesh includes a graphical representation of the clothing. In comparison, the cage shown and described above represents an envelope of feature points around the avatar's body and / or clothing, which may have some amount of correspondence with corresponding vertices of an underlying mesh.

[0036] 6 is a diagram 600 illustrating an example of a mesh 602 and a cage 604 according to some embodiments. More specifically, diagram 600 depicts a side view of cage 604 overlying / encasing mesh 602.

[0037] Mesh 602 may be a body mesh (e.g., graphically depicting a portion of an avatar's body, such as a hand, arm, etc.) or may be a clothing mesh (e.g., graphically depicting a portion of a piece of clothing, such as a sleeve, hood, etc.). Mesh 602 may include mesh faces 606 formed by the outward facing surfaces of polygons (e.g., triangles). Mesh 602 may include multiple polygons and their corresponding mesh faces, where the polygons are connected to each other at their line edges and vertices.

[0038] Similarly, the cage 604 may include a number of polygons (e.g., triangles) and their corresponding cage faces as already shown and described above. The diagram 600 in Figure 6 shows two cage faces 608 and 610 formed by the outward facing surfaces of each polygon of the cage 604. These polygons may be joined to each other at 612, which may be a line segment or a vertex.

[0039] Mesh or cage faces 606, 608, 610 and / or other faces or portions thereof may be hidden or potentially hidden when additional clothing is layered over the mesh 602 and cage 604. As explained further below, the HSR techniques disclosed herein determine whether such faces / surfaces or portions thereof should be hidden and then perform hidden surface removal such that the hidden surfaces are not rendered.

[0040] 6, and as already described above, the cage 604 overlies / encloses the mesh 602. According to various embodiments, when the cage 604 is generated and placed over the mesh 602, there may be a distance S (e.g., the distance in pixels in the normal / perpendicular direction to the surface of the mesh 602) between the mesh 602 and the cage 604.

[0041] Distance S may vary over different regions of mesh 602 and cage 604. For example, distance S may be substantially zero in some regions where cage 604 meets mesh 602, and distance S may be greater than zero in other regions where there is a spatial separation between mesh 602 and cage 604.

[0042] Furthermore, diagram 600 shows a single mesh surface 606 being enveloped by two cage surfaces 608 and 610. This is merely an example. In some regions there may be a one-to-one overlap of the cage surface onto the mesh surface, in some regions there may be a one-to-many overlap of the cage surface onto the mesh surface, in some regions there may be a many-to-one overlap of the cage surface onto the mesh surface, etc. Furthermore, the edges of the mesh surfaces and the edges of the cage surfaces do not necessarily need to be aligned with one another. For example, in diagram 600 of FIG. 6, the left edge of cage surface 608 is substantially aligned with the left edge of mesh surface 606. In comparison, the right edge of cage surface 610 extends beyond or is otherwise not aligned with the right edge of mesh surface 606.

[0043] According to various embodiments, as shown and described above with respect to Figures 1-5, a cage is wrapped over a body and / or over a garment mesh (e.g., one garment or garment layer), such that such cage becomes an outer cage that conforms to the shape and contours of the underlying surface. A next layer of garment may be provided with an inner cage and an outer cage such that deformation of this next layer of garment is accomplished by mapping, matching, or otherwise relating points of the inner cage of this next layer of garment to corresponding points of the outer cage of the underlying body or garment layer. In some embodiments, the outer cage of the underlying body or garment layer is itself the inner cage of the next layer of garment, or becomes the inner cage of the next layer of garment.

[0044] For the inner and outer cages of a particular garment / particular layer of a garment, the points of these inner and outer cages may be mapped to each other such that when the points of the inner cage of this particular layer are related / positioned relative to the points of the outer cage of the underlying layer, the deformation of the particular layer of the garment occurs when the points of the outer cage track / follow the displacements of the points of the inner cage.

[0045] According to some embodiments, the deformation of a clothing layer to fit an underlying body part or clothing layer may involve the use of radial basis function (RBF) techniques. Some examples of RBF techniques that may be used for deformation and layering are described in U.S. patent application Ser. No. 17 / 375,066, which is incorporated herein by reference.

[0046] 7, a diagram 700 shows a representation of an individual garment layer 702. The layer 702 is defined by, contains, or is enveloped by a pair of cages (e.g., an outer cage 704 and an inner cage 706). The layer 702 also includes a protrusion 708 along with an outer cage 704 having feature points (vertices) shown as filled dots and an inner cage 706 having feature points (vertices) shown as unfilled dots. In some layer geometries where there may not be a one-to-one correspondence between feature points in the inner cage 706 and the outer cage 704 (e.g., one of the feature points is missing or misaligned), interpolation techniques may be used to define the missing feature points (e.g., reconstruct or fill in missing values).

[0047] The distance D1 between corresponding dots (outside of the protrusion 708) is the distance between the feature point in the outer cage 704 and the corresponding feature point in the inner cage 706. 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 704 along the protrusion 708 and the corresponding feature point in the inner cage 706. 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.

[0048] The distances D1 and D2 may be maintained when a new layer is fitted over an existing layer. In this way, the visual appearance of the surface features of a clothing layer may be at least partially maintained when the layer is transformed. 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.

[0049] In some cases, layering one or more articles of clothing over an underlying layer can result in the avatar having a puffy ("puffy") appearance that appears unnatural or unrealistic. According to various embodiments, puffiness suppression techniques may be used to eliminate or otherwise reduce the puffy appearance.

[0050] For example, the values ​​of distances D1 and / or D2 may be adjusted along certain portions of layer 702 such that they are not uniform throughout layer 702. This adjustment may be performed, for example, by adding an interpolation or variance value to the RBF function or otherwise manipulating / changing the values ​​used by the RBF function.

[0051] In some embodiments, one or more thresholds for bulge may be provided. For example, if adding layer 702 on top of an existing layer causes the bulge threshold to be exceeded, the layer distances D1 and / or D2 may be shortened so that the resulting bulge value is below the threshold. Various techniques may be used to set or determine the bulge threshold, such as the maximum allowable distance between the bottom surface (e.g., the surface of the body) and the top surface (e.g., the outer surface of the last layer of the garment), the percentage thickness of one layer relative to another, the number of allowable layers, or other methods and combinations thereof.

[0052] 8 and 9 show an avatar before and after HSR has been applied, according to some embodiments. In Fig. 8, some clothing (or other assets, such as hair) have been deformed to fit the avatar's underlying body shape and / or clothing layers, and then fitted / placed (e.g., rendered) on the avatar. The clothing shown in Fig. 8 includes boots, a skirt, a sweater, and a jacket.

[0053] With respect to overlapping pieces of clothing, the overlap may include an undergarment covering the avatar's body, a skirt covering the undergarment, a sweater covering at least a portion of the undergarment and the skirt, and a jacket covering at least a portion of the sweater and the skirt. Without HSR being performed, FIG. 8 shows that at least some portions / surfaces of the underlying clothing that are not expected to be visible because they are covered by overlapping layers of clothing have been rendered and are therefore in fact visible. Transparency settings for various clothing may also affect the degree of visibility of these underlying surfaces.

[0054] In addition to inefficient graphics processing (e.g., unnecessarily rendering various surfaces that should not be visible), the lack of HSR in the example of Figure 8 also results in an undesirable appearance, such as bleed-through (e.g., visibility) of multiple underlying clothing surfaces that were expected to be hidden, resulting in an unnatural appearance.

[0055] In comparison to that depicted in Figure 8, Figure 9 shows an avatar after HSR as described herein has been applied. The avatar and clothing layers in Figure 9 have been rendered such that the underlying body parts and clothing surfaces that are obscured are not rendered and therefore are not visible. Described next is a technique for performing HSR to achieve the visual appearance depicted in Figure 9.

[0056] Fig. 10 is a diagram 1000 illustrating an example technique for determining whether a surface is potentially visible, according to some embodiments. More specifically, one or more faces 1002 of a cage form part of a potentially visible set (PVS) of faces, and the technique depicted in Fig. 10 determines whether the faces 1002 of the cage are visible when covered by a garment layer / piece composed by a garment mesh having polygons 1004-1010.

[0057] According to various embodiments, the garment layer / piece of garment in Figure 10 has already been deformed to fit over the underlying layer in the manner already described above, as opposed to being in its original (undeformed) state. By being in a deformed state when the visibility determination / calculation is performed, the deformed garment layer / piece of garment more closely matches the polygon placement and / or location of the underlying cage faces, thereby allowing for accurate assessment of the visibility of those cage faces.

[0058] As already explained above, the cage (having multiple faces, including face 1002) encases the underlying body mesh and / or clothing mesh and thus may be considered a surrogate for the underlying body / clothing mesh. The polygons 1004-1010 of the example clothing mesh (clothing layer) of FIG. 10 are positioned and shaped to define openings 1012 in the clothing layer. For example, openings 1012 may be gaps at the edge of the clothing where no fabric is present, holes in the fabric, etc. Openings 1012 may also be transparent elements such as lenses, face shields, plastic / glass parts of goggles, etc.

[0059] To determine whether a surface 1002 is visible when covered by polygons 1004-1010 of a garment mesh, multiple rays 1014-1026 are cast in a generally cone-shaped direction from a point 1028 (or multiple points) on the surface 1002. The point 1028 may be one of multiple points on the surface 1002. Such points may be randomly placed on the surface 1002 and / or may be at predefined locations.

[0060] 8, rays 1020 and 1022 do not hit a polygon and pass through opening 1012, while other rays 1014, 1016, 1018, 1024, and 1026 hit one or more of polygons 1004, 1006, and 1010 of the garment mesh. According to various embodiments, face 1002 is considered visible if at least one ray does not hit a polygon (face) of the garment mesh. In other embodiments, a minimum number of rays (e.g., a number greater than one) may be used to consider a face visible.

[0061] According to various embodiments, the visibility determination is performed by casting a ray from one point, then casting a ray from another point, and so on. If a ray from a particular point does not penetrate the garment mesh, a ray is cast from the next point. After it has been determined that one or more rays from a particular point do not hit the garment mesh, the surface 1002 is determined to be visible, and no further rays need to be cast from other points on the surface 1002.

[0062] 11-14 illustrate a method for performing HSR according to some embodiments, which may be based at least in part on the mesh and cage placement, deformation and overlapping techniques, visibility determination techniques, etc. already described above. Referring first to FIG 11, a garment (e.g., garment mesh 1100 depicted as a long-sleeved shirt in thick solid lines) has been deformed to fit the torso 1102 and arms 1104 of an avatar body.

[0063] 10, the cage faces of the body cage of the avatar body that correspond to the torso 1102 and arms 1104 and that are below the clothing mesh 1100 are determined to be invisible (hidden). Thus, the portions of the body cage that correspond to the torso 1102 and arms 1104 are set as invisible (depicted by dashed lines in FIG. 11), while the portions of the body cage (that are outside the clothing mesh 1100) are set as visible. Thus, the faces of the body cage that correspond to the head 1106, each leg 1108, and each hand 1110, as well as the faces of the clothing mesh 1100, are also set as visible (depicted by solid lines in FIG. 11).

[0064] Next, in Figure 12, an outer cage 1200 (depicted by thick solid lines) is formed, overlaid, or otherwise provided for the garment mesh 1100, the visible portions of the body mesh (e.g., head 1106, legs 1108, and hands 1110), and / or all other visible surfaces of the avatar body, all of which are collectively depicted in Figure 12 by non-thick solid lines. Next, portions of the sleeves and hands (shown in circles 1202) are described as an example in connection with Figure 13 in connection with operations performed as part of HSR to map faces of the mesh to corresponding faces of the overlying cage.

[0065] In particular, in Figure 13, a sleeve of garment mesh 1100 is provided for arm 1104. As already described above in Figure 12, and also shown in Figure 13, an outer cage 1200 encases garment mesh 1100 and hand 1110.

[0066] Garment mesh 1100 includes multiple mesh faces, including a particular face 1300 (shown in thick solid lines) at the hand end of the sleeve. Similarly, outer cage 1200 includes multiple cage faces, including faces 1302 and 1304, also shown in thick solid lines. Face 1302 encases face 1300 at the sleeve, and face 1304 encases a portion of face 1300 at the sleeve, and also a portion of hand 1110 near / at the wrist.

[0067] For each face of the garment mesh 1100, the HSR method determines which faces of the outer cage 1200 are associated (or otherwise connected or mapped) to that face of the garment mesh 1100. Thus, for the example of FIG. 13, the HSR method determines that faces 1302 and 1304 of the outer cage 1200 are associated with face 1300 of the garment mesh 1100.

[0068] This determination of the relationship between the faces corresponds to a determination that faces 1302 and 1304 of outer cage 1200 affect face 1300 of garment mesh 1100. According to some embodiments, the relevant faces 1302 and 1304 may be identified by identifying each vertex of face 1300 and then identifying the faces on outer cage 1200 that are closest to the vertex. For example, faces 1302 and 1304 are closest to vertex 1306 of face 1300. The distance of each face of garment mesh 1300 from the vertex may be based on distance S (as shown in FIG. 6 ) and / or some other non-normal or normal distance from the face of garment mesh 1300.

[0069] 13, corresponding data may be saved as one or more vectors, configuration data, metadata, or other data structures for the garment mesh 1100. For example, the vector may have two values, namely, an identifier for a particular face 1300 of the garment mesh 1100, and identifiers for faces 1302 and 1304 of the outer cage 1200 associated with face 1300. Data for hidden portions of the body cage (as depicted by dashed lines in FIG. 11) and / or all other underlying surfaces hidden by the garment mesh 1100 may also be stored as vectors or other types of data structures for the garment mesh 1100. All of this data for the garment mesh 1100 and other meshes, cages, faces, etc. may be stored on a server and / or other locations for future use to reduce the number of recalculations (iterations) of visibility determination, associated surface determination, etc. whenever the garment mesh 1100 is loaded / reloaded.

[0070] Using the data (e.g., visibility and associated surfaces) determined above in connection with Figures 11-13, the HSR method may then utilize this data when layering subsequent garments. According to various embodiments, when applying an outer layer of garment over an underlying (inner) layer of garment (or avatar body), three components are considered by the HSR method: the inner layer mesh, the inner layer outer cage, and the outer layer inner cage.

[0071] For example, Figure 14 shows the garment mesh 1100 already described and the outer cage 1200 of the garment mesh 1100. The garment mesh 1100 includes a visible surface 1300 that overlies a hidden portion of a body cage (not shown in Figure 14, but shown as a dashed line in Figure 11). The outer cage 1200 includes associated surfaces 1302 and 1304.

[0072] 14 then depicts the inner cage 1400 of the next (outer) layer of garment (e.g., the next garment mesh, not shown). When this outer layer of garment is deformed to fit over garment mesh 1100 (e.g., over a long sleeve shirt), faces 1402 and 1404 of inner cage 1400 of the outer layer of garment are mapped to respective faces 1302 and 1304 of outer cage 1200. In some embodiments, outer cage 1200 itself is or becomes inner cage 1400. Cage faces 1402 and 1404 of inner cage 1400 may correspond to one or more mesh faces or portions of mesh faces of the outer layer of garment.

[0073] A visibility determination (as described above in connection with FIG. 10) may then be performed to determine whether faces 1302 and 1304 are visible or obscured by the outer garment mesh corresponding to inner cage 1400. In the example of FIG. 14, face 1302 of outer cage 1200 is determined to be obscured by one or more mesh faces (of the outer garment mesh) corresponding to inner cage face 1402 as represented by the dashed line in FIG. 14. Face 1304 of outer cage 1200 (and corresponding to inner cage face 1404) is determined to be visible through the outer garment mesh as represented by the solid line in FIG.

[0074] Because faces 1302 and 1304 are associated faces of visible faces 1300 of garment mesh 1100, and at least one of these associated faces (e.g., face 1304) is determined to be visible when the outer layer of garment (with inner cage 1400) is fitted, the entire face 1300 of the inner / underlying garment mesh is considered to be visible and is rendered when the outer layer of garment is fitted to the avatar body. In a different situation where both face 1302 and face 1304 of outer cage 1200 are determined to be hidden by mesh faces of the outer layer of garment, the entire face 1300 of garment mesh 1100 is marked as invisible / hidden and is not rendered when the outer layer of garment is fitted to the avatar body.

[0075] The operations described above with respect to the HSR method can then be repeated / iterated with respect to additional mesh faces, and additional layers of clothing are deformed and fitted onto the avatar body and / or its existing clothing layer.

[0076] 15 is a diagram of an exemplary system architecture 1500 including a 3D environment platform capable of supporting 3D avatars with layered clothing, according to some embodiments. In the example of FIG. 15, the 3D environment platform is described in the context of a gaming platform 1502 purely for purposes of explanation, although various other embodiments 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 capable of providing 3D content. The description provided herein with respect to the gaming platform 1502 and other elements of the system architecture 1500 may be adapted for use with such other types of 3D environment platforms.

[0077] 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 3D avatar-like characters with clothing layered using the HSR features described above that allow users to navigate within the rendered 3D world of the electronic game.

[0078] 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.

[0079] In FIG. 15, an exemplary system architecture 1500 (also referred to herein as a "system") includes an online gaming platform 1502, a first client device 1510A, and at least one second client device X 1510X (generally referred to herein as a "client device 1510"). The online gaming platform 1502 may include, among other things, a game engine 1504 and one or more electronic games 1506. The system architecture 1500 is provided for illustration of one possible embodiment. In other embodiments, the system architecture 1500 may include the same, fewer, more, or different elements arranged in the same or different manners as shown in FIG. 15.

[0080] A communications network 1522 may be used for communication between the online gaming platform 1502 and the client devices 1510, and / or other elements of the system architecture 1500. The network 1522 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.

[0081] Client device 1510A may include a gaming application 1512 and one or more user interfaces 1514 (e.g., audio / video input / output devices). Similarly, client device X 1510X may include a gaming application 1520 and a user interface 1518 (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.

[0082] The system architecture 1500 may further include one or more storage devices 1524. The storage device 1524 may be, for example, a storage device within the online gaming platform 1502 or communicatively coupled to the online gaming platform 1502 via a network 1522 (as shown in FIG. 15). The storage device 1524 may store, for example, the graphical objects rendered within the game 1506 by the game engine 04 or game application 1512 / 1520, 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 deformation as described above). In some embodiments, the storage device 1524 may further store HSR-related information, such as vectors or other data structures that identify surfaces that are visible or invisible, surfaces that are relative to each other, etc., for the garment mesh and body mesh, and the garment cage and body cage.

[0083] In some embodiments, the storage device 1524 may be part of one or more separate content delivery networks that provide the graphical objects rendered within the game 1506. For example, an avatar creator may publish avatar templates to a library accessible on a first storage device, and a clothing creator may publish clothing templates to a library accessible on a second storage device (separate and independent from the avatar creator). The game application 1512 may then pull (or have the game application 1512 push) the graphical objects (avatars and clothing items) stored on the first / second storage devices for runtime computation / compilation / transformation for presentation during game play.

[0084] In some embodiments, storage device 1524 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. Storage device 1524 may also include multiple storage components (e.g., multiple drives or multiple databases), even spread across multiple computing devices (e.g., multiple server computers).

[0085] In some embodiments, the online gaming platform 1502 may include a server having one or more computing devices (e.g., a cloud computing system, a rack mounted server, a server computer, a cluster of physical servers, etc.) In some embodiments, the server may be included in the online gaming platform 1502, may be a separate system, or may be part of another system or platform.

[0086] In some embodiments, the online gaming platform 1502 may include one or more computing devices (such as rack mount 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 1502 and provide users with access to the online gaming platform 1502. The online gaming platform 1502 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 1502. For example, a user may access the online gaming platform 1502 using a game application 1512 on a client device 1510.

[0087] In some embodiments, the online gaming platform 1502 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 1502, 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 embodiments of the present disclosure, a "user" may be represented as a single individual. However, other embodiments of the 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."

[0088] In some embodiments, the online gaming platform 1502 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 1510 over the network 1522. In some embodiments, 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 embodiments, users may participate in gameplay with other users. In some embodiments, games may be played in real time with other users of the game.

[0089] In some embodiments, gameplay may refer to the interactions of one or more players using a client device (e.g., client device 1510) in a game (e.g., game 1506), or the presentation of interactions on a display or other user interface (e.g., user interface 1514 / 1518) of client device 1510.

[0090] In some embodiments, games 1506 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 entities. In some embodiments, game applications 1512 may execute in association with game engine 1504, and games 1506 may be rendered in association with game engine 1504. In some embodiments, games 1506 may have a common set of rules or a common goal, and environments of games 1506 share a common set of rules or a common goal. In some embodiments, different games may have different rules or goals from one another.

[0091] In some embodiments, 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 1506 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 that provides hidden surface erasure as described herein) may cross a virtual boundary to enter an adjacent virtual environment.

[0092] 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.

[0093] In some embodiments, the online gaming platform 1502 may host one or more games 1506 and enable users to interact with the games 1506 using game applications 1512 on client devices 1510. Users of the online gaming platform 1502 may play, create, interact with, or build games 1506, 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 1506. 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 structures to be used within the game 1506. In some embodiments, 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 1502 .

[0094] In some embodiments, the online gaming platform 1502 may transmit game content to the game application (e.g., game application 1512). In some embodiments, 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 1502 or game application. In some embodiments, 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 1506 of the online gaming platform 1502 or a game application 1512 or 1520 of a client device 1510. 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.

[0095] It may be noted that the online gaming platform 1502 hosting the game 1506 is provided for illustrative purposes. In some embodiments, the online gaming platform 1502 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 embodiments, 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.

[0096] In some embodiments, a game 1506 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 1502 (e.g., a public game). In some embodiments in which the online gaming platform 1502 associates one or more games 1506 with a particular user or group of users, the online gaming platform 1502 may associate a particular user with a game 1506 using user account information (e.g., a user account identifier such as a username and password).

[0097] In some embodiments, the online gaming platform 1502 or client device 1510 may include a game engine 1504 or game application 1512 / 1520. In some embodiments, the game engine 1504 may be used for the development or execution of the game 1506. For example, the game engine 1504 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 1504 may generate commands (e.g., rendering commands, collision commands, animation commands, physics commands, etc.) that aid in computing and rendering the game, including commands to select an avatar, customize an avatar, select clothing items, transform clothing items as layers on an avatar, perform HSR, and various other operations described herein. In some embodiments, the game application 1512 / 1520 of the client device 1510 may work independently, in cooperation with the game engine 1504 of the online game platform 1502, or a combination of both, to perform the operations described herein related to transforming and rendering layered clothing with hidden surface removal at runtime.

[0098] In some embodiments, both the online gaming platform 1502 and the client devices 1510 run a game engine or game application (1504, 1512, 1520, respectively). The online gaming platform 1502 using the game engine 1504 may perform some or all of the game engine functionality (e.g., generate physics commands, animation commands, rendering commands, etc., including clothing layer deformation and hidden surface removal as described above) or offload some or all of the game engine functionality to the game application 1512 of the client devices 1510. In some embodiments, each game 1506 may have a different ratio between the game engine functionality running on the online gaming platform 1502 and the game engine functionality running on the client devices 1510.

[0099] For example, the game engine 1504 of the online gaming platform 1502 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 with hidden surface removal) may be offloaded to the client device 1510. In some embodiments, the ratio of game engine functionality executed on the online gaming platform 1502 to game engine functionality executed on the client device 1510 may be changed (e.g., dynamically) based on game play conditions. For example, if the number of users participating in gameplay of a particular game 1506 exceeds a threshold number, the online gaming platform 1502 may execute one or more game engine functions previously executed by the client device 1510.

[0100] For example, a user may be playing a game 1506 on a client device 1510 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 1502. After receiving the control command from the client device 1510, the online gaming platform 1502 may send game play instructions (e.g., position and velocity information of a character participating in group game play, or commands, such as rendering commands, collision commands, etc.) to the client device 1510 based on the control command. For example, the online gaming platform 1502 may perform one or more logical operations (e.g., using the game engine 1504) on the control command to generate game play instructions for the client device 1510. In other cases, the online gaming platform 1502 may pass one or more of the control commands from one client device 1510 to other client devices participating in the game 1506. The client device 1510 may use the gameplay instructions to render the gameplay for presentation on the client device 1510 display, including an avatar with clothing layered using the HSR described above.

[0101] In some embodiments, the control instructions may refer to instructions indicating an in-game action 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 embodiments, the control instructions are sent directly to the online game platform 1502. In other embodiments, the control instructions may be sent from the client device 1510 to another client device, which generates the game play instructions using a local game engine application 1520. The control instructions may include instructions for playing a voice communication message or other sound from another user on an audio device (e.g., speaker, headphones, etc.), for example, a voice communication or other sound generated using audio spatialization techniques as described herein.

[0102] In some embodiments, gameplay instructions may refer to instructions that enable a client device 1510 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.).

[0103] In some embodiments, the client devices 1510 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 embodiments, the client devices 1510 may also be referred to as "user devices." In some embodiments, one or more client devices 1510 may connect to the online gaming platform 1502 at any time. It may be noted that the number of client devices 1510 is provided by way of example and not limitation. In some embodiments, any number of client devices 1510 may be used.

[0104] In some embodiments, each client device 1510 may include an instance of a gaming application 1512 or 1520, respectively. In one embodiment, the gaming application 1512 or 1520 may enable a user to use and interact with the online gaming platform 1502, such as controlling a virtual character in a virtual game hosted by the online gaming platform 1502, or viewing or uploading content for the game 1506, 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 1510 and enables a user to interact with the online gaming platform 1502. The gaming application may render, display, or present content (e.g., web pages, media viewers) to the user. In embodiments, the gaming application may also include an embedded media player (e.g., Flash player) that is embedded in a web page.

[0105] According to aspects of the disclosure, the game application 1512 / 1520 may be an online gaming platform application through which a user builds, creates, edits, and uploads content to the online gaming platform 1502 and interacts with the online gaming platform 1502 (e.g., plays games 1506 hosted by the online gaming platform 1502). Thus, the game application 1512 / 1520 may be provided to the client device 1510 by the online gaming platform 1502. In another example, the game application may be an application that is downloaded from a server.

[0106] In some embodiments, a user may log into the online gaming platform 1502 via 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 1506 of the online gaming platform 1502.

[0107] In general, functions described in one embodiment as being performed by the online gaming platform 1502 may be performed by the client device 1510 or server in other embodiments, as appropriate. In addition, functions attributed to a particular component may be performed by different or multiple components operating together. The online gaming platform 1502 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.

[0108] FIG. 16 is a flow diagram illustrating a computer-implemented method 1600 for providing layered clothing using HSR on a 3D avatar, according to some embodiments. For simplicity, various operations of the method 1600 are described in the context of a gaming application 1512 of a client device 1510 performing the operations. However, as already described above in connection with FIG. 15, some of the operations may alternatively or additionally be performed in whole or in part by a gaming engine 1504 in a gaming platform 1502. The example method 1600 may include one or more operations illustrated by one or more blocks, such as blocks 1602 to 1612. Various blocks of the method 1616 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 the embodiment.

[0109] The method 1600 of Figure 16 may be described herein with reference to elements illustrated in Figures 1-15, and other figures. In one embodiment, operations of method 1600 may be performed in a pipelined sequential manner. In other embodiments, some operations may be performed out of order, in parallel, etc.

[0110] At block 1602 ("Identify Body Feature Points for 3D Avatar Body Cage"), a user launches a game application 1512 and accesses a library of avatar bodies to select an avatar for use within a 3D environment (such as an online game or virtual experience). The selected avatar may be a generic template with a general shape / size, or may be a template of 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 game application 1512 may generate at least a portion of the body cage at run time. The game application identifies feature points of the body cage that define the shape of the avatar. Block 1602 may be followed by block 1604.

[0111] At block 1604 ("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 at block 1602, the first garment in the library may have a cage configured thereon, and / or the game application 1512 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 (e.g., see FIG. 7). At block 1604, the game application 1512 may utilize RBF techniques to map inner feature points of inner cage of the first garment to feature points of body of the body cage to deform the first garment (e.g., deform the mesh of the first garment) to fit the avatar body. Block 1604 may be followed by block 1606.

[0112] At block 1606 ("Perform First HSR: Determine Visibility and Associated Faces"), a first set of iterative HSR-related operations may be performed. For example, using the visibility technique of FIG. 10, the HSR method may determine whether faces of the body cage (that correspond to or otherwise act as proxies for faces of the body mesh) are obscured by one or more faces of the first garment mesh. This determination is performed iteratively for each face of the body cage (or performed in parallel for various faces of the body cage), and the faces of the body cage are marked as either visible or hidden (invisible), such as by setting vertices of polygons as visible or invisible.

[0113] In some embodiments, at block 1606, a determination may also be made as to which faces of the body cage are related to a particular face of the body mesh. This determination may be similar / similar to that shown and described above in connection with Figures 13 and 14. In other embodiments, this determination of the relationship between the body mesh faces and the body cage faces may not be performed. Block 1606 may be followed by block 1608.

[0114] At block 1608 ("Fitting First Garment to Avatar Body"), the game application 1512 fits the first garment to the avatar body. This fitting may be performed by the game application 1512 at block 1608 by a rendering process that at least partially encases the avatar body with the transformed first garment. For example, coordinate positions of at least some of the inner feature points (of the inner cage of the first garment) take on values ​​of coordinate positions of the body feature points of the body cage when the garment mesh of the transformed first garment is rendered onto the avatar body.

[0115] As illustrated by way of example in FIG. 11, the garment mesh 1100 may thus be rendered on top of the avatar body and marked as visible, while the underlying hidden faces of the avatar body (shown in dashed lines and already marked / determined as hidden) are not rendered. Also, in block 1606 and / or block 1608, for each face of the first garment mesh, a determination is made as to which faces of the first garment outer cage are associated with that face of the first garment mesh. This operation is described above in connection with FIGS. 12 and 13, and may include (for example) adding the vertices of the associated polygons of the outer cage to the data of the corresponding face of the first garment mesh. Block 1608 may be followed by block 1610.

[0116] At block 1610 ("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 a library (or the second garment may be selected automatically). Like the first garment at block 1604, the second garment at block 1610 has an inner cage and an outer cage. The game application 1512 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 1610 may be followed by block 1612.

[0117] At block 1612 ("Perform Second HSR: Determine Visibility and Associated Faces"), a second set of iterative HSR-related operations may be performed. Still using the visibility technique of FIG. 10, the HSR method may determine whether faces of the outer cage (that correspond to faces of the first garment mesh or otherwise act as proxies for faces of the first garment mesh) are hidden by one or more faces of the second garment mesh. This determination is performed iteratively / iteratively for each face of the first garment outer cage, and faces of the first garment mesh are marked as either visible or hidden (invisible).

[0118] As described above in connection with Figure 14, marking / identifying a particular face of the mesh of the first garment as being visible or invisible is based on associated faces of the outer cage of the first garment. If at least one of these associated faces is determined to be visible through the second (next) garment, the particular face of the mesh of the first garment is marked / identified as being visible. Block 1612 may be followed by block 1614.

[0119] At block 1614 ("Fitting Second Garment On Avatar Body"), the game application 1512 fits the second garment onto the avatar body (which has the first garment already fitted thereon). This fitting may be performed by the game application 1512 at block 1614 by a rendering process that at least partially envelops the avatar body (which has the first garment already fitted thereon) with the transformed second garment. For example, coordinate locations of at least some of the inner feature points (of the inner cage of the second garment) take on values ​​of coordinate locations of outer feature points of the outer cage of the transformed first garment when the garment mesh of the transformed second garment is rendered onto the avatar body which has the first garment fitted thereon.

[0120] Thus, the garment mesh of the second garment may be rendered over the avatar body (with the first garment fitted over it) and marked as visible, with underlying hidden faces of the first garment and / or avatar not being rendered. Also, at block 1612 and / or block 1614, for each face of the second garment mesh, a determination is made as to which faces of the second garment outer cage are associated with that face of the second garment mesh. As described above in connection with Figures 12 and 13, these associated faces of the (second garment) outer cage may be used to determine whether the corresponding faces of the second garment mesh will be visible when the third garment is layered over the second garment.

[0121] Block 1614 may be followed by block 1616 .

[0122] In block 1616 ("Iterate"), operations similar to those described above may be performed to overlay and transform additional clothing on top of the existing layers, with visibility determination and other HSR related operations being performed as needed to avoid rendering hidden surfaces. For example, in a first iteration described above in connection with blocks 1602-1608, a first clothing item is fitted (using HSR) onto the body cage. In a second iteration, which may be performed in blocks 1610-1614, an additional (second) clothing item may be fitted (using HSR) onto the first clothing item worn over the body cage. Iterations may be performed to fit additional clothing items for any number of items. In some embodiments (e.g., when clothing items in successive fittings are associated at that stage with different non-overlapping portions of the outer cage), fitting 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.).

[0123] Various enhancements can be made to the HSR techniques described above to improve performance and results. For example, Figures 17-19 are diagrams relating to improving visibility determination for HSR, according to some implementations.

[0124] Referring first to FIG. 17 for context, diagram 1700 illustrates a front view of a polygonal (e.g., triangular) face 1702 of a cage. In a similar manner to that depicted in FIG. 10 above, multiple rays 1704 are cast from sample points 1706 on face 1702. Diagram (side view) 1708 illustrates that most / many of the rays 1704 hit / intersect a garment mesh 1710. However, one ray 1712 does not hit the mesh 1710, thereby making face 1702 visible to a viewer at position 1714. Thus, from diagram 1700 and diagram 1708, it can be concluded that the visibility of face 1700 may depend on either or both the viewer's position and the origin and direction of the rays being cast.

[0125] 18, a diagram 1800 shows a cage 1802 and a garment mesh 1804 overlying some (but not all) of the cage 1802. As depicted in FIG. 18, a ray 1806 (cast from point 1808 toward point 1812 on face 1810 of the cage 1802) may not hit the garment mesh 1804, but may hit other faces of the cage 1802.

[0126] Typically, in the visibility determination technique of FIG. 10, the fact that ray 1806 did not hit garment mesh 1804 may cause face 1810 to be considered visible. However, in some embodiments of the HSR technique, the visibility determination takes into account that ray 1806 hits / intersects other parts of cage 1802. Thus, face 1810 may be considered invisible / hidden rather than visible. The situation depicted in FIG. 18 may apply, for example, when one body part of an avatar is partially covered by another body part of the avatar and there is overlying clothing with a gap located near the covered body part.

[0127] FIG. 19 relates to improving visibility calculations by encoding the direction from which rays are cast. To provide context, the visibility determination technique described above involves casting rays from faces of the underlying cage and detecting whether these rays intersect / hit the mesh of the overlying garment. Rays may be cast from random directions, and if any of these rays do not hit the mesh of the overlying garment, the face of the underlying cage is marked as visible.

[0128] However, by way of example, there may be situations where an area on an avatar body (e.g., a particular face of a body mesh) is visible when only pants are worn, or when only a shirt is worn, but when both pants and a shirt are worn, the face of the body mesh becomes hidden. For example, when the avatar body is wearing only pants, the face of the body mesh is visible when looking down from above, and when only a shirt is worn, the face of the body mesh is visible when looking up from below, and thus, when both pants and a shirt are worn, the face of the body mesh may be marked as visible, which is incorrect. Thus, the visibility determination enhancement of the HSR technique combines the visibility direction / determination of pants and shirt in such a way that when both pants and a shirt (or other clothing) are worn simultaneously, the face of the body mesh (and / or the face of the underlying clothing mesh) is determined to be hidden.

[0129] Such an enhancement may be performed by encoding ray directions for visibility calculations based on an exemplary sphere 1900 shown in Figure 19. The exemplary sphere 1900 is subdivided into ten slices about its north-south axis, with each particular slice 1902 highlighted in Figure 19. Each slice is in turn subdivided along its height into ten regions 1904.

[0130] Sphere 1900 represents all possible ray directions, with each slice covering a range of directions that fall within the dihedral angles that make up the slice. For example, slice 1902 might represent ten different ray directions, each corresponding to ten regions 1904.

[0131] Each slice is encoded using a single bit value: a value of 0 for hidden and a value of 1 for visible. Thus, for a slice 1902, there may be a string of 0s and 1s corresponding to the ray directions of region 1904. So, instead of shooting rays in random directions (as depicted in FIG. 10), rays are shot slice by slice and the visibility is marked for the slice. Thus, the mesh of the inner cage can be marked as visible from some directions and hidden from other directions, all of which may be encoded into an array of 1s and 0s for each slice.

[0132] In the previous example of an avatar wearing only pants, the body region / face may be marked as visible since the array for slice 1902 has at least one coding direction value of 1 (visible). Similarly, when the avatar is wearing only a shirt, the body region / face may be marked as visible since the array for slice 1902 also has at least one coding direction value of 1 (visible). Then, when checking visibility for a multi-layer arrangement (e.g., wearing both pants and a shirt), a logical AND operation may be performed on the coded bit strings of the two slices. If the AND operation results in a value of 0, the corresponding body region / face is marked as hidden. Otherwise, the AND operation results in a value of 1, so that body / mesh face is marked as visible.

[0133] According to various embodiments, further optimizations of the technique of FIG. 19 may be performed. For example, visibility calculations can be optimized by casting rays only for slices that may be visible, which can reduce computational costs. This may be done by first performing a dot product between the face normal and the direction of the slice (e.g., from its middle point) and ignoring slices that are behind the face (e.g., negative dot product values).

[0134] As yet another example of an enhancement to the HSR technique, reference is now made to Fig. 20. Fig. 20 illustrates an example of a problem that may be encountered when performing HSR. In particular, some faces of the body or clothing of avatars 2000-2004 may be erased when HSR is performed, even though such faces should not be erased, thereby resulting in a strange or unnatural looking result. In Fig. 20, as shown in 2006-2012, a portion of the avatar's ear has been erased, while other portions of the same ear may (or may not) be made visible.

[0135] To address the problem depicted in Figure 20, an embodiment of the HSR technique may perform a clustering operation in which faces that are occluded (or visible) together are put into a single group. An example of a clustering algorithm is as follows: 1. Calculate the threshold. a. For each face on the outer cage (calculateCloseToCageThreshold) i. Calculate the distance between a face on the outer cage and the closest face on the render mesh b. Take the median distance as the threshold 2. Find all faces on the render mesh that need to be clustered (meshFacesOutsideOfOuterCage) a. The algorithm only wants to cluster faces on the render mesh if they are outside the outer cage b. For each face on the render mesh, i. The face distance to the nearest outer cage is greater than a threshold ii. And, when the rays leave the surface, at least one of the rays does not strike the outer cage; iii. The face is probably outside the outer cage and needs to be clustered 3. Group together the render mesh faces that were determined above to be outside the outer cage (generateClusterForFacesOnMeshOutsideOfOuterCage) a. For each face on the render mesh that needs clustering, i. Find neighbors of a face on the render mesh ii. If adjacent faces require clustering, add the faces to one group 4. Update the map of the render mesh to the associated outer cage a. For each cluster of render faces, i. For each render face in the cluster, 1. Locate all relevant outer cage faces 2. Add these outer cage faces to a cluster of related outer cage faces 3. Update the associated outer cage faces of all faces in the associated outer cage face cluster to each render face in the render face cluster cluster.

[0136] Then, when HSR is performed, all faces in a cluster are treated as one "big face" on the render mesh and share the same associated faces on the outer cage. Thus, clustered faces in the render mesh will be visible or hidden together.

[0137] In some scenarios, symmetry problems may be encountered when performing clustering. For example, an avatar may have two ears and hair. If the hair covers one ear but not the other, the avatar may be rendered with one ear covered (hidden / erased). See, for example, avatar 2004 in FIG. 20.

[0138] As another example, clustering may be based on whether faces are connected or disconnected from one another. However, a problem with some avatars is that certain parts may appear to be connected, but they are not, or certain parts are not intended to be connected, but are still hidden or visible together. As a result of HSR, the rendered avatar may have "floating", disconnected parts, or parts that are oddly / unnaturally stuck together.

[0139] As further examples, some faces may be too close to the outer cage, which may cause clustering resulting in inappropriate transparency / visibility of these faces when in fact they should be hidden; the threshold (see step 1 of the clustering algorithm above) may be set or calculated too large or too small, resulting in some faces being completely covered, but the user does not want to hide these surfaces because they may be special to the avatar;

[0140] These and other clustering problems are addressed in some embodiments by providing tools on a user interface (UI) to allow a user (e.g., a developer, creator, etc.) to select faces to cluster together. For example, a user can define which faces should always be visible for HSR, paint or otherwise specify faces that are hidden or revealed instead of specifying using vertices, import a mesh that defines which faces are always visible or not visible, etc.

[0141] Regarding yet another enhancement provided in some embodiments, HSR may be performed by shrinking the hidden areas (faces) of the cage. As already explained above to provide context, HSR erases most polygons (faces), such as triangles, that are covered by the outer layer. However, some parts may not be erased and thus these parts may cause undesired bleeding that manifests as transparency, clipping issues, mismatched deformations, etc.

[0142] The solution to the aforementioned problem is to shrink the hidden regions / faces of the cage in such a way that the mesh faces / triangles underneath these regions do not bleed through. Ideally, the triangles underneath the hidden cage faces would be erased by HSR, but some triangles may not be erased (e.g., due to a ray passing through a narrow gap between the outer layer mesh of the garment and the underlying cage faces, resulting in such triangles being determined to be visible). By shrinking the underlying cage, the corresponding mesh underneath the cage is also shrinked, thereby reducing the bleed-through problem.

[0143] When only a single layer of clothing is present, the reduction may be applied only to the faces of the lower layer of the body. When two or more layers of clothing are present, the faces of each layer may be reduced except for the topmost layer. This reduction may be performed, working from the topmost (outermost) layer to the bottommost (innermost) layer, until bleeding is eliminated or otherwise reduced to an acceptable level.

[0144] To perform the reduction, a first operation may include determining a triangle (face) of the cage to be reduced. To make this determination, there may be a known triangle, or at least one vertex of the triangle may be known. For example, if the triangle is known, the vertices of the triangle are known. Then, the neighboring triangles of the known triangle may be determined as triangles that share at least a subset of the known vertices. This process may be repeated from one vertex / triangle to another until all of the suitable triangles to be reduced have been identified.

[0145] After the triangles have been identified, triangle shrinking may be performed using any suitable method (including the processes described above). According to various embodiments, umbrella-Laplacian shrink and / or normal shrink techniques may be used.

[0146] The normal shrinking technique moves vertices along the negative normal direction. Thus, normal shrinking may be used for individual triangles that lie in a single plane, two or more triangles that lie in a common plane, or for vertices of non-pointed features of a cage. However, the normal shrinking technique may not work well for vertices of some pointed features, which may lead to bleeding.

[0147] The Umbrella-Laplacian shrinkage technique may be used to smooth out sharp features to reduce the likelihood of smearing. Figure 21 shows an example of the hidden cage shrinkage technique, and in particular, the Umbrella-Laplacian shrinkage technique.

[0148] Diagram 2100 shows multiple triangles with their vertices joined together at a pointed vertex V. An umbrella operator is used to compute a vector 2102 from vertex V to point C. Point C may be the average of adjacent vertices 0, 1, 2, 3, and 4.

[0149] If vertex V is moved down to vertex V' by the umbrella operator (as shown in figure 2104), the sharp features imparted by vertex V are reduced. A similar operation may then be performed on all of the other vertices 0, 1, 2, 3, and 4 to obtain a reduced cage / mesh. The umbrella-Laplacian reduction technique may also produce a smoothed cage / mesh.

[0150] According to some embodiments, shrinking of the cage faces may be performed if rendering indicates that any bleeding has occurred, in other embodiments, shrinking may be performed before rendering, and adjustments to the shrinking can be performed after this rendering if there is bleeding or other undesirable visual effects that can be alleviated by adjusting the shrinking.

[0151] FIG. 22 is a block diagram of an example computing device 2200 that may be used to implement one or more features described herein. The client device 1510 and / or the gaming platform 1502 of FIG. 15 may be provided in the form of the computing device 2200 of FIG. 22. In one example, the computing device 2200 may be used to execute the methods described herein. The computing device 2200 may be any suitable computer system, server, or other electronic or hardware device. For example, the computing device 2200 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 embodiments, the computing device 2200 includes a processor 2202, a memory 2204, an input / output (I / O) interface 2206, and an audio / video input / output device 2214.

[0152] The processor 2202 can be one or more processors and / or processing circuits for executing program code and controlling basic operations of the computing device 2200. 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, a system 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.

[0153] The memory 2204 may be provided within the computing device 2200 for access by the processor 2202 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 2202, 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 2204 may store software that may be executed on the computing device 2200 by the processor 2202, including an operating system 2208, one or more applications 2210, and their associated data 2212. The applications 2210 are examples of tools that may be used to embody the game application 2212 / 2220 or the game engine 1504. In some embodiments, application 2210 may include instructions that, upon execution by processor 2202, enable processor 2202 to perform or control the execution of operations described herein in connection with transforming / fitting clothing layered on an avatar body and performing HSR-related operations.

[0154] Any of the software in memory 2204 may alternatively be stored in any other suitable memory location or computer-readable medium. Additionally, memory 2204 (and / or other connected storage devices) may store instructions and data used in the features described herein. Memory 2204 and any other types of storage (such as magnetic disks, optical disks, magnetic tape, or other tangible media) may be considered "storage" or "storage devices."

[0155] The I / O interface 2206 may provide functionality to allow computing device 2200 to interface with other systems and devices. For example, network communication devices, storage devices, and input / output devices may communicate with computing device 2200 via the I / O interface 2206. In some embodiments, the I / O interface 2206 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(s) 2214.

[0156] The audio / video input / output devices 2214 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.

[0157] For ease of illustration, Figure 22 shows one block for each of the processor 2202, memory 2204, I / O interfaces 2206, applications 2210, 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 embodiments, computing device 2200 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.

[0158] 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 2200, e.g., processor 2202, memory 2204, and I / O interface 2206. 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 2214 may be connected to (or included in) the computing device 2200 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 embodiments may provide an audio output device, for example, text-to-speech output or synthesis.

[0159] One or more of the methods described herein (e.g., method 1600) 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.

[0160] 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.

[0161] Although the description has been given in connection with specific embodiments thereof, these specific embodiments are exemplary only and are not limiting, and the concepts illustrated in the examples may be applied to other examples and implementations.

[0162] 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 embodiment. Different programming techniques may be used, e.g., procedural or object-oriented programming techniques. 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 embodiments. In some embodiments, multiple steps or operations shown in this specification as being sequential may be performed simultaneously. [Explanation of symbols]

[0163] 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 502 External surface 600 Figures 602 Mesh 604 Cage 606 Mesh Surfaces 608 Cage surface 610 Cage surface 700 Figures 704 Outer Cage 706 Inner Cage 708 Protrusion 1000 Figures 1002 sides 1004~1010 Polygon 1012 Opening 1014~1026 rays 1028 points 1100 Clothing Mesh 1102 Torso 1104 Each arm 1106 Head 1108 Legs 1110 Hand 1200 Outer Cage 1202 yen 1300 pages 1302 faces 1304 faces 1306 Vertex 1400 Inner Cage 1402 faces 1404 faces 1500 System Architecture 1502 Online Game Platform 1504 Game Engine 1506 Electronic Games 1510 Client Device 1510A First Client Device 1510X Second client device X 1512 / 1520 Gaming Applications 1518 User Interface 1522 Network 1524 Storage Device 1600 methods 1700 Figures 1702 faces 1704 Ray of light 1706 sample points 1708 Figure (side view) 1710 Clothing Mesh 1712 Ray of light 1714 position 1800 Figures 1802 Cage 1804 Clothing Mesh 1806 Ray of light 1808 points 1810 sides 1812 points 1900 balls 1902 slices 1904 area 2000~2004 Avatar 2100 Figure 2102 Vector 2104 Figure 2200 Computing Devices 2202 Processor 2204 Memory 2206 Input / Output (I / O) Interface 2210 Application 2212 Data 2214 Audio / Video Input / Output Device

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 inner feature points of an inner cage of a first garment to feature points of the body of the body cage to obtain a transformed first garment that fits the avatar body; performing a first hidden surface removal (HSR) operation to identify faces of the body cage that are hidden by the transformed first garment; fitting the transformed first garment to the avatar body by at least partially encasing the avatar body in the transformed first garment, wherein faces of the avatar body that correspond to identified faces of the body cage are not rendered; mapping inner feature points of an inner cage of a second garment to outer feature points of the outer cage of the deformed first garment to obtain a deformed second garment that fits into an outer cage of the first garment; performing a second HSR operation to identify faces of the outer cage of the transformed first garment that are obscured by the transformed second garment; and fitting the transformed second garment to the avatar body by at least partially enveloping the avatar body with the transformed first garment fitted thereon, wherein faces of the transformed first garment that correspond to identified faces of the outer cage are not rendered.

2. performing the second HSR operation, identifying, with respect to a hidden first surface of a mesh of the transformed first garment, at least a first surface of the outer cage of the first garment that is associated with the hidden first surface of the transformed first garment; and identifying, with respect to a visible second surface of the mesh of the transformed first garment, at least a second surface of the outer cage of the first garment that is associated with the visible second surface of the transformed first garment; The method of claim 1 , wherein the associated at least the second surface is used in a subsequent visibility determination with respect to a third garment, and the associated at least the first surface is hidden with respect to the third garment.

3. performing the second HSR operation to identify the faces of the outer cage of the transformed first garment that are hidden; projecting a plurality of light beams from at least one point on a surface of the outer cage of the first garment; determining that the surface is visible if at least one ray of the plurality of light rays does not strike the second garment; and determining that the surface is occluded if all of the plurality of light rays strike the second garment.

4. performing the first HSR operation and the second HSR operation, encoding, for the first garment, a first visibility of a particular face of the body cage using at least a first slice of a sphere; encoding a second visibility of the particular face of the body cage using at least a second slice of the sphere for the second garment; and performing a logical operation between the encoded first visibility and the encoded second visibility to determine the visibility of the particular face of the body cage when both the first garment and the second garment are fitted to the avatar body.

5. 2. The method of claim 1, wherein the step of performing the first HSR operation includes performing a clustering technique such that first faces of the avatar body that are occluded together are clustered into a first group and second faces of the avatar body that are visible together are clustered into a second group.

6. The method of claim 1, further comprising the step of reducing at least one of the body cage and the outer cage of the first garment to reduce bleed-through with an underlying surface.

7. The method of claim 1 , further comprising the step of adjusting for bulges caused by fitting the deformed second garment over the deformed first garment.

8. In response to execution by a processor, the processor: identifying body feature points of a 3D avatar body cage having an avatar body; mapping inner feature points of an inner cage of a first garment to feature points of the body of the body cage to obtain a transformed first garment that fits the avatar body; performing a first hidden surface removal (HSR) operation to identify faces of the body cage that are hidden by the transformed first garment; fitting the transformed first garment to the avatar body by at least partially encasing the avatar body in the transformed first garment, wherein faces of the avatar body that correspond to identified faces of the body cage are not rendered; mapping inner feature points of an inner cage of a second garment to outer 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; performing a second HSR operation to identify faces of the outer cage of the transformed first garment that are obscured by the transformed second garment; and A non-transitory computer-readable medium having stored thereon instructions for performing or controlling the performance of an operation of fitting the transformed second garment to the avatar body by at least partially enveloping the avatar body having the transformed first garment fitted thereon with the transformed second garment, wherein surfaces of the transformed first garment that correspond to identified surfaces of the outer cage are not rendered.

9. the operation of performing the second HSR operation further comprising: identifying, with respect to a hidden first surface of a mesh of the transformed first garment, at least a first surface of the outer cage of the first garment that is associated with the hidden first surface of the transformed first garment; and identifying, with respect to a visible second surface of the mesh of the transformed first garment, at least a second surface of the outer cage of the first garment that is associated with the visible second surface of the transformed first garment; 9. The non-transitory computer-readable medium of claim 8, wherein the associated at least the second surface is used in a subsequent visibility determination with respect to a third garment, and the associated at least the first surface is hidden with respect to the third garment.

10. performing the second HSR operation to identify the faces of the outer cage of the transformed first garment that are hidden; projecting a plurality of light beams from at least one point on a surface of the outer cage of the first garment; determining that the surface is visible if at least one ray of the plurality of light rays does not strike the second garment; and determining that the surface is occluded if all of the plurality of light rays strike the second garment.

11. the operation of performing the first HSR operation and the second HSR operation further comprising: encoding, for the first garment, a first visibility of a particular face of the body cage using at least a first slice of a sphere; encoding a second visibility of the particular face of the body cage using at least a second slice of the sphere for the second garment; and performing a logical operation between the encoded first visibility and the encoded second visibility to determine the visibility of the particular face of the body cage when both the first garment and the second garment are fitted to the avatar body.

12. the operation of performing the first HSR operation comprising:

9. The non-transitory computer-readable medium of claim 8, comprising an operation of performing a clustering technique such that first faces of the avatar bodies that are occluded together are clustered into a first group and second faces of the avatar bodies that are visible together are clustered into a second group.

13. The instructions further cause the processor to:

10. The non-transitory computer readable medium of claim 8, which performs an operation of reducing at least one of the body cage and the outer cage of the first garment, the reduction reducing the bleed-through caused by the underlying surface.

14. A processor; coupled to the processor, and in response to execution by the processor, causing the processor to: identifying body feature points of a 3D avatar body cage having an avatar body; mapping inner feature points of an inner cage of a first garment to feature points of the body of the body cage to obtain a transformed first garment that fits the avatar body; performing a first hidden surface removal (HSR) operation to identify faces of the body cage that are hidden by the transformed first garment; fitting the transformed first garment to the avatar body by at least partially encasing the avatar body in the transformed first garment, wherein faces of the avatar body that correspond to identified faces of the body cage are not rendered; mapping inner feature points of an inner cage of a second garment to outer 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; performing a second HSR operation to identify faces of the outer cage of the transformed first garment that are obscured by the transformed second garment; and and a non-transitory computer-readable medium having stored thereon instructions for performing or controlling the performance of an operation of fitting the transformed second garment to the avatar body by at least partially enveloping the avatar body having the transformed first garment fitted thereon, wherein surfaces of the transformed first garment that correspond to identified surfaces of the outer cage are not rendered.

15. the operation of performing the second HSR operation further comprising: identifying, with respect to a hidden first surface of a mesh of the transformed first garment, at least a first surface of the outer cage of the first garment that is associated with the hidden first surface of the transformed first garment; and identifying, with respect to a visible second surface of the mesh of the transformed first garment, at least a second surface of the outer cage of the first garment that is associated with the visible second surface of the transformed first garment; 15. The apparatus of claim 14, wherein the associated at least the second surface is used in a subsequent visibility determination with respect to a third garment, and the associated at least the first surface is hidden with respect to the third garment.

16. performing the second HSR operation to identify the faces of the outer cage of the transformed first garment that are hidden; projecting a plurality of light beams from at least one point on a surface of the outer cage of the first garment; determining that the surface is visible if at least one ray of the plurality of light rays does not strike the second garment; and determining that the surface is occluded if all of the plurality of light rays strike the second garment.

17. the operation of performing the first HSR operation and the second HSR operation further comprising: encoding, for the first garment, a first visibility of a particular face of the body cage using at least a first slice of a sphere; encoding a second visibility of the particular face of the body cage using at least a second slice of the sphere for the second garment; and performing a logical operation between the encoded first visibility and the encoded second visibility to determine the visibility of the particular face of the body cage when both the first garment and the second garment are fitted to the avatar body.

18. the operation of performing the first HSR operation comprising:

15. The apparatus of claim 14, further comprising an operation of performing a clustering technique such that first faces of the avatar body that are occluded together are clustered into a first group and second faces of the avatar body that are visible together are clustered into a second group.

19. The instructions further cause the processor to:

15. The apparatus of claim 14, further comprising an operation of reducing at least one of the body cage and the outer cage of the first garment, the reduction reducing the bleed-through caused by the surface of an underlying layer.

20. The instructions further cause the processor to:

15. The apparatus of claim 14, further comprising an operation of adjusting for bulging caused by fitting the deformed second garment over the deformed first garment.

Citation Information

Patent Citations

  • Image generation system and method and program for image generation

    JP2003103047A

  • Computer-implemented method for designing avatar with at least one garment

    JP2016110652A

  • Layered clothing that conforms to an underlying body and / or clothing layer

    US11615601B2

  • 3D graphics system and method

    US20070273711A1