Automatic creation of animated hair in virtual reality
Through the automation process, hair mesh is created and animated based on several virtual hair bundles, the calculation-intensive problem of creating high-quality style virtual hair animations in shared artificial reality environments is solved, and efficient and automatic animation effects are achieved.
Patent Information
- Application Number
- CN202411142441.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-08-30
- Filing Date
- 2024-08-20
- Publication Date
- 2025-02-28
AI Technical Summary
Fast and efficiently creating detailed style virtual hair animations is a computationally intensive challenge in shared artificial reality environments, especially since traditional methods require manual creation of customized stylized hair meshes.
Through an automated process, hair meshes are created based on several virtual hair bundles and high-quality style virtual hair animations are achieved by animating these meshes. The method includes looping through each virtual hair bundle, swelling each hair bundle to create its corresponding hair grid, and calculating skin weights to merge the grids.
Animate high-resolution virtual hair resources, reduces computer processing costs and time, avoids the need to manually create custom stylized hair meshes, and enables graphical rendering in an automatic and computationally efficient manner.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application claims priority to and the benefit of U.S. patent application No. 18 / 458,749, filed on August 30, 2023, the entire contents of which are incorporated herein by reference. Technical Field
[0003] The present disclosure relates generally to virtual hair animation in a computer-generated shared artificial reality environment, and more particularly to automatically creating virtual hair animation in such an environment based on a computational model of physics. Background Art
[0004] Interactions in a computer-generated shared artificial reality environment involve interactions with various types of artificial reality / virtual content, elements, and / or applications in the shared artificial reality environment. Users of the shared artificial reality environment can interact with other users based on corresponding user representations (e.g., avatars) in the shared artificial reality environment. In an artificial reality environment, computer graphics technology enables the creation of virtual objects used as such user representations, including virtual people with realistic virtual hair. Hair animation in virtual reality is important for creating immersive environments and realistic characters. However, creating detailed hair animations may be computationally intensive, and it may be difficult to quickly animate the movement of stylized hair in an artificial reality environment. It may be beneficial to automatically create an animatable style virtual hair asset based on only a few hair strands, thereby reducing the computer processing costs and time associated with rendering virtual hair movement in a shared artificial reality environment. Summary of the invention
[0005] The subject disclosure provides systems and methods for high-performance animated stylized virtual hair assets in a shared artificial reality environment (e.g., a shared virtual reality environment). Specifically, automatically creating a hair mesh from several virtual hair bundles can achieve computationally fast and efficient stylized animation of the virtual hair asset. By animating the hair mesh created from the virtual hair bundles, the animated virtual hair asset can be advantageously animated with high detail and quality without incurring the cost of individually animating each individual particle in the virtual hair asset. The animated hair mesh can be created from a small number of sampled hair bundles in an iterative process. These small number of hair bundles can interact with unsampled hair bundles in a master-slave relationship. That is, these small number of hair bundles can dominate or drive the hair to which the slave hair bundles are attached, so that the stylized animation of the animated virtual hair asset can be achieved with less complexity than applying traditional methods. Typically, the stylized virtual hair asset is a hair mesh that is not composed of bundles, which can make highly detailed animation more challenging.
[0006] Since highly detailed virtual hair meshes typically contain a large number of particles to be moved, animating stylized virtual hair motion may be computationally challenging, inefficient and / or costly. The subject disclosure advantageously provides a method for automatically creating stylized virtual hair assets from only a few virtual hair bundles in a computationally more efficient and improved manner. Specifically, the method includes looping through each virtual hair bundle in a selected single virtual hair bundle. The iterative loop involves inflating each selected hair bundle individually to create a virtual hair mesh for each bundle. The iterative loop also involves calculating skin weights for each mesh to the corresponding single bundle of the mesh based on the distance of corresponding vertices of each mesh (e.g., control points that affect the deformation of the hair mesh when the hair mesh is moved or posed). By looping or repeating these steps for all selected hair bundles, the corresponding multiple individual meshes created can be merged or combined into a single mesh while preserving the skin weights. Preserving the skin weights can advantageously automatically ensure that regions of the single mesh are only skinned to a single bundle so that these regions are not undesirably stretched by multiple hair bundles moving in different directions.
[0007] In this manner, the subject disclosure enables an improved way to generate high-quality stylized virtual hair motion animated for high-resolution virtual hair assets. The disclosed automatic creation of animated high-quality stylized virtual hair assets advantageously eliminates the need for artists to manually create custom stylized hair meshes. Rather than manually creating a skeleton for a custom hair mesh and calculating corresponding skin weights, the subject disclosure enables an automatic, faster, and more efficient way to generate animated stylized virtual hair assets. The generated hair assets are realistically animated based on their constituent virtual hair bundles (and merged hair meshes) moving according to the laws of physics represented by the computational model. Thus, the subject disclosure enables graphical rendering of stylized hair motion in an artificial reality environment in an automatic and computationally efficient manner.
[0008] According to one embodiment of the present disclosure, a computer-implemented method for creating animated virtual hair in a shared artificial reality environment is provided. The method includes: creating a first style hair mesh based on the expansion of a first virtual hair bundle. The method also includes: creating a second style hair mesh based on the expansion of a second virtual hair bundle. The method also includes: calculating skin weights for the first style hair mesh and the second style hair mesh. Each set of skin weights can be calculated separately for each pair of hair bundles or style expansion meshes. The method also includes: combining the first style hair mesh and the second style hair mesh into a merged single hair mesh based on the skin weights. The method also includes: determining motion parameters of the first virtual hair bundle and the second virtual hair bundle to animate the merged single hair mesh.
[0009] According to one embodiment of the present disclosure, a system is provided, the system comprising a processor and a memory, the memory comprising instructions stored thereon, the instructions, when executed by the processor, causing the processor to execute a method for creating animated virtual hair in a shared artificial reality environment. The method comprises: creating a first style hair mesh based on the expansion of a first virtual hair bundle. The method further comprises: creating a second style hair mesh based on the expansion of a second virtual hair bundle. The method further comprises: calculating skin weights of the first style hair mesh and the second style hair mesh. The method further comprises: combining the first style hair mesh and the second style hair mesh into a merged single hair mesh based on the skin weights. The method further comprises: determining motion parameters of the first virtual hair bundle and the second virtual hair bundle to animate the merged single hair mesh.
[0010] According to one embodiment of the present disclosure, a non-transitory computer-readable storage medium is provided, the non-transitory computer-readable storage medium including instructions (e.g., a stored sequence of instructions), which, when executed by a processor, causes the processor to perform a method for creating animated virtual hair in a shared artificial reality environment. The method includes: creating a first style hair mesh based on the expansion of a first virtual hair bundle. The method also includes: creating a second style hair mesh based on the expansion of a second virtual hair bundle. The method also includes: calculating skin weights of the first style hair mesh and the second style hair mesh. The method also includes: combining the first style hair mesh and the second style hair mesh into a merged single hair mesh based on the skin weights. The method also includes: determining motion parameters of the first virtual hair bundle and the second virtual hair bundle to animate the merged single hair mesh.
[0011] According to one embodiment of the present disclosure, a non-transitory computer-readable storage medium is provided, which includes instructions (e.g., a stored sequence of instructions), which, when executed by a processor, causes the processor to execute a method for creating animated virtual hair in a shared artificial reality environment. The method includes: sampling a first virtual hair bundle and a second virtual hair bundle from a virtual hair resource. Many hair bundles may be sampled, such as hundreds or thousands of hair bundles. For each sampled hair bundle, an inflated mesh with corresponding skin weights may be created. The method also includes: inflating the first virtual hair bundle and the second virtual hair bundle based on the volume of the virtual head. The method also includes: creating a first style hair mesh based on the first virtual hair bundle.
[0012] The method also includes: creating a second styled hair mesh based on the second virtual hair bundle. The method also includes: calculating skin weights of the first styled hair mesh and the second styled hair mesh. The method also includes: combining the first styled hair mesh and the second styled hair mesh into a merged single hair mesh based on the skin weights (for example, all meshes are combined into a single styled mesh). The method also includes: determining motion parameters of the first virtual hair bundle and the second virtual hair bundle to animate the merged single hair mesh. For example, a physics engine can drive the single hair bundle, which in turn drives the merged style mesh with skin. The method also includes: saving the skin weights of the first styled hair mesh and the second styled hair mesh for animation of the merged single hair mesh. BRIEF DESCRIPTION OF THE DRAWINGS
[0013] To easily identify the discussion of any particular element or act, the highest digit(s) in a reference number refers to the figure number in which the element is first introduced.
[0014] Figure 1 is a block diagram of a device operating environment, which can be used to implement various aspects of the present subject technology.
[0015] Figure 2A and Figure 2B is a schematic diagram illustrating an extended reality head-mounted viewer (headset) according to certain aspects of the present disclosure.
[0016] Figure 2C An extended reality controller for interacting with an artificial reality environment is shown in accordance with certain aspects of the present disclosure.
[0017] Figure 3 is a block diagram illustrating an overview of an environment in which some embodiments of the present technology may operate.
[0018] Figure 4 An example extended reality wearable device according to certain aspects of the present disclosure is shown.
[0019] Figure 5 is a block diagram illustrating an example computer system with which aspects of the subject technology may be implemented.
[0020] Figure 6 is a visual rendering illustrating an example virtual animated hair asset with which aspects of the subject technology may be implemented.
[0021] Figure 7 is another visual rendering showing inflated virtual hair strands of an example virtual animated hair asset in accordance with certain aspects of the present disclosure.
[0022] Figure 8 is an example flow chart for automatically creating animated, stylized virtual hair assets in a shared artificial reality environment in accordance with certain aspects of the present disclosure.
[0023] Fig. 9 is a block diagram illustrating an example computer system with which aspects of the subject technology may be implemented.
[0024] In one or more embodiments, not all components depicted in each of the figures are required, and one or more embodiments may include additional components not shown in the figures. The arrangement and type of components may be varied without departing from the scope of the subject disclosure. Additional components, different components, or fewer components may be utilized within the scope of the subject disclosure. DETAILED DESCRIPTION
[0025] In the following detailed description, many specific details are set forth to provide a full understanding of the present disclosure. However, it will be apparent to one of ordinary skill in the art that the various embodiments of the present disclosure can be practiced without some of these specific details. In other instances, well-known structures and techniques are not shown in detail to avoid obscuring the present disclosure.
[0026] The disclosed system solves a problem related to computer technology in artificial reality, namely, the technical problem of creating an animatable stylized virtual hair mesh that meets the computational efficiency requirements and computational speed requirements of a computer-generated shared artificial reality environment. The computer processing required to automatically create such a highly detailed hair mesh that meets both image quality requirements and computational efficiency requirements can be challenging. The disclosed system solves the technical problem by providing a solution that is also rooted in computer technology, namely, by providing a method for automatically creating a high-resolution virtual hair asset that supports stylization and fast virtual hair motion in artificial reality from a limited set of artist-rendered virtual hair strands or sampled hair strands. The disclosed technical solution solves the complexity of traditional highly detailed virtual hair meshes that include many constituent particles that pose a challenge to animate fast stylized hair motion. Specifically, the disclosed solution bypasses the time-intensive manual creation of such virtual hair meshes by enabling the automatic conversion of several hair strands from an artist-created virtual hair mesh or from a sampled high-resolution virtual hair asset into animatable stylized virtual hair.
[0027] The disclosed system improves the functionality of a computer system for generating an artificial reality environment, and the functionality of an artificial reality compatible device for connecting to the environment. For example, such a device may include a head mounted device as described herein, in which a user may visually perceive an environment rendered in the head mounted device as a virtual user representation. Such a virtual user representation may be embodied as a virtual person or other object having hair arranged according to different hairstyles (e.g., straight hair, wavy hair, curly hair, pixie hair, bob hair, braids, and ponytails, etc.). Various hairstyles may correspond to different stylized hair movements or stylized hair movements. Therefore, the automatically created animatable style virtual hair mesh disclosed in the subject matter may simulate the desired hair appearance and movement of the hairstyle in the perceived environment. Specifically, the animated hair movement of the virtual user representation may be based on the automatic calculation of skin weights, which are used to animate such stylized hair movement via a virtual hair mesh that becomes a hair skeleton. For greater flexibility in animating hair movement, additional particles or hair skeleton substances should be added. Thus, the disclosed system improves visual rendering and computational efficiency between a server hosting an artificial reality environment and an artificial reality compatible device. In this manner, the present invention is incorporated into a practical application of providing an automatic method for stylizing hair motion of a user representation in an artificial reality environment.
[0028] Aspects of the present disclosure relate to creating and managing artificial reality environments. For example, an artificial reality environment may be a shared artificial reality environment, a virtual reality (VR) environment, an augmented reality (AR) environment, a mixed reality (MR) environment, a hybrid reality (hybrid reality) environment, a non-immersive environment, a semi-immersive environment, and / or a fully immersive environment, etc. The artificial environment may also include artificial collaborative games, work, and / or other environments, which include modes for interaction between various people, users, or user representations in the artificial environment. The artificial environment may implement animation of user representations, such as animating detailed style hair movements according to the desired virtual hairstyle of the corresponding user. As used herein, "real world" objects are non-computer generated, while artificial objects or VR objects are computer generated. For example, a real world space is a physical space that occupies a position outside a computer, while a real world object is a physical object with physical properties outside a computer. For example, an artificial object or VR object may be rendered and is part of a computer-generated artificial environment.
[0029] Embodiments of the disclosed technology may include an artificial reality system, or may be implemented in conjunction with an artificial reality system. Artificial reality, extended reality, or hyperreality (collectively referred to as "XR") is a form of reality that has been adjusted in some way before being presented to a user, and the artificial reality or hyperreality may include, for example, virtual reality (VR), augmented reality (AR), mixed reality (MR), hybrid reality, or some combination and / or derivative thereof. Artificial reality content may include fully generated content, or generated content combined with collected content (e.g., photos of the real world). Artificial reality content may include video, audio, tactile feedback, or some combination thereof, any of which may be presented in a single channel or in multiple channels. In addition, in some embodiments, artificial reality may be associated with an application, product, accessory, service, or some combination thereof, which is used, for example, to create content in an artificial reality and / or to be used in an artificial reality (e.g., to perform activities in an artificial reality). Artificial reality systems that provide artificial reality content can be implemented on a variety of platforms, including head-mounted displays (HMDs) connected to a host computer system, stand-alone HMDs, glasses, wrist devices, mobile devices or computing systems, "cave" environments or other projection systems, or any other hardware platform capable of providing artificial reality content to one or more viewers.
[0030] As used herein, "virtual reality" or "VR" refers to an immersive experience in which the user's visual input is controlled by a computing system. "Augmented reality" or "AR" refers to a system in which a user views real-world images after they have passed through a computing system. For example, a tablet with a camera on the back can capture images of the real world and then display the images on a screen on the side of the tablet opposite the camera. The tablet can process and adjust or "enhance" the images as they pass through the system (e.g., by adding virtual objects). AR also refers to a system in which the light entering the user's eyes is partially generated by a computing system and partially constitutes light reflected from objects in the real world. For example, an AR head-mounted viewer can be shaped as a pair of glasses with a see-through display that allows light from the real world to pass through a waveguide that simultaneously emits light from a projector in the AR head-mounted viewer, allowing the AR head-mounted viewer to present virtual objects mixed with real objects that the user can see. The AR head-mounted viewer can be a light-blocking head-mounted viewer with video see-through. As used herein, “artificial reality,” “hyperreality,” or “XR” refers to any of the following: VR; AR; MR; or any combination or hybrid thereof.
[0031] Several embodiments are discussed in more detail below with reference to the accompanying drawings. Figure 1 1 is a block diagram of a device operating environment with which aspects of the subject technology may be implemented. The device operating environment may include hardware components of a computing system 100 that may create, animate, render, and otherwise control virtual hair motion and general animation of virtual objects for a shared artificial reality environment (e.g., a collaborative artificial reality environment), such as for animating style / stylized virtual hair asset motion. The animation may be based on a three-dimensional (3D) animation rig of stylized hair motion animation that automatically skins a style hair skeleton to a corresponding style hair mesh. In various embodiments, the computing system 100 may include a single computing device 102 or multiple computing devices 102 that communicate via a wired channel or a wireless channel to distribute processing and share input data.
[0032] In some embodiments, the computing system 100 may include a standalone head mounted view device that can provide a computer-created or enhanced experience to a user without external processing or external sensors. In other embodiments, the computing system 100 may include multiple computing devices 102, such as head mounted view devices and core processing components (e.g., consoles, mobile devices, or server systems), where some processing operations are performed on the head mounted view device and other processing operations are offloaded to the core processing components. Figure 2A and Figure 2B An example head mounted view is described. In some embodiments, the position data and environmental data may be collected solely by sensors incorporated into the head mounted view device, while in other embodiments, one or more of the plurality of non-head mounted view computing devices 102 may include sensor components that can track environmental data or position data, for example, to implement computer vision functions. For example, the sensors may include an inertial measurement unit (IMU), an eye tracking sensor, an electromyograph (e.g., for converting neuromuscular signals into specific gestures), a time of flight sensor, and / or a light / optical sensor, etc.
[0033] The computing system 100 may include one or more processors 110 (e.g., a central processing unit (CPU), a graphical processing unit (GPU), a holographic processing unit (HPU), etc.). The processor 110 may be a single processing unit or multiple processing units, which are located in a device or distributed across multiple devices (e.g., distributed across two or more computing devices in the plurality of computing devices 102). The computing system 100 may include one or more input devices 104 that provide input to the processors 110, thereby informing the processors of actions. These actions may be communicated by a hardware controller that interprets signals received from the input devices 104 and transmits the information to the processors 110 using a communication protocol. As an example, the hardware controller may convert signals from the input devices 104 to simulate navigation in an artificial reality environment. Each input device 104 may include, for example, a mouse, a keyboard, a touch screen, a touchpad, a wearable input device (e.g., tactile gloves, bracelets, rings, earrings, necklaces, watches, etc.), a camera (or other light-based input device, such as an infrared sensor), a microphone, and / or other user input devices.
[0034] The processor 110 can be coupled to other hardware devices, for example, by using an internal bus or an external bus, such as a peripheral component interconnect standard (PCI) bus, a small computer system interface (SCSI) bus, and / or a wireless connection. The processor 110 can communicate with a hardware controller for each device (e.g., for the display 106). The display 106 can be used to display text and graphics. In some embodiments, the display 106 includes an input device, such as when the input device is a touch screen or is equipped with an eye movement direction monitoring system, the input device is part of the display. In some embodiments, the display is separated from the input device. Examples of display devices are: a liquid crystal display (LCD) display screen; a light emitting diode (LED) display screen; and / or a projection, holographic, and / or augmented reality display (e.g., a head-up display device or a head-mounted device), etc. Other input / output (I / O) devices 108 may also be coupled to the processor, such as a network chip or network card, a video chip or video card, an audio chip or audio card, a universal serial bus (USB), FireWire or other external devices, a camera, a printer, a speaker, a compact disc read-only memory (CD-ROM) drive, a digital video disc (DVD) drive, a disk drive, etc.
[0035] The computing system 100 may include such a communication device: the communication device is capable of communicating wirelessly or based on wired communication with other local computing devices 102 or network nodes. The communication device can communicate with another device or server through a network, for example, using the transmission control protocol / Internet protocol (TCP / IP protocol). The computing system 100 can use the communication device to distribute operations on multiple network devices. For example, the communication device can be used as a communication module. The communication device can be configured to send or receive input gestures for determining navigation commands in an XR environment or for an XR object. The communication device can also use input gestures to determine various types of interactions between a user representation and an XR object, which has a stereo texture applied to its constituent surfaces. For example, such an XR object can be rendered as an object in an XR museum within an artificial reality environment. As an example, such an XR object can appear as a 3D sculpture for a given user representation standing in front of it, but appears as a two-dimensional (2D) plane image from a close or side vantage point.
[0036] The processor 110 can access a memory 112, which can be included on one of the multiple computing devices 102 of the computing system 100, or can be distributed on one of the multiple computing devices 102 of the computing system 100, or multiple other external devices. The memory includes one or more hardware devices for volatile storage or non-volatile storage, and can include both read-only memory and writable memory. For example, the memory can include one or more of the following: random access memory (RAM), various cache memories (cache), CPU registers, read-only memory (ROM), and writable non-volatile memory, such as flash memory, hard drive, floppy disk, compact disk (CD), DVD, magnetic storage device, and tape drive. The memory is not a propagation signal separated from the underlying hardware; therefore, the memory is non-transient. The memory 112 may include a program memory 114 that stores programs and software such as an operating system 118, an XR enterprise system 120, and other applications 122 (e.g., XR games). The memory 112 may also include a data memory 116 that may include information to be provided to the program memory 114 or any element in the computing system 100.
[0037] Some embodiments may operate with many other computing system environments or configurations. Examples of computing systems, environments, and / or configurations suitable for use with the technology include, but are not limited to, XR headsets, personal computers, server computers, handheld or laptop devices, cellular phones, wearable electronic devices, game consoles, tablet devices, multiprocessor systems, microprocessor-based systems, set-top boxes, programmable consumer electronics, networked personal computers (PCs), minicomputers, mainframe computers, and / or distributed computing environments including any of the foregoing systems or devices, and the like.
[0038] Figure 2A and Figure 2B is a schematic diagram illustrating a virtual reality head mounted viewer according to certain aspects of the present disclosure. Figure 2A 2 is a schematic diagram of a virtual reality head mounted display (HMD) 200. HMD 200 includes a front rigid body 205 and a strap 210. Front rigid body 205 includes one or more electronic display elements such as an electronic display 245, an inertial motion unit (IMU) 215, one or more position sensors 220, a locator 225, and one or more computing units 230. Position sensor 220, IMU 215, and computing unit 230 may be located inside HMD 200 and may not be visible to the user. In various embodiments, IMU 215, position sensor 220, and locator 225 may track the movement and position of HMD 200 in the real world and in a virtual environment with three degrees of freedom (3DoF), six degrees of freedom (6DoF), etc. For example, locator 225 may emit infrared beams that produce light spots on real objects around HMD 200. As another example, the IMU 215 may include, for example: one or more accelerometers; one or more gyroscopes; one or more magnetometers; one or more other non-camera-based position, force, or orientation sensors; or a combination thereof. One or more cameras (not shown) integrated with the HMD 200 may detect light points, for example, for use in a computer vision algorithm or module. The computing unit 230 in the HMD 200 may use the detected light points to infer the position and motion of the HMD 200, and to recognize the shapes and positions of real objects around the HMD 200.
[0039] The electronic display 245 can be integrated with the front rigid body 205 and can provide image light to the user as directed by the computing unit 230. In various embodiments, the electronic display 245 can be a single electronic display or multiple electronic displays (e.g., one display for each eye of the user). Examples of the electronic display 245 include: a liquid crystal display (LCD), an organic light-emitting diode (OLED) display, an active-matrix organic light-emitting diode display (AMOLED), a display including one or more quantum dot light-emitting diode (QOLED) sub-pixels, a projector unit (e.g., micro-LED, laser (LASER)), etc.), some other display, or some combination thereof.
[0040] In some embodiments, the HMD 200 can be coupled to a core processing component such as a personal computer (PC) (not shown) and / or one or more external sensors (not shown). The external sensors can monitor the HMD 200 (e.g., via light emitted from the HMD 200), and the PC can use the HMD in conjunction with the outputs from the IMU 215 and the position sensor 220 to determine the position and movement of the HMD 200.
[0041] Figure 2B2 is a schematic diagram of a mixed reality HMD system 250, which includes a mixed reality HMD 252 and a core processing component 254. The mixed reality HMD 252 and the core processing component 254 can communicate via a wireless connection (e.g., a 60 Gigahertz (GHz) link) as indicated by link 256. In other embodiments, the mixed reality HMD system 250 includes only a head-mounted viewer without an external computing device, or includes other wired or wireless connections between the mixed reality HMD 252 and the core processing component 254. The mixed reality HMD system 250 may also include a wrist wearable device or a cooperating mobile device (e.g., a smartphone), for example, to convert wrist input gestures or other user commands into navigation commands for movement and interaction in an AR / MR environment. The mixed reality HMD 252 includes a perspective display 258 and a frame 260. The frame 260 may house various electronic components (not shown), such as light projectors (e.g., lasers, LEDs, etc.), cameras, eye tracking sensors, micro-electromechanical systems (MEMS) components, networking components, etc. The electronic components may be configured to implement computer vision-based user tracking for determining AR / MR navigation commands or selection commands.
[0042] The projector can be coupled to the see-through display 258, for example, via an optical element, to display media to the user. The optical element can include one or more waveguide components, one or more reflectors, one or more lenses, one or more mirrors, one or more collimators, one or more gratings, etc. for directing light from the projector to the user's eyes. The image data can be transmitted from the core processing component 254 to the HMD 252 via a link 256. The controller in the HMD 252 can convert the image data into a plurality of light pulses from the projector, which can be transmitted to the user's eyes via the optical element as output light. The output light can be mixed with the light passing through the display 258, thereby allowing the output light to present virtual objects that appear to exist in the real world. Similar to the HMD 200, the HMD system 250 may also include motion and position tracking units, cameras, light sources, etc., which allow the HMD system 250 to track itself, for example, with 3DoF or 6DoF, track multiple parts of the user (e.g., hands, feet, head, or other body parts), draw virtual objects to appear stationary when the HMD 252 moves, and make virtual objects react to gestures and other real-world objects.
[0043] Figure 2CControllers 270a and 270b are shown, and in some embodiments, a user can hold controllers 270a and 270b in one or both hands to interact with the artificial reality environment presented by HMD 200 and / or HMD system 250. Controllers 270a and 270b can communicate with the HMD directly or via an external device (e.g., core processing component 254). Controllers 270a and 270b can have their own IMU units, position sensors, and / or can emit light points farther away. The HMD 200 or HMD system 250, external sensors, or sensors in controllers 270a and 270b can track these controller light points to determine the position and / or orientation of the controllers (e.g., to track the controllers with 3DoF or 6DoF). The computing unit 230 or core processing component 254 in HMD 200 can use this tracking to monitor the position and movement of the user's hands in combination with the IMU output and the position output. The computing unit 230 can calculate the position change of the user's hand via the IMU output (or other sensor output via the controllers 270a and 270b) to define the input gesture. The controllers 270a and 270b can also include various buttons (e.g., buttons 272A to 272F) and / or joysticks (e.g., joysticks 274A to 274B) that the user can actuate to provide input and interact with objects.
[0044] Controllers 270a and 270b may also have tips 276A and 276B, which may be used as tips for writing implemented in an artificial reality environment when in a write (scribe) controller mode. For example, controllers 270a and 270b may be used to change the perception angle. In various embodiments, HMD 200 or HMD system 250 may also include additional subsystems, such as a hand tracking unit, an eye tracking unit, an audio system, various network components, etc., to monitor indications of user interactions and intent. For example, in some embodiments, instead of or in addition to a controller, one or more cameras included in HMD 200 or HMD system 250 or from an external camera may monitor the position and posture of the user's hand to determine gestures and other hand and body movements.
[0045] Figure 3306a and 306b). The environment 300 may include one or more client computing devices, such as an artificial reality device 302, a mobile device 304, a tablet computer 312, a personal computer 314, a laptop computer 316, and / or a desktop computer 318. The artificial reality device 302 may be an HMD 200, an HMD system 250, or some other XR device that is compatible with rendering or interacting with an artificial reality or virtual reality environment. The artificial reality device 302 and the mobile device 304 may communicate wirelessly via a network 310. The client computing device may operate in a network environment using a logical connection to one or more remote computers (e.g., server computing devices such as server computing devices 306a and 306b) through the network 310. In some embodiments, the environment 300 may include a server such as an edge server that receives client requests and coordinates the implementation of these requests through other servers.
[0046] The server may include server computing devices 306a and 306b, which may also form a single server logically. Alternatively, server computing devices 306a and 306b may be such distributed computing environments respectively: the distributed computing environment includes multiple computing devices located at the same physical location or at geographically different physical locations. Client computing devices and server computing devices 306a and 306b may serve as servers or clients of one or more other server / client devices respectively. The server may be connected to a database 308, or may include its own memory. Each server computing device in server computing devices 306a and 306b may correspond to a group of servers, and each of these servers may share a database, or may have its own database. Database 308 may form a single unit logically, or may be a part of a distributed computing environment including multiple computing devices, which may be located in their corresponding servers, located at the same physical location, or located at geographically different physical locations.
[0047] The client computing device and the server computing devices 306a and 306b may be in operable communication to facilitate movement and interaction with respect to an artificial reality environment. As an example, the client computing device may be used to control a user representation immersed in an artificial reality environment such as a VR environment, an AR environment, or an MR environment. For example, such a user representation may take the form of a human avatar. The user representation may have virtual style hair that should be animated in a stylized manner in the artificial reality environment. As used herein, style virtual hair or stylized virtual hair may refer to virtual hair rendered according to different hairstyles (e.g., straight hair, wavy hair, curly hair, pixie head, bob head, braids, and ponytails, etc.). In order to animate such style virtual hair, the virtual hair resources stored in the database 308 may be sampled according to the computing power of the client computing device and the server computing devices 306a and 306b. For example, the virtual hair resources may be sampled to obtain virtual hair bundles sufficient to cover the virtual head of a particular user representation. The sampled virtual hair bundles may each be individually expanded into the surrounding volume to create a combined single style virtual hair mesh.
[0048] The artificial reality device 302 or the server computing devices 306a and 306b can calculate skin weights for skinning the combined single hair mesh to the inflated virtual hair bundles (representing the hair skeleton of the 3D virtual user representation animation outfit). By calculating the motion of several of these inflated virtual hair bundles (e.g., master hair bundles), the entire stylized hair asset can be stylistically animated according to computational physics. For example, the combined single hair mesh can move in a physically reasonable manner. The skin weights can be used to define or control the motion of a single bundle of virtual hair in the stylized hair asset (e.g., sampled dominant hair / driving hair in the hair asset). The driving hair can drive the overall hair motion and can be attached to the slave virtual hair, the motion of which is controlled by the driving hair. As used herein, skin weights can refer to a set of values used to determine how much influence each hair bundle has on the surrounding vertices of the model. For example, depending on the form of the selected hairstyle, the hair on the left side of the virtual head may have different weights than the hair on the right side of the head. Advantageously, each inflated driving hair bundle is skinned to a portion of the combined hair mesh in a one-to-one relationship. Thus, undesired stretching can be avoided during animation of the stylized hair asset because each vertex of the model is controlled by a single driven virtual hair strand. Thus, the subject disclosure provides an improved automatic method for high-quality animation of stylized virtual hair assets automatically created by an artificial reality device 302 or server computing devices 306a and 306b in an XR environment.
[0049] Network 310 may be a local area network (LAN), a wide area network (WAN), a mesh network, a hybrid network, or other wired or wireless network. Network 310 may be the Internet or some other public or private network. Client computing devices may be connected to network 310 via a network interface, for example, via wired or wireless communications. The connection may be any kind of local area network, wide area network, wired network, or wireless network, including network 310 or a separate public or private network. In some embodiments, server computing devices 306a and 306b may be used as part of a social network such as implemented via network 310. A social network may maintain a social graph and perform various actions based on the social graph. A social graph may include a set of nodes (representing social network system objects, also referred to as social objects) interconnected by multiple edges (representing interactions, activities, or correlations). A social network system object may be a social network system user, a non-human entity, a content item, a group, a social network system page, a location, an application, a theme, a concept representation, or other social network system object (e.g., a movie, a band, a book, etc.).
[0050] The social networking system in the XR environment can enable users to upload or create pictures, videos, documents, songs, or other content items, and can enable users to create and schedule events, for example, via XR compatible devices. In various embodiments, content items can be represented by nodes in a social graph or edges between nodes. The social networking system can enable users to upload or create content items, interact with content items or other users, express interests or opinions, or perform other actions. The social networking system can provide various ways to interact with non-user objects within the social networking system. In various embodiments, actions can be represented by nodes in a social graph or edges between nodes. Users of the XR environment can interact with other users, such as via reactions, responses, and sharing. Each user can associate themselves and establish connections with other users of the shared XR environment, such as to share activities and locations within the environment (e.g., virtual homes or virtual artworks / works in an XR environment).
[0051] In certain embodiments, one or more objects of a computing system (e.g., content or other types of XR objects) may be associated with one or more privacy settings. One or more objects may be stored on or otherwise associated with any suitable computing system or application, such as a shared artificial reality system, a social networking system, a client system, a third-party system, a social networking application, a messaging application, a photo sharing application, or any other suitable computing system or application. The privacy settings (or "access settings") of an object may be stored in any suitable manner, such as associated with the object, as an index on an authorization server, in another suitable manner, or in any combination of these manners. The privacy settings of an object may specify how the object (or specific information associated with the object) may be accessed, stored, or otherwise used (e.g., viewed, shared, modified, copied, executed, presented, or identified) within an XR environment or social networking system. When the privacy settings of an object allow a particular user or other entity to access the object, the object may be described as being "visible" relative to the user or other entity.
[0052] In certain embodiments, the privacy settings of an object may specify a "blocked list" of users or other entities that should not be allowed to access certain information associated with the object. In certain embodiments, the blocked list may include third-party entities. The blocked list may specify one or more users or entities for which the object is not visible. As an example and not limitation, a user may specify a group of users that may not access an album associated with the user, thereby denying access to the album to these users (while also potentially allowing certain users not in the group of users to access the album). In certain embodiments, privacy settings may be associated with certain social graph elements. The privacy settings of a social graph element (e.g., a node or edge) may specify how an online social network may be used to access the social graph element, information associated with the social graph element, or an object associated with the social graph element. In certain embodiments, privacy settings may allow a user to choose to have or not have: the social networking system store / record, or share its content, information, or actions with other systems (e.g., third-party systems). Although the present disclosure describes the use of certain privacy settings in certain ways, the present disclosure contemplates the use of any suitable privacy settings in any suitable way.
[0053] In certain embodiments, privacy settings may be based on one or more nodes or edges of a social graph. Privacy settings may be specified for one or more edges or edge types of a social graph, or may be specified relative to one or more nodes or node types of a social graph. Privacy settings applied to a specific edge connecting two nodes may control whether the relationship between two entities corresponding to these nodes is visible to other users of the shared XR environment. Similarly, privacy settings applied to a specific node may control whether the user or concept corresponding to the node is visible to other users of the shared XR environment. In general, users may specify and configure privacy settings to control the visibility and public nature of their activities and participation in a shared XR environment. In certain embodiments, a "privacy wizard" is provided to a first user (e.g., within a web page, module, one or more dialog boxes, or any other suitable interface) to help the first user specify one or more privacy settings. The privacy wizard may display instructions, appropriate privacy-related information, current privacy settings, one or more input fields for receiving one or more inputs of a change or confirmation of a specified privacy setting from the first user, or any suitable combination thereof.
[0054] In particular embodiments, the XR environment or social networking system may provide a "control panel" function to the first user, which may display the first user's current privacy settings to the first user. The control panel function may be displayed to the first user at any suitable time (e.g., after input from the first user invoking the control panel function, or after a particular event or triggering action occurs). The control panel function may allow the first user to modify the first user's current privacy settings at any time and in any suitable manner (e.g., redirecting the first user to a privacy wizard). The privacy settings associated with an object may specify any suitable granularity for allowing access or denying access. Although the present disclosure describes a particular granularity for allowing access or denying access, the present disclosure contemplates any suitable granularity for allowing access or denying access.
[0055] Figure 4An example extended reality wearable device or shared artificial reality environment according to certain aspects of the present disclosure is shown. For example, the artificial reality wearable device can be a wrist wearable device such as an XR wrist sensor 400. The XR wrist sensor 400 can be configured to sense the position and movement of a user's hand to convert such sensed position and movement into input gestures. For example, the input gestures can be used to control user representations, such as avatars and virtual objects. The user representation controlled via the XR wrist sensor 400 can have hair, such as an avatar's styled hair that can be animated to show different hair movements. The avatar's hair movement can be perceived as augmented reality content, mixed reality content, or virtual reality content via an XR device (e.g., via AR glasses and VR / MR head-mounted viewers, etc.). The XR wrist sensor 400 can generally represent a wearable device that is sized to fit around a body part (e.g., a wrist) of a user. As Figure 4 As shown, the XR wrist sensor 400 may include a frame 402 and a sensor assembly 404 coupled to the frame 402 and configured to collect information about the local environment by observing the local environment.
[0056] The sensor assembly 404 may include a camera, an IMU eye tracking sensor, an electromyography (EMG) sensor, a time-of-flight sensor, and / or a light / optical sensor, etc., to track wrist movements. The XR wrist sensor 400 may also include one or more audio devices, such as output audio transducers 408a and 408b, and an input audio transducer 410. The output audio transducers 408a and 408b may provide audio feedback and / or audio content to the user, while the input audio transducer 410 may collect audio in the user's environment. The XR wrist sensor 400 may also include other types of screens or visual feedback devices (e.g., a display screen integrated into one side of the frame 402). In some embodiments, the wrist wearable device 400 may alternatively take another form, such as a headband, a hat, a hairband, a belt, a watch, an ankle strap, a ring, a tie, a necklace, a chest strap, a glasses frame, and / or any other suitable type or form of device. Other forms of the XR wrist sensor 400 may be a different wristband having a different decorative appearance than the XR wrist sensor 400 but performing similar functions.
[0057] Figure 55 is a block diagram illustrating an example computer system 500 with which aspects of the subject technology may be implemented. According to certain aspects of the present disclosure, the system 500 may be configured to provide a shared artificial reality environment / shared XR environment to an XR-compatible device, such as represented by one or more remote platforms 504. In some implementations, the system 500 may include one or more computing platforms 502. The one or more computing platforms 502 may correspond to a server component of an artificial reality platform / XR platform or other communication platform, which may communicate with the server component. Figure 3 The server computing devices 306a and 306b are similar or identical and include Figure 1 10 in the processor 110. For example, the one or more computing platforms 502 can render a shared XR environment based on user preferences. The one or more computing platforms 502 can be configured to store, render, modify and / or otherwise control user representations, animations and / or XR elements in the environment. For example, the one or more computing platforms 502 can be configured to animate virtual style hair assets of various user representations based on the automatic creation of hair meshes based on several hair bundles, based on the selected corresponding hairstyles. For example, the generated virtual style hair assets can move in a physically reasonable manner because the drive bundles are driven using a physics-based simulation (e.g., using a computational physics engine).
[0058] The one or more computing platforms 502 may maintain or store virtual hair assets and animations (including virtual hair bundles, skeletons, meshes, and 3D animation outfits used by the one or more computing platforms 502), for example, in an electronic storage device 526, to determine how to automatically create animatable styles / stylized virtual hair assets. As an example, the one or more computing platforms 502 may automatically create virtual hair assets that can be animated with high-resolution stylized hair motions using sampled and inflated hair bundles as leading / driving hair bundles. The one or more computing platforms 502 may render high-quality stylized hair motions according to applicable physical laws (e.g., physically based computing models). As discussed herein, skinning a corresponding hair skeleton to a hair mesh of such a virtual hair asset enables the corresponding 3D animation to be properly animated (e.g., not deformed incorrectly).
[0059] The one or more computing platforms 502 may be configured to communicate with one or more remote platforms 504 according to a client / server architecture, a peer-to-peer architecture, and / or other architectures. The one or more remote platforms 504 may be configured to communicate with other remote platforms via the one or more computing platforms 502 and / or according to a client / server architecture, a peer-to-peer architecture, and / or other architectures. A user may access the system 500 hosting a shared artificial reality environment and / or a personal artificial reality via one or more remote platforms 504. In this manner, the one or more remote platforms 504 may be configured to output a shared artificial reality environment on one or more client devices of the one or more remote platforms 504, for example, via HMD 200, HMD system 250, controllers 270a and 270b, and / or AR glasses, etc. As an example, the one or more remote platforms 504 may access artificial reality content and / or artificial reality applications for use in a shared artificial reality of one or more corresponding users of the one or more remote platforms 504, for example, via an external resource 524.
[0060] The one or more computing platforms 502, the external resources 524, and the one or more remote platforms 504 may communicate and / or be mutually accessible via the network 150. The one or more computing platforms 502 may be configured by machine-readable instructions 506. The machine-readable instructions 506 may be executed by the one or more computing platforms to implement one or more instruction modules. These instruction modules may include computer program modules. The implemented instruction modules may include one or more of the following: a sampling module 508; a hair bundle module 510; an inflation module 512; a hair mesh module 514; an animation module 516; and / or other instruction modules.
[0061] As discussed herein, the sampling module 508 can determine the number of strands to sample from the virtual hair asset. The sampling module 508 can make this determination based on how much available computing power the XR device being used to render the virtual style hair motion has. The sampling module 508 can sample hair strands and / or hair assets from a database, such as a large public dataset of real hair assets. For example, the assets in the public dataset can include thousands of hair strands. For example, the data assets can include, for example, http: / / www-scf.usc.edu / ~liwenhu / SHM / database.html3D hair models available on XR. The sampling function performed by the sampling module 508 can achieve more efficient and automatic creation of virtual hair assets compared to manually creating animated hair objects in XR. Typically, artists can use computer design software to manually create hair meshes and hair skeletons to the hair meshes, as well as skin weights between the hair meshes and the skeletons in order to animate the hair. That is, the artist will manually create and / or modify the hair animation based on considering the appearance of the hair being animated, the style of the hair, and how much flexibility is needed in the movement (the number of skeletons is positively correlated with the flexibility). Skin weights can be assigned during manual design, but may need to be manually fine-tuned or modified by the artist so that the skinning performs well (for example, without undesirable stretching or deformation). In contrast, the present subject disclosure provides advantages over this manual method in animating stylized virtual hair objects. For example, the present subject disclosure discloses automatically creating virtual hair assets / objects based on a smaller number of virtual hair bundles, and saving automatically calculated skin weights that do not require manual fine-tuning or modification.
[0062] For example, the sampling module 508 samples a discrete set of hair strands from which a style hair mesh and applicable skin weights may be created and calculated to automatically animate stylized virtual hair according to the computationally represented physics for driving motion. To facilitate automatic animation of such stylized virtual hair, the sampling module 508 may be configured to sample a complete virtual hair asset. Such sampling may be performed to cover the size of an entire virtual head (e.g., a head represented by a user). For example, the sampling module 508 may retrieve a complete virtual hair asset from a large public dataset or database. The public dataset may include many realistic style hair assets including thousands of hair strands. By sampling a limited set of hair strands from the public dataset according to available computing power, the sampling module 508 may enable automatic creation of stylized virtual hair objects in real time. This advantageously addresses the computational challenges of real-time animation of thousands of hair strands (of realistic style hair assets), because individual hairs in these sampled assets represent more particles than are computationally possible for full motion or animation.
[0063] The hair bundle module 510 can control hair bundles in a virtual hair bundle resource within a shared XR environment. The hair bundle module 510 can determine available computing power, runtime considerations, network / wireless connectivity, and / or the number of hair bundles to be sampled by the sampling module 508. For example, runtime considerations can limit the number of particles of virtual hair that may be feasible to move or animate in real time. The hair bundle module 510 can be configured to determine the number of hair bundles to be inflated by the inflation module 512, for example, based on available computing power. The number of hair bundles can be the same as the number of hair bundles sampled, or the number of subsets of hair bundles sampled. In general, the more motion detail desired for animating virtual stylized hair, the more bundles the sampling module 508 and the hair bundle module 510 should sample and / or inflate.
[0064] The expansion module 512 may expand the number of hair bundles that will fill the desired volume relative to the entire virtual head. For example, the expansion module 512 may be configured to expand each sampled hair bundle in a particular virtual hair resource separately. As used herein, expansion refers to increasing the volume of the hair bundle to form a hair mesh around the expanded hair bundle. The expansion module 512 may expand the hair bundle to make the appearance of the hair match the desired appearance of the corresponding selected hairstyle. The expansion performed by the expansion module 512 enables each sampled hair bundle to independently control one aspect of the overall style hair motion animation. That is, such separate expansion may enable skinning the corresponding hair mesh for each sampled hair bundle separately to increase the animation flexibility of the underlying virtual hair skeleton. Therefore, the expansion module 512 may expand each hair bundle separately or individually. Each separate expanded hair bundle may be attached to a corresponding separate hair mesh. This may advantageously ensure that the expansion module 512 does not expand two hair bundles of the same vertex controlling the hair skeleton (e.g., the hair skeleton may actually include hair bundles used to create an animated stylized virtual hair object).
[0065] The hair mesh module 514 may combine each individual hair mesh into a combined hair mesh. That is, the hair mesh module 514 may compose an entire or overall mesh from a number of individual or separate meshes. As discussed herein, these individual meshes may be in a one-to-one relationship with the sampled hair bundles or inflated hair bundles. In other words, the hair mesh module 514 may attach each inflated mesh to each inflated hair bundle from the inflation module 512. Thus, a single hair mesh area will not be moved by two different hair bundles, and thus neither the individual hair meshes nor the combined hair meshes will be stretched inappropriately or undesirably during the hair motion animation. The hair mesh module 514 may skin the combined hair mesh to the virtual hair skeleton of a particular virtual hair asset.
[0066] For example, skin weights are used to combine all of the separate individual hair meshes into a combined single hair mesh that is skinned to different hair bundles that essentially form a hair skeleton. For example, the skin weights may be distance-based (e.g., Euclidean distance). Specifically, the Euclidean distance or other distance may be calculated to find the nearest few particles to each hair bundle, and the corresponding hair meshes are skinned to these particles. Advantageously, the skin weights used by the hair mesh module 514 may not require manual fine-tuning or modification. As used herein, skin weights may refer to weights used to skin a costume (e.g., represented by an XR user) created and animated via 3D visual effects software, such as Autodesk Maya and / or similar software available from Autodesk, Inc. of San Rafael, CA, USA. The skin weights may define the process of binding one or more 3D hair meshes to an articulated costume setup represented by a hair skeleton. The joint settings of the hair skeleton can define or influence the vertices of the virtual hair 3D animation model. The hair mesh module 514 can use skin weight calculation or weight painting to automatically assign the corresponding influence of each mesh in the combined single mesh to deform and / or animate the corresponding hairstyle motion. That is, the skin weight defines the degree of influence of each component hair mesh (of the combined mesh) on the vertices of the animation model.
[0067] In general, skin weights may be calculated by the hair mesh module 514 so that each inflated hair clump controls only specific vertices of the 3D animated model. As described above, the sampled hair clumps are essentially used as a virtual hair skeleton. Thus, the combined hair mesh may be used to animate the underlying hair skeleton based on the calculated skin weights. The combined hair mesh created by the hair mesh module 514 may have hundreds or even thousands of parts, compared to traditional meshes, which are typically one or two parts. These parts may correspond to the number of sampled hair clumps or inflated hair clumps (which may reach thousands of clumps, as described above).
[0068] The animation module 516 may be configured to calculate motion parameters for animating a particular virtual hair asset. For example, the motion parameters may define the type of stylized hair motion desired. For example, the hair motion may be a stylized hair motion corresponding to a selected type of hairstyle (e.g., [bob, pixie, etc.]). The hair motion may be based on a few specific particles of a hair skeleton to animate a particular virtual hair asset into a physical computational model. The animation module 516 may calculate the motion of a few sampled / inflated hair bundles or a subset of these hair bundles. In this way, the animation module 516 may render the entire motion of the animated stylized virtual hair asset / object. That is, the animation module 516 may determine the motion parameters based on the sampled hair bundles (or a subset of these hair bundles) instead of all particles of a traditional hair mesh. In this way, the animation module 516 may provide real-time automatic animation of stylized virtual hair with improved computational efficiency compared to traditional manually created animated hair motion. The animation module 516 may use a physical computational model / representation to efficiently move on a few hair particles / hair bundles to automatically obtain the entire stylized hair animation based on the first few sampled hair bundles. For users of XR devices, they can perceive that all the hair of their corresponding user representation is moving together according to the corresponding style hair animation, without being stretched in the shared XR environment.
[0069] As discussed herein, hair stretching in an XR environment can be advantageously avoided because each vertex of the hair skeleton is controlled by a corresponding single bundle. The hair movement controlled by the animation module 516 can be automatically performed in real time, and the calculated and used skin weights are beneficially saved. The animation module 516 can also apply a machine learning algorithm to the animation of the combined / merged hair mesh. Using machine learning to animate the movement of the hair bundles (skinned to the hair mesh) can achieve advantages in terms of increased computer processing and / or rendering speed. Training data for training a machine learning algorithm or model can be accessed by the animation module 516. For example, the training data can be created via a computer-generated physics model. That is, the training data can include examples of stylized hair movement (e.g., virtual hair movement) of the movement of different hairstyles represented by computer-generated physics (e.g., a computer representation of physical laws of nature).
[0070] For example, the animation module 516 can be used to render a shared artificial reality environment for one or more remote platforms 504 via one or more computing platforms 502. The hair mesh module 514 can communicate with an XR-compatible device for accessing the environment, such as an HMD 200, an HMD system 250, or some other type of XR-applicable device (e.g., an XR head-mounted viewer). The animation module 516 can generate XR representations of various objects, such as images, shapes, thumbnails, icons, and / or portals. The visual rendering of each element by the animation module 516 can be a 2D surface, a 3D surface, or a surface with a stereo texture for simulating 3D depth. The animation module 516 can render various virtual areas, spaces, and / or XR scenes, such as museums, public art spaces, and / or home areas.
[0071] In some embodiments, the one or more computing platforms 502, the one or more remote platforms 504, and / or the external resources 524 may be operably linked via one or more electronic communication links. For example, such electronic communication links may be established at least in part via a network 150 (e.g., the Internet and / or other networks). It will be understood that this is not intended to be limiting, and the scope of the present disclosure includes embodiments in which the one or more computing platforms 502, the one or more remote platforms 504, and / or the external resources 524 may be operably linked via some other communication medium.
[0072] A given remote platform 504 may include client computing devices, such as an artificial reality device 302, a mobile device 304, a tablet computer 312, a personal computer 314, a laptop computer 316, and a desktop computer 318, each of which may include one or more processors configured to execute computer program modules (e.g., instruction modules). These computer program modules may be configured to enable an expert or user associated with the given remote platform 504 to interact with the system 500 and / or external resources 524, and / or provide other functions attributed to one or more remote platforms 504 herein. As non-limiting examples, a given remote platform 504 and / or a given computing platform 502 may include one or more of the following: a server; a desktop computer; a laptop computer; a handheld computer; a tablet computing platform; a netbook; a smart phone; a game console; and / or other computing platforms. External resources 524 may include information sources external to the system 500, external entities participating in the system 500, and / or other resources. For example, external resources 524 may include externally designed XR elements and / or XR applications designed by a third party. In some implementations, some or all of the functionality attributed herein to external resources 524 may be provided by resources included in system 500 .
[0073] The one or more computing platforms 502 may include electronic storage 526, a processor such as processor 110, and / or other components. The one or more computing platforms 502 may include communication links or ports for enabling information exchange with a network and / or other computing platforms. Figure 5 The illustration of one or more computing platforms 502 is not intended to be limiting. The one or more computing platforms 502 may include multiple hardware components, software components, and / or firmware components that operate together to provide the functionality attributed herein to the one or more computing platforms 502. For example, the one or more computing platforms 502 may be implemented as a cloud of multiple computing platforms that operate together as the one or more computing platforms 502.
[0074] Electronic storage 526 may include non-transitory storage media that electronically stores information, such as virtual hair assets and style animation data (e.g., 3D animated hair outfits). The electronic storage media of electronic storage 526 may include one or both of the following: system storage that is provided integrally with one or more computing platforms 502 (i.e., substantially non-removable); and / or removable storage that is removably connected to one or more computing platforms 502, such as via a port (e.g., a USB port, a FireWire port, etc.) or a drive (e.g., a disk drive, etc.). Electronic storage 526 may include one or more of the following: optically readable storage media (e.g., optical disks, etc.); magnetically readable storage media (e.g., magnetic tape, magnetic hard drive, floppy disk drive, etc.); charge-based storage media (e.g., electrically erasable programmable read-only memory (EEPROM), random access memory (RAM), etc.); solid-state storage media (e.g., flash drives, etc.); and / or other electronically readable storage media. Electronic storage 526 may include one or more virtual storage resources (e.g., cloud storage, virtual private networks, and / or other virtual storage resources). Electronic storage 526 may store software algorithms, information determined by one or more processors 110, information received from one or more computing platforms 502, information received from one or more remote platforms 504, and / or other information that enables the one or more computing platforms 502 to function as described herein.
[0075] The one or more processors 110 may be configured to provide information processing capabilities in the one or more computing platforms 502. Thus, the one or more processors 110 may include one or more of the following: a digital processor; an analog processor; a digital circuit designed to process information; an analog circuit designed to process information; a state machine; and / or other mechanisms for electronically processing information. Figure 1 10 is shown as a single entity, but this is for illustration purposes only. In some embodiments, the one or more processors 110 may include multiple processing units. These processing units may be physically located in the same device, or the one or more processors 110 may represent the processing functions of multiple devices running in coordination. The one or more processors 110 may be configured to execute modules 508, 510, 512, 514 and / or 516, and / or other modules. The one or more processors 110 may be configured to execute modules 508, 510, 512, 514 and / or 516, and / or other modules by the following components: software; hardware; firmware; some combination of software, hardware and / or firmware; and / or other mechanisms for configuring processing capabilities on the one or more processors 110. As used herein, the term "module" may refer to any component or group of components that perform the functions attributed to the module. This may include one or more physical processors, processor-readable instructions, circuits, hardware, storage media, or any other components during the execution of processor-readable instructions.
[0076] It should be understood that although modules 508, 510, 512, 514 and / or 516 are Figure 5 10 is shown as being implemented within a single processing unit, but in embodiments where one or more processors 110 include multiple processing units, one or more of the modules 508, 510, 512, 514, and / or 516 may be implemented away from other modules. The description of the functions provided by the different modules 508, 510, 512, 514, and / or 516 described below is for illustrative purposes and is not intended to be limiting, as any of the modules 508, 510, 512, 514, and / or 516 may provide more functions or less functions than described. For example, one or more of the modules 508, 510, 512, 514, and / or 516 may be deleted, and some or all of their functions may be provided by other modules in the modules 508, 510, 512, 514, and / or 516. As another example, the one or more processors 110 may be configured to execute one or more additional modules that may perform some or all of the functionality attributed below to one of modules 508 , 510 , 512 , 514 , and / or 516 .
[0077] The techniques described herein may be implemented as one or more methods performed by one or more physical computing devices; may be implemented as one or more non-transitory computer-readable storage media storing instructions that, when executed by one or more computing devices, cause the one or more methods to be performed; or may be implemented as one or more physical computing devices that are specifically configured with a combination of hardware and software that causes the one or more methods to be performed.
[0078] Figure 6 600 is a visual rendering showing an example virtual animated hair asset with which aspects of the subject technology may be implemented. A 3D animated outfit may be established, for example, in Maya, or another digital asset creation or computer animation / graphics software, to instantiate a virtual hair object 604 for a shared XR environment. The 3D animation software may include a user interface having a user toolbar 602 with which a user may interact to select options and functions for computer animation and / or graphics. The user toolbar 602 may include an object mode for viewing, controlling, and modifying the virtual hair object 604. The virtual hair object 604 may be a 3D animation existing along three axes X, Y, and Z represented by an axis diagram 606. In addition, the user toolbar 602 may be configured for a user to manage or control one or more aspects of the automatic creation of an animated, stylized virtual hair object as disclosed in the subject disclosure. As Figure 6 As shown, the virtual hair object 604 may include a large number of sampled bundles of virtual hair. As described herein, these sampled bundles may represent a small portion of a sampled complete virtual hair asset including thousands of bundles. All sampled bundles (or a subset of these bundles) may be used as master hair or driving hair for style hair motion. By attaching slave hair to the master hair bundle in a master-slave relationship, computational complexity may be beneficially reduced. Figure 6 A slight expansion of the sampled hair tresses is also shown.
[0079] Figure 7700 is another visual rendering showing inflated virtual hair bundles of an example virtual animated hair asset according to certain aspects of the present disclosure. A virtual hair object 702 may include fully inflated hair bundles initially sampled from a hair asset. For example, the sampled hair asset may be from a public database or data set. Inflation of the bundles of the virtual hair object 702 may involve creating an inflated volume positioned around a corresponding style hair mesh. Each of the sampled virtual hair bundles in the initially sampled virtual hair bundles may be looped through in an iterative manner such that each hair bundle is inflated to create a hair mesh. Each created hair mesh may be visualized as surrounding a volume containing its corresponding hair bundle. The appearance of each hair mesh may be customized or modified via suitable computer animation or graphics software. Subsequently, skin weights may be calculated for each of the created / inflated hair meshes based on vertex distances of adjacent vertices. The skin weights define the respective influence of each skinned hair mesh portion / component on the overall style hair animation motion. Multiple separate skinned hair mesh portions may be combined into a merged single hair mesh while saving the calculated skin weights. Thus, an automatic way of skinning a hair mesh to hair clumps can be achieved without unwanted stretching throughout the animated stylized hair motion. Thus, stylized lead or drive clumps (via the merged mesh) can move with high quality animation in a computationally efficient manner according to a computer representation of the laws of physics.
[0080] Figure 8 An example flow chart (e.g., process 800) for automatically creating animated virtual hair in a shared artificial reality environment according to certain aspects of the present disclosure is shown. For purposes of explanation, the example process 800 is described herein with reference to one or more of the above figures. Also for purposes of explanation, the steps of the example process 800 are described herein as occurring sequentially or linearly. However, multiple instances of the example process 800 may occur in parallel. For purposes of explaining the subject technology, the process 800 will be discussed with reference to one or more of the above figures.
[0081] At step 802, a first styled hair mesh may be created based on the expansion of the first virtual hair bundle. According to one aspect, creating the first styled hair mesh includes: creating an expanded volume positioned around the first styled hair mesh. At step 804, a second styled hair mesh may be created based on the expansion of the second virtual hair bundle. According to one aspect, creating the second styled hair mesh includes: determining the number of sampled virtual hair bundles based on the volume of the virtual head. At step 806, skin weights of the first styled hair mesh and the second styled hair mesh may be calculated. According to one aspect, calculating the skin weights includes: determining a one-to-one relationship between each of the first virtual hair bundle and the second virtual hair bundle and the respective corresponding vertices. According to one aspect, calculating the skin weights includes: calculating the Euclidean distance corresponding to the first styled hair mesh and the second styled hair mesh. Such calculation also includes: determining the vertex distance of the first styled hair mesh and the second styled hair mesh.
[0082] At step 808, the first style hair mesh and the second style hair mesh may be combined into a merged single hair mesh. At step 810, motion parameters of the first virtual hair clump and the second virtual hair clump may be determined to animate the merged single hair mesh. According to one aspect, determining the motion parameters includes: calculating the degree of motion of the first virtual hair clump and the second virtual hair clump based on skin weights. According to one aspect, determining the motion parameters includes: determining training data including a plurality of physics-based virtual hair motions. As an example, the animated virtual hair is represented as a subset of a plurality of physical particles according to a physical model. According to one aspect, process 800 may further include: sampling the first virtual hair clump and the second virtual hair clump from a virtual hair resource. According to one aspect, process 800 may further include: inflating the first virtual hair clump and the second virtual hair clump based on a volume of a virtual head. According to one aspect, process 800 may further include: saving the skin weights of the first style hair mesh and the second style hair mesh for animation of the merged single hair mesh.
[0083] Fig. 9 900, with which aspects of the subject technology may be implemented. In some aspects, computer system 900 may be implemented using hardware or a combination of software and hardware in a dedicated server, integrated into another entity, or distributed across multiple entities.
[0084] The computer system 900 (e.g., server and / or client) includes a bus 908 or other communication mechanism for transmitting information, and a processor 902 coupled to the bus 908 for processing information. As an example, the computer system 900 can be implemented with one or more processors 902. Each processor 902 of the one or more processors 902 can be a general-purpose microprocessor, a microcontroller, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA), a programmable logic device (PLD), a controller, a state machine, gate logic, a plurality of discrete hardware components, or any other suitable entity that can perform calculations or other manipulations on information.
[0085] In addition to hardware, the computer system 900 may also include code that creates an execution environment for the computer program in question, such as code that constitutes the following stored in the included memory 904: processor firmware, protocol stack, database management system, operating system, or a combination of one or more of them, such as random access memory (Random Access Memory, RAM), flash memory, read-only memory (Read-Only Memory, ROM), programmable read-only memory (Programmable Read-Only Memory, PROM), erasable PROM (Erasable PROM, EPROM), registers, hard disk, removable disk, compact disc read-only memory (CD-ROM), digital video disc (DVD) or any other suitable storage device, which is coupled to the bus 908 for storing information and instructions to be executed by the processor 902. The processor 902 and the memory 904 may be supplemented by or incorporated in special purpose logic circuitry.
[0086] Instructions may be stored in memory 904 and may be implemented in one or more computer program products, i.e., one or more modules of multiple computer program instructions, which are encoded on a computer-readable medium for execution by the computer system 900 or for controlling the operation of the computer system 900, and according to any method known to those skilled in the art, wherein the computer program instructions include but are not limited to computer languages such as data-oriented languages (e.g., SQL, dBase), system languages (e.g., C, object-oriented programming languages extending C (Objective-C), C++, assembly), structured languages (e.g., Java, .NET), and application languages (e.g., PHP, Ruby, Perl, Python). The instructions may also be implemented in computer languages such as array languages, aspect-oriented languages, assembly languages, authoring languages, command line interface languages, compiled languages, concurrent languages, curly-bracket languages, data flow languages, data structured languages, declarative languages, esoteric languages, extension languages, fourth generation languages, functional languages, interactive mode languages, interpreted languages, iterative languages, list-based languages, little languages, logic-based languages, machine languages, macro languages, metaprogramming languages, multiparadigm languages, numerical analysis, non-English-based languages, class-based object-oriented languages, prototype-based object-oriented languages, off-side rule languages, procedural languages, reflective languages, rule-based languages, scripting languages, stack-based languages, synchronous languages, syntax handling languages, visual languages, wirth languages, and XML-based languages. Memory 904 may also be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 902 .
[0087] Computer programs as discussed herein do not necessarily correspond to files in a file system. A program may be stored in a portion of a file storing other programs or data (e.g., one or more scripts stored in a markup language document), a single file dedicated to the program in question, or multiple collaborative files (e.g., a file storing one or more modules, subroutines, or partial codes). A computer program may be deployed to execute on one or more computers, which are located at a site or distributed across multiple sites and interconnected by a communication network. The processes and logic flows described in this specification may be performed by one or more programmable processors, which execute one or more computer programs to perform functions by operating on input data and generating outputs.
[0088] The computer system 900 also includes a data storage device 906 such as a disk or optical disk, which is coupled to the bus 908 for storing information and instructions. The computer system 900 can be coupled to various devices via an input / output module 910. The input / output module 910 can be any input / output module. An exemplary input / output module 910 includes a data port such as a USB port. The input / output module 910 is configured to be connected to a communication module 912. An exemplary communication module 912 includes a network interface card, such as an Ethernet card and a modem. In some aspects, the input / output module 910 is configured to be connected to multiple devices, such as an input device 914 and / or an output device 916. An exemplary input device 914 includes a keyboard and a pointing device (e.g., a mouse or a tracking ball), and a user can provide input to the computer system 900 through the keyboard and the pointing device. Other types of input devices can also be used to provide interaction with the user, such as a tactile input device, a visual input device, an audio input device, or a brain-computer interface device. For example, the feedback provided to the user can be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and the input from the user can be received in any form including sound input, voice input, tactile input, or brain wave input. Exemplary output device 916 includes a display device for displaying information to the user, such as a liquid crystal display (LCD) monitor.
[0089] According to one aspect of the present disclosure, the above system can be implemented using a computer system 900 in response to a processor 902 executing one or more sequences of one or more instructions contained in a memory 904. These instructions can be read into the memory 904 from another machine-readable medium (e.g., a data storage device 906). The execution of the sequence of instructions contained in the main memory 904 causes the processor 902 to perform the process steps described herein. One or more processors in a multi-processing configuration can also be used to execute the sequence of instructions contained in the memory 904. In alternative aspects, hard-wired circuits can be used instead of software instructions, or hard-wired circuits can be used in combination with software instructions to implement various aspects of the present disclosure. Therefore, the various aspects of the present disclosure are not limited to any specific combination of hardware circuits and software.
[0090] Aspects of the subject matter described in this specification may be implemented in a computing system that includes a back-end component (e.g., a data server), or includes a middleware component (e.g., an application server), or includes a front-end component (e.g., a client computer with a graphical user interface or a web browser through which a user can interact with an implementation of the subject matter described in this specification); or aspects of the subject matter described in this specification may be implemented in any combination of one or more such back-end components, one or more such middleware components, or one or more such front-end components. The components of the system may be interconnected by any form or medium of digital data communication (e.g., a communication network). The communication network may, for example, include any one or more of a LAN, a WAN, the Internet, etc. In addition, for example, the communication network may include, but is not limited to, any one or more of the following network topologies, including a bus network, a star network, a ring network, a mesh network, a star bus network, a tree or hierarchical network, etc. The communication module may, for example, be a modem or an Ethernet card.
[0091] Computer system 900 can include client and server.Client and server are usually far away from each other, and usually interact through communication network.The relationship between client and server is generated by means of computer program running on respective computers and having client-server relationship between each other.Computer system 900 can be but not limited to such as desktop computer, laptop computer or tablet computer.Computer system 900 can also be embedded in another device, and this another device is such as but not limited to: mobile phone, personal digital assistant (PDA), mobile audio player, global positioning system (Global Positioning System, GPS) receiver, video game console and / or TV set-top box.
[0092] As used herein, the term "machine-readable storage medium" or "computer-readable medium" refers to any one or more media that participate in providing instructions to processor 902 for execution. Such media can take many forms, including, but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media include, for example, optical or magnetic disks, such as data storage device 906. Volatile media include dynamic memory, such as memory 904. Transmission media include coaxial cables, copper wires, and optical fibers, including the wires that comprise bus 908. Common forms of machine-readable media include, for example, floppy disks, flexible disks, hard disks, magnetic tapes, any other magnetic media, CD-ROMs, DVDs, any other optical media, punch cards, paper tapes, any other physical media with hole patterns, RAM, PROMs, EPROMs, FLASH EPROMs, any other memory chips or cassettes, or any other media that a computer can read. The machine-readable storage medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter effecting a machine-readable propagated signal, or a combination of one or more of them.
[0093] When the user's computer system 900 reads the XR data and provides the artificial reality environment, information may be read from the XR data and stored in a memory device (e.g., memory 904). In addition, data from a memory 904 server accessed via a network, bus 908, or data storage device 906 may be read and loaded into memory 904. Although the data is described as being found in memory 904, it will be understood that the data need not be stored in memory 904 and may be stored in other memory (e.g., data storage device 906) accessible to the processor 902 or distributed across several media.
[0094] The techniques described herein may be implemented as one or more methods performed by one or more physical computing devices; may be implemented as one or more non-transitory computer-readable storage media storing instructions that, when executed by one or more computing devices, cause the one or more methods to be performed; or may be implemented as one or more physical computing devices that are specifically configured with a combination of hardware and software that causes the one or more methods to be performed.
[0095] As used herein, the phrase "at least one of..." following a list of items, together with the terms "and" or "or" used to separate any of the items, modifies the list as a whole, rather than modifying each member of the list (i.e., each item). The phrase "at least one of..." does not require selection of at least one item; rather, the phrase is meant to include at least one of any of the items, and / or at least one of any combination of the items, and / or at least one of each of the items. As an example, the phrase "at least one of A, B, and C" or "at least one of A, B, or C" both refer to: only A, only B, or only C; any combination of A, B, and C; and / or, at least one of each of A, B, and C.
[0096] To the extent the terms "including," "having," and the like are used in this specification or the claims, such terms are intended to be open ended in a manner similar to the term "comprising" when used as a transitional word in the claims being interpreted as "comprising." The word "exemplary" is used herein to mean "serving as an example, instance, or illustration." Any embodiment described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments.
[0097] Unless otherwise specified, reference to an element in the singular is not intended to mean "one and only one," but rather "one or more." All structural and functional equivalents to the elements of the various configurations described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the subject technology. In addition, nothing disclosed herein is intended to be dedicated to the public, regardless of whether such disclosure is explicitly recorded in the above description.
[0098] Although this specification contains many details, these details should not be interpreted as limitations on the scope of the content that may be claimed, but should be interpreted as descriptions of specific embodiments of the subject matter. Certain features described in the context of different embodiments in this specification may also be implemented in combination in a single embodiment. On the contrary, the various features described in the context of a single embodiment may also be implemented separately or in any suitable sub-combination in multiple embodiments. In addition, although features may be described above as working in certain combinations and even initially claimed as such, in some cases, one or more features from the claimed combination may be removed from the combination, and the claimed combination may be directed to a sub-combination or a variation of the sub-combination.
[0099] The subject matter of this specification has been described in particular aspects, but other aspects may be implemented and are within the scope of the following claims. For example, although the operations are depicted in a particular order in the drawings, this should not be understood as requiring the operations to be performed in the particular order shown or in a continuous order, or requiring the execution of all the operations shown to achieve the desired results. The actions described in the claims can be performed in different orders and still achieve the desired results. As an example, the processes depicted in the drawings do not necessarily require the particular order shown or the continuous order to achieve the desired results. In some cases, multi-tasking parallel processing may be advantageous. In addition, the separation of the various system components in the above-mentioned multiple aspects should not be understood as requiring such separation in all aspects, but it should be understood that the described program components and systems can generally be integrated together in one software product or packaged in multiple software products. Other variations are within the scope of the following claims.
Claims
1. A computer-implemented method for creating animated virtual hair in a shared artificial reality environment, the method comprising: creating a first styled hair mesh based on the inflation of the first virtual hair bundle; creating a second styled hair mesh based on the inflation of the second virtual hair bundle; Calculating skin weights of the first-style hair mesh and the second-style hair mesh; combining the first style hair mesh and the second style hair mesh into a merged single hair mesh based on the skin weight; as well as Motion parameters of the first virtual hair clump and the second virtual hair clump are determined to animate the merged single hair mesh.
2. The computer-implemented method of claim 1 , wherein: Creating the first styled hair mesh includes creating an inflated volume positioned around the first styled hair mesh.
3. The computer-implemented method of claim 1 , wherein: Creating the second style hair mesh includes: determining the number of sampled virtual hair bundles according to the volume of the virtual head.
4. The computer-implemented method of claim 1 , wherein: Calculating the skin weight includes determining a one-to-one relationship between each of the first virtual hair clump and the second virtual hair clump and a respective corresponding vertex.
5. The computer-implemented method of claim 1 , wherein: Calculating the skin weight includes: calculating a Euclidean distance corresponding to the first style hair mesh and the second style hair mesh; and A vertex distance between the first styled hair mesh and the second styled hair mesh is determined.
6. The computer-implemented method of claim 1 , wherein: Determining the motion parameter includes: calculating the motion degrees of the first virtual hair bundle and the second virtual hair bundle based on the skin weight.
7. The computer-implemented method of claim 1 , wherein: Determining the motion parameter includes: determining training data comprising a plurality of physically based virtual hair motions; and Applying a machine learning algorithm based on the training data to animation of the merged single hair mesh.
8. The computer-implemented method of claim 1 , wherein: The animated virtual hair is represented as a subset of a plurality of physical particles according to a physical model.
9. The computer-implemented method of claim 1 , further comprising: Sampling the first virtual hair bundle and the second virtual hair bundle from a virtual hair resource; The first virtual hair bundle and the second virtual hair bundle are expanded based on the volume of the virtual head.
10. The computer-implemented method of claim 1 , further comprising: The skin weights of the first style hair mesh and the second style hair mesh are saved for use in animation of the merged single hair mesh.
11. A system for creating animated virtual hair in a shared artificial reality environment, comprising: one or more processors; as well as a memory including instructions stored thereon that, when executed by the one or more processors, cause the one or more processors to perform: Sampling a first virtual hair bundle and a second virtual hair bundle from a virtual hair resource; expanding the first virtual hair bundle and the second virtual hair bundle based on the volume of the virtual head; Creating a first style hair mesh based on the first virtual hair bundle; creating a second style hair mesh based on the second virtual hair bundle; Calculating skin weights of the first-style hair mesh and the second-style hair mesh; combining the first style hair mesh and the second style hair mesh into a merged single hair mesh based on the skin weight; as well as Motion parameters of the first virtual hair strand and the second virtual hair strand are determined to animate the virtual hair asset.
12. The system according to claim 11, wherein: The instructions causing the one or more processors to execute sampling of the first virtual hair tresses and the second virtual hair tresses cause the one or more processors to execute: determining a number of sampled virtual hair tresses according to the volume of the virtual head.
13. The system according to claim 11, wherein: The instructions causing the one or more processors to execute inflating the first virtual hair tress and the second virtual hair tress cause the one or more processors to execute: creating an inflated volume positioned around the first styled hair mesh and the second styled hair mesh.
14. The system according to claim 11, wherein: The instructions causing the one or more processors to execute computing the skin weights cause the one or more processors to execute determining a one-to-one relationship between each of the first virtual hair clump and the second virtual hair clump and a respective corresponding vertex.
15. The system according to claim 11, wherein: The instructions causing the one or more processors to execute to calculate the skin weights cause the one or more processors to execute: calculating a Euclidean distance corresponding to the first style hair mesh and the second style hair mesh; as well as A vertex distance between the first styled hair mesh and the second styled hair mesh is determined.
16. The system according to claim 11, wherein: The instructions causing the one or more processors to execute determining the motion parameter cause the one or more processors to execute: calculating a degree of motion of the first virtual hair clump and the second virtual hair clump based on the skin weight.
17. The system of claim 11, wherein: The instructions causing the one or more processors to execute determining the motion parameters cause the one or more processors to execute: determining training data including a plurality of physically based virtual hair motions; as well as Applying a machine learning algorithm based on the training data to animation of the merged single hair mesh.
18. The system of claim 11, wherein: The animated virtual hair is represented as a subset of a plurality of physical particles according to a physical model.
19. The system of claim 11, further comprising a stored sequence of instructions which, when executed by the one or more processors, causes the one or more processors to perform: saving the skin weights of the first style hair mesh and the second style hair mesh for use in animation of the merged single hair mesh.
20. A non-transitory computer-readable storage medium comprising instructions stored thereon, which, when executed by one or more processors, cause the one or more processors to perform operations for creating animated virtual hair in a shared artificial reality environment, the operations comprising: Sampling a first virtual hair bundle and a second virtual hair bundle from a virtual hair resource; expanding the first virtual hair bundle and the second virtual hair bundle based on the volume of the virtual head; Creating a first style hair mesh based on the first virtual hair bundle; creating a second style hair mesh based on the second virtual hair bundle; Calculating skin weights of the first-style hair mesh and the second-style hair mesh; combining the first style hair mesh and the second style hair mesh into a merged single hair mesh based on the skin weight; determining motion parameters of the first virtual hair bundle and the second virtual hair bundle to animate the merged single hair mesh; as well as The skin weights of the first style hair mesh and the second style hair mesh are saved for use in animation of the merged single hair mesh.