Virtual skeleton based on computing device capability profile
By analyzing the capability profile, the adaptive virtual skeleton is solved, and the problems of cumbersome design and resource consumption in the prior art are achieved, and more efficient virtual skeleton drawing is achieved.
Patent Information
- Application Number
- CN201980036244.6
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2018-05-31
- Filing Date
- 2019-05-15
- Publication Date
- 2025-05-02
- Estimated Expiration
- 2039-05-15
Smart Images

Figure CN112204621B_ABST
Abstract
Description
Background Art
[0001] An avatar is typically a computer representation of a user. An avatar typically takes the form of a two-dimensional (2D) or three-dimensional (3D) model in a variety of environments such as computer games, applications, chats, forums, communities, and instant messaging services.
[0002] An avatar typically includes a mesh representing the surface of a computer representation of a user. The mesh may include outlines that depict 3D aspects of the computer representation of the user. The mesh is typically generated under the guidance of a human designer. Traditionally, designers manually generate virtual items (such as eyeballs) and manually associate the virtual items with the mesh to generate an avatar.
[0003] The avatar may be animated, for example, by manipulating the mesh of the avatar using a virtual device, which may be referred to as a virtual skeleton or rig. The virtual skeleton typically includes a collection of interconnected reference points corresponding to portions of the mesh. The virtual skeleton changes the relationship between the interconnected reference points to manipulate the mesh. Each manipulation of the mesh corresponds to a corresponding configuration of the avatar.
[0004] The configuration of the avatar is often depicted using sequential virtual snapshots that represent the corresponding physical configuration of the corresponding object. For example, the configuration of an avatar representing a video conference participant may illustrate the participant's movements during the video conference (e.g., movement of the eyes, lips, head, and arms). According to this example, the configuration may be transmitted to other participants of the video conference.
[0005] Conventional techniques for providing avatar virtual skeletons include cumbersome designs of avatar virtual skeletons based on computer applications or computer environments that will implement or use virtual skeletons. The design or selection of virtual skeletons is usually time-consuming. In addition, the design of virtual skeletons usually requires the use of computer user interfaces (UIs). Such interaction time with computer UIs may result in undesirable memory usage, processor usage, and / or battery consumption associated with computing devices that implement computer UIs for designing or selecting virtual skeletons. Summary of the invention
[0006] The disclosed technology provides methods and systems that provide a virtual skeleton adapted based on a capability profile. In some implementations, the virtual skeleton adapted based on the capability profile is generated from a master virtual skeleton. The complexity of the adapted virtual skeleton can be less than that of the master virtual skeleton. Specifically, in some implementations, the number of virtual skeleton joints included in the adapted virtual skeleton can be less than that of the virtual skeleton joints associated with the master virtual skeleton.
[0007] Implementations described herein address a technical need to provide a virtual skeleton based on capabilities associated with a computing device. To at least address this technical need, implementations described herein provide a computing device that analyzes a capability profile to generate an adapted virtual skeleton based on a virtual skeleton that can be a master virtual skeleton or a highly detailed virtual skeleton.
[0008] At least one benefit of providing an adapted virtual skeleton is reducing unnecessary processor overhead associated with using a computing device to generate individual virtual skeletons for multiple computing devices. Eliminating unnecessary processor overhead can reduce battery consumption and eliminate unnecessary memory usage associated with a computing device.
[0009] Another technical benefit is that using a virtual skeleton adapted to the capabilities of a computing device greatly reduces the processor and graphics load required to draw the virtual skeleton on a display associated with the computing device. Likewise, reducing unnecessary processor overhead can reduce battery consumption and reduce unnecessary memory usage associated with a computing device.
[0010] Yet another technical benefit of at least some of the described implementations is that, using a virtual skeleton adapted to the capabilities of a computing device (such as an avatar motion input associated with the computing device), avatar motion can be accurately drawn based on user motion observed by the computing device. Accurate drawing of avatar motion reduces unnecessary processor overhead, reduces battery consumption, and reduces unnecessary memory usage associated with the computing device. Other technical benefits not specifically identified herein may also be achieved through the implementations disclosed below.
[0011] In some implementations, the capability profile may include a hardware profile associated with the computing device that will use the adapted virtual skeleton. The hardware profile may set forth one or more functional capabilities associated with the computing device (e.g., processor capabilities, storage capabilities, etc.). The hardware profile may also specify whether the computing device includes a head tracking system, a camera, a voice recognition system, a body motion sensor (e.g., a motion sensor), a gaze detection system, a finger tracking device, an activity determination system (e.g., walking, exercising, etc.), etc., and combinations thereof.
[0012] The disclosed methods and systems can analyze the capability profile to determine how to adapt the primary virtual skeleton. In some implementations, the methods and systems eliminate one or more virtual skeleton joints and / or virtual skeleton segments associated with the primary virtual skeleton to provide a virtual skeleton adapted based on the capability profile. For example, the disclosed methods and systems can eliminate one or more joints associated with the hands of the primary virtual skeleton when providing a virtual skeleton adapted based on the capability profile.
[0013] In another example, the disclosed methods and systems can eliminate leg segments (e.g., foot segments, calf segments, thigh segments, etc.) of the primary virtual skeleton based on the capability profile. In yet another example, the disclosed methods and systems can eliminate virtual skeleton segments associated with the torso, legs, and feet to provide an adapted virtual skeleton including only a virtual head segment, arm segments, and hand segments.
[0014] A client device coupled to an adaptive avatar platform associated with a distributed computing network (such as a cloud-based system) can request an adapted virtual skeleton based on a capability profile. As previously described, the adaptive avatar platform can function to provide an adapted virtual skeleton based on the capability profile. In some implementations, the client device can incorporate an adaptive avatar platform that functions to provide an adapted virtual skeleton based on the capability profile.
[0015] In some implementations, a computer-implemented method is provided. The computer-implemented method may be implemented by an adaptive avatar platform associated with a server or computing device associated to a distributed computing network. The method may include analyzing a capability profile by a computing device, the capability profile including information that can be used by the computing device to adapt a virtual skeleton stored in a computer storage device, and retrieving the virtual skeleton stored in the computer storage device by the computing device. The method may also include adapting the virtual skeleton by the computing device based on the information included in the capability profile, the adaptation performed by the computing device including reducing the complexity of the virtual skeleton based on the information included in the capability profile and generating an adapted virtual skeleton. In addition, the method may include storing the adapted virtual skeleton by the computing device.
[0016] In some implementations, a computer-implemented method is provided. The computer-implemented method may be implemented by a client computing device coupled to an adaptive avatar platform. The adaptive avatar platform may be associated with a server, a cloud-based computing device, or a client computing device. The method may include providing a capability profile, the capability profile including information that can be used to adapt a virtual skeleton stored in a computer storage device. In addition, the method may include receiving an adapted virtual skeleton obtained from a virtual skeleton stored in a computer storage device, the virtual skeleton complexity of the adapted virtual skeleton being lower than the virtual skeleton complexity of the virtual skeleton stored in the computer storage device, the adapted virtual skeleton being generated based on the information included in the capability profile. The method may store the adapted virtual skeleton in a computer storage device.
[0017] In some implementations, a computing device including a processor may be provided. The computing device may also include a computer-readable storage medium that communicates with the processor, the computer-readable storage medium having computer-executable instructions stored thereon, the computer-executable instructions causing the processor to analyze a capability profile when executed by the processor, the capability profile including information that can be used by the computing device to adapt a virtual skeleton stored in a computer storage device, and retrieve the virtual skeleton stored in the computer storage device. In addition, the computer-executable instructions, when executed by the processor, may cause the processor to adapt the virtual skeleton based on the information included in the capability profile, the adaptation including reducing the complexity of the virtual skeleton based on the information included in the capability profile, and generating an adapted virtual skeleton. In addition, the computer-executable instructions, when executed by the processor, may cause the processor to store the adapted virtual skeleton.
[0018] In some implementations, the adapted virtual skeleton is a modified version of a master virtual skeleton or a high-fidelity virtual skeleton stored in a storage device associated with the computing device and is generated based on a capability profile associated with the computing device. In some implementations, the adapted virtual skeleton is a new virtual skeleton generated based on a capability profile associated with the computing device.
[0019] This Summary is provided to introduce some concepts in a simplified form, which are further described in the Detailed Description below. This Summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. For example, the term "technique" may refer to systems, methods, computer-readable instructions, modules, algorithms, hardware logic, and / or operations as allowed by the context described above and throughout the document. BRIEF DESCRIPTION OF THE DRAWINGS
[0020] The detailed description is described with reference to the accompanying drawings. In the drawings, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The same reference numbers in different drawings indicate similar or identical items.
[0021] Figure 1 is a block diagram illustrating an example computing environment that can include computing devices associated with providing and receiving a virtual skeleton. In some implementations, the virtual skeleton is adjusted based on a capability profile.
[0022] Figure 2 is to provide client computing devices (such as Figure 1 A block diagram of additional details of a client computing device (shown).
[0023] Figure 3 is a diagram illustrating a virtual skeleton that may be associated with an avatar mesh.
[0024] Figure 4 An exemplary avatar mesh is shown. An exemplary avatar mesh and a virtual skeleton can work together to enable movement of an avatar.
[0025] Figure 5 An exemplary augmented virtual skeleton is shown.The augmented virtual skeleton may be generated based on a capability profile provided by a computing device.
[0026] Figure 6-7 Flowcharts related to operations for providing, receiving, analyzing and / or generating a virtual skeleton and / or adapting a virtual skeleton are shown.
[0027] Figure 8 A computer architecture diagram is shown showing an illustrative hardware and software architecture for a computing system capable of implementing various aspects of the techniques and technologies presented herein. DETAILED DESCRIPTION
[0028] At least some of the disclosed methods and systems provide a virtual skeleton adapted based on a capability profile. In some implementations, the virtual skeleton adapted based on the capability profile is generated from a master virtual skeleton. The complexity of the adapted virtual skeleton may be lower than that of the master virtual skeleton. Specifically, the virtual skeleton joints included in the adapted virtual skeleton may be less than the virtual skeleton joints associated with the master virtual skeleton.
[0029] Using a virtual skeleton adapted to the capabilities of a computing device greatly reduces the processor and graphics load required to draw the virtual skeleton on a display associated with the computing device. Reducing unnecessary processor overhead can reduce battery consumption and reduce unnecessary memory usage associated with the computing device. Other technical benefits not specifically identified herein can also be achieved through the implementation disclosed below.
[0030] In some implementations, the capability profile may include a hardware profile associated with the computing device that will use the adapted virtual skeleton. The hardware profile may set forth one or more functional capabilities associated with the computing device (e.g., processor capabilities, storage capabilities, etc.). The hardware profile may also specify whether the computing device includes a head tracking system, a camera, a voice recognition system, a body motion sensor (e.g., a motion sensor), a gaze detection system, a finger tracking device, an activity determination system (e.g., walking, exercising, etc.), etc., and combinations thereof.
[0031] The disclosed methods and systems may analyze the details associated with the capability profile to determine how to adapt the primary virtual skeleton. In some implementations, the methods and systems eliminate one or more virtual skeleton joints and / or virtual skeleton fragments associated with the primary virtual skeleton to provide a virtual skeleton adapted based on the capability profile. For example, the disclosed methods and systems may eliminate one or more joints associated with the hands of the primary virtual skeleton when providing a virtual skeleton adapted based on the capability profile. In another example, the disclosed methods and systems may eliminate leg fragments (e.g., foot fragments, calf fragments, thigh fragments, etc.) of the primary virtual skeleton based on the capability profile. In yet another example, the disclosed methods and systems may eliminate virtual skeleton fragments associated with the torso, legs, and feet to provide an adapted virtual skeleton that includes only virtual head fragments, arm fragments, and hand fragments.
[0032] The adapted virtual skeleton based on the capability profile can be requested by a client device coupled to an adaptive avatar platform associated with a distributed computing network. As previously described, the adaptive avatar platform can function to provide an adapted virtual skeleton based on the capability profile. In some implementations, the client device can incorporate an adaptive avatar platform that functions to provide an adapted virtual skeleton based on the capability profile.
[0033] The following references Figures 1 to 8 Various examples, implementations, scenarios, and aspects are described.
[0034] Before describing the method for obtaining a virtual skeleton adapted based on a capability profile, reference is made to Figure 1 Describe examples of appropriate usage contexts, Figure 1 An example computing device environment 100 is shown. The example computing device environment 100 can be used with a single computing device or multiple non-networked computing devices ( Figure 1 Moreover, the example computing device environment 100 may be part of a distributed computing network, such as a cloud-based computing environment and / or a networked computing environment, which includes one or more servers and one or more computing devices coupled to the one or more servers.
[0035] Environment 100 includes client computing device 102A. Environment 100 may include additional client computing devices 102B and 102C. Additional client computing devices 102B and 102C may function identically to client computing device 102A and include identical elements to client computing device 102A. Therefore, no additional description related to additional client computing devices 102B and 102C is provided herein.
[0036] The client computing device 102A may include a processor 104. The processor 104 may be coupled to a storage device 106. In some implementations, the processor 104 is configured to execute computer executable instructions ( Figure 1 not shown).
[0037] The storage device 106 may also include one or more virtual skeletons 108. In addition, the storage device 106 may include a capability profile 110. The virtual skeleton 108 may be adapted based on specific attributes associated with the capability profile 110. The client computing device 102A may transmit the capability profile 110 to the server device 112 via a network 116. The network 116 may represent any suitable network or combination of networks, including but not limited to public and / or private local area networks, and / or public and / or private wide area networks, including but not limited to the Internet.
[0038] Server device 112 can analyze the attributes associated with capability profile 110 and transmit virtual skeleton 108 to computing device 102A. In some implementations, transmitted virtual skeleton 108 is adapted based on the attributes associated with capability profile 110. More details regarding capability profile 110 and virtual skeleton 108 are provided below.
[0039] In some implementations, the storage device 106 includes a motion library 114. Similar to the virtual skeleton 108, the motion library 114 may have been received from the server device 112. In some implementations, the motion library 114 defines one or more motion behaviors associated with the virtual skeleton 108. For example, the motion library 114 may include details about how one or more skeleton joints move, and the one or more skeleton joints are associated with the virtual skeleton 108. In addition, the motion library 114 may include details about how one or more virtual skeleton fragments (e.g., leg fragments, arm fragments, finger fragments, etc.) move. A motion engine 130 may be provided to interact with the motion library 114 to implement motion of the virtual skeleton 108 according to the virtual skeleton motion details associated with the motion library 114.
[0040] In some implementations, the motion library 114 is provided by the server device 112 in conjunction with providing the virtual skeleton 108. For example, the motion library 114 may include details regarding the motion of one or more virtual skeleton joints and / or virtual skeleton segments associated with the virtual skeleton 118 that has been adapted by the server device 112.
[0041] Similarly, server device 112 may include processor 118 and storage device 120. Storage device 120 may include virtual skeleton 122, etc. In some implementations, virtual skeleton 122 is a main virtual skeleton that server device 112 can adapt based on capability profile 110 received from computing device 102A. Specifically, server device 112 may receive capability profile 110 from computing device 102A. In response, server device 112 may adapt virtual skeleton 122 to provide virtual skeleton 108. In some implementations, adapted virtual skeleton 108 is less complex than virtual skeleton 122. For example, virtual skeleton 108 may include fewer virtual skeleton joints and / or virtual skeleton segments than virtual skeleton 122. In some implementations, virtual skeleton 108 may include fewer virtual skeleton joint parameters (e.g., Cartesian coordinates) than virtual skeleton 122.
[0042] In some implementations, virtual skeleton 122 is generated in response to receiving capability profile 110. Subsequently, virtual skeleton 122 can be adapted based on attributes associated with capability profile 110 to generate adapted virtual skeleton 108. In some implementations, adapted virtual skeleton 108 replaces virtual skeleton 122. Alternatively, in some implementations, virtual skeleton 122 is retained after adapted virtual skeleton 108 is generated. Virtual skeleton 122 and / or virtual skeleton 108 can be stored in one or more computer storage devices.
[0043] A data structure (such as one or more computer files) including the adapted virtual skeleton 108 may consume less storage space than a data structure including the virtual skeleton 122. The data structure may include data defining the virtual skeleton 108 and / or the virtual skeleton 122. Thus, transmitting the virtual skeleton 108 to the client computing device 102A may consume less network bandwidth than transmitting the virtual skeleton 122 to the client computing device 102A.
[0044] Storage 120 associated with server device 112 may also include motion library 124. Motion library 124 may include details related to the motion of one or more virtual skeleton joints and / or virtual skeleton segments that are associated with virtual skeleton 122. In some implementations, server device 112 may use motion library 124 as a basis to generate and provide motion library 114. Specifically, as described above, server device 112 may adapt virtual skeleton 122 based on capability profile 110 to provide virtual skeleton 118 to client computing device 102A. Similarly, server device 112 may adapt motion library 124 to generate motion library 114. Specifically, when generating motion library 114, server device 112 may adapt motion library 124 to include details related to the motion of one or more virtual skeleton joints and / or virtual skeleton segments that are consistent with virtual skeleton joints and / or virtual skeleton segments associated with virtual skeleton 108.
[0045] Server 112 may also include a virtual skeleton adaptation module 126. Processor 118 may be used to control virtual skeleton adaptation module 126. For example, processor 118 may invoke functionality of virtual skeleton adaptation module 126 upon receiving capability profile 110 from client computing device 102A. Virtual skeleton adaptation module 126 may be controlled by processor 118 to analyze capability profile 110. In response to the analysis performed by virtual skeleton adaptation module 126, virtual skeleton adaptation module 126 may adapt virtual skeleton 122 to generate virtual skeleton 108. Server 112 may then transmit virtual skeleton 108 to computing device 102A.
[0046] Figure 2 2A. The client computing device 102A may include an avatar system 200 and system software 202. The avatar system 200 may generate an avatar 204 that represents a user in any of a variety of environments, including, for example, a video game, a chat or instant messaging application, a forum, a community, services and / or other computer-implemented applications.
[0047] The avatar system 200 may include a virtual skeleton 108. As previously described, the virtual skeleton may have been received from the server device 112 according to the capability profile 110 of the client computing device 102A. In addition, the avatar system 200 may generate a deformable body mesh 206, a set of attributes 208 that specify the appearance of the face and / or body of the avatar 204, and a basic set of items for the avatar, such as avatar clothing 212 and avatar accessories 214. This information may be stored as data in the system software 202 associated with the avatar system 200.
[0048] The virtual skeleton 108 may allow an avatar computing application (such as an application designed to incorporate avatars in the context of an instant messaging application, etc.) to move portions of the virtual skeleton 108 at well-defined virtual skeleton joints or pivot points. Such an avatar computing application may utilize the knowledge of the virtual skeleton 108 and, in some cases, the motion library 114 to animate any avatar without having any other specific knowledge about the appearance of the avatar 204.
[0049] The avatar system 200 may generate or maintain a body mesh 206 that defines the form of the avatar 204, such as the height of the avatar 204 and whether the avatar 204 is slim, of medium build, or of muscular build. The avatar system 200 may also generate or maintain a set of attributes 208 related to the appearance of the face or body, or both, of the avatar 204. For example, the avatar system 200 may maintain a set of attributes that describe certain aspects of the avatar's face, such as eye color, hairstyle, skin color, etc.
[0050] In some implementations, the avatar system 200 generates or maintains a set of avatar items, such as clothing 212 and accessories 214, that can be applied to the avatar 204. In some implementations, the avatar 204 can have a handbag, sunglasses, a hat, jewelry, etc. It should be understood that in some embodiments, the collection of avatar items (such as the closure 112 and / or accessories 214) can be stored as data in one or more data structures, such as one or more computer-readable files including data containing the avatar items.
[0051] Figure 3 An exemplary implementation of a virtual skeleton 122 associated with a server device 112 is shown. The virtual skeleton includes a plurality of virtual skeleton segments 300 pivotally coupled at a plurality of virtual skeleton joints 302. In some implementations, a body part name may be assigned to each virtual skeleton segment and / or each virtual skeleton joint.
[0052] exist Figure 3, the body parts of each virtual skeleton segment 300 are represented by additional letters: A for head, B for clavicle, C for upper arm, D for forearm, E for hand, F for torso, G for pelvis, H for thigh, J for calf, and K for foot. Similarly, the body part labels of each virtual skeleton joint 302 are represented by the following letters: A for neck, B for shoulder, C for elbow, D for wrist, E for lower back, F for hip, G for knee, and H for ankle.
[0053] For the sake of simplicity of illustration, some virtual skeleton segments 300 and virtual skeleton joints 302 are not labeled. Figure 3 The illustrated arrangement of virtual skeleton segments 300 and virtual skeleton joints 302 is in no way limiting. A virtual skeleton consistent with the present disclosure may include virtually any type and number of virtual skeleton segments and virtual skeleton joints.
[0054] In some implementations, various parameters may be assigned to each virtual skeleton joint 302, such as Cartesian coordinates specifying the position of the joint, angles specifying the rotation of the joint, and other parameters specifying the configuration of the corresponding body part (hand open, hand closed, etc.). The virtual skeleton 122 may take the form of one or more data structures that include any or all of these parameters for each virtual skeleton joint 302 and associated virtual skeleton segments 300, as well as data defining these parameters. For example, one or more data structures may include a virtual skeleton 122 and a motion library 124 associated with a storage device 120. In this manner, metric data defining the virtual skeleton 122 (its size, shape, orientation, position, etc.) may be assigned to virtual skeleton segments 300 and / or virtual skeleton joints 302.
[0055] As described above, the client computing device 102A may include the body mesh 206 . Figure 4 An exemplary body mesh 206 is shown in . Body mesh 206 may take the form of one or more data structures including any or all of the body mesh details described below.
[0056] The body mesh 206 can be associated with the virtual skeleton 108. As shown, the body mesh 206 can be a wireframe mesh that can include a hierarchy of rigid polygonal meshes (e.g., triangles) arranged in a mesh that defines the shape of the human body model, one or more deformable meshes, or any combination of the two. Such a mesh can include bending restrictions at the edges of each polygon. In other examples, some models may include patches, non-uniform rotation B-spline curves, or other high-order surfaces. The model may also include surface textures and / or other information to more accurately represent clothing, hair, and / or other aspects of the modeling target, such as included in attributes 208, clothing 212, and / or accessories 214.
[0057] Figure 5 An adapted virtual skeleton 108 is shown according to an exemplary implementation. The virtual skeleton 108 may be provided by a server device 112 based on a capability profile 110 provided to the server device 112 by the computing device 102A over a network 116. Figure 5 It can be clearly seen that the complexity of virtual skeleton 108 is less than that of virtual skeleton 122 (see Figure 3 ).
[0058] The server device 112 may decide to provide a virtual skeleton 108 with reduced complexity based on the capability profile 110. Specifically, in some implementations, the capability profile 110 provides a hardware capability profile of the client computing device 102A. The hardware capability profile associated with the capability profile 110 may be used as a basis for reducing the complexity of the virtual skeleton 102 to generate the virtual skeleton 108. Naturally, as Figure 5 The illustrated arrangement and number of virtual skeleton segments 300 and virtual skeleton joints 302 of virtual skeleton 108 are in no way limiting.
[0059] In some implementations, the capability profile 110 may indicate a hardware resource level (e.g., low, medium, or high) of the client computing device 102A. A low hardware resource level may indicate minimal processing and / or graphics capabilities associated with the computing device 102A. A medium hardware resource level may indicate moderate processing and / or graphics capabilities, while a high hardware resource level may indicate excellent processing and / or graphics capabilities. When providing the adapted virtual skeleton 108 to a computing device having a low hardware resource level, the server device 112 may eliminate a greater number of virtual skeleton joints and / or virtual skeleton segments and related parameters of the virtual skeleton 122.
[0060] On the other hand, when generating and providing the adapted virtual skeleton 108 to the client computing device 102A, the capability profile 110 indicating a high level of hardware resources may trigger the server device 112 to minimally reduce the complexity of the virtual skeleton 122 (e.g., reduce virtual skeleton joints and / or virtual skeleton segments and related parameters). In some implementations, the server device 112 may simply provide the virtual skeleton 122 to the client computing device having the capability profile 110 indicating a high level of hardware resources.
[0061] In some implementations, the capability profile 110 may define motion tracking capabilities associated with the avatar system 200 of the client computing device 102A. In particular, the capability profile 110 may indicate whether the avatar system 200 is capable of monitoring head position, head rotation, eye and / or gaze tracking, hand tracking, finger tracking, etc.
[0062] Some avatar systems 200 associated with client computing devices may include motion tracking sensors, such as optical motion tracking sensors, body and head controllers, eye controllers, eye tracking recognition technology using one or more cameras, optical sensors, data receivers, motion artificial intelligence, and other electronic hardware. Thus, the avatar system 200 can be configured to cause the avatar 204 and the underlying virtual skeleton 108 to move and behave in a manner similar to the movements and behaviors associated with the user of the client computing device 102A.
[0063] Cameras and / or other sensors associated with avatar system 200 may be used for motion tracking of a user of client computing device 102A, such as detecting the user's position and motion, and generating signals defining virtual skeleton parameters, such as x, y, and z Cartesian coordinates (e.g., parameters of virtual skeleton joints and segments). For example, cameras and / or other sensors may be used to implement tracking recognition techniques to collect tracking recognition data. For example, the tracking data may be related to the user's eye movements.
[0064] When providing the adapted virtual skeleton 108 to a computing device having limited or minimal motion tracking capabilities associated with the avatar system 200 of the client computing device 102A, the server device 112 may eliminate a greater number of virtual skeleton joints and / or virtual skeleton segments associated with the virtual skeleton 122. The limited or minimal motion tracking capabilities may be included in the capabilities profile 110 belonging to the computing device 102A. On the other hand, when the adapted virtual skeleton 108 is generated and provided to the client computing device 102A, the capabilities profile 110 indicating strong motion tracking capabilities associated with the avatar system 200 of the client computing device 102A may trigger the server device 112 to minimally reduce the complexity of the virtual skeleton 122 (e.g., reduce the virtual skeleton joints and / or virtual skeleton segments and related parameters).
[0065] Figure 6 and 7 An example flow chart is shown. It should be understood by those of ordinary skill in the art that the operations of the methods disclosed herein need not be presented in any particular order, and that it is possible and conceivable to perform some or all of the operations in an alternative order. For ease of description and illustration, the operations have been presented in the order in which they are presented. Operations may be added, omitted, performed together, and / or performed simultaneously without departing from the scope of the appended claims.
[0066] It should also be understood that the described method can be terminated at any time and does not need to be fully executed. As defined herein, some or all of the operations of the method and / or substantially equivalent operations can be performed by executing computer-readable instructions included on a computer storage medium. The term "computer-readable instructions" and its variants as used in the specification and claims are widely used herein to include routines, applications, application modules, program modules, programs, components, data structures, algorithms, etc. Computer-readable instructions can be implemented on various system configurations, including single-processor or multi-processor systems, minicomputers, mainframe computers, personal computers, handheld computing devices, microprocessor-based programmable consumer electronics, combinations thereof, etc.
[0067] Therefore, it should be understood that the logical operations described herein are implemented as (1) a sequence of computer-implemented actions or program modules running on a computing system (e.g., computing device 102A, 102B, 102C, 112 or multiple computing devices), and / or (2) interconnected machine logic circuits or circuit modules within the computing system. The implementation is a matter of choice depending on the performance and other requirements of the computing system. Therefore, the logical operations can be implemented in software, firmware, dedicated digital logic, and any combination thereof. In addition, the logical operations described herein can be implemented by a single computing device such as a client device or a server device. Alternatively, the logical operations described herein can be implemented by a combination of a server device and a client device.
[0068] Figure 6 600 is a diagram of an example flow chart illustrating operations associated with providing an adapted virtual skeleton based on a capability profile. Figure 6 The operations may be performed by components of one or more computing devices, such as computing server device 112 and / or client computing device 102A. Thus, instructions associated with example flowchart 700 may be executed by one or more processors associated with server-side components and / or client-side components.
[0069] At operation 602, a capability profile is analyzed, which includes information that can be used by a computing device to adapt a virtual skeleton stored in a computer storage device. In some implementations, the analysis can be performed by a virtual skeleton adaptation module 126. Specifically, the virtual skeleton adaptation module 126 can analyze the capability profile 110 to generate a virtual skeleton 108, which is an adapted version of the virtual skeleton 122.
[0070] At operation 604 , a virtual skeleton stored in a computer storage device is retrieved. The retrieved virtual skeleton may be virtual skeleton 122 .
[0071] At operation 606 , the retrieved virtual skeleton stored in computer storage is adapted based on information including the capability profile. The adapting may include reducing the complexity of virtual skeleton 122 based on information in the capability profile; and generating an adapted virtual skeleton, such as virtual skeleton 108 .
[0072] At operation 608, the adapted virtual skeleton is stored in a computer storage device. For example, the adapted virtual skeleton may be stored in storage device 120 and / or storage device 106.
[0073] Figure 7 700 is a diagram of an example flow chart illustrating operations associated with receiving an adapted virtual skeleton based on a capability profile. Figure 7 The operations may be performed by components of one or more computing devices, such as computing server device 112 or client computing device 102A. Thus, instructions associated with example flowchart 700 may be executed by one or more processors associated with server-side components and / or client-side components.
[0074] At operation 702 , a capability profile is provided, the capability profile including information usable by a computing device to adapt a virtual skeleton stored in computer storage. In some implementations, providing the capability profile includes transmitting the capability profile from the client computing device 102A to the server device 112 .
[0075] At operation 704, an adapted virtual skeleton obtained from a virtual skeleton stored in a computer storage device is received. In some implementations, the client computing device 102A receives the adapted virtual skeleton. In addition, in some implementations, the adapted virtual skeleton can be generated from a virtual skeleton stored in the server device 112. The adapted virtual skeleton can be a less complex version of the virtual skeleton stored in the server device 112. The adapted virtual skeleton includes fewer virtual skeleton joints and / or virtual skeleton segments than the virtual skeleton joints and / or virtual skeleton segments associated with the virtual skeleton stored in the server device 112.
[0076] At operation 706, the adapted virtual skeleton is stored in a computer storage device. For example, the adapted virtual skeleton may be stored in storage device 120 and / or storage device 106.
[0077] Now turn to Figure 8, an illustrative computing device architecture 800 for a computing device capable of executing various software components is described herein. The computing device architecture 800 is suitable for computing devices that facilitate mobile computing due in part to form factor, wireless connectivity, and / or battery-powered operation. In some configurations, the computing device includes, but is not limited to, a digital pen, a digital ink device, a mobile phone, a tablet device, a tablet device, a portable video game device, and the like.
[0078] The computing device architecture 800 is applicable to any computing device shown in the accompanying drawings. In addition, aspects of the computing device architecture 800 can be applicable to traditional desktop computers, portable computers (e.g., phones, laptops, notebooks, ultraportable computers, and netbooks), server computers, and other computer systems described herein. For example, the single-touch and multi-touch aspects disclosed herein can be applied to desktop computers that utilize a touch screen or some other touch-enabled device (such as a touch-enabled trackpad or a touch-enabled mouse). In some implementations, some or all of the computing device architecture 800 is implemented by computing devices 102A, 102B, 102C, and / or 112.
[0079] Figure 8 The computing device 800 shown includes a processor 802, a memory component 804, a network connection component 806, a sensor component 808, an input / output component 810, and a power supply component 812. In the configuration shown, the processor 802 is in communication with the memory component 804, the network connection component 806, the sensor component 808, the input / output ("I / O") component 810, and the power supply component 812. Figure 8 Connections are not shown between the various components shown, but these components can interact to perform device functions. In some configurations, the components are arranged to communicate via one or more buses (not shown).
[0080] The processor 802 includes a central processing unit ("CPU") configured to process data, execute computer-executable instructions of one or more applications, and communicate with other components of the computing device architecture 800 to perform the various functions described herein. The processor 802 can be used to execute aspects of the software components presented herein, particularly aspects of those software components that utilize, at least in part, touch-enabled input.
[0081] In some configurations, the processor 802 includes a graphics processing unit (“GPU”) (not shown) that is configured to accelerate operations performed by the CPU, including, but not limited to, operations performed by executing general scientific and / or engineering computing applications and graphics-intensive computing applications, such as high-resolution video (e.g., 720P, 1080p, and higher resolutions), video games, three-dimensional (“3D”) modeling applications, etc. In some configurations, the processor 802 is configured to communicate with a discrete GPU (not shown). In any case, the CPU and GPU can be configured according to a co-processing CPU / GPU computing model, in which sequential portions of an application are executed on the CPU and computationally intensive portions are accelerated by the GPU.
[0082] In some configurations, the processor 802 is or is included in a system on a chip ("SoC") (not shown) and one or more other components described below. For example, the SoC may include the processor 802, a GPU, one or more network connection components 806, and one or more sensor components 808. In some configurations, the processor 802 is manufactured in part using package-on-package ("PoP") integrated circuit packaging technology. The processor 802 can be a single-core or multi-core processor.
[0083] The processor 802 may be created in accordance with the ARM architecture (available under license from ARM Holdings of Cambridge, England). Alternatively, the processor 802 may be created in accordance with the x86 architecture (available from INTEL of Mountain View, California and others). In some configurations, the processor 802 is a SNAPDRAGON SoC (available from QUALCOMM of San Diego, California), a TEGRA SoC (available from NVIDIA of Santa Clara, California), a HUMMINGBIRD SoC (available from SAMSUNG of Seoul, South Korea), an Open Multimedia Application Platform ("OMAP") SoC (available from TEXAS INSTRUMENTS of Dallas, Texas), a customized version of any of the above SoCs, or a proprietary SoC.
[0084] The memory component 804 includes random access memory (“RAM”) 814, read-only memory (“ROM”) 816, integrated storage memory (“integrated storage”) 818, and computer readable media (“CRM”) 820. In some configurations, the RAM 814 or a portion thereof, the ROM 816 or a portion thereof, and / or some combination of the RAM 814 and ROM 816 are integrated into the processor 802. In some configurations, the ROM 816 is configured to store firmware, an operating system or a portion thereof (e.g., an operating system kernel), and / or a boot loader for loading an operating system kernel from the integrated storage 818 and / or the CRM 820.
[0085] The integrated storage device 818 may include a solid-state memory, a hard disk, or a combination of a solid-state memory and a hard disk. The integrated storage device 818 may be soldered or otherwise connected to a logic board, to which the processor 802 and other components described herein may also be connected. In this way, the integrated storage device 818 is integrated into the computing device. The integrated storage device 818 is configured to store an operating system or portions thereof, application programs, data, and other software components described herein.
[0086] Computer readable medium (CRM) 820 may include solid state memory, a hard disk, or a combination of solid state memory and a hard disk. In some configurations, CRM 820 is provided in place of integrated storage 818. In other configurations, CRM 820 is provided as an additional optional storage device. In some configurations, CRM 820 is logically combined with integrated storage 818 so that the total available storage device can be used as the total combined storage capacity. In some configurations, the total combined capacity of integrated storage 818 and CRM 820 is shown to the user, rather than the separate storage capacities of integrated storage 818 and removable storage 820.
[0087] As used herein, a computer-readable medium may store instructions executable by processing unit 802. A computer-readable medium may also store instructions executable by an external processing unit (such as an external CPU, an external GPU) and / or executable by an external accelerator (such as an FPGA-type accelerator, a DSP-type accelerator, or any other internal or external accelerator). In various examples, at least one CPU, GPU, and / or accelerator is incorporated into the computing device, while in some examples, one or more of the CPU, GPU, and / or accelerator is external to the computing device.
[0088] Computer readable media may include computer storage media and / or communication media. Computer storage media may include one or more of volatile memory, non-volatile memory and / or other persistent and / or secondary computer storage media, removable and non-removable computer storage media implemented in any method or technology for storing information such as computer readable instructions, data structures, program modules or other data. Thus, computer storage media includes media in tangible and / or physical form included in a device and / or in a hardware component that is part of a device or external to a device, including, but not limited to, random access memory (“RAM”), static random access memory (“SRAM”), dynamic random access memory (“DRAM”), phase change memory (“PCM”), read-only memory (“ROM”), erasable programmable read-only memory (“EPROM”), electrically erasable programmable read-only memory (“EEPROM”), flash memory, rotating media, optical cards or other optical storage media, magnetic storage, magnetic cards or other magnetic storage devices or media, solid-state storage devices, storage arrays, network attached storage, storage area networks, hosted computer storage, or any other storage memory, storage devices, and / or storage media that can be used to store and maintain information for access by a computing device.
[0089] In contrast to computer storage media, communication media may embody computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism. As defined herein, computer storage media does not include communication media. That is, computer storage media itself does not include communication media consisting solely of a modulated data signal, carrier wave, or propagation signal.
[0090] Although various configurations have been described in language specific to structural features and / or method actions, it should be understood that the subject matter defined in the attached representations is not necessarily limited to the specific features or actions described. Rather, specific features and actions are disclosed as example forms of implementing the claimed subject matter. The claimed subject matter may be embodied in other ways, may include different elements or operations, and may be used in combination with other existing or future technologies. This specification should not be interpreted as implying any particular order or arrangement between various operations or elements, unless the order of arrangement of the various operations or elements is explicitly described.
[0091] It is understood that the one or more memory components 1404 can store an operating system. According to various configurations, the operating system includes, but is not limited to, WINDOWS MOBILE OS from Microsoft Corporation of Redmond, Washington, WINDOWS PHONE OS from Microsoft Corporation, WINDOWS from Microsoft Corporation, PALM WEBOS from Hewlett-Packard Company of Palo Alto, California, BLACKBERRY OS from Research In Motion Limited of Waterloo, Ontario, Canada, IOS from Apple Inc. of Cupertino, California, and ANDROID OS from Google Inc. of Mountain View, California. Other operating systems are contemplated.
[0092] The network connection component 806 includes a wireless wide area network component ("WWAN component") 822, a wireless local area network component ("WLAN component") 824, and a wireless personal area network component ("WPAN component") 826. The network connection component 806 facilitates communication to and from a network 856 or another network (which may be a WWAN, a WLAN, or a WPAN). Although only network 856 is shown, the network connection component 806 can facilitate simultaneous communication with multiple networks, including networks related to any description herein. For example, the network connection component 806 can facilitate simultaneous communication with multiple networks via one or more of a WWAN, a WLAN, or a WPAN.
[0093] The network 856 may be or may include a WWAN, such as a mobile telecommunication network that utilizes one or more mobile telecommunication technologies to provide voice and / or data services to computing devices utilizing the computing device architecture 800 via the WWAN component 822. The mobile telecommunication technologies may include, but are not limited to, Global System for Mobile Communications (“GSM”), Code Division Multiple Access (“CDMA”) ONE, CDMA7000, Universal Mobile Telecommunications System (“UMTS”), Long Term Evolution (“LTE”), and Worldwide Interoperability for Microwave Access (“WiMAX”). In addition, the network 856 may utilize various channel access methods (which may or may not be used by the aforementioned standards), including, but not limited to, time division multiple access (“TDMA”), frequency division multiple access (“FDMA”), CDMA, wideband CDMA (“W-CDMA”), orthogonal frequency division multiplexing (“OFDM”), space division multiple access (“SDMA”), and the like. Data communications may be provided using General Packet Radio Service ("GPRS"), Enhanced Data Rates for Global Evolution ("EDGE"), the High Speed Packet Access ("HSPA") family of protocols (including High Speed Downlink Packet Access ("HSDPA"), Enhanced Uplink ("EUL") or otherwise known as High Speed Uplink Packet Access ("HSUPA"), Evolved HSPA ("HSPA+"), LTE, and various other current and future wireless data access standards. Network 856 may be configured to provide voice and / or data communications using any combination of the foregoing technologies. Network 856 may be configured or adapted to provide voice and / or data communications in accordance with next generation technologies.
[0094] In some configurations, the WWAN component 822 is configured to provide dual-mode or multi-mode connectivity to the network 856. For example, the WWAN component 822 may be configured to provide connectivity to a network 856 that provides services via GSM and UMTS technologies or via some other combination of technologies. Alternatively, multiple WWAN components 822 may be utilized to perform such functions, and / or to provide additional functionality to support other incompatible technologies (i.e., that cannot be supported by a single WWAN component). The WWAN component 822 may facilitate similar connectivity to multiple networks (e.g., a UMTS network and an LTE network).
[0095] The network 856 may be a WLAN operating in accordance with one or more Institute of Electrical and Electronics Engineers (“IEEE”) 802.11 standards, such as IEEE 802.11a, 802.11b, 802.11g, 802.11n, and / or future 802.11 standards (collectively referred to herein as WI-FI). Draft 802.11 standards are also contemplated. In some configurations, the WLAN is implemented using one or more wireless WI-FI access points. In some configurations, one or more wireless WI-FI access points are another computing device with a connection to a WWAN that functions as a WI-FI hotspot. The WLAN component 824 is configured to connect to the network 856 via a WI-FI access point. Such a connection may be protected via various encryption techniques, including, but not limited to, WI-FI Protected Access (“WPA”), WPA2, Wired Equivalent Privacy (“WEP”), and the like.
[0096] The network 856 may be a WPAN operating in accordance with the Infrared Data Association ("IrDA"), BLUETOOTH, wireless universal serial bus ("USB"), Z-Wave, ZIGBEE, or some other short-range wireless technology. In some configurations, the WPAN component 826 is configured to facilitate communication with other devices such as peripherals, computers or other computing devices via the WPAN. For example, all digital ink devices 100 disclosed herein may communicate with a paired computer 101 via a BLUETOOTH connection, a WI-FI connection, a WI-FIIDIRECT connection, etc.
[0097] Sensor assembly 808 includes a magnetometer 828, an ambient light sensor 830, a proximity sensor 832, an accelerometer 834, a gyroscope 836, and a global positioning system sensor (“GPS sensor”) 838. It is contemplated that other sensors, such as but not limited to temperature sensors or shock detection sensors, may also be incorporated into computing device architecture 800.
[0098] The magnetometer 828 is configured to measure the strength and direction of the magnetic field. In some configurations, the magnetometer 828 provides measurements to a compass application stored in one of the memory components 804 to provide the user with accurate directions in a reference system including the cardinal directions (north, south, east, and west). Similar measurements can be provided to a navigation application that includes a compass component. Other uses of the measurements obtained by the magnetometer 828 are contemplated.
[0099] The ambient light sensor 830 is configured to measure ambient light. In some configurations, the ambient light sensor 830 provides measurements to an application stored in one of the memory components 804 to automatically adjust the brightness of the display (described below) to compensate for low light and high light environments. Other uses of the measurements obtained by the ambient light sensor 830 are contemplated.
[0100] The proximity sensor 832 is configured to detect the presence of an object or object near the computing device without direct contact. In some configurations, the proximity sensor 832 detects the presence of a user's body (e.g., the user's face) and provides this information to an application stored in one of the memory components 804 that uses the proximity information to enable or disable a feature of the computing device. For example, a phone application can automatically disable a touch screen (described below) in response to receiving proximity information so that the user's face during a call does not inadvertently end the call or enable / disable other features within the phone application. Other uses of the proximity information detected by the proximity sensor 828 are contemplated.
[0101] The accelerometer 834 is configured to measure appropriate acceleration. In some configurations, the output from the accelerometer 834 is used by an application as an input mechanism to control a function of the application. For example, the application may be a video game in which a character, a portion thereof, or an object is moved or otherwise manipulated in response to input received via the accelerometer 834. In some configurations, the output from the accelerometer 834 is provided to the application for switching between landscape and portrait modes, calculating coordinate acceleration, or detecting a fall. Other uses of the accelerometer 834 are contemplated.
[0102] The gyroscope 836 is configured to measure and maintain orientation. In some configurations, the output from the gyroscope 836 is used by an application as an input mechanism to control a function of the application. For example, the gyroscope 836 can be used to accurately identify movement within a 3D environment of a video game application or some other application. In some configurations, an application utilizes the output from the gyroscope 836 and the accelerometer 834 to enhance control of a function of the application. Other uses of the gyroscope 836 are contemplated.
[0103] The GPS sensor 838 is configured to receive signals from GPS satellites for calculating positions. The position calculated by the GPS sensor 838 can be used by any application that needs or benefits from position information. For example, the position calculated by the GPS sensor 838 can be used with a navigation application to provide directions from the position to the destination or from the destination to the position. In addition, the GPS sensor 838 can be used to provide position information to external location-based services (such as E911 services). The GPS sensor 838 can utilize one or more network connection components 806 to obtain position information generated via WI-FI, WIMAX and / or cellular triangulation technology to help the GPS sensor 838 obtain positioning. The GPS sensor 838 can also be used in an assisted GPS ("A-GPS") system. The GPS sensor 838 can also operate in conjunction with other components such as the processor 802 to generate positioning data for the computing device 800.
[0104] The I / O component 810 includes a display 840, a touch screen 842, a data I / O interface component ("data I / O") 844, an audio I / O interface component ("audio I / O") 846, a video I / O interface component ("video I / O") 848, and a camera 850. In some configurations, the display 840 and the touch screen 842 are combined. In some configurations, two or more of the data I / O component 844, the audio I / O component 846, and the video I / O component 848 are combined. The I / O component 810 may include a discrete processor configured to support the various interfaces described below, or may include processing functionality built into the processor 802.
[0105] In some configurations, computing device 800 may include a feedback device 851, such as an actuator or solid-state circuit configured to physically vibrate in response to a haptic signal. The processing unit may cause a haptic signal associated with the generated haptic effect to be generated to feedback device 851, which in turn outputs a haptic effect, such as a vibrotactile effect, an electrostatic friction haptic effect, or a deformation haptic effect.
[0106] Feedback device 851 includes a drive circuit. Feedback device 851 can be, for example, a motor, an electromagnetic actuator, a voice coil, a shape memory alloy, an electroactive polymer, a solenoid, an eccentric rotating mass motor ("ERM"), a linear resonant actuator ("LRA"), a piezoelectric actuator, a high bandwidth actuator, an electroactive polymer ("EAP") actuator, an electrostatic friction display, or an ultrasonic vibration generator. In alternative embodiments, computing device 800 can include one or more feedback devices 851.
[0107] Feedback device 851 is an example of a tactile output device, where a tactile output device is a device configured to output a tactile effect such as a vibration tactile effect, an electrostatic friction tactile effect, or a deformation tactile effect in response to a drive signal. In alternative embodiments, feedback device 851 may be replaced with some other type of tactile output device. In addition, in other alternative embodiments, computing device 800 may not include an actuator, and a device separate from computing device 800 includes an actuator or other tactile output device that generates a tactile effect, and computing device 800 sends the generated tactile signal to the device via a communication device.
[0108] The display 840 is an output device configured to present information in a visual form. In particular, the display 840 can present graphical user interface ("GUI") elements, text, images, video, notifications, virtual buttons, virtual keyboards, messaging data, Internet content, device status, time, date, calendar data, preferences, map information, location information, and any other information that can be presented in a visual form. In some configurations, the display 840 is a liquid crystal display ("LCD") utilizing any active or passive matrix technology and any backlight technology (if used). In some configurations, the display 840 is an organic light emitting diode ("OLED") display. Other display types are contemplated.
[0109] The touch screen 842 (also referred to herein as a "touch-enabled screen") is an input device configured to detect the presence and location of a touch. The touch screen 842 may be a resistive touch screen, a capacitive touch screen, a surface acoustic wave touch screen, an infrared touch screen, an optical imaging touch screen, a dispersive signal touch screen, an acoustic pulse recognition touch screen, or may utilize any other touch screen technology.
[0110] In some configurations, the touch screen 842 is incorporated above the display 840 as a transparent layer to enable a user to use one or more touches to interact with objects or other information presented on the display 840. In other configurations, the touch screen 842 is a touchpad incorporated on a surface of the computing device that does not include the display 840. For example, a computing device may have a touch screen incorporated above the display 840 and a touchpad on a surface opposite the display 840.
[0111] In some configurations, the touch screen 842 is a single-touch touch screen. In other configurations, the touch screen 842 is a multi-touch touch screen. In some configurations, the touch screen 842 is configured to detect discrete touches, single-touch gestures, and / or multi-touch gestures. For convenience, these are collectively referred to as gestures in this article. Several gestures will now be described. It should be understood that these gestures are illustrative and are not intended to limit the scope of the appended claims. In addition, the gestures, additional gestures, and / or alternative gestures described can be implemented in software for use with the touch screen 842. In this way, developers can create gestures specific to specific applications.
[0112] In some configurations, the touch screen 842 supports a tap gesture, in which a user taps the touch screen 842 once on an item presented on the display 840. The tap gesture can be used for a variety of reasons, including but not limited to opening or launching whatever the user tapped. In some configurations, the touch screen 842 supports a double-click gesture, in which a user taps the touch screen 842 twice on an item presented on the display 840. The double-click gesture can be used for a variety of reasons, including but not limited to zooming in or out in stages. In some configurations, the touch screen 842 supports a tap-and-hold gesture, in which a user taps the touch screen 842 and maintains contact for at least a predefined time. The tap-and-hold gesture can be used for a variety of reasons, including but not limited to opening a context-specific menu.
[0113] In some configurations, the touch screen 842 supports a pan gesture, in which a user places a finger on the touch screen 842 and maintains contact with the touch screen 842 while moving the finger on the touch screen 842. The pan gesture can be used for various reasons. Functions include, but are not limited to, moving on a screen, image, or menu at a controlled rate. Multiple finger pan gestures are also contemplated. In some configurations, the touch screen 842 supports a flick gesture, in which a user slides a finger in the direction in which the user wants the screen to move. The flick gesture can be used for various reasons, including, but not limited to, scrolling horizontally or vertically on a menu or page. In some configurations, the touch screen 842 supports a pinch and stretch gesture, in which a user uses two fingers (e.g., thumb and index finger) on the touch screen 842 to perform a pinching motion or move the two fingers apart. The pinch and stretch gesture can be used for various reasons, including, but not limited to, gradually zooming in or out of a website, map, or picture.
[0114] Although the above gestures have been described with reference to the use of one or more fingers to perform the gestures, other appendages such as toes, or objects such as a stylus, may be used to interact with the touch screen 842. Therefore, the above gestures should be understood to be illustrative, and should not be construed as being limiting in any way.
[0115] The data I / O interface component 844 is configured to facilitate the input of data to the computing device and the output of data from the computing device. In some configurations, the data I / O interface component 844 includes a connector configured to provide a wired connection between the computing device and the computer system, for example, for synchronization operation purposes. The connector can be a dedicated connector or a standardized connector such as USB, micro USB, mini USB, etc. In some configurations, the connector is a docking connector for docking the computing device with another device such as a docking station, an audio device (e.g., a digital music player), or a video device.
[0116] The audio I / O interface component 846 is configured to provide audio input and / or output capabilities to the computing device. In some configurations, the audio I / O interface component 846 includes a microphone configured to collect audio signals. In some configurations, the audio I / O interface component 846 includes a headphone jack configured to provide a connection for headphones or other external speakers. In some configurations, the audio I / O interface component 846 includes a speaker for the output of audio signals. In some configurations, the audio I / O interface component 846 includes an optical audio cable output.
[0117] The video I / O interface component 848 is configured to provide video input and / or output capabilities to the computing device. In some configurations, the video I / O interface component 848 includes a video connector configured to receive video as input from another device (e.g., a video media player such as a DVD or BLURAY player) or to send video as output to another device (e.g., a display, a television, or some other external display). In some configurations, the video I / O interface component 848 includes a high-definition multimedia interface ("HDMI"), mini HDMI, micro HDMI, DisplayPort, or a proprietary connector for input / output video content. In some configurations, the video I / O interface component 848 or a portion thereof is combined with the audio I / O interface component 846 or a portion thereof.
[0118] The camera 850 may be configured to capture still images and / or video. The camera 850 may utilize a charge coupled device ("CCD") or a complementary metal oxide semiconductor ("CMOS") image sensor to capture images. In some configurations, the camera 850 includes a flash to assist in taking pictures in low light environments. The settings of the camera 850 may be implemented as hardware or software buttons.
[0119] Although not shown, one or more hardware buttons may also be included in the computing device architecture 800. The hardware buttons may be used to control some operational aspects of the computing device. The hardware buttons may be dedicated buttons or multi-purpose buttons. The hardware buttons may be mechanical or sensor-based.
[0120] The power supply assembly 812 shown includes one or more batteries 852 that can be connected to a battery gauge 854. The batteries 852 can be rechargeable or disposable. Rechargeable battery types include, but are not limited to, lithium polymer, lithium ion, nickel cadmium, and nickel metal hydride. Each battery 852 can be made of one or more batteries.
[0121] The battery gauge 854 can be configured to measure battery parameters such as current, voltage, and temperature. In some configurations, the battery gauge 854 is configured to measure the effects of the battery's discharge rate, temperature, age, and other factors to predict the remaining life within a certain percentage of error. In some configurations, the battery gauge 854 provides measurements to an application that is configured to utilize the measurements to present useful power management data to the user. The power management data can include one or more of the percentage of battery used, the percentage of battery remaining, the battery condition, the time remaining, the remaining capacity (e.g., in watt-hours), the current consumption, and the voltage.
[0122] The power supply assembly 812 may also include a power connector that may be combined with one or more of the aforementioned I / O assemblies 810. The power supply assembly 812 may interface with an external power system or charging device via the I / O assembly.
[0123] Sample Clauses
[0124] The disclosure presented herein covers the subject matter set forth in the following clauses.
[0125] Clause 1: A computer-implemented method, comprising: analyzing a capability profile by a computing device, the capability profile including information that can be used by the computing device to adapt data defining a virtual skeleton stored in a computer storage device; retrieving, by the computing device, the data defining the virtual skeleton stored in the computer storage device; adapting, by the computing device, the data defining the virtual skeleton based on the information included in the capability profile, the adaptation performed by the computing device including reducing the complexity of the data defining the virtual skeleton based on the information included in the capability profile, and generating adaptation data defining the adapted virtual skeleton; and storing, by the computing device, the adapted virtual skeleton.
[0126] Clause 2. The computer-implemented method of Clause 1, further comprising receiving the capability profile from a computing device coupled to the computing device to adapt the virtual skeleton stored in the computer storage.
[0127] Clause 3. The computer-implemented method of at least one of Clauses 1-2, wherein the computing device for adapting the data defining the virtual skeleton stored in the computer storage device is part of a distributed computer network.
[0128] Clause 4. A computer-implemented method according to at least one of clauses 1-3, wherein the virtual skeleton stored in the computer storage device includes data defining multiple virtual skeleton joints, each virtual skeleton joint having multiple parameters associated with it, and wherein reducing the complexity of the data defining the virtual skeleton based on the information included in the capability profile includes eliminating multiple parameters associated with the data defining at least one of the multiple virtual skeleton joints.
[0129] Clause 5. A computer-implemented method according to Clause 4, wherein the multiple parameters associated with the data defining at least one of the multiple virtual skeleton joints that are eliminated include at least Cartesian coordinates that specify the position of at least one of the multiple virtual skeleton joints associated with the data defining the virtual skeleton stored in the computer storage device.
[0130] Clause 6. A computer-implemented method according to at least one of clauses 1-5, wherein generating the data defining the adapted virtual skeleton comprises associating the data defining the adapted virtual skeleton with a data structure comprising at least parameters defining each virtual skeleton joint associated with the adapted virtual skeleton.
[0131] Clause 7. The computer-implemented method of Clause 6, wherein the parameters defining each virtual skeletal joint associated with the adapted virtual skeleton include: Cartesian coordinates specifying a virtual skeletal joint position and an angle specifying a virtual skeletal joint rotation.
[0132] Clause 8: A computer-implemented method as recited in at least one of clauses 1-7, wherein the capability profile comprises computing device capability information associated with a computing device to display an avatar incorporating the adapted virtual skeleton using the data defining the adapted virtual skeleton.
[0133] Clause 9. The computer-implemented method of clause 8, wherein the capability profile further comprises virtual skeleton information identifying one or more virtual skeleton fragments to be included in the data defining the adapted virtual skeleton.
[0134] Clause 10: A computer-implemented method, comprising: providing a capability profile by a computing device, the capability profile including information that can be used to adapt data defining a virtual skeleton stored in a computer storage device; receiving by the computing device data defining an adapted virtual skeleton obtained from the data defining the virtual skeleton stored in the computer storage device, the virtual skeleton complexity of the adapted virtual skeleton being less than the virtual skeleton complexity of the virtual skeleton stored in the computer storage device, the data defining the adapted virtual skeleton generated based on the information included in the capability profile; and storing by the computing device the data defining the adapted virtual skeleton in a computer storage device.
[0135] Clause 11. The computer-implemented method of Clause 10, wherein the data defining the adapted virtual skeleton is received from at least one computer associated with a distributed computer network.
[0136] Clause 12. A computer-implemented method according to at least one of clauses 10-11, wherein the data defining the virtual skeleton stored in the computer storage device includes multiple virtual skeleton joints, each virtual skeleton joint having associated multiple virtual skeleton joint parameters, and the number of virtual skeleton joint parameters of the adapted virtual skeleton is less than the virtual skeleton joint parameters associated with the virtual skeleton stored in the computer storage device.
[0137] Clause 13: The computer-implemented method of at least one of clauses 10-12, the data defining the adapted virtual skeleton being received in a data structure comprising at least parameters defining each virtual skeleton joint associated with the adapted virtual skeleton.
[0138] Clause 14. The computer-implemented method of clause 13, wherein the parameters defining each virtual skeletal joint associated with the adapted virtual skeleton include: Cartesian coordinates specifying a virtual skeletal joint position and an angle specifying a virtual skeletal joint rotation.
[0139] Clause 15. A computer-implemented method as described in at least one of clauses 10-14, wherein the capability profile includes computing device capability information associated with the computing device to use the data defining the adapted virtual skeleton to display an avatar incorporating the adapted virtual skeleton.
[0140] Clause 16. The computer-implemented method of Clause 15, wherein the capability profile further comprises virtual skeleton information identifying one or more virtual skeleton fragments to be included in the data defining the adapted virtual skeleton.
[0141] Clause 17. A computing device comprising: a processor; a computer-readable storage medium in communication with the processor, the computer-readable storage medium having computer-executable instructions stored thereon, the computer-executable instructions, when executed by the processor, causing the processor to: analyze a capability profile, the capability profile comprising information that can be used by the computing device to adapt data defining a virtual skeleton; adapt the data defining the virtual skeleton based on the information included in the capability profile, the adaptation comprising reducing the complexity of the data defining the virtual skeleton based on the information included in the capability profile, and generating data defining an adapted virtual skeleton; and store the adapted virtual skeleton.
[0142] Clause 18: The computing device of clause 17, wherein the computer executable instructions, when executed by the processor, further cause the processor to receive the capability profile from a remote computing device coupled to the computing device to adapt the data defining the virtual skeleton.
[0143] Clause 19. A computing device according to at least one of clauses 17-18, wherein the data defining the virtual skeleton includes multiple virtual skeleton joints, each virtual skeleton joint having multiple parameters associated with it, and wherein reducing the complexity of the data defining the virtual skeleton based on the information included in the capability profile includes eliminating multiple parameters associated with at least one of the multiple virtual skeleton joints.
[0144] Clause 20. A computing device according to Clause 19, wherein the eliminated multiple parameters associated with at least one of the multiple virtual skeleton joints include at least Cartesian coordinates that specify the position of the at least one of the multiple virtual skeleton joints associated with the data defining the virtual skeleton.
[0145] Although the techniques have been described in language specific to structural features and / or methodological acts, it should be understood that the appended claims are not necessarily limited to the described features or acts. Rather, the features and acts are described as example implementations of the techniques.
[0146] The implementation described herein solves the technical need of providing a virtual skeleton based on the capabilities associated with a computing device. In order to at least solve this technical need, the implementation described herein provides a computing device that analyzes a capability profile to generate an adapted virtual skeleton based on a virtual skeleton that can be a main virtual skeleton or a highly detailed virtual skeleton. At least one benefit of providing such an adapted virtual skeleton is to eliminate unnecessary processor overhead associated with using a computing device to generate individual virtual skeletons for multiple computing devices. Eliminating unnecessary processor overhead can reduce battery consumption and eliminate unnecessary memory usage associated with a computing device. Other technical benefits not specifically identified herein can also be achieved through the implementation of the disclosed technology.
[0147] It should be understood that the above subject matter can be implemented as a computer-controlled device, a computer process, a computing system, or an article such as a computer-readable storage medium. Among many other benefits, the technology herein improves efficiency relative to various computing resources. For example, since the use of the technology disclosed herein enables users and individuals to remotely manipulate the drawn streams within a graphical environment associated with a communication session to better reflect their interactions in the communication session, manual interaction with devices and systems can be improved. Other technical effects other than those mentioned herein can also be achieved from the implementation of the technology disclosed herein.
[0148] The operation of the example method is shown in each box and summarized with reference to those boxes. These methods are shown as a logical flow of boxes, each of which can represent one or more operations that can be done with hardware, software or a combination thereof. In the context of software, an operation represents a computer executable instruction stored on one or more computer-readable media, which enables one or more processors to perform the operation when executed by one or more processors. Typically, computer executable instructions include routines, programs, objects, modules, components, data structures, etc. that perform specific functions or implement specific abstract data types. The order in which the operations are described is not intended to be interpreted as a limitation, and any number of the described operations can be performed in any order, combined in any order, subdivided into multiple sub-operations, and / or performed in parallel to implement the described process. The described process can be performed by resources associated with one or more devices such as one or more internal or external CPUs or GPUs and / or one or more hardware logics such as FPGAs, DSPs or other types of accelerators.
[0149] All methods and processes described above can be embodied and fully automated via software code modules executed by one or more general-purpose computers or processors. The code modules can be stored in any type of computer-readable storage medium or other computer storage device. Some or all of these methods can alternatively be embodied in dedicated computer hardware.
[0150] Unless expressly stated otherwise, conditional language such as "can," "could," "might," or "may" is understood in context to mean that certain examples include and other examples do not include certain features, elements, and / or steps. Thus, such conditional language is generally not intended to imply that certain features, elements, and / or steps are in any way required for one or more examples, nor is it intended to imply that one or more examples must include logic for deciding whether certain features, elements, and / or steps are included or to be performed in any particular example with or without user input or prompting. Unless specifically stated otherwise, linking language such as the phrase "at least one of X, Y, or Z" should be understood to mean that an item, term, etc. can be X, Y, or Z, or a combination thereof.
[0151] Any routine description, element or frame in the flow chart described in this article and / or depicted in the accompanying drawings should be understood to potentially represent a module, a fragment or a code portion including one or more executable instructions for realizing a specific logical function or element in a routine. Alternative implementations are included in the scope of the examples described in this article, wherein elements or functions can be deleted, or are performed from the order shown or discussed, including substantially synchronously or in reverse order, depending on the functions involved, as those skilled in the art will understand. It should be emphasized that many changes and modifications can be made to the above examples, and elements therein should be understood to be other acceptable examples. All such modifications and changes are intended to be included in the scope of this disclosure and are protected by the appended claims.
Claims
1. A computer-implemented method comprising: analyzing, by a computing device, a capability profile, the capability profile comprising a hardware resource level of the computing device, wherein the hardware resource level indicates: a level of at least one of a processing or graphics capability of the computing device, and one or more motion tracking capabilities of an avatar system for tracking at least one of a position and movement of a user; retrieving, by the computing device, data defining a virtual skeleton stored in a computer storage device; Adapting, by the computing device, the data defining the virtual skeleton based on the hardware resource level of the computing device and the one or more motion tracking capabilities of the avatar system, the adapting by the computing device comprising: reducing complexity of the data defining the virtual skeleton based on the hardware resource level of the computing device and the one or more motion tracking capabilities of the avatar system; generating, by the computing device, data defining an adapted virtual skeleton from the adapted data; storing, by the computing device, the data defining the adapted virtual skeleton; and An avatar incorporating the data defining the adapted virtual skeleton is displayed by the computing device. 2 . The computer-implemented method of claim 1 , wherein the hardware resource level of the computing device is indicated by a low resource level, a medium resource level, and a high resource level.
3. The computer-implemented method of claim 2, wherein the computing device for adapting the data defining the virtual skeleton stored in the computer storage device is part of a distributed computer network.
4. The computer-implemented method of claim 1 , wherein the virtual skeleton stored in the computer storage device includes data defining a plurality of virtual skeleton joints, each virtual skeleton joint having a plurality of parameters associated therewith, and wherein reducing the complexity of the data defining the virtual skeleton based on information included in the capability profile comprises: A plurality of parameters associated with the data defining at least one virtual skeletal joint of the plurality of virtual skeletal joints are eliminated.
5. A computer-implemented method according to claim 4, wherein the multiple parameters associated with the data defining at least one of the multiple virtual skeleton joints that are eliminated include at least Cartesian coordinates, which specify the position of the at least one of the multiple virtual skeleton joints associated with the data defining the virtual skeleton stored in the computer storage device.
6. The computer-implemented method of claim 1 , wherein generating the data defining the adapted virtual skeleton comprises: The data defining the adapted virtual skeleton is associated with a data structure including at least parameters defining each virtual skeleton joint associated with the adapted virtual skeleton.
7. The computer-implemented method of claim 6, wherein defining the parameters of each virtual skeleton joint associated with the adapted virtual skeleton comprises: Specifies the Cartesian coordinates of the virtual skeleton joint positions and the angles of rotation of the virtual skeleton joints.
8. A computer-implemented method according to claim 1, wherein the one or more motion tracking capabilities of the avatar system include the ability of the avatar system to monitor head position, monitor head rotation, eye tracking, gaze tracking, hand tracking, and finger tracking.
9. The computer-implemented method of claim 1 , wherein said adapting, by said computing device, said data defining said virtual skeleton based on said one or more motion tracking capabilities of said avatar system comprises: Based on the motion tracking capabilities of the avatar system, a plurality of virtual skeleton joints are eliminated from the data defining the virtual skeleton.
10. A computer-implemented method comprising: providing, by a computing device, a capability profile, the capability profile comprising a hardware resource level of the computing device, wherein the hardware resource level indicates: a level of at least one of a processing or graphics capability of the computing device, and one or more motion tracking capabilities of an avatar system for tracking at least one of a position and movement of a user; receiving, by the computing device, data defining an adapted virtual skeleton derived from data defining a virtual skeleton stored in a computer storage device and the one or more motion tracking capabilities of the avatar system, the adapted virtual skeleton having a virtual skeleton complexity that is less than a virtual skeleton complexity of the virtual skeleton stored in the computer storage device, the data defining the adapted virtual skeleton, the adapted virtual skeleton being generated based on the hardware resource level of the computing device and the one or more motion tracking capabilities of the avatar system; storing, by the computing device, the data defining the adapted virtual skeleton; as well as An avatar incorporating the data defining the adapted virtual skeleton is displayed by the computing device.
11. The computer-implemented method of claim 10, wherein the data defining the adapted virtual skeleton is received from at least one computer associated with a distributed computer network.
12. A computer-implemented method according to claim 10, wherein the data defining the virtual skeleton stored in the computer storage device includes multiple virtual skeleton joints, each virtual skeleton joint has associated multiple virtual skeleton joint parameters, and the number of virtual skeleton joint parameters of the adapted virtual skeleton is less than the virtual skeleton joint parameters associated with the virtual skeleton stored in the computer storage device.
13. The computer-implemented method of claim 10, the data defining the adapted virtual skeleton being received in a data structure including at least parameters defining each virtual skeleton joint associated with the adapted virtual skeleton.
14. The computer-implemented method of claim 13, wherein defining the parameters of each virtual skeleton joint associated with the adapted virtual skeleton comprises: Specifies the Cartesian coordinates of the virtual skeleton joint positions and the angles of rotation of the virtual skeleton joints.
15. The computer-implemented method of claim 10, wherein the capability profile further comprises computing device capability information associated with the computing device to display the avatar incorporating the adapted virtual skeleton using the data defining the adapted virtual skeleton.
16. The computer-implemented method of claim 15, wherein the capability profile further comprises virtual skeleton information identifying one or more virtual skeleton fragments to be included in the data defining the adapted virtual skeleton.
17. A computing device comprising: processor; a computer-readable storage medium in communication with the processor, the computer-readable storage medium having computer-executable instructions stored thereon that, when executed by the processor, cause the processor to: analyzing a capability profile, the capability profile comprising a hardware resource level of the computing device, wherein the hardware resource level indicates: a level of at least one of processing or graphics capabilities of the computing device, and one or more motion tracking capabilities of an avatar system for tracking at least one of a position and movement of a user; Adapting data defining a virtual skeleton based on the hardware resource level of the computing device and the one or more motion tracking capabilities of the avatar system, the adapting comprising: reducing complexity of the data defining the virtual skeleton based on the hardware resource level of the computing device and the one or more motion tracking capabilities of the avatar system; generating data defining an adapted virtual skeleton from the adapted data; storing the adapted virtual skeleton; and An avatar incorporating the data defining the adapted virtual skeleton is displayed by the computing device.
18. The computing device of claim 17, wherein the computer executable instructions, when executed by the processor, further cause the processor to receive the capability profile from a remote computing device coupled to the computing device to adapt the data defining the virtual skeleton.
19. The computing device of claim 17, wherein the data defining the virtual skeleton includes a plurality of virtual skeleton joints, each virtual skeleton joint having a plurality of parameters associated therewith, and wherein reducing the complexity of the data defining the virtual skeleton based on the information included in the capability profile comprises: A plurality of parameters associated with at least one virtual skeletal joint of the plurality of virtual skeletal joints are eliminated.
20. A computing device according to claim 19, wherein the multiple parameters associated with the at least one virtual skeleton joint among the multiple virtual skeleton joints that are eliminated include at least Cartesian coordinates that specify the position of the at least one virtual skeleton joint among the multiple virtual skeleton joints associated with the data defining the virtual skeleton.
Citation Information
Patent Citations
Avatar construction using depth camera
CN104395929A
Automated service profiling and orchestration
CN106537843A