Linear cage deformer for multilayer costumes

JP2026530287APending Publication Date: 2026-09-08ROBLOX CORP
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025574532
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-08-14
Filing Date
2024-08-13
Publication Date
2026-09-08

AI Technical Summary

Benefits of technology

【0006】 本開示の実装形態は、3次元(3D)アバターのための多層衣類アクセサリの改善された装着およびレンダリングのために線形ケージデフォーマを使用する技法に関する。そのような線形ケージデフォーマは、多層衣類に他の方法で影響を与えるかさばりを低減し得、より視覚的に魅力的で、現実的に見えるアバターを生成し得る。線形ケージデフォーマは、2つ以上の衣類の層を着用するアバターをレンダリングするのに特に効果的であり得る。

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026530287000001_ABST
    Figure 2026530287000001_ABST
Patent Text Reader

Abstract

Linear cage deformers for multilayer garment techniques are used in a 3D environment to attach any three-dimensional (3D) geometric structure to any target 3D geometric structure for a 3D avatar. In the case of multilayer garments, iterative procedures are used to determine the differences between successive garment layers and to accumulate these differences to create the final layered effect. Several implementations relate to methods, systems, and computer-readable media for providing such 3D avatars having multilayer garments, by providing the avatar, the avatar having an avatar body on which inner garments and outer garments are layered. Inner garments may be layered on the avatar body, and outer garments may be layered on the inner garments. Such layering may include putting on the garments and deforming the outer cage of the garments using linear cage deformer techniques. After layering, the avatar body is rendered together with the garments.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Cross-Reference to Related Applications This application claims priority to U.S. Provisional Application No. 63 / 532,621, filed August 14, 2023, entitled "LINEAR CAGE DEFORMER FOR MULTI-LAYERED OUTFITS", the entire contents of which are incorporated herein by reference.

[0002] The present disclosure relates to computer graphics, and more specifically, but not exclusively, to methods, systems, and computer-readable media for providing a graphical representation of multi-layered clothing over an underlying graphical object using linear cage deformer techniques.

Background Art

[0003] Multi-user gaming environments often involve the use of avatars to represent players in a virtual experience. Avatars are often three-dimensional (3D) avatars that differ in geometry, shape, and style from one avatar to another. For example, avatars may have various body shapes (e.g., tall, short, muscular, slim, male, female, human, animal, alien, etc.), different numbers and types of limbs, and can be customized with a plurality of garments / clothing and / or accessories worn by the avatar (e.g., a shirt worn over the torso, a jacket worn over the shirt, a scarf worn over the jacket, a hat worn over the head, etc.).

[0004] To provide clothing and / or accessories for avatars, game developers traditionally use radial basis functions (RBF) to reshape the outer clothing cage. RBF interpolation and extrapolation are essential for modeling continuous spatial data. However, extrapolation can lead to artifacts that degrade image quality.

[0005] When a single layer of strain is applied to the outer cage of a multi-layered garment, the new outer cage for each layer is calculated using the RBF technique for the next outer cage. Therefore, the single layer strain worsens and is amplified as more layers are added. Consequently, the shape of the garment can become significantly distorted, and in some cases, the garment may burst or become enormous. [Overview of the project] [Means for solving the problem]

[0006] An implementation of this disclosure relates to a technique for using a linear cage deformer for improved fitting and rendering of multilayer clothing accessories for three-dimensional (3D) avatars. Such a linear cage deformer can reduce the bulkiness that otherwise affects multilayer clothing, and can produce avatars that are more visually appealing and realistic. Linear cage deformers may be particularly effective for rendering avatars wearing two or more layers of clothing.

[0007] For example, the technique may include providing an avatar in a 3D virtual environment, the avatar having an avatar body on which underwear and outer clothing are superimposed. The underwear may be superimposed on the avatar body, and the superimposition includes putting the underwear on the avatar body and deforming the outer cage of the underwear using a linear cage deformer technique.

[0008] Next, the outer garment may be overlaid on the inner garment, and the overlay includes attaching the outer garment to the inner garment and deforming the outer cage of the outer garment using a linear cage deformer technique. After overlaying, the avatar body may be rendered with the inner garment and outer garment overlaid on top of it. The linear cage deformer technique can perform various actions to deform the successive outer garment cages based on techniques that operate on the inner garment cage and the corresponding previous outer garment cage.

[0009] One or more computer systems can be configured to perform a specific operation or action by having software, firmware, hardware, or a combination thereof installed on the system that causes the system to perform an action while it is running. One or more programs can be configured to perform a specific operation or action by containing instructions that cause the data processing device to perform an action when executed by the device.

[0010] According to one embodiment, a computer implementation method is provided for providing a 3D avatar having multilayered clothing in a three-dimensional (3D) virtual environment, the computer implementation method comprising the steps of providing an avatar in a 3D virtual environment, wherein the avatar has an avatar body on which innerwear and outerwear are superimposed; a step of superimposing innerwear onto the avatar body, which includes the step of attaching the innerwear onto the avatar body; a step of deforming the outer cage of the innerwear based on one or more of the outer cage of the avatar body and the inner cage of the innerwear using a linear cage deformer technique; a step of superimposing outerwear onto the innerwear, which includes the step of attaching the outerwear onto the innerwear based on the deformed outer cage of the innerwear and the inner cage of the outerwear; a step of deforming the outer cage of the outerwear based on one or more of the deformed outer cage of the innerwear and the inner cage of the outerwear using a linear cage deformer technique; and a step of rendering the avatar body on which the innerwear and outerwear are superimposed.

[0011] This specification describes various implementation forms of computer implementation methods.

[0012] In some implementations, the step of deforming the outer cage of the underwear includes: identifying a single corresponding vertex in both the outer cage of the avatar body and the inner cage of the underwear for at least one outer cage vertex of the outer cage of the underwear; generating a local coordinate frame of the inner cage of the underwear and a local coordinate frame of the outer cage of the avatar body using triangles that share a single corresponding vertex; and adjusting the position of at least one outer cage vertex of the outer cage of the underwear in order to deform the outer cage of the underwear using the difference between the local coordinate frame of the inner cage of the underwear and the local coordinate frame of the outer cage of the avatar body.

[0013] In some implementations, the step of deforming the outer cage of the undergarment adapts the outer garment to the shape of the avatar body and the shape of the worn undergarment.

[0014] In some implementations, the outer cage of the inner garment, the inner cage of the outer garment, and the outer cage of the outer garment share a standardized UV layout that can be used to determine correspondence information between the outer cage of the inner garment and the inner cage of the outer garment, and the step of deforming the outer cage of the outer garment is based on this correspondence information.

[0015] In some implementations, the computer implementation method further includes the steps of: identifying a single corresponding vertex in both the outer cage of the inner garment and the inner cage of the outer garment for at least one outer cage vertex of the outer cage of the outer garment; generating a local coordinate frame of the inner cage of the outer garment and a local coordinate frame of the outer cage of the inner garment using triangles that share a single corresponding vertex; and adjusting the position of at least one outer cage vertex of the outer cage of the inner garment in order to deform the outer cage of the outer garment using the difference between the local coordinate frame of the inner cage of the outer garment and the local coordinate frame of the outer cage of the inner garment.

[0016] In some implementations, the step of adjusting the position of at least one outer cage vertex of the outer cage of the outer garment deforms the outer cage of the outer garment while maintaining the original spacing and alignment between the inner cage of the outer garment and the outer cage of the outer garment.

[0017] In some implementations, the step of deforming the outer cage of the underwear using a linear cage deformer technique includes determining a first dataset describing the volume occupied by the avatar body before the underwear is placed on the avatar body, and a second dataset describing the volume occupied by the underwear after it is placed on the avatar body; calculating the difference between the corresponding values ​​in the first and second datasets; and using the sum calculated from the difference and the values ​​in the second dataset to deform the outer cage of the underwear.

[0018] In some implementations, if there are three or more layers of clothing, the computer implementation method further includes, for each layer, the steps of iteratively calculating the continuous difference in volume between previous consecutive layers of clothing, accumulating the continuous differences, and deforming the layers based on the accumulated continuous differences.

[0019] In some implementations, the linear cage deformer technique includes the steps of: iterating through the garment's garment cage triangles and summing the vertex offsets and weights of the garment cage triangles in order to deform the garment's outer cage based on the outer cage of the previous garment or avatar body part; and deforming the garment's outer cage based on the deformed garment outer cage (GOC) positions determined by iterating through the vertices of the garment's outer cage.

[0020] In some implementations, the step of iterating through the garment cage triangles of a garment and summing the vertex offsets and weights of the garment cage triangles includes the steps of: calculating a difference transformation from the previous outer cage (POC) triangle of the previous garment or avatar body part to the corresponding garment inner cage (GIC) triangle of the garment; and transforming the vertices of the garment's GOC triangles based on the corresponding difference transformation and updating the vertex offsets and weights of the garment's GOC triangles accordingly.

[0021] In some implementations, the step of calculating the difference transformation from the POC triangles of the previous clothing or avatar body part to the corresponding GIC triangles includes the steps of calculating a local 3x3 matrix for the POC triangles and a local 3x3 matrix for the GIC triangles, where the difference transformation is a local difference (LD) 3x3 matrix calculated by multiplying the POC matrix by the inverse of the GIC matrix.

[0022] In some implementations, the step of calculating local 3x3 matrices for POC triangles and GIC triangles includes the steps of: finding a first vector and a second vector for corresponding triangles of the POC triangle and GIC triangle, wherein the first vector and the second vector are two sides of the corresponding triangle; finding a third vector which is the cross product of the first vector and the second vector; normalizing the first vector, the second vector and the third vector; and obtaining a local 3x3 matrix as a matrix having the first vector, the second vector and the third vector as basis vectors.

[0023] In some implementations, the step of transforming the vertices of a GOC triangle based on a corresponding difference transformation and updating the vertex offsets and weights of the GOC triangle accordingly includes the steps of: obtaining the original local offset (LO) vector for the vertex of a GOC triangle by calculating the difference between the corresponding GOC vertex position and the corresponding GIC vertex position for the vertex of the GOC triangle; transforming the LO vector by calculating the product of the local difference (LD) matrix for the corresponding GOC triangle, the original LO vector, and the area of ​​the GIC triangle associated with the corresponding GOC triangle; adding the transformed LO vector to the vertex offset for the vertex of the GOC triangle; and adding the area of ​​the GIC triangle to the vertex weights for the vertex of the GOC triangle.

[0024] In some implementations, the step of deforming the outer cage of the garment based on the deformed outer cage of the garment (GOC) position determined by iterating through the vertices of the outer cage of the garment includes the steps of: finding the final local offset for each vertex of the outer cage of the garment as the previously added vertex offset divided by the previously added vertex weight; and deforming the outer cage of the garment based on the deformed GOC position of the garment determined based on the vertices obtained as the previous outer cage (POC) position by adding the final local offset.

[0025] According to another aspect, a non-transitory computer-readable medium is provided. The non-transitory computer-readable medium stores instructions that, when executed by a processing device, cause the processing device to perform operations including: providing an avatar in a 3D virtual environment, the avatar having an avatar body on which an undergarment and an outer garment are superimposed; superimposing the undergarment onto the avatar body, the superimposing the undergarment including: placing the undergarment on the avatar body, and deforming an outer cage of the undergarment based on one or more of an outer cage of the avatar body and an inner cage of the undergarment using a linear cage deformer technique; superimposing the outer garment onto the undergarment, the superimposing the outer garment including: placing the outer garment on the undergarment based on the deformed outer cage of the undergarment and an inner cage of the outer garment, and deforming an outer cage of the outer garment based on one or more of the deformed outer cage of the undergarment and the inner cage of the outer garment using the linear cage deformer technique; and rendering the avatar body on which the undergarment and the outer garment are superimposed.

[0026] Various implementations of the non-transitory computer-readable medium are described herein.

[0027] In some implementations, deforming the outer cage of the undergarment adapts the outer garment to the shape of the avatar body and the shape of the placed undergarment.

[0028] In some implementations, the linear cage deformer technique, for deforming a garment outer cage based on an outer cage of a preceding garment or an avatar body portion, includes: iterating through garment cage triangles of the garment to sum vertex offsets and weights of the garment cage triangles, and deforming the outer cage of the garment based on deformed garment outer cage (GOC) positions determined by iterating through vertices of the outer cage of the garment.

[0029] According to another aspect, a system is disclosed, comprising: a memory having instructions stored therein; and a processing device coupled to the memory and configured to access the memory, wherein the instructions, when executed by the processing device, cause the processing device to perform operations comprising: providing an avatar in a 3D virtual environment, the avatar having an avatar body on which innerwear and outerwear are superimposed; superimposing the innerwear on the avatar body, the superimposing comprising: mounting the innerwear on the avatar body; and deforming an outer cage of the innerwear based on one or more of an outer cage of the avatar body and an inner cage of the innerwear using a linear cage deformer technique; superimposing the outerwear on the innerwear, the superimposing comprising: mounting the outerwear on the innerwear based on the deformed outer cage of the innerwear and an inner cage of the outerwear; and deforming an outer cage of the outerwear based on one or more of the deformed outer cage of the innerwear and the inner cage of the outerwear using a linear cage deformer technique; and rendering the avatar body having the innerwear and the outerwear superimposed thereon.

[0030] Various implementations of the system are described herein.

[0031] In some implementations, deforming the outer cage of the innerwear adapts the outerwear to the shape of the avatar body and the shape of the mounted innerwear.

[0032] In some implementations, the linear cage deformer technique comprises: iterating through garment cage triangles of a garment to sum vertex offsets and weights of the garment cage triangles, for deforming a garment outer cage based on an outer cage of a previous garment or an avatar body portion; and deforming the outer cage of the garment based on deformed garment outer cage (GOC) positions determined by iterating through vertices of the outer cage of the garment.

[0033] In yet another aspect, details of the systems, methods, and non-temporary computer-readable media, features, and implementations may be omitted and / or modified from some or more of the individual components or features and combined to form additional aspects including additional components or features and / or other modifications, all of which are within the scope of the disclosure. [Brief explanation of the drawing]

[0034] [Figure 1] This figure shows exemplary implementations of a linear cage deformer in several different implementation configurations. [Figure 2] This figure shows examples of avatars with multiple layers of clothing, implemented in several different ways. [Figure 3] This figure shows examples of avatars with multiple layers of clothing, implemented in several different ways. [Figure 4] This figure shows examples of avatars with multiple layers of clothing, implemented in several different ways. [Figure 5A] This figure shows examples of avatars without clothing and avatars with multiple layers of clothing, comparing existing radial basis function (RBF) techniques with techniques using linear cage deformer techniques, using several implementation forms. [Figure 5B] Another figure shows examples of avatars without clothing and avatars with multiple layers of clothing, comparing existing radial basis function (RBF) techniques with techniques using linear cage deformer techniques, using several implementation forms. [Figure 5C] Another figure shows examples of avatars without clothing and avatars with multiple layers of clothing, comparing existing radial basis function (RBF) techniques with techniques using linear cage deformer techniques, using several implementation forms. [Figure 6] This figure shows flowcharts illustrating exemplary computer implementation methods for providing a 3D avatar with multi-layered clothing in a three-dimensional (3D) virtual environment, using several implementation configurations. [Figure 7]This figure shows flowcharts illustrating exemplary computer implementation methods for adjusting the position of the outer cage vertices of the outer cage of the innerwear, using several implementation configurations. [Figure 8] This figure shows flowcharts illustrating exemplary computer implementation methods for adjusting the position of the outer cage vertices of the outer cage of the outer garment, using several implementation configurations. [Figure 9] This figure shows flowcharts illustrating exemplary computer implementation methods for deforming the outer cage of underwear, using several different implementation configurations. [Figure 10] This figure shows flowcharts illustrating exemplary computer implementation methods for deforming the outer cage of clothing using several implementation configurations. [Figure 11] This figure shows flowcharts illustrating exemplary computer implementations for updating the vertex offsets and weights of outer garment cage (GOC) triangles, using several different implementation configurations. [Figure 12] This figure shows flowcharts illustrating exemplary computer implementation methods for obtaining differential transformations, based on several implementation configurations. [Figure 13] This figure shows flowcharts illustrating exemplary computer implementations for obtaining a local matrix from a vector, using several different implementation methods. [Figure 14] This figure shows flowcharts illustrating exemplary computer implementations for updating vertex offsets and vertex weights, based on several implementation configurations. [Figure 15] This is a diagram illustrating an exemplary system architecture including a 3D environment platform capable of supporting 3D avatars with multi-layered clothing in several implementation forms. [Figure 16] This block diagram shows an exemplary computing device that may be used to implement one or more of the features described herein, in several implementation forms. [Modes for carrying out the invention]

[0035] In the following detailed description, references are made to the accompanying drawings that form part of this specification. In the drawings, unless otherwise indicated by different context, similar symbols typically identify similar components. The exemplary implementations described in the detailed description, drawings, and claims are not intended to be limiting. Other implementations may be used and other modifications may be made without departing from the gist or scope of the subject matter presented herein. The aspects of this disclosure described herein and shown in the figures may be arranged, substituted, combined, and separated in a wide variety of different configurations, all of which are contemplated herein.

[0036] References in this specification to “one implementation,” “implementation,” and “exemplary implementation” indicate that the implementations described may include certain features, structures, or characteristics, but not all implementations necessarily include those features, structures, or characteristics. Furthermore, such phrases do not necessarily refer to the same implementation. In addition, if certain features, structures, or characteristics are described in relation to an implementation, those features, structures, or characteristics may also be present in relation to other implementations, whether explicitly described or not.

[0037] This disclosure is directed, in particular, to a linear cage deformer technique for improved fitting and rendering of multi-layer clothing accessories for three-dimensional (3D) avatars. The linear cage deformer reduces the bulkiness of multi-layer clothing and produces avatars with visually appealing, realistic-looking clothing. The deformer affects the appearance of an avatar wearing two or more layers of clothing while maintaining the same appearance as when the avatar is wearing a single layer of clothing.

[0038] Existing layering techniques use cage meshes to reshape clothing to fit avatars of arbitrary shapes. Such layering can apply layers of clothing using radial basis functions (RBFs). Layering systems also support multi-layer clothing. However, using RBF functions for multi-layer clothing causes problems. RBFs use interpolation and extrapolation, which can result in distortion that degrades image quality. While such distortion may be minor for single-layer clothing, when layers are attached consecutively, using RBF techniques amplifies the distortion, causing substantial problems when rendering avatars with multiple layers of clothing.

[0039] Avatars with multiple layers of clothing may have cages (both inner and outer) for all of the layers of clothing sharing a standardized UV layout. Therefore, RBF cannot be used to reshape the outer clothing cage. Instead, the linear cage deformer technique can find the corresponding vertices of the inner clothing cage and the outer cage of the previous layer (if the previous layer is the avatar body or the last garment worn). The triangles sharing these corresponding vertices can be used to find the local coordinate frames for both cages. The positions of the outer cage vertices of the current garment (i.e., the garment in the process of being superimposed) can then be adjusted and / or transformed using the difference between these new coordinate frames.

[0040] As described herein, adjusting vertices within a successive garment outer cage can have several potentially valuable properties. The technique provided maintains the original spacing and alignment between the garment inner cage and garment outer cage for each garment when a new (i.e., adjusted) outer cage is generated. This improves the quality of the new outer cage. Additionally, since no extrapolation error is introduced, artifacts are reduced as layers are added.

[0041] These techniques enable the geometric shape of any body to be adapted to the geometric shape of any garment, which in turn allows one layer of garment to be adapted to the layer of garment underneath, thereby providing customization without the limitations imposed by previously defined geometric shapes or without using complex calculations, in order to make garment items compatible with any body shape of an avatar or other garment item.

[0042] Multilayer clothing attachment is also performed (i.e., algorithmically) by a gaming platform or gaming software (or other platform / software that operates to provide a 3D environment) using techniques such as the linear cage deformer technique, without the avatar creator (avatar body creator, or body creator) or clothing item creator performing complex calculations. As used herein, the terms “clothing,” “clothing item,” or “clothing accessory” are understood to include clothing and accessories, as well as any other items that can be placed on an avatar in relation to specific parts of the avatar body.

[0043] Linear cage deformer techniques describe the space applied to clothing accessories or clothing items on an avatar when multiple clothing items or accessories are superimposed on each other. For example, these techniques can be used to determine a first dataset describing the volume occupied by the avatar's unclothed body (e.g., torso) and a second dataset describing the volume occupied by clothing items (e.g., shirts) superimposed on the avatar's unclothed body.

[0044] The difference between the first dataset and the second dataset is calculated. This difference is then added to the second dataset when subsequent layers of clothing should be added on top of the first layer of clothing. When dealing with multi-layered clothing, these techniques iteratively apply a procedure that involves calculating the difference between consecutive layers of clothing, and then accumulating these differences to create the final layering effect.

[0045] The techniques described herein relating to multilayer garments may be applied to avatars used in virtual experiences. Such virtual experiences are sometimes described herein in the context of electronic games. The techniques described herein may also be used in other types of virtual environments in three-dimensional (3D) environments, which may not necessarily relate to electronic games having one or more players represented by avatars. Examples of virtual experiences may include virtual reality (VR) meetings, 3D sessions (e.g., online lectures, or other types of representations involving 3D avatars), augmented reality (AR) sessions, or other types of 3D environments in which one or more users are represented by one or more avatars in a 3D environment.

[0046] For layered clothing, automatic cage fitting techniques can be used on 3D avatars. These techniques allow the geometric shape of any body to be fitted to the geometric shape of any clothing, which in turn allows layers of clothing to be fitted to layers of clothing underneath, thereby providing customization without the limitations imposed by previously defined geometric shapes or without using complex calculations, in order to make clothing items compatible with any body shape of an avatar or other clothing items.

[0047] Cage-to-cage attachment techniques can also be performed on a gaming platform or gaming software (or other virtual experience platform / software that operates to provide a 3D environment) without requiring the avatar creator (also known as the avatar body creator or body creator) or clothing item creator to perform complex calculations. The terms “clothing” or “a garment” as used herein, or other similar terms, are understood to include graphical representations of clothing and accessories, as well as any other items, that can be placed on an avatar in relation to specific parts of the avatar cage.

[0048] During execution in a virtual experience session, the player / user accesses a body library to select a specific avatar body and a clothing library to select clothing to place on the selected body. The 3D environment platform presenting the avatar adjusts the clothing to fit the shape of the body (through automatically determined appropriate deformations), thereby implementing a cage-to-cage fitting technique for automatically attaching the clothing to the avatar body (and any intermediate layers, if worn by the avatar).

[0049] When clothing is worn over an avatar body and / or clothing worn underneath an avatar body, the techniques described herein may be performed to deform or otherwise fit the clothing more accurately to the avatar with respect to scale (e.g., proportional relationships), shape, etc. The user may further select additional clothing to be worn over the clothing underneath, and the additional clothing will be deformed to conform to the geometric shape of the clothing underneath.

[0050] The implementations described herein are based on the concepts of "cage" and "mesh." A body "mesh" (or "render mesh") is the actual, visible geometric shape of an avatar. A body "mesh" includes graphical representations of body parts such as arms, legs, torso, and head, and can have any shape, size, and geometric topology. Similarly, a clothing "mesh" (or "render mesh") can be any mesh that graphically represents clothing, or parts thereof, such as shirts, pants, hats, and shoes.

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

[0052] Figure 1 - Linear cage deformer Figure 1 shows an exemplary implementation 100 of a linear cage deformer in several implementation forms. Figure 1 shows an inner garment cage 102 and an associated outer garment cage 104. The inner garment cage 102 may be associated with a previous (or body) outer cage 106. For example, if the garment being worn is the innermost garment, the previous (or body) outer cage 106 is the outer cage of the avatar body itself. If the garment being worn is a garment worn over one or more inner garments, the previous (or body) outer cage 106 is the outer garment cage immediately preceding the current garment.

[0053] Such a previous (or body) outer cage 106 may be used in conjunction with the garment inner cage 102 to construct a new (i.e., updated and / or adjusted) outer cage 108 for the current garment, based on the original associated garment outer cage 104. The new outer cage 108 may retain certain characteristics of the garment inner cage 102 and the garment outer cage 104.

[0054] More specifically, the following techniques may be applied to improve the layering of clothing. These techniques may include iterating over clothing cage triangles and summing vertex offsets and weights. Such iteration may include calculating a difference transformation from the previous outer cage (POC) triangle to the inner clothing cage (GIC) triangle for all or some of the triangles.

[0055] Finding the difference transformation may also involve computing the local 3x3 matrices for POC and GIC triangles. For example, when computing the local 3x3 matrices corresponding to POC and GIC triangles, vectors u and v may be two sides of each triangle. Vector w can be obtained as the cross product of vectors u and v. Then u, v, and w are normalized. The local matrices (for POC or GIC triangles) can then be obtained by using u, v, and w as basis vectors of the given triangle.

[0056] The difference transformation obtains the local difference (LD) as a 3x3 matrix, where the POC matrix is ​​multiplied by the inverse of the GIC matrix. To complete the calculation of the difference transformation, the transformation is applied to the three original angles of the original garment outer cage (GOC) triangles. The local offset vector (LO) is obtained as the GOC vertex position by subtracting the GIC vector position. The LO vector is then transformed into the product of the LD matrix, the LO vector, and the GIC triangle area. During the iteration, the transformed LO is added to the vertex offsets, and the GIC triangle area is added to the vertex weights.

[0057] After iterating over the garment cage triangles, another iteration may be performed on the vertices of the outer garment cage to calculate the final GOC position. For example, for such a vertex, the final local offset is obtained as the previous summed vertex offset (from the iteration) divided by the vertex weight (from the iteration). The final position of the vertex in the final GOC is obtained as the POC position, which is the sum of the final local offsets.

[0058] The technique described herein maintains the original spacing and alignment between the garment inner cage and the garment outer cage when a new outer cage is generated. This improves the quality of the new outer cage because no extrapolation errors are introduced and artifacts do not worsen as layers are added.

[0059] Figure 2 - Exemplary Avatar Figure 2 shows an example 200 of an avatar 202 with multiple layers of clothing, in several implementation forms. The flared cuffs 204 are a composite extrapolation artifact. Such extrapolation artifacts can occur due to the use of radial basis functions (RBFs) when layering multiple garments. Such flared cuffs 204 negatively impact the visual quality of the avatar 202.

[0060] Figure 3 - Simulated Avatar Figure 3 shows an example 300 of an avatar 302 having multiple layers of clothing, in several implementation forms. The clothing is larger than expected and distorted due to complex extrapolation. Figure 3 shows that avatar 302 was generated using the RBF technique 304. Such distortion negatively impacts the visual quality of avatar 302.

[0061] Figure 4 - Exemplary Avatar Figure 4 shows an example 400 of avatar 402 having multiple layers of clothing, according to several implementations. According to some implementations, the clothing is calculated using a linear cage deformer. Figure 4 shows that avatar 402 was generated using a linear cage deformer 404. Figure 4 shows that avatar 402 has clothing that fits much more naturally than avatar 202 (shown in Figure 2), despite the presence of multiple layers of clothing.

[0062] Figure 5A - Exemplary avatar with clothing and exemplary avatar without clothing Figure 5A shows examples 500a of avatars without clothing and avatars with multiple layers of clothing, comparing existing radial basis function (RBF) techniques with techniques using linear cage deformer techniques, in several implementation forms.

[0063] For example, Avatar 502 could be the default avatar. Using existing layering techniques (such as RBF) may result in Avatar 504 having the fit of multilayered clothing, which is bulky and expands with each layer that is stacked on top of the others. However, Avatar 506 may use the techniques described herein (such as a linear cage deformer) to provide a modern fit using the layering techniques presented herein, so that Avatar 506 looks more natural and visually appealing.

[0064] Figure 5B - Exemplary avatar with clothing and exemplary avatar without clothing Figure 5B is another figure showing examples 500b of avatars without clothing and avatars with multiple layers of clothing, comparing existing radial basis function (RBF) techniques with techniques using linear cage deformer techniques, in several implementation forms.

[0065] For example, Avatar 512 could be a boy's avatar. Avatar 514, generated using existing techniques (such as RBF), may result in a gap between the sleeve and the arm. Avatar 516, generated using the techniques described herein (such as a linear cage deformer), provides a new look with sleeves that maintain proportions while fitting the arm appropriately.

[0066] Figure 5C - Exemplary avatar with clothing and exemplary avatar without clothing Figure 5C is another figure showing example 500c of an avatar without clothing and an avatar with multiple layers of clothing, comparing existing radial basis function (RBF) techniques with techniques using linear cage deformer techniques, in several implementation forms.

[0067] For example, Avatar 522 could be a female avatar. Avatar 524, generated using existing techniques (such as RBF), may be wearing an overly bulky jacket. Avatar 526, generated using the techniques described herein (such as a linear cage deformer), provides a new look with a more realistic fit. For example, Figure 5C also shows that Avatars 524 and 526 may differ from Avatar 522 in other respects, such as having attached hair.

[0068] Figure 6 - Providing a 3D avatar with multi-layered clothing. Figure 6 shows a flowchart of an exemplary computer implementation method 600 for providing a 3D avatar with multilayer clothing in a three-dimensional (3D) virtual environment, in several implementation forms. Method 600 can begin in block 602.

[0069] In block 602, an avatar may be provided in a 3D virtual environment. For example, an avatar may be selected from an avatar repository. An avatar may have an avatar body on which inner clothing and optionally one or more outer garments are layered. Avatars may be provided in various ways. Block 604 may follow block 602. In blocks 604 and 606, inner clothing is layered on the avatar body.

[0070] In block 604, inner clothing is attached to the avatar body. For example, such attachment may involve establishing a correspondence between the outer cage of the avatar body and the inner cage of the inner clothing, and using this correspondence to attach the inner clothing to the avatar body. Depending on its type, the inner clothing may be attached to one or more parts of the avatar body. For example, a T-shirt may be attached to the torso and upper arms of the avatar body. Block 604 may be followed by block 606.

[0071] In block 606, the outer cage of the underwear is deformed. For example, the deformation can be performed using a linear cage deformer technique based on the outer cage of the avatar body and / or the inner cage of the underwear. Additional details on how block 606 may be performed are shown in Figure 7. Block 608 may follow block 606.

[0072] However, in some embodiments, only a single (inner) garment is attached to and transformed on the avatar body. Therefore, in some implementations, blocks 608 and 610 may be omitted, and the avatar body may be rendered using only the inner garment. However, when multiple garments are placed on the avatar body, block 608 may often follow block 606.

[0073] In blocks 608 and 610, the outer garment is layered on top of the inner garment.

[0074] In block 608, the outer garment is attached to the inner garment. For example, such attachment may involve establishing a correspondence between the outer cage of the inner garment and the inner cage of the outer garment, and using this correspondence to attach the outer garment to the inner garment.

[0075] Depending on its type, the outer garment may be worn over one or more undergarments layered on part of the avatar body. For example, a vest may be worn over a dress shirt previously layered on the torso of the avatar body (not necessarily the arms). Block 610 may follow Block 608.

[0076] In block 610, the outer cage of the outer garment is deformed. For example, the deformation may use a linear cage deformer technique based on the deformed outer cage of the inner garment and / or the inner cage of the outer garment. Additional details on how block 610 is performed are shown in Figure 8. Such deformation improves the fit of the outer garment over the avatar body and inner garment, and is also helpful when subsequent clothing is attached to the avatar body. Block 610 may be followed by block 612 for rendering.

[0077] However, in some implementations, there may be three or more layers of clothing. In such implementations, an outer garment may be attached to an inner garment in block 608, and after the outer cage of the outer garment is deformed in block 610, other garments may be sequentially layered on top of the existing garments. Such layering involves attaching the next garment on top of the previous garment and deforming the outer cage of the next garment in order to render and / or attach the next garment.

[0078] In block 612, the avatar body may be rendered together with the inner and outer garments. If there are three or more garments, in block 612, the avatar body may be rendered using all or some of the layered garments.

[0079] Figure 7 - Adjusting the outer cage vertices of the outer cage of the innerwear. Figure 7 shows a flowchart of an exemplary computer implementation method 700 for adjusting the position of the outer cage vertices of the outer cage of the innerwear, in several implementation configurations. Method 700 can begin in block 702.

[0080] In block 702, corresponding vertices in the outer cage of the avatar body and the inner cage of the undergarment are identified. For example, such corresponding vertices are identified by finding relationships based on where in the outer cage of the avatar body the inner cage of the undergarment is attached. Such corresponding vertices can serve as a basis for deforming the outer cage of the undergarment. Block 704 may follow block 702.

[0081] In block 704, the local coordinate frame of the inner cage of the underwear is generated. For example, the local coordinate frame of the inner cage of the underwear may be generated based on a triangle sharing a specified vertex. Block 704 may be followed by block 706.

[0082] In block 706, the local coordinate frame of the avatar body's outer cage is generated. For example, the local coordinate frame of the avatar body's outer cage may be generated based on triangles sharing specific vertices. Block 708 may follow block 706.

[0083] In block 708, the positions of the corresponding vertices are adjusted. For example, the adjustment may be based on the difference between the local coordinate frame of the inner cage of the underwear and the local coordinate frame of the outer cage of the avatar body. By using this difference, it may be possible to maintain the original spacing and alignment between the inner and outer cages of the underwear when generating a new outer cage for the underwear.

[0084] Figure 8 - Adjusting the outer cage vertices of the outer cage of the outer garment. Figure 8 shows a flowchart of an exemplary computer implementation method 800 for adjusting the position of the outer cage vertices of the outer cage of the outer garment, in several implementation configurations. Method 800 may begin in block 802.

[0085] In block 802, corresponding vertices are identified in the outer cage of the inner garment and the inner cage of the outer garment. For example, such corresponding vertices are identified by finding relationships based on where in the outer cage of the inner garment is fitted. Such corresponding vertices can serve as a basis for deforming the outer cage of the outer garment. Block 804 may follow block 802.

[0086] In block 804, the local coordinate frame of the inner cage of the outer garment is generated. For example, the local coordinate frame of the inner cage of the outer garment may be generated based on a triangle sharing a specified vertex. Block 804 may be followed by block 806.

[0087] In block 806, the local coordinate frame of the outer cage of the underwear is generated. For example, the local coordinate frame of the outer cage of the underwear may be generated based on a triangle sharing a specified vertex. Block 808 may follow block 806.

[0088] In block 808, the positions of the corresponding vertices are adjusted. For example, the adjustment may be based on the difference between the local coordinate frame of the inner cage of the outer garment and the local coordinate frame of the outer cage of the inner garment. By using this difference, it may be possible to maintain the original spacing and alignment between the inner and outer cages of the outer garment when generating a new outer cage for the outer garment.

[0089] Figure 9 - Deforming the outer cage of the underwear. A flowchart of an exemplary computer implementation method 900 for deforming the outer cage of an undergarment, in several implementation configurations, is shown. Method 900 may begin in block 902.

[0090] In block 902, a first dataset is determined (i.e., the values ​​of the first dataset are determined). Such a first dataset may describe the volume occupied by the body portion of the avatar without clothing (e.g., the torso). The first dataset may help identify the relationship between the avatar and the clothing layered over it. Block 904 may follow block 902.

[0091] In block 904, a second dataset is determined (i.e., the values ​​of the second dataset are determined). Such a second dataset may describe the volume occupied by clothing items (e.g., shirts) layered on top of the avatar's unclothed body. The second dataset may help identify the relationship between the avatar and the clothing layered on top of it. Block 904 may be followed by block 906.

[0092] In block 906, the difference between the corresponding values ​​in the first dataset and the values ​​in the second dataset is calculated. Thus, each difference may indicate a mismatch between the vertices in the first dataset (corresponding to the avatar body) and the vertices in the second dataset (corresponding to the clothing items). Block 908 may follow block 906.

[0093] In block 908, a sum is calculated from the calculated difference and the values ​​in the second dataset to deform the outer cage of the undergarment. Such a sum maintains the spacing and alignment between the inner and outer cages of the garment when generating the adjusted outer cage for the garment.

[0094] Figure 9 illustrates an example where volumetric datasets are identified and used for the avatar body and the first garment, but similar operations can be used to establish the volumes of layered garments and subsequent layered garments, and the differences in these volumes can be summed with values ​​from the dataset to deform the outer cage of the consecutive layers of garments.

[0095] Figure 10 - Deforming the outer cage of the garment Figure 10 shows a flowchart of an exemplary computer implementation method 1000 for deforming the outer cage of a garment in several implementation configurations. Method 1000 can begin in block 1002.

[0096] In block 1002, the garment cage triangles are iterated over, summing the vertex offsets and weights. Additional details of such iterations on the triangles are shown in Figure 11. Such iterations gather information about the relationship between the previous outer cage (POC) triangles and the inner garment cage (GIC) triangles, and what transformations may be appropriate for the outer garment cage (GOC) triangles. Block 1004 may follow block 1002.

[0097] In block 1004, the final local offset is determined. Such a final local offset can be obtained by taking the previously summed vertex offsets for each vertex (determined in block 1002) and dividing the summed vertex offsets by the corresponding vertex weights (also determined in block 1002). Since block 1002 iterates through the garment triangles, after the iteration, the summed vertex offsets and vertex weights reflect how the GOC vertices are transformed into vertices of the deformed garment outer cage used to update the garment outer cage. Block 1006 may follow block 1004.

[0098] In block 1006, the outer cage of the garment may be deformed based on a deformed outer cage of the garment determined by iterating over the vertices of the outer cage. For example, the vertices in the outer cage of the garment may be adjusted to have a final position obtained from the corresponding POC vertices with the final local offset calculated in block 1004.

[0099] Using such a final offset provides new vertex positions for the outer cage vertices, which have the technical advantages discussed above (e.g., maintaining the original spacing and alignment without introducing extrapolation errors, thus improving quality and avoiding composite artifacts).

[0100] Figure 11 - Updating the vertex offsets and weights of the outer cage (GOC) triangles in clothing. Figure 11 shows flowcharts of exemplary computer implementation methods 1100 for updating the vertex offsets and weights of outer garment cage (GOC) triangles in several implementation configurations. Method 1100 can begin in block 1102.

[0101] In block 1102, a difference transformation from a POC triangle to a GIC triangle can be calculated. The difference transformation can be obtained by calculating the local matrix and then performing a product based on the matrix. Further details of block 1102 are shown in Figure 12. Block 1104 may follow block 1102.

[0102] In block 1104, the vertices of the GOC triangle are transformed based on a difference transformation. There may be local offset vectors that are modified before being used in the transformation. Further details of block 1104 are shown in Figure 14. Block 1106 may follow block 1104.

[0103] In block 1106, the vertex offsets and weights of the GOC triangles are updated. The vertex offsets may be updated based on the local offsets, and the vertex weights may be updated based on the area of ​​the triangles. Additional details of block 1106 are shown in Figure 14. After block 1106, the iteration of block 1002 may be completed, and method 1000 in Figure 10 may continue by finding the final local offsets in block 1004.

[0104] Figure 12 - Calculating the difference transformation Figure 12 shows flowcharts of exemplary computer implementation methods 1200 for obtaining differential transformations in several implementation forms. Method 1200 may begin in block 1202.

[0105] In block 1202, the local matrix for the POC triangle is calculated by using the vector corresponding to the triangle. Details of block 1202 (regarding how the local matrix used herein is obtained for a given triangle) are shown in Figure 13. Block 1204 may follow block 1202.

[0106] In block 1204, the local matrix for the GIC triangle is calculated by using the vector corresponding to the triangle. Details of block 1204 (regarding how the local matrix used herein is obtained for a given triangle) are shown in Figure 13. Block 1206 may follow block 1204.

[0107] In block 1206, the difference transformation can be obtained by multiplying the local matrix for the POC triangle by the inverse of the local matrix for the GIC triangle. The result of this multiplication is a 3x3 matrix that can be used for the difference transformation.

[0108] Figure 13 - Obtaining a local matrix from a vector Figure 13 shows flowcharts of exemplary computer implementation methods 1300 for obtaining local matrices from vectors, in several implementation forms. Method 1300 can begin in block 1302.

[0109] In block 1302, a first vector and a second vector can be obtained. For example, the first and second vectors may define a triangle, such as a POC triangle or GIC triangle, from which the local matrix is ​​obtained. The first and second vectors can be sides of the current triangle. For example, the first vector may be called u, and the second vector may be called v.

[0110] In block 1304, a third vector can be obtained as the cross product (or vector product) of u and v. Such a third vector is sometimes called vector w.

[0111] In block 1306, the three vectors (u, v, and w) are normalized; that is, each vector retains its direction while being transformed into a unit vector (i.e., the length of the vector is 1 linear unit).

[0112] In block 1308, a local matrix is ​​obtained that has these vectors as basis vectors. Such a matrix can be obtained using linear algebraic techniques to identify the local matrix.

[0113] Figure 14 - Updating vertex offsets and vertex weights Figure 14 shows flowcharts of exemplary computer implementation methods 1400 for updating vertex offsets and vertex weights in several implementation forms. Method 1400 can begin in block 1402.

[0114] In block 1402, the original local offset vector is determined. For example, the local offset (LO) vector can be obtained as the GOC vertex position by subtracting the GIC vertex position. Therefore, the original LO vector can represent the original offset between the outer cage vertices and the inner cage vertices of the garment. Block 1404 may follow block 1402.

[0115] In block 1404, the original local offset vector is transformed. Such a transformation is based on multiplying the original LO matrix (as shown in Figures 12 and 13) by the area of ​​the GIC triangle (such an area can be obtained using the vector product based on the vectors defining the sides of the triangle), and then multiplying the LD matrix by that. Block 1406 may follow block 1404.

[0116] In block 1406, the transformed local offset vector is added (as a cumulative sum) to the vertex offset. Block 1408 may follow block 1406.

[0117] In block 1408, the area of ​​the GIC triangle is added (cumulatively) to the vertex weights.

[0118] Figure 15 - System Architecture Figure 15 is a diagram of an exemplary system architecture including a 3D environment platform capable of supporting 3D avatars with multi-layered clothing in several implementation forms. Figure 15 and other figures use similar reference numbers to indicate similar elements. Letters following a reference number, such as "1510," indicate that the text specifically refers to the element with that particular reference number. Reference numbers in text without following letters, such as "1510," refer to any or all of the elements in the figure with that reference number (for example, "1510" in text refers to reference numbers "1510a," "1510b," and / or "1510n" in the figure).

[0119] The system architecture 1500 (also referred to herein as the “System”) includes an online virtual experience server 1502, a data store 1520, client devices 1510a, 1510b, and 1510n (collectively referred to herein as “Client Devices” 1510), and developer devices 1530a and 1530n (collectively referred to herein as “Developer Devices” 1530). The virtual experience server 1502, the data store 1520, the client devices 1510, and the developer devices 1530 are connected via a network 1522. In some implementations, client devices 1510 and developer devices 1530 may refer to the same or the same type of device.

[0120] The online virtual experience server 1502 may include, among other things, a virtual experience engine 1504, one or more virtual experiences 1506, and a graphics engine 1508. In some implementations, the graphics engine 1508 may be a system, application, or module that enables the online virtual experience server 1502 to provide graphics and animation capabilities. In some implementations, the graphics engine 1508 and / or the virtual experience engine 1504 may perform one or more of the operations described below in relation to the flowcharts shown in Figures 7 to 14. The client device 1510 may include a virtual experience application 1512 and an input / output (I / O) interface 1514 (e.g., an input / output device). The input / output device may include one or more of the following: a microphone, speaker, headphones, display device, mouse, keyboard, game controller, touchscreen, virtual reality console, etc.

[0121] The developer device 1530 may include a virtual experience application 1532 and an input / output (I / O) interface 1534 (for example, an input / output device). The input / output device may include one or more of the following: a microphone, speaker, headphones, display device, mouse, keyboard, game controller, touchscreen, virtual reality console, etc.

[0122] System architecture 1500 is provided for illustrative purposes. In different implementations, system architecture 1500 may include the same, fewer, more, or different elements configured in the same or different ways as shown in Figure 15.

[0123] In some implementations, network 1522 may include public networks (e.g., the Internet), private networks (e.g., local area networks (LANs) or wide area networks (WANs)), wired networks (e.g., Ethernet networks), wireless networks (e.g., 802.11 networks, Wi-Fi® networks, or wireless LANs (WLANs)), cellular networks (e.g., 5G networks, Long-Term Evolution (LTE) networks, etc.), routers, hubs, switches, server computers, or combinations thereof.

[0124] In some implementations, the datastore 1520 may be non-temporary 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. The datastore 1520 may also include multiple storage components (e.g., multiple drives or multiple databases) that may span multiple computing devices (e.g., multiple server computers). In some implementations, the datastore 1520 may include cloud-based storage.

[0125] In some implementations, the online virtual experience server 1502 may include a server having one or more computing devices (e.g., a cloud computing system, a rack-mount server, a server computer, a cluster of physical servers, etc.). In some implementations, the online virtual experience server 1502 may be an independent system, include multiple servers, or be part of another system or server.

[0126] In some implementations, the online virtual experience server 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, and desktop computers), data stores (e.g., hard disks, memory, and databases), networks, software components, and / or hardware components that can be used to run on the online virtual experience server 1502 and provide users with access to the online virtual experience server 1502. The online virtual experience server 1502 may also include a website (e.g., a web page) or application backend software that can be used to provide users with access to content provided by the online virtual experience server 1502. For example, a user may access the online virtual experience server 1502 using a virtual experience application 1512 on a client device 1510.

[0127] In some implementations, virtual experience session data is generated via the online virtual experience server 1502, the virtual experience application 1512, and / or the virtual experience application 1532, and stored in the data store 1520. With permission from the virtual experience participant, the virtual experience session data may include relevant metadata, such as a virtual experience identifier, device data associated with the participant, participant demographic information, a virtual experience session identifier, chat transcripts, session start time, session end time, and session duration for each participant, the relative position of the participant avatar in the virtual experience environment, purchases made by one or more participants within the virtual experience, and accessories used by the participant.

[0128] In some implementations, the online virtual experience server 1502 may be a type of social network providing connections between users, or a type of user-generated content system enabling users (e.g., end-users or consumers) to communicate with other users on the online virtual experience server 1502, where 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., 1:1 and / or N:N synchronous and / or asynchronous text-based communication). Records of some or all of the communications may be stored in the data store 1520 or within the virtual experience 1506. The data store 1520 may be used to store chat transcripts (text, audio, images, etc.) exchanged between participants, with appropriate permission from the players and in compliance with applicable regulations.

[0129] In some implementations, chat transcripts are generated by virtual experience application 1512 and / or virtual experience application 1532 and / or stored in data store 1520. Chat transcripts may include chat content and associated metadata, such as the text content of chats with corresponding senders and recipients for each message, message formatting (e.g., bold, italics, loudness, etc.), message timestamps, the relative positions of participant avatars in the virtual experience environment, and accessories used by virtual experience participants. In some implementations, chat transcripts may include multilingual content, and messages in different languages ​​from different sessions of the virtual experience may be stored in data store 1520.

[0130] In some implementations, chat transcripts can be stored in the form of conversation between participants based on timestamps. In some implementations, chat transcripts can be stored based on the message sender.

[0131] In some implementations of this disclosure, “User” may be represented as a single individual. Other implementations of this disclosure include the fact that “User” (e.g., a creator user) is an entity controlled by a set of users or an automated source. For example, a set of individual users united as a community or group in a user-generated content system may be considered “User.”

[0132] In some implementations, the online virtual experience server 1502 may be a virtual game server. For example, the game server may provide a single-player or multiplayer game to a community of users accessing it as a “system” in this specification, and may include the online virtual experience server 1502, a data store 1520, and a client, or the user may interact with the virtual experience using a client device 1510 via a network 1522. In some implementations, the virtual experience (including a virtual domain or virtual world, a virtual game, or other computer-simulated environment) may be, for example, a two-dimensional (2D) virtual experience, a three-dimensional (3D) virtual experience (e.g., a 3D user-generated virtual experience), a virtual reality (VR) experience, or an augmented reality (AR) experience. In some implementations, the user may participate in interactions with other users (such as gameplay). In some implementations, the virtual experience may be experienced in real time together with other users of the virtual experience.

[0133] In some implementations, virtual experience engagement may refer to interactions between one or more participants using a client device (e.g., 1510) within a virtual experience (e.g., 1506), or the presentation of interactions on the display of the client device 1510 or other output device (e.g., 1514). For example, virtual experience engagement may include interactions with one or more participants within a virtual experience, or the presentation of interactions on the display of the client device.

[0134] In some implementations, the virtual experience 1506 may include electronic files that can be executed or loaded using software, firmware, or hardware configured to present virtual experience content (e.g., digital media items) to entities. In some implementations, the virtual experience application 1512 may be executed, and the virtual experience 1506 may be rendered in relation to the virtual experience engine 1504. In some implementations, the virtual experience 1506 may have a common set of rules or common goals, and the environment of the virtual experience 1506 may share a common set of rules or common goals. In some implementations, different virtual experiences may have different rules or goals from one another.

[0135] In some implementations, a virtual experience may have one or more environments (hereinafter also referred to as “virtual experience environments” or “virtual environments”) to which multiple environments can be linked. An example of an environment may be a three-dimensional (3D) environment. One or more environments of virtual experience 1506 may be collectively referred to herein as a “world,” or “virtual experience world,” or “game world,” or “virtual world,” or “universe.” An example of a world may be a 3D world of virtual experience 1506. For example, a user may build a virtual environment linked to another virtual environment created by another user. A character in a virtual experience may cross virtual boundaries to enter an adjacent virtual environment.

[0136] Note that 3D environments or 3D worlds use graphics that employ a 3D representation of geometric data representing the virtual experience content (or, regardless of whether a 3D representation of geometric data is used, at least present the virtual experience content in a way that it appears as 3D content). 2D environments or 2D worlds use graphics that employ a 2D representation of geometric data representing the virtual experience content.

[0137] In some implementations, the online virtual experience server 1502 can host one or more virtual experiences 1506 and enable users to interact with the virtual experiences 1506 using a virtual experience application 1512 on a client device 1510. Users of the online virtual experience server 1502 can play, create, interact with, or build virtual experiences 1506, communicate with other users, and / or create and build objects of the virtual experience 1506 (for example, also referred to herein as “items,” “virtual experience objects,” or “virtual experience items”).

[0138] For example, when generating user-generated virtual items, a user may create, among other things, characters, decorations for characters, one or more virtual environments for an interactive virtual experience, or build structures used within the virtual experience 1506. In some implementations, a user may buy, sell, or exchange virtual experience objects, such as in-platform currency (e.g., virtual currency), with other users of the online virtual experience server 1502. In some implementations, the online virtual experience server 1502 may transmit virtual experience content to a virtual experience application (e.g., 1512). In some implementations, virtual experience content (also referred to herein as “content”) may refer to any data or software instructions associated with the online virtual experience server 1502 or the virtual experience application (e.g., virtual experience objects, virtual experiences, user information, videos, images, commands, media items, etc.). In some implementations, a virtual experience object (for example, also referred to herein as an “item,” “object,” “virtual object,” or “virtual experience item”) may refer to an object used, created, shared, or otherwise depicted in a virtual experience 1506 of an online virtual experience server 1502 or a virtual experience application 1512 of a client device 1510. For example, a virtual experience object may include body parts, models, characters, accessories, tools, weapons, clothing, buildings, vehicles, currency, plants, animals, and components of the aforementioned (e.g., windows of a building).

[0139] It should be noted that the online virtual experience server 1502 hosting the virtual experience 1506 is provided for illustrative purposes only. In some implementations, the online virtual experience server 1502 may host one or more media items that may contain communication messages from one user to one or more other users. With the user's permission and explicit consent, the online virtual experience server 1502 may analyze chat transcript data to improve the virtual experience platform. Media items may include, but are not limited to, digital video, digital movies, digital photographs, digital music, audio content, melodies, website content, social media updates, ebooks, e-magazines, digital newspapers, digital audiobooks, e-journals, weblogs, real simple syndication (RSS) feeds, e-comic books, and software applications. In some implementations, media items may be electronic files that can be executed or loaded using software, firmware, or hardware configured to present digital media items to entities.

[0140] In some implementations, a virtual experience 1506 may be associated with a specific user or group of users (e.g., a private virtual experience), or access to the online virtual experience server 1502 may be made widely available to users (e.g., a public virtual experience). In some implementations, if the online virtual experience server 1502 associates one or more virtual experiences 1506 with a specific user or group of users, the online virtual experience server 1502 may associate a specific user with a virtual experience 1506 using user account information (e.g., a user account identifier such as a username and password).

[0141] In some implementations, the online virtual experience server 1502 or client device 1510 may include a virtual experience engine 1504 or a virtual experience application 1512. In some implementations, the virtual experience engine 1504 may be used for developing or running a virtual experience 1506. For example, among its many features, the virtual experience 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. The components of the virtual experience engine 1504 may generate commands (e.g., rendering commands, collision commands, physics commands, etc.) that help compute and render the virtual experience. In several implementations, the virtual experience application 1512 of the client device 1510 may operate independently, in cooperation with the virtual experience engine 1504 of the online virtual experience server 1502, or in a combination of both.

[0142] In some implementations, both the online virtual experience server 1502 and the client device 1510 may run virtual experience engines / applications (1504 and 1512, respectively). The online virtual experience server 1502 using the virtual experience engine 1504 may run some or all of the virtual experience engine functions (e.g., generating physical commands, rendering commands, etc.), or it may offload some or all of the virtual experience engine functions to the virtual experience engine 1504 of the client device 1510. In some implementations, each virtual experience 1506 may have a different ratio between the virtual experience engine functions run on the online virtual experience server 1502 and the virtual experience engine functions run on the client device 1510. For example, the virtual experience engine 1504 of the online virtual experience server 1502 may be used to generate physical commands if a collision exists between at least two virtual experience objects, while additional virtual experience engine functions (e.g., generating rendering commands) may be offloaded to the client device 1510. In some implementations, the ratio of virtual experience engine functions executed by the online virtual experience server 1502 and the client device 1510 can be changed (for example, dynamically) based on virtual experience engagement conditions. For example, if the number of users involved in a particular virtual experience 1506 exceeds a threshold number, the online virtual experience server 1502 may execute one or more virtual experience engine functions previously executed by the client device 1510.

[0143] For example, a user may be playing a virtual experience 1506 on client device 1510 and may send control commands (e.g., user input such as right, left, up, down, user selection, or character position and speed information) to the online virtual experience server 1502. After receiving control commands from client device 1510, the online virtual experience server 1502 may send experience commands (e.g., position and speed information of characters participating in the group experience, or commands such as rendering commands or collision commands) to client device 1510 based on the control commands. For example, the online virtual experience server 1502 may perform one or more logical operations on the control commands (e.g., using the virtual experience engine 1504) to generate experience commands for client device 1510. In another example, the online virtual experience server 1502 may pass one or more control commands from one client device 1510 to other client devices participating in the virtual experience 1506 (e.g., from client device 1510a to client device 1510b). The client device 1510 may use experience commands to render a virtual experience for presentation on the client device 1510's display.

[0144] In some implementations, control commands may refer to commands that indicate actions of the user's character within the virtual experience. For example, control commands may include user inputs to control actions within the experience, such as right, left, up, down, user selection, gyroscope position and orientation data, and force sensor data. Control commands may also include character position and velocity information. In some implementations, control commands are sent directly to the online virtual experience server 1502. In other implementations, control commands may be sent from one client device 1510 to another client device (e.g., from client device 1510b to client device 1510n), and the other client device generates experience commands using the local virtual experience engine 1504. Control commands may include commands to play voice communication messages or other sounds from another user, such as voice communication or other sounds generated using the audio spatialization techniques described herein, in an audio device (e.g., speaker, headphones, etc.).

[0145] In some implementations, an experience command may refer to a command that enables the client device 1510 to render a virtual experience, such as a multiplayer virtual experience. An experience command may include one or more of the following: user input (e.g., control commands), character position and velocity information, or commands (e.g., physics commands, rendering commands, collision commands, etc.).

[0146] In some implementations, a character (or generally a virtual experience object) is composed of components, one or more of which can be selected by the user and automatically combined to assist the user during editing.

[0147] In some implementations, a character is implemented as a 3D model, including a surface representation (also known as skin or mesh) used to depict the character, and a hierarchical set of interconnected bones (also known as skeleton or rig). The rig can be used to animate the character and simulate movement and actions by the character. The 3D model can be represented as a data structure, and one or more parameters of the data structure can be modified to change various properties of the character, for example, dimensions (height, width, waist circumference, etc.), body shape, movement patterns, number / type of body parts, proportions (e.g., shoulder-to-hip ratio), head size, etc., are provided as examples. In some implementations, any number of client devices 1510 can be used.

[0148] In several implementations, each client device 1510 may contain an instance of the virtual experience application 1512. In one implementation, the virtual experience application 1512 may enable the user to use and interact with the online virtual experience server 1502, such as controlling a virtual character in a virtual experience hosted by the online virtual experience server 1502, or viewing or updating content such as virtual experiences 1506, images, video items, web pages, and documents. In one example, the virtual experience application may be a web application (e.g., an application that works in conjunction with a web browser) that can access, search, present, or navigate content served by a web server (e.g., virtual characters in a virtual environment). In another example, the virtual experience application may be a native application (e.g., a mobile application, app, virtual experience program, or game program) that is installed and runs locally on the client device 1510 and enables the user to interact with the online virtual experience server 1502. A virtual experience application may render, display, or present content (e.g., web pages, media viewers) to the user. In one implementation, a virtual experience application may also include an embedded media player (e.g., Flash® or HTML player) embedded within a web page.

[0149] In aspects of this disclosure, the virtual experience application may be an online virtual experience server application for which a user builds, creates, edits, uploads content to the online virtual experience server 1502, and interacts with the online virtual experience server 1502 (for example, engaging in a virtual experience 1506 hosted by the online virtual experience server 1502). Thus, the virtual experience application may be provided to the client device 1510 by the online virtual experience server 1502. In another example, the virtual experience application may be an application downloaded from the server.

[0150] In several implementations, each developer device 1530 may contain an instance of the virtual experience application 1532. In one implementation, the virtual experience application 1532 may enable a developer user to use and interact with the online virtual experience server 1502, such as controlling a virtual character in a virtual experience hosted by the online virtual experience server 1502, or viewing or updating content such as the virtual experience 1506, images, video items, web pages, and documents. In one example, the virtual experience application may be a web application (e.g., an application that works in conjunction with a web browser) that can access, search, present, or navigate content served by a web server (e.g., virtual characters in a virtual environment). In another example, the virtual experience application may be a native application (e.g., a mobile application, app, virtual experience program, or game program) that is installed and runs locally on the developer device 1530 and enables the user to interact with the online virtual experience server 1502. A virtual experience application may render, display, or present content (e.g., a web page, a media viewer) to a user. In one implementation, a virtual experience application may also include an embedded media player (e.g., a Flash or HTML player) embedded within a web page.

[0151] In aspects of this disclosure, the virtual experience application 1532 may be an online virtual experience server application for users to build, create, edit, upload content to the online virtual experience server 1502, and interact with the online virtual experience server 1502 (for example, to provide and / or participate in providing a virtual experience 1506 hosted by the online virtual experience server 1502). Thus, the virtual experience application may be provided to the developer device 1530 by the online virtual experience server 1502. In another example, the virtual experience application 1532 may be an application downloaded from a server. The virtual experience application 1532 may be configured to interact with the online virtual experience server 1502 and obtain access to user credentials, user currency, etc., relating to one or more virtual experiences 1506 developed, hosted, or provided by a virtual experience developer.

[0152] In some implementations, a user may log in to the online virtual experience server 1502 via a virtual experience application. A user may access a user account by providing user account information (e.g., username and password), and the user account is associated with one or more characters available to participate in one or more virtual experiences 1506 on the online virtual experience server 1502. In some implementations, with appropriate credentials, a virtual experience developer may gain access to virtual experience virtual objects such as in-platform currency (e.g., virtual currency), avatars, special abilities, and accessories that are owned by or associated with other users.

[0153] In general, functions described in one implementation as being performed by the online virtual experience server 1502 can also be performed by the client device 1510 or the server in other implementations, where appropriate. In addition, functions belonging to a particular component can be performed by different components or multiple components working together. The online virtual experience server 1502 can also be accessed as a service provided to other systems or devices via an appropriate application programming interface (API), and is therefore not limited to use in a website.

[0154] Figure 16 - Exemplary Computing Device Figure 16 is a block diagram showing exemplary computing device 1600 that may be used to implement one or more features described herein in several implementation forms. In one example, computing device 1600 may be used to implement a computer device (e.g., 1502 and / or 1510 in Figure 15) and to perform an implementation form of a suitable method described herein. Computing device 1600 can be any suitable computer system, server, or other electronic or hardware device. For example, computing device 1600 may be a mainframe computer, desktop computer, workstation, portable computer, or electronic device (portable device, mobile device, cell phone, smartphone, tablet computer, television, TV set-top box, personal digital assistant (PDA), media player, game device, wearable device, etc.). In some implementation forms, computing device 1600 includes a processor 1602, memory 1604, input / output (I / O) interface 1606, and audio / video input / output device 1614.

[0155] The processor 1602 may be one or more processors and / or processing circuits that execute program code and control the basic operation of the computing device 1600. “Processor” includes any suitable hardware and / or software system, mechanism, or component that processes data, signals, or other information. A processor may include a system having a general-purpose central processing unit (CPU), multiple processing units, dedicated circuits for achieving a function, or other systems. Processing does not need to be limited to a specific geographical location or have temporal limitations. For example, a processor may perform its functions in “real-time,” “offline,” “batch mode,” etc. Parts of the processing may be performed by different (or the same) processing systems at different times and in different locations. A computer may be any processor that communicates with memory.

[0156] Memory 1604 is typically located within the computing device 1600 for access by the processor 1602 and may be any suitable processor-readable storage medium, separated from and / or integrated with the processor 1602, suitable for storing instructions for execution by the processor, such as random access memory (RAM), read-only memory (ROM), electrically erasable read-only memory (EEPROM), or flash memory. Memory 1604 can store software that runs on the computing device 1600 by the processor 1602, including the operating system 1608, the virtual experience application 1610, the clothing application 1612, and other applications (not shown). In some implementations, the virtual experience application 1610 and / or the clothing application 1612 may include instructions that enable the processor 1602 to perform (or control) some or all of the functions described herein, such as the methods described with respect to Figures 6 to 14.

[0157] For example, the virtual experience application 1610 may include a clothing application 1612 that can overlay multiple layers of clothing onto an avatar and render the avatar within an online virtual experience server (e.g., 1502), as described herein. The elements of the software in memory 1604 may, alternatively, be stored on any other suitable storage location or computer-readable medium. In addition, memory 1604 (and / or other connected storage devices) may store instructions and data used in the functions described herein. Memory 1604, and any other type of storage (magnetic disks, optical disks, magnetic tapes, or other tangible media) may be considered “storage” or “storage devices”.

[0158] The I / O interface 1606 can provide functionality that enables the computing device 1600 to interface with other systems and devices. For example, network communication devices, storage devices (e.g., memory and / or datastore 1520), and input / output devices can communicate via the I / O interface 1606. In some implementations, the I / O interface can be connected to an interface device that includes input devices (such as keyboards, pointing devices, touchscreens, microphones, cameras, scanners, etc.) and / or output devices (such as display devices, speaker devices, printers, motors, etc.).

[0159] The audio / video input / output device 1614 may include a user input device (e.g., a mouse) that can be used to receive user input, a display device (e.g., a screen, monitor) that can be used to provide graphical and / or visual output, and / or a combined input and display device.

[0160] For ease of explanation, Figure 16 shows one block for each of the following software blocks: processor 1602, memory 1604, I / O interface 1606, and operating system 1608, virtual experience application 1610, and clothing application 1612. These blocks may represent one or more processors or processing circuits, operating systems, memory, I / O interfaces, applications, and / or software engines. In other implementations, the computing device 1600 may not have all of the components shown and / or may have other components, including other types of elements, instead of or in addition to those shown herein. The online virtual experience server 1502 is described herein as performing the operations as described in several implementations, but any suitable component or combination of components of the online virtual experience server 1502 or a similar system, or any suitable processor associated with such a system, may perform the operations described.

[0161] User devices can also implement and / or be used with the functions described herein. An exemplary user device may be a computer device including several components similar to computing device 1600, for example, a processor 1602, memory 1604, and / or an I / O interface 1606. An operating system, software, and applications suitable for the client device may be provided in memory and used by the processor. The I / O interface for the client device may be connected to network communication devices, as well as input and output devices, for example, a microphone for capturing sound, a camera for capturing images or video, a mouse for capturing user input, a gesture device for recognizing user gestures, a touchscreen for detecting user input, an audio speaker device for outputting sound, a display device for outputting images or video, or other output devices. The display device within the audio / video input / output device 1614 may be connected to (or included within) the computing device 1600 for displaying pre-processed and post-processed images, as described herein, and such display device may include any suitable display device, e.g., LCD, LED, or plasma display screen, CRT, television, monitor, touchscreen, 3-D display screen, projector, or other visual display device. Some implementations may provide an audio output device, e.g., text-to-speech output or synthesis.

[0162] One or more methods described herein (e.g., methods 600, 700, 800, 900, 1000, 1100, 1200, 1300, and 1400) 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 on computer program products including non-temporary computer-readable media (e.g., storage media), such as magnetic storage media, optical storage media, electromagnetic storage media, or semiconductor storage media, including semiconductor or solid-state memory, magnetic tape, removable computer diskettes, random-access memory (RAM), read-only memory (ROM), flash memory, rigid magnetic disks, optical disks, solid-state memory drives, etc. Program instructions can also be included in or provided as electronic signals, for example, in the form of software as a service (SaaS) delivered from a server (e.g., a distributed system and / or a cloud computing system). Alternatively, one or more methods can be implemented in hardware (such as logic gates) or in a combination of hardware and software. Examples of hardware may include programmable processors (e.g., field-programmable gate arrays (FPGAs), composite programmable logic devices), general-purpose processors, graphics processors, and application-specific integrated circuits (ASICs). One or more methods may run as part of or as a component of an application running on a system, or as an application or software running in conjunction with other applications and operating systems.

[0163] One or more methods described herein can be performed as standalone programs that can run on any type of computing device, as programs that run on a web browser, or as mobile applications ("apps") that run on mobile computing devices (e.g., mobile phones, smartphones, tablet computers, wearable devices (watches, armbands, jewelry, hats, goggles, glasses, etc.), laptop computers, etc.). In one example, a client / server architecture can be used, for example, where a mobile computing device (as a client device) sends user input data to a server device and receives final output data for output (e.g., for display) from the server. In another example, all computations can be performed within a mobile app (and / or other app) on a mobile computing device. In yet another example, computations can be divided between a mobile computing device and one or more server devices.

[0164] While this specification has described specific implementations, these are merely illustrative and not restrictive. Concepts presented in the examples may apply to other examples and implementations.

[0165] The functional blocks, operations, functions, methods, devices, and systems described herein may be integrated or divided into different combinations of systems, devices, and functional blocks, as is known to those skilled in the art. Any suitable programming language and programming technique may be used to implement routines in a particular implementation. Various programming techniques, e.g., procedural or object-oriented, may be used. Routines may be executed on a single processing device or on multiple processors. Steps, operations, or calculations may be presented in a particular order, but the order may be modified in different particular implementations. In some implementations, multiple steps or operations shown herein as sequential may be executed simultaneously. [Explanation of Symbols]

[0166] 100 Exemplary Implementations of Linear Cage Deformers 102 Clothing Inner Cage 104 Outer clothing cage 106 Front (or body) outer cage 108 New outer cage Example of Avatar 202 (200) 202 Avatar 204 Flared cuffs 300 Avatar 302 example 302 Avatar 304 RBF technique Example of Avatar 402 (400) 402 Avatar 404 Linear Cage Deformer 500a Examples of avatars without clothing and avatars with multiple layers of clothing. 500b Examples of avatars without clothing and avatars with multiple layers of clothing. Examples of avatars without clothing and avatars with multiple layers of clothing (500c) 502 Avatar 504 Avatar 506 Avatars 512 Avatars 514 Avatars 516 Avatars 522 Avatars 524 Avatars 526 Avatars 1502 Online Virtual Experience Server 1504 Virtual Experience Engine 1508 Graphics Engine 1510 Client Devices 1512 Virtual Experience Application 1514 Input / Output (I / O) Interface 1520 datastore 1522 Network 1530 Developer Devices 1532 Virtual Experience Applications 1534 Input / Output (I / O) Interfaces 1600 computing devices 1602 Processor 1604 memory 1606 I / O Interface 1608 Operating Systems 1610 Virtual Experience Application 1612 Clothing Attachment Application 1614 Audio / Video Input / Output Devices

Claims

1. A computer implementation method for providing a 3D avatar having multi-layered clothing in a three-dimensional (3D) virtual environment, A step of providing the avatar in the 3D virtual environment, wherein the avatar has an avatar body in which underwear and outer clothing are superimposed, The step of placing the underwear over the avatar body, The steps include attaching the underwear to the avatar body, The steps include: using a linear cage deformer technique to deform the outer cage of the underwear based on one or more of the outer cage of the avatar body and the inner cage of the underwear; Steps including, The step of placing the outer garment on top of the inner garment, The steps of attaching the outer garment to the inner garment based on the modified outer cage of the inner garment and the inner cage of the outer garment, A step of deforming the outer cage of the outer garment based on one or more of the deformed outer cage of the inner garment and the inner cage of the outer garment using the linear cage deformer technique. Steps including, A step of rendering the avatar body in which the inner garment and the outer garment are superimposed. A computer implementation method comprising the above.

2. The step of deforming the outer cage of the inner garment is For at least one outer cage vertex of the outer cage of the inner garment, the steps include identifying a single corresponding vertex in both the outer cage of the avatar body and the inner cage of the inner garment, The steps of generating the local coordinate frame of the inner cage of the undergarment and the local coordinate frame of the outer cage of the avatar body using the triangles that share the single corresponding vertex, A step of adjusting the position of at least one outer cage vertex of the outer cage of the inner garment in order to deform the outer cage of the inner garment using the difference between the local coordinate frame of the inner cage of the inner garment and the local coordinate frame of the outer cage of the avatar body. The computer implementation method according to claim 1, comprising:

3. The computer implementation method according to claim 1, wherein the step of deforming the outer cage of the inner garment conforms the outer garment to the shape of the avatar body and the shape of the inner garment being worn.

4. The computer implementation method according to claim 1, wherein the outer cage of the inner garment, the inner cage of the outer garment, and the outer cage of the outer garment share a standardized UV layout that can be used to determine correspondence information between the outer cage of the inner garment and the inner cage of the outer garment, and the step of deforming the outer cage of the outer garment is based on the correspondence information.

5. The aforementioned computer implementation method The steps include identifying a single corresponding vertex in both the outer cage of the inner garment and the inner cage of the outer garment for at least one outer cage vertex of the outer cage of the outer garment, The steps of generating a local coordinate frame of the inner cage of the outer garment and a local coordinate frame of the outer cage of the inner garment using the triangles that share the single corresponding vertex, A step of adjusting the position of at least one outer cage vertex of the outer cage of the outer garment in order to deform the outer cage of the outer garment using the difference between the local coordinate frame of the inner cage of the outer garment and the local coordinate frame of the outer cage of the inner garment. The computer implementation method according to claim 1, further comprising:

6. The computer implementation method according to claim 5, wherein the step of adjusting the position of at least one outer cage vertex of the outer cage of the outer garment maintains the original spacing and alignment between the inner cage of the outer garment and the outer cage of the outer garment while deforming the outer cage of the outer garment.

7. The step of deforming the outer cage of the underwear using the linear cage deformer technique is The steps include determining a first dataset describing the volume occupied by the avatar body before the underwear is attached to the avatar body, and a second dataset describing the volume occupied by the underwear after it is attached to the avatar body. A step of calculating the difference between corresponding values ​​in the first dataset and the second dataset, To deform the outer cage of the inner garment, the steps include using the difference and the sum calculated from the values ​​in the second dataset, The computer implementation method according to claim 1, comprising:

8. If there are three or more layers of clothing, the computer implementation method shall, for each layer, The process involves iteratively calculating the continuous volume difference between consecutive preceding layers of clothing, The steps of accumulating the aforementioned continuous differences, A step of deforming the layer based on the accumulated continuous difference and The computer implementation method according to claim 1, further comprising:

9. The linear cage deformer technique deforms the outer cage of the garment based on the outer cage of the previous garment or avatar body part, The steps include iterating through the garment cage triangles of the garment and summing the vertex offsets and weights of the garment cage triangles, The steps include: deforming the outer cage of the garment based on the deformed outer cage (GOC) position determined by iterating over the vertices of the outer cage of the garment; The computer implementation method according to claim 1, comprising:

10. The steps include iterating through the garment cage triangles of the garment and summing the vertex offsets and weights of the garment cage triangles, The steps include calculating a difference transformation from the front outer cage (POC) triangle of the aforementioned garment or avatar body portion to the corresponding inner garment cage (GIC) triangle of the garment, The steps include transforming the vertices of the GOC triangle of the garment based on the corresponding difference transformation, and updating the vertex offsets and weights of the GOC triangle of the garment accordingly. The computer implementation method according to claim 9, comprising:

11. The computer implementation method according to claim 10, wherein the step of calculating a difference transformation from the POC triangle of the previous garment or avatar body portion to the corresponding GIC triangle comprises the step of calculating a local 3x3 matrix for the POC triangle and a local 3x3 matrix for the GIC triangle, and the difference transformation is a local difference (LD) 3x3 matrix calculated by multiplying the POC matrix by the inverse matrix of the GIC matrix.

12. The step of calculating the local 3x3 matrix for the POC and GIC triangles is, for the corresponding triangles of the POC and GIC triangles, A step of finding a first vector and a second vector, wherein the first vector and the second vector are two sides of the corresponding triangle, The steps include finding a third vector which is the cross product of the first vector and the second vector, The steps of normalizing the first vector, the second vector, and the third vector, The steps include obtaining the local 3x3 matrix as a matrix having the first vector, the second vector, and the third vector as basis vectors, and The computer implementation method according to claim 11, comprising:

13. The steps include transforming the vertices of the GOC triangle based on the corresponding difference transformation and updating the vertex offsets and weights of the GOC triangle accordingly, for the vertices of the GOC triangle, The steps include: calculating the difference between the corresponding GOC vertex position and the corresponding GIC vertex position to obtain the original local offset (LO) vector for the vertex of the GOC triangle; The steps include transforming the LO vector by calculating the product of the local difference (LD) matrix for the corresponding GOC triangle, the original LO vector, and the area of ​​the GIC triangle associated with the corresponding GOC triangle, The steps include adding the transformed LO vector to the vertex offset for the vertex of the GOC triangle, A step of adding the area of ​​the GIC triangle to the vertex weights for the vertices of the GOC triangle. The computer implementation method according to claim 10, comprising:

14. The step of deforming the outer cage of the garment based on the deformed outer cage (GOC) position determined by iterating over the vertices of the outer cage of the garment, The steps include determining the final local offset for the vertices of the outer cage of the garment as the vertex offset added before being divided by the previously added vertex weights, A step of deforming the outer cage of the garment based on the deformed GOC position of the outer cage of the garment, which is determined based on the vertices obtained as the previous outer cage (POC) position with the final local offset added; The computer implementation method according to claim 9, comprising:

15. In response to execution by the processing device, the processing device is instructed to: To provide an avatar in a 3D virtual environment, wherein the avatar has an avatar body in which inner and outer clothing are superimposed. This involves overlapping the aforementioned undergarment onto the avatar body, The undergarment is attached to the avatar body, Using a linear cage deformer technique, the outer cage of the underwear is deformed based on one or more of the outer cage of the avatar body and the inner cage of the underwear. This includes superimposing, This involves layering the outer garment over the inner garment, Based on the deformed outer cage of the inner garment and the inner cage of the outer garment, the outer garment is attached to the inner garment, Using the linear cage deformer technique, the outer cage of the outer garment is deformed based on one or more of the deformed outer cage of the inner garment and the inner cage of the outer garment. This includes superimposing, Rendering the avatar body in which the inner garment and the outer garment are superimposed. A non-temporary computer-readable medium in which instructions for performing an action comprising the above are stored.

16. The non-temporary computer-readable medium according to claim 15, wherein deforming the outer cage of the inner garment causes the outer garment to conform to the shape of the avatar body and the shape of the inner garment being worn.

17. The linear cage deformer technique deforms the outer cage of the garment based on the outer cage of the previous garment or avatar body part, The garment cage triangles of the garment are iterated through, and the vertex offsets and weights of the garment cage triangles are summed up. The outer cage of the garment is deformed based on the deformed outer cage (GOC) position determined by iterating over the vertices of the outer cage of the garment, and A non-temporary computer-readable medium according to claim 15, comprising:

18. The memory where the instructions are stored, A processing device coupled to the memory, wherein the processing device is configured to access the memory and execute the instruction, and the instruction is transmitted to the processing device, To provide an avatar in a 3D virtual environment, wherein the avatar has an avatar body in which inner and outer clothing are superimposed. This involves overlapping the aforementioned undergarment onto the avatar body, The undergarment is attached to the avatar body, Using a linear cage deformer technique, the outer cage of the underwear is deformed based on one or more of the outer cage of the avatar body and the inner cage of the underwear. This includes superimposing, This involves layering the outer garment over the inner garment, Based on the deformed outer cage of the inner garment and the inner cage of the outer garment, the outer garment is attached to the inner garment, Using the linear cage deformer technique, the outer cage of the outer garment is deformed based on one or more of the deformed outer cage of the inner garment and the inner cage of the outer garment. This includes superimposing, Rendering the avatar body in which the inner garment and the outer garment are superimposed. A processing device that performs an operation that includes the following A system equipped with these features.

19. The system according to claim 18, wherein deforming the outer cage of the inner garment causes the outer garment to conform to the shape of the avatar body and the shape of the inner garment being worn.

20. The linear cage deformer technique deforms the outer cage of the garment based on the outer cage of the previous garment or avatar body part, The garment cage triangles of the garment are iterated through, and the vertex offsets and weights of the garment cage triangles are summed up. The outer cage of the garment is deformed based on the deformed outer cage (GOC) position determined by iterating over the vertices of the outer cage of the garment, and The system according to claim 18, comprising: