Animation processing of virtual objects
By automatically retrieving data from the API and animates virtual objects, the problem of resource-intensive and manually associated animations is solved, achieving more realistic contextual relevance and user interaction.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2025-08-20
- Publication Date
- 2026-03-27
AI Technical Summary
Creating animated virtual objects is resource-intensive, and existing technologies require manually associating animations with virtual objects, resulting in animations that are unsuitable for different environments and lack context relevance.
The device automatically obtains data from the application programming interface (API) associated with the virtual object, and animates the virtual object based on this data, including weather, location, music, social media and payment data, and dynamically adjusts the behavior of the virtual object to adapt to the current situation.
It reduces the need to store pre-created animations, improves the contextual relevance of animations, makes virtual objects more realistic, increases user interaction, and extends the retention of real-world content.
Smart Images

Figure CN121746548A_ABST
Abstract
Description
[0001] Cross Reference to Related Applications
[0002] This application claims priority to U.S. Provisional Patent Application No. 63 / 699,892, filed September 27, 2024, which is hereby incorporated by reference in its entirety. TECHNICAL FIELD
[0003] The present disclosure relates generally to animating virtual objects. BACKGROUND
[0004] Some devices include displays. Some devices display virtual objects on the displays. Creating virtual objects can be resource intensive. Some virtual objects are static, while some virtual objects are animated. Producing animated virtual objects tends to be resource intensive for content creators. BRIEF DESCRIPTION OF DRAWINGS
[0005] For purposes of summarizing the disclosure, certain aspects, some of which are exemplary, are described in more detail below. Some of the inventive aspects can be implemented in software, hardware, firmware, middleware or a combination thereof, and can be
[0006] Figures 1A-1I is an illustration of an example environment according to some implementations.
[0007] Figure 2 is a block diagram of a system to animate objects according to some implementations.
[0008] Figure 3 is a flowchart representation of a method to automatically animate objects according to some implementations.
[0009] Figure 4 is a block diagram of a device to automatically animate objects according to some implementations.
[0010] According to common practice the various features illustrated in the drawings can not be drawn to scale. Accordingly, the dimensions of the various features can be arbitrarily expanded or reduced for the clarity of presentation. In addition, some of the drawings can not depict all of the components of a given system, method or device. Finally, like reference numerals can be used to denote like features throughout the specification and figures. SUMMARY
[0011] Various implementations disclosed herein include devices, systems, and methods for animating virtual objects. In some implementations, a device includes a display, one or more processors, and non-transitory memory. In various implementations, a method includes obtaining a virtual object that can be animated. In some implementations, the method includes determining that an animation of the virtual object is a function of a value obtained from a first application programming interface (API) of a plurality of APIs available at the device. In some implementations, the method includes displaying the animation of the virtual object according to the value obtained from the first API.
[0012] According to some implementations, a device includes one or more processors, non-transitory memory, and one or more programs. In some implementations, the one or more programs are stored in the non-transitory memory and executed by the one or more processors. In some implementations, the one or more programs include instructions for performing or causing to perform any of the methods described herein. According to some implementations, a non-transitory computer-readable storage medium has stored therein the instructions which, when executed by one or more processors of a device, cause the device to perform or cause to perform any of the methods described herein. According to some implementations, a device includes one or more processors, non-transitory memory, and means for performing or causing to perform any of the methods described herein. DETAILED DESCRIPTION
[0013] Many details are described to provide a thorough understanding of example implementations shown in the drawings. The drawings are merely examples of some example aspects that can be described and are therefore not to be considered limiting. One skilled in the art will understand that other effective aspects and / or variants can not include all of the specific details described herein. Moreover, well-known systems, methods, components, devices and circuits have not been described in detail so as not to obscure the relating aspects of the example implementations described herein.
[0014] Virtual objects without animation are static and have relatively low utility. Animating virtual objects tends to be a resource-intensive operation. For example, a creator of a virtual object can have to manually associate an animation with the virtual object. Moreover, associating a particular animation with a virtual object can make the virtual object unsuitable for certain environments. For example, the same animation can not be relevant in different environments.
[0015] The present disclosure provides methods, systems, and / or devices for automatically animating virtual objects based on data obtained from application programming interfaces (APIs) associated with the virtual objects. Creators of virtual objects can associate the virtual objects with certain APIs. When a device obtains a virtual object, the device detects the virtual object's association with certain APIs. The device can obtain data from the APIs associated with the virtual object and animate the virtual object according to the data obtained from the APIs associated with the virtual object.
[0016] For example, a virtual object can be associated with a weather API. The device obtains weather data from the weather API and animates the virtual object according to the weather data obtained from the weather API. For example, if the weather data indicates that it is snowing, the device animates the virtual object such that virtual snow falls on the virtual object and / or the virtual object is displayed in a frozen state (e.g., virtual frost or virtual icicles form on top of the virtual object).
[0017] For another example, a virtual object can be associated with a location API. The device obtains location data from the location API and animates the virtual object according to the location data obtained from the location API. For example, if the location data indicates that the device is located at a private location (e.g., the user's home), the device animates the virtual object according to animations designed for private locations (e.g., a thumbs up to indicate approval). In this example, if the location data indicates that the device is located at a public location (e.g., outside the user's home, such as at a shopping mall), the device animates the virtual object according to animations designed for public locations (e.g., a nod to indicate approval).
[0018] For another example, a virtual object can be associated with a music API. The device obtains music data (e.g., data of what is currently playing) from the music API and animates the virtual object according to the music that is currently playing. For example, if the music data indicates that the device is currently playing a workout playlist, the device animates the virtual object to perform a workout animation (e.g., a push-up), and if the music data indicates that the device is currently playing a dance playlist, the device animates the virtual object to perform a dance animation (e.g., a twerk).
[0019] Animating virtual objects automatically based on API data reduces the need for content creators to manually associate animations with virtual objects, thereby saving memory needed to store pre-authored animations. Additionally, animating virtual objects automatically based on API data makes animations more contextually relevant than pre-authored animations, thereby increasing user interaction with the device. Further, animating virtual objects automatically based on API data allows the device to adjust the behavior of virtual objects based on the current context of the device or user of the device, thereby making virtual objects appear more realistic and responsive to the user’s surroundings. Contextually aware animations of virtual objects tend to increase device usage, user satisfaction, and retention of extended reality (XR) content.
[0020] Figure 1A is an illustration of an example physical environment 10 in accordance with some implementations. Although relevant features are shown, one of ordinary skill in the art will appreciate from the disclosure herein that various other features have not been shown for purposes of brevity and to not obscure more relevant aspects of the example implementations disclosed herein. In various implementations, the physical environment 10 includes a user 12, an electronic device 20 having a display 22 (hereinafter referred to for brevity as “device 20”), and an object animation system 200 for automatically animating virtual objects displayed on the display 22. In some implementations, the object animation system 200 resides at the device 20. Alternatively, in some implementations, the object animation system 200 resides at another device in electronic communication with the device 20. For example, the device 20 includes a head-mounted device (HMD), and the object animation system 200 resides at a smartphone wirelessly connected to the HMD.
[0021] In Figure 1A example, the device 20 displays an extended reality (XR) environment 30. In some implementations, the XR environment 30 is a see-through representation of the physical environment 10. Alternatively, in some implementations, the XR environment 30 is a virtual environment. In Figure 1A example, the XR environment 30 includes a virtual tower 40. In some implementations, the device 20 presents a graphical user interface (GUI) that enables the user 12 to import the virtual tower 40 into the XR environment 30. For example, in some implementations, the device 20 displays an import button that the user 12 presses to trigger display of a library of objects having various virtual objects, and the user 12 selects the virtual tower 40 from the library of objects.
[0022] In various implementations, the virtual tower 40 is not pre-associated with an animation. Thus, the virtual tower 40 can be a static object. For example, a content creator that created the virtual tower 40 did not create an animation for the virtual tower or associate the virtual tower 40 with an existing animation from an animation library. In various implementations, even though the virtual tower 40 is not associated with an animation, the device 20 and / or the object animation system 200 determines to animate the virtual tower 40. The object animation system 200 obtains API data 50 from a set of one or more application programming interfaces (APIs) and animates the virtual tower 40 based on the API data 50. Animating the virtual tower 40 causes the virtual tower 40 to transform from a static object to a dynamic object that becomes more relevant to the current context of the device 20 or the user 12 in response to changing conditions in the physical environment 10.
[0023] In Figure 1A the example, the virtual tower 40 represents a physical tower at a geographic location that is remote from the physical environment 10. For example, the virtual tower 40 represents the Eiffel Tower in Paris, while the device 20 is in the United States. In some implementations, the API data 50 provides information about the geographic location of the physical tower that the virtual tower 40 represents. For example, the API data 50 provides information related to Paris. In such implementations, the object animation system 200 animates the virtual tower 40 based on the information about the geographic location of the physical tower rather than the current geographic location of the device 20 (e.g., based on information related to Paris rather than the United States where the device 20 is located).
[0024] Referring to Figure 1B , the API data 50 includes weather data 52 from a weather API. In Figure 1B the example, the weather data 52 indicates that it is snowing in Paris. In response to the weather data 52 indicating that it is snowing in Paris, the object animation system 200 presents a snowing animation 42 by displaying virtual snow 44 falling on the top of the virtual tower 40. Displaying the virtual snow 44 tends to increase the user’s 12 interaction with the virtual tower 40. Displaying the virtual snow 44 reduces the need for the user 12 to query the weather in Paris, thereby saving resources associated with performing a Paris weather search.
[0025] In some implementations, the object animation system 200 also animates the virtual tower 40 based on the API data 50. For example, if the weather data 52 indicates a temperature value that is less than a threshold temperature, the object animation system 200 displays virtual frost formation on the virtual tower 40 by applying a frost formation animation on the virtual tower 40. As another example, when the weather data 52 indicates a temperature value that is less than a threshold temperature and melting snow or ice re-freezes while dripping from the virtual tower 40, the object animation system 200 displays virtual icicle formation on the virtual tower 40 by applying an icicle formation animation on the virtual tower 40.
[0026] In some implementations, the object animation system 200 animates the virtual tower 40 based on API data 50 from other APIs. For example, the object animation system 200 overlays a virtual lighting animation (e.g., a light show) on top of the virtual tower 40 based on music data from a music API. In some implementations, the music data indicates the music that the device 20 is currently playing, and the object animation system 200 changes parameters of the virtual lighting animation based on the music that the device 20 is currently playing. For example, the rate of blinking, color, and / or intensity of the lights overlaid on the virtual tower 40 are a function of the audio characteristics of the music that the device is currently playing. In some examples, as the music gets louder, the lights get brighter, as the music gets softer, the lights dim, as the music tempo speeds up, the lights blink faster, and as the music tempo slows down, the lights blink slower.
[0027] Figure 1C A virtual character 70 is displayed with various joints 72. In the example of FIG. 7, the joints 72 include a neck joint 72a, a left shoulder joint 72b, a right shoulder joint 72c, a left elbow joint 72d, a right elbow joint 72e, a left wrist joint 72e, a right wrist joint 72g, a hip joint 72h, a left knee joint 72i, a right knee joint 72j, a left ankle joint 72k, and a right ankle joint 72l. The object animation system 200 detects the joints 72 and determines that at least some of the API data 50 is available to manipulate the joints 72. Figure 1C
[0028] In the example of FIG. 7, the object animation system 200 determines that weather data 54 from a weather API and location data 56 from a location API are available to manipulate the joints 72. In some implementations, the weather data 54 includes a temperature value, a precipitation value, a wind speed, and / or an indication of whether it is sunny or cloudy. In some implementations, the location data 56 includes a current geographic location of the device 20. In some implementations, the location data 56 indicates whether the device 20 is located indoors or outdoors. Figure 1C
[0029] Referring to FIG. 8, in some implementations, the object animation system 200 detects a weather condition 80 based on the weather data 54 and triggers the virtual character 70 to perform a corresponding animation 82 (e.g., a weather-based animation). For example, when the weather data 54 indicates that the temperature of the physical environment is less than 50 degrees Fahrenheit, the object animation system 200 determines that a first weather condition 80a is satisfied. In response to determining that the first weather condition 80a is satisfied, the object animation system 200 triggers the virtual character 70 to perform a shivering animation 82a to provide a visual effect that shows the virtual character 70 shivering due to the relatively cold environment. Figure 1D
[0030] For another example, when the weather data 54 indicates that the temperature of the physical environment is less than 40 degrees Fahrenheit, the subject animation system 200 determines that the second weather condition 80b is satisfied. In response to determining that the second weather condition 80b is satisfied, the subject animation system 200 triggers the virtual character 70 to perform a coat-putting-on animation 82b to provide a visual effect that shows the virtual character 70 putting on a virtual coat to protect itself from the relatively cold environment.
[0031] For another example, when the weather data 54 indicates that the temperature of the physical environment is greater than 80 degrees Fahrenheit, the subject animation system 200 determines that the third weather condition 80c is satisfied. In response to determining that the third weather condition 80c is satisfied, the subject animation system 200 triggers the virtual character 70 to perform a sweat-wiping animation 82c to provide a visual effect that shows the virtual character 70 feeling hot and wiping virtual sweat from its virtual forehead.
[0032] For another example, when the weather data 54 indicates that there is light rain (e.g., a drizzle, such as a precipitation value less than a threshold value) in the physical environment, the subject animation system 200 determines that the fourth weather condition 80d is satisfied. In response to determining that the fourth weather condition 80d is satisfied, the subject animation system 200 triggers the virtual character 70 to perform a dancing animation 82d to provide a visual effect that shows the virtual character 70 dancing and enjoying the light rain.
[0033] For another example, when the weather data 54 indicates that there is heavy rain (e.g., a storm, such as a precipitation value greater than a threshold value) in the physical environment, the subject animation system 200 determines that the fifth weather condition 80e is satisfied. In response to determining that the fifth weather condition 80e is satisfied, the subject animation system 200 triggers the virtual character 70 to perform an umbrella-opening animation 82e to provide a visual effect that shows the virtual character 70 opening a virtual umbrella to protect itself from the heavy rain.
[0034] For another example, when the weather data 54 indicates that it is sunny and windy in the physical environment (e.g., an ambient light value is greater than an ambient light threshold value and a wind speed is greater than a wind speed threshold value), the subject animation system 200 determines that the sixth weather condition 80f is satisfied. In response to determining that the sixth weather condition 80f is satisfied, the subject animation system 200 triggers the virtual character 70 to perform a sunglasses-putting-on animation 82e to provide a visual effect that shows the virtual character 70 putting on a pair of virtual sunglasses to protect itself from the intense sunlight.
[0035] As another example, when the weather data 54 indicates that it is sunny and relatively windless (e.g., the ambient light value is greater than the ambient light threshold and the wind speed is less than the wind speed threshold), the object animation system 200 determines that the seventh weather condition 80g is satisfied. In response to determining that the seventh weather condition 80g is satisfied, the object animation system 200 triggers the virtual character 70 to perform the hat-on animation 82g to provide a visual effect that shows the virtual character 70 putting on a virtual hat to protect itself from the strong sunlight.
[0036] With reference to the example of the sixth weather condition 80f, a virtual hat can fly off when there is wind, while virtual sunglasses can stay on even when there is wind. Thus, it can be more realistic (e.g., similar to an operation that the user 12 can perform) to perform the sunglasses-on animation 82f rather than the hat-on animation 82g when there is wind. In contrast, in the example of the seventh weather condition 80g, it can appear realistic to perform the hat-on animation 82g because a hat is less likely to fly off when the wind is relatively calm.
[0037] With reference to the example of the sixth weather condition 80f, a virtual hat can fly off when there is wind, while virtual sunglasses can stay on even when there is wind. Thus, it can be more realistic (e.g., similar to an operation that the user 12 can perform) to perform the sunglasses-on animation 82f rather than the hat-on animation 82g when there is wind. In contrast, in the example of the seventh weather condition 80g, it can appear realistic to perform the hat-on animation 82g because a hat is less likely to fly off when the wind is relatively calm. Figure 1E Figure 1E In the example of the sixth weather condition 80f, the weather data 54 satisfies the sixth weather condition 80f because the ambient light value is greater than the ambient light threshold and the wind speed is less than the wind speed threshold. Thus, in response to determining that the weather data 54 satisfies the sixth weather condition 80f, the object animation system 200 animates the virtual character 70 in accordance with the sunglasses-on animation 82f. As shown in Figure 1D Figure 1E In the example of the seventh weather condition 80g, the weather data 54 satisfies the seventh weather condition 80g because the ambient light value is greater than the ambient light threshold and the wind speed is less than the wind speed threshold. Thus, in response to determining that the weather data 54 satisfies the seventh weather condition 80g, the object animation system 200 animates the virtual character 70 in accordance with the hat-on animation 82g. As shown in
[0038] With reference to the example of the sixth weather condition 80f, a virtual hat can fly off when there is wind, while virtual sunglasses can stay on even when there is wind. Thus, it can be more realistic (e.g., similar to an operation that the user 12 can perform) to perform the sunglasses-on animation 82f rather than the hat-on animation 82g when there is wind. In contrast, in the example of the seventh weather condition 80g, it can appear realistic to perform the hat-on animation 82g because a hat is less likely to fly off when the wind is relatively calm. Figure 1F In some implementations, the API data 50 includes music data 58 that indicates a type of music that is currently playing on the device 20. In some implementations, the object animation system 200 detects a music condition 90 based on the music data 58 and triggers the virtual character 70 to perform a corresponding animation 92 (e.g., a music-based animation). For example, when the music data 58 indicates that the device 20 is currently playing classical music (e.g., a classical composition by a famous composer), the object animation system 200 determines that a first music condition 90a is satisfied. In response to determining that the first music condition 90a is satisfied, the object animation system 200 triggers the virtual character 70 to perform a ballet animation 92a to provide a visual effect that shows the virtual character 70 performing ballet moves (e.g., a combination of a pirouette, arabesque, and plié).
[0039] As another example, when the music data 58 indicates that the device 20 is currently playing jazz music (e.g., swing jazz or big band music), the object animation system 200 determines that a second music condition 90b is satisfied. In response to determining that the second music condition 90b is satisfied, the object animation system 200 triggers the virtual character 70 to perform a swing dance animation 92b to provide a visual effect that shows the virtual character 70 performing swing dance moves (e.g., a combination of jumps, spins, and lifts).
[0040] As another example, when the music data 58 indicates that the device 20 is currently playing jazz music (e.g., swing jazz or big band music), the object animation system 200 determines that a second music condition 90b is satisfied. In response to determining that the second music condition 90b is satisfied, the object animation system 200 triggers the virtual character 70 to perform a swing dance animation 92b to provide a visual effect that shows the virtual character 70 performing swing dance moves (e.g., a combination of jumps, spins, and lifts).
[0041] As another example, when the music data 58 indicates that the device 20 is currently playing jazz music (e.g., swing jazz or big band music), the object animation system 200 determines that a second music condition 90b is satisfied. In response to determining that the second music condition 90b is satisfied, the object animation system 200 triggers the virtual character 70 to perform a swing dance animation 92b to provide a visual effect that shows the virtual character 70 performing swing dance moves (e.g., a combination of jumps, spins, and lifts).
[0042] For another example, when the music data 58 indicates that the device 20 is currently playing electronic music (e.g., music with a fast tempo), the object animation system 200 determines that the fifth music condition 90e is satisfied. In response to determining that the fifth music condition 90e is satisfied, the object animation system 200 triggers the virtual character 70 to perform a strut dance animation 92e to provide a visual effect that shows the virtual character 70 is dancing a strut dance (e.g., performing quick movements and gliding steps from heel to toe).
[0043] For another example, when the music data 58 indicates that the device 20 is currently playing country music, the object animation system 200 determines that the sixth music condition 90f is satisfied. In response to determining that the sixth music condition 90f is satisfied, the object animation system 200 triggers the virtual character 70 to perform a line dance animation 92f to provide a visual effect that shows the virtual character 70 is dancing a line dance (e.g., to provide a visual effect that shows the virtual character 70 is part of a line or group and performs synchronized steps).
[0044] For another example, when the music data 58 indicates that the device 20 is currently playing Latin music, the object animation system 200 determines that the seventh music condition 90g is satisfied. In response to determining that the seventh music condition 90g is satisfied, the object animation system 200 triggers the virtual character 70 to perform a salsa dance animation 92g to provide a visual effect that shows the virtual character 70 is dancing a salsa dance (e.g., by performing quick movements with complex steps that include spins and hip movements).
[0045] In various implementations, in response to selecting one of the animations 92, the object animation system 200 instructs the motion controller to generate torque values for the joints 72 of the virtual character. For example, the motion controller generates a first set of torque values for the ballet animation 92a. In this example, when the first set of torque values are applied to the joints 72 of the virtual character 70, the virtual character 70 appears to be performing ballet dance moves. For another example, the motion controller generates a second set of torque values for the swing dance animation 92b. In this example, when the second set of torque values are applied to the joints 72 of the virtual character 70, the virtual character 70 appears to be dancing a swing dance.
[0046] In some implementations, the object animation system 200 triggers the virtual character 70 to perform the animation 92 when the device 20 is located in a first type of location (e.g., indoors, such as in a private location like the home of the user 12). In some implementations, the object animation system 200 triggers the virtual character 70 to perform a modified version of the animation 92 when the device 20 is located in a second type of location that is different from the first type of location (e.g., outdoors, such as in a public location like a park or playground). For example, when the device 20 is located in a public environment, the object animation system 200 forgoes the striding gait associated with the animation 92 by not animating the knee joints 72i and 72j and the ankle joints 72k and 72l of the virtual character 70.
[0047] Referring to Figure 1G , the music data 58 indicates that the device 20 is currently playing pop music. As shown in Figure 1F , playing pop music satisfies a third music condition 90c. In response to determining that the third music condition 90c is satisfied, the object animation system 200 selects a breakdancing animation 92c. The motion controller generates torque values for the joints 72 to exhibit the breakdancing animation 92c. In accordance with the breakdancing animation 92c, the torque values are applied to the joints 72 to provide a visual effect that shows the virtual character 70 is breakdancing.
[0048] Referring to Figure 1H , in some implementations, the object animation system 200 further selects the animation based on the location data 56. In Figure 1G , the location data 56 indicates that the device 20 is located indoors. In some implementations, when the device 20 is located indoors, the object animation system 200 selects the animation 92 shown in Figure 1F . In some implementations, when the device 20 is located outdoors, the object animation system 200 selects a different animation. As shown in Figure 1H , in some implementations, when the device 20 is located outdoors, the object animation system 200 selects a nodding animation 92d regardless of the type of music that the device 20 is playing. As indicated by the double-headed arrow adjacent to the head of the virtual character 70, the virtual character is performing a nod 76 in accordance with the nodding animation 92d. Because the user 12 can respond differently to music based on the location where the user 12 is listening to the music, changing the animation based on the location of the device 20 results in more realistic behavior of the virtual character 70. For example, the user 12 can perform a nodding motion when listening to pop music in an outdoor park. In this example, when the device 20 is located outdoors and the device 20 is playing pop music, the object animation system 200 selects the nodding animation 92d to mimic the likely behavior of the user 12.
[0049] Referring to Figure 1IIn some implementations, the API data 50 includes social media data 60 that indicates social media activity related to the user 12. In some implementations, the object animation system 200 detects a social media condition 100 based on the social media data 60 and triggers the virtual character 70 to perform a corresponding animation 102. For example, when the social media data 60 indicates that the number of posts related to the user 12 exceeds a threshold number of posts (e.g., the number of recent promotion-related congratulatory replies received by the user 12 exceeds 25), the object animation system 200 determines that a first social media condition 100a is satisfied. In response to determining that the first social media condition 100a is satisfied, the object animation system 200 triggers the virtual character 70 to perform a high-five animation 102a to provide a visual effect that shows the virtual character 70 high-fiving the user 12.
[0050] As another example, when the social media data 60 indicates that the overall tone of responses to the user’s posts is positive (e.g., more than a threshold number of other users acknowledge the user’s posts), the object animation system 200 determines that a second social media condition 100b is satisfied. In response to determining that the second social media condition 100b is satisfied, the object animation system 200 triggers the virtual character 70 to perform a dance animation 102b to provide a visual effect that shows the virtual character 70 happy about the positive tone of the responses.
[0051] In some implementations, the API data 50 includes payment data 62 that indicates payment activity related to the user 12. In some implementations, the object animation system 200 detects a payment condition 104 based on the payment data 62 and triggers the virtual character 70 to perform a corresponding animation 106. For example, when the payment data 62 indicates that the user 12 has received an expected payment (e.g., a payment of an outstanding invoice or a regular salary payment), the object animation system 200 determines that a first payment condition 104a is satisfied. In response to determining that the first payment condition 104a is satisfied, the object animation system 200 triggers the virtual character 70 to perform a thumbs-up animation 106a to provide a visual effect that shows the virtual character 70 giving a thumbs-up to the user 12.
[0052] As another example, when the payment data 62 indicates that the user 12 receives a large tip (e.g., a payment that exceeds the expected payment), the object animation system 200 determines that a second payment condition 104b is satisfied. In response to determining that the second payment condition 104b is satisfied, the object animation system 200 performs a money rain animation 106b by displaying virtual currency falling in the XR environment 30.
[0053] Figure 2is a block diagram of an object animation system 200, according to some implementations. In some implementations, the object animation system 200 includes a data obtainer 210, an API determiner 220, an API repository 230 that stores information about various APIs 232, a content presenter 240, and an animation data repository 250 that stores information about various animations 252.
[0054] In various implementations, the data obtainer 210 obtains a virtual object 212 associated with a set of one or more characteristics 214. In some implementations, the data obtainer 210 receives the virtual object 212 from a content generator that generates the virtual object 212. For example, the data obtainer 210 receives the virtual object 212 from a content creator (e.g., a human operator) that creates the virtual object 212. Alternatively, in some examples, the virtual object 212 includes a machine-generated object (e.g., the virtual object 212 is generated by an image generation tool based on a textual prompt). In some implementations, the virtual object 212 is a two-dimensional (2D) object. In some implementations, the virtual object 212 is a three-dimensional (3D) object. In some implementations, the virtual object 212 is referred to as a widget (e.g., a 3D widget).
[0055] In some implementations, the characteristics 214 of the virtual object 212 indicate visual characteristics of the virtual object 212. For example, the characteristics 214 indicate a color, a shape, and / or a size of the virtual object 212. In some implementations, the characteristics 214 indicate behavioral characteristics of the virtual object 212. For example, the characteristics 214 indicate a placement affinity of the virtual object 212 (e.g., a type of location in which the virtual object 212 can be placed, such as an indoor location or an outdoor location). In some implementations, the characteristics 214 indicate a mesh of the virtual object 212. In some implementations, the characteristics 214 include a skeleton of the virtual object 212 with various joints (e.g., the joints 72) shown. Figure 1C
[0056] In some implementations, some of the characteristics 214 are associated with an animatable marker that indicates that the marked characteristic 214 is animatable. For example, a position characteristic of the virtual object 212 can be associated with an animatable marker that indicates that the position of the virtual object 212 can change based on the API data. As another example, a rotation characteristic (e.g., pitch, yaw, and / or roll) of the virtual object 212 can be associated with an animatable marker that indicates that the virtual object 212 can rotate based on the API data. As another example, a color characteristic can be associated with an animatable marker that indicates that the color of the virtual object 212 can change based on the API data. As another example, a texture characteristic of the virtual object 212 can be associated with an animatable marker that indicates that the texture of the virtual object 212 can change based on the API data. As another example, a visibility characteristic of the virtual object 212 can be associated with an animatable marker that indicates that the visibility of the virtual object 212 can change based on the API data. As another example, a facial expression of a virtual character can be associated with an animatable marker that indicates that the facial expression of the virtual character can change based on the API data. As another example, certain joints of a virtual character can be associated with an animatable marker that indicates that the joints can move based on the API data.
[0057] In some implementations, the characteristics 214 indicate the types of API data that can be used to animate the virtual object 212. For example, a content generator that generates the virtual object 212 associates metadata with the virtual object 212. In this example, the metadata indicates whether the virtual object 212 can be animated based on weather data from a weather API, location data from a location API, music data from a music API, social media data from a social media API, and payment data from a payment API. For example, the metadata associated with the virtual object 212 can indicate that movement of the virtual object 212 can be animated based on weather data from a weather API. As another example, the metadata associated with a virtual character can indicate that a facial expression of the virtual character can change based on whether weather data indicates sunny conditions or cloudy conditions.
[0058] In some implementations, the data obtainer 210 obtains the virtual object 212 via a graphical user interface (GUI) that allows the user 12 to upload the virtual object 212. In some implementations, the GUI allows the user 12 to specify which parts of the virtual object 212 are to be animated and which parts of the virtual object 212 are not to be animated. For example, with reference to FIG. 2, the GUI can allow the user 12 to specify that the virtual object 212 is to be animated based on weather data, location data, music data, social media data, and payment data. As another example, the GUI can allow the user 12 to specify that the virtual object 212 is to be animated based on weather data, location data, and music data. Figure 1AFor example, the user 12 can specify that the four legs of the virtual tower 40 can be animated to move independently, similar to the four limbs of a quadrupedal entity such as a deer or an elephant. As another example, with reference to Figure 1A The user 12 can specify that the visual appearance (e.g., color, brightness, etc.) of the virtual tower 40 can change based on music data from a music API, weather data from a weather API, etc.
[0059] In various implementations, the API repository 230 stores information about the various APIs 232. For example, for each of the APIs 232, the API repository 230 indicates the type of data 234 provided by the API 232 and the frequency 236 at which the API 232 provides data. For example, the API repository 230 indicates that a weather API provides current weather data (e.g., temperature values, humidity values, wind speed, visibility, precipitation values, barometric pressure values, and / or UV index values), weather forecasts (e.g., expected future values), historical weather data (e.g., previous weather values), weather alerts, etc. every 5 minutes. As another example, the API repository 230 indicates that a music API provides information about which music item is currently playing. As another example, the API repository 230 indicates that a social media API provides information about social media activity related to a user’s social media account.
[0060] In some implementations, the API determiner 220 identifies a set of one or more selected APIs 232a from the APIs 232 based on the characteristics 214 of the virtual object 212 and the type of data 234 provided by the APIs 232. In some implementations, the API determiner 220 identifies the selected APIs 232a based on a match between the type of data 234 provided by the selected APIs 232a and the type of API data that can be used to animate the virtual object 212. For example, if the characteristics 214 include that a facial expression of a virtual character can be animated based on weather data, the selected APIs 232a include a weather API. As another example, if the characteristics 214 include a set of joints that can be manipulated based on currently playing data from a music API, the selected APIs 232a include a music API. As another example, if the characteristics 214 indicate a location of a physical object represented by the virtual object 212, the selected APIs 232a include an API that provides information about the location of the physical object (e.g., a weather API to provide weather at the location of the physical object, a social media API to provide mood at the location of the physical object, etc.).
[0061] In various implementations, the animation data store 250 stores information about animations 252. In some implementations, the animations 252 are associated with various parameters 254. For example, the parameters 254 can include a speed at which to play a particular animation 252. As another example, the parameters 254 include a duration for playing a particular animation 252. As another example, the parameters 254 include a smoothness at which to play a particular animation 252.
[0062] In some implementations, the content presenter 240 selects a particular animation 252a (hereinafter, for brevity, “the selected animation 252a”) from the animations 252 based on the characteristics 214 and the selected API 232a. In some implementations, the selected animation 252a is a function of the data type 234 provided by the selected API 232a. For example, if a weather API indicates that it is snowing, the selected animation 252a includes a snowing animation (e.g., the snowing animation 42 shown in FIG. 4). As another example, if a music API indicates that the device is currently playing a particular type of music and the characteristics 214 include movable joints, the selected animation 252a includes a dancing animation (e.g., one or more of the animations 92 shown in FIG. 4). As another example, if the selected API 232a includes a social media API, the selected animation 252a can include an animation based on social media data provided by the social media API (e.g., the animation 102 shown in FIG. 4). As another example, if the selected API 232a includes a payment API, the selected animation 252a includes an animation based on payment data provided by the payment API (e.g., the animation 106 shown in FIG. 4). Figure 1B Figure 1F Figure 1I Figure 1I
[0063] In various implementations, the content presenter 240 provides the selected animation 252a to a rendering and display pipeline. In some implementations, the content presenter 240 provides the selected animation 252a to a motion controller, which generates torque values for respective joints of the virtual object.
[0064] Figure 3 is a flowchart representation of a method 300 of animating a virtual object based on API data. In various implementations, the method 300 is performed by a device (e.g., the device 20 shown in FIG. 2 and / or the object animation system 200 shown in FIG. 2) that includes a display, a non-transitory memory, and one or more processors coupled with the display and the non-transitory memory. Figures 1A-1H Figures 1A-2 In some implementations, the method 300 is performed by processing logic (including hardware, firmware, software, or a combination thereof). In some implementations, the method 300 is performed by a processor executing code stored in a non-transitory computer-readable medium (e.g., a memory).
[0065] As represented by block 310, in some implementations, the method 300 includes obtaining a virtual object that is animatable. For example, as shown in Figure 2 FIG. 2, the data obtainer 210 obtains a virtual object 212. In some implementations, the device displays a GUI that allows a user to import a virtual object or generate a virtual object based on user input such as a prompt or an image.
[0066] As represented by block 310a, in some implementations, the virtual object includes various portions. For example, the virtual object includes a first portion that is animatable and a second portion that is not animatable. In some implementations, a content creator that created the virtual object identifies the first portion as being animatable and the second portion as not being animatable. In some implementations, the device automatically determines that the first portion is animatable due to being connected to a body of the virtual object via a mobile joint. More generally, in various implementations, the device performs semantic segmentation to identify portions of the virtual object that are animatable (e.g., can be animated) and portions of the virtual object that are not animatable (e.g., cannot be animated in a realistic manner). For example, referring to Figure 1C , the device 20 identifies that the virtual character 70 is animatable by generating torque values for the joints 72 of the virtual character 70.
[0067] As represented by block 310b, in some implementations, the virtual object represents a physical object. For example, the virtual object represents the Eiffel Tower. In some implementations, the method 300 includes determining that the device is located at a first location and that the physical object represented by the virtual object is located at a second location that is different from the first location. For example, the device is located in California and the virtual object represents the Eiffel Tower in Paris. In this example, the device determines to animate the virtual object based on API data related to the second location of the physical object represented by the virtual object. By utilizing API data related to the location of the physical object, device functionality is improved by dynamically and contextually rendering animations related to the physical environment of the represented object regardless of the current location of the device. For example, as shown in Figure 1B , the device 20 uses weather data 52 associated with Paris such that if Paris is snowing, virtual snow 44 is displayed as falling on the virtual tower 40 representing the Eiffel Tower.
[0068] As represented by block 320, in some implementations, the method 300 includes determining that the animation of the virtual object is a function of values obtained from a first application programming interface (API) of a plurality of APIs available at the device. For example, as shown in Figure 2As shown, API determiner 220 identifies the selected API 232a that can be used to animate the virtual object 212. Determining which API data is relevant for animate processing of the virtual object tends to improve device functionality by efficiently processing and rendering animations that are accurate and relevant to the current conditions. For example, as... Figure 1B As shown, the object animation system 200 determines the display of snow animation 42 based on values indicated by weather data 52. Dynamically selecting and applying appropriate animations in real time improves device functionality by increasing the responsiveness and adaptability of the device's graphics rendering capabilities. For example, the device can present virtual content that responds to and / or adapts to the current context of the device or its user.
[0069] As indicated in box 320a, in some implementations, method 300 includes identifying a first API based on a virtual object. For example, the virtual object is associated with metadata specifying that data reported by the first API will be used to animate the virtual object. Figure 1A and Figure 1B The virtual tower 40 shown can be associated with metadata specifying that weather data from a weather API can be used to display weather-related animations. For example, Figure 1C The virtual character 70 shown can be associated with metadata that specifies that weather data from the Weather API can be used for inspection. Figure 1D The weather conditions 80 shown are used to animate the virtual character 70 based on the corresponding animation 82. Furthermore, the metadata associated with the virtual character 70 can further specify that music data from the music API can be used for execution. Figure 1F Animation 92 is shown. For example, the metadata associated with the virtual character 70 can further specify that social media data from the social media API can be used to perform [the desired action]. Figure 1I Animation 102 is shown below. For example, the metadata associated with the virtual character 70 can further specify that payment data from the payment API can be used to perform... Figure 1I Animation 106 is shown.
[0070] As represented by block 320b, in some implementations, the method 300 includes automatically identifying the first API by identifying a characteristic of the virtual object. Advantageously, automatically identifying the first API enables the device to dynamically determine the most relevant API for animation, thereby efficiently utilizing computational resources and reducing the need to manually configure the virtual object via user input. In some implementations, the method 300 includes identifying the first API based on a shape of the virtual object. For example, the method 200 includes selecting a weather API in response to the shape of the virtual object resembling a monument. As another example, the device selects a music API in response to the shape of the virtual object resembling a living physical object (e.g., in response to the virtual object representing a living entity such as a person or animal).
[0071] In some implementations, the method 300 includes identifying the first API based on a component of the virtual object. For example, the method 300 includes selecting a music API and / or a payment API in response to the component including a movable component such as a rotating joint or a moving limb. Advantageously, the device uses semantic segmentation to identify functional elements and select an API that provides data for animating the functional elements, thereby enhancing the responsiveness and relevance of the virtual object.
[0072] In some implementations, the method 300 includes identifying the first API based on a physical object represented by the virtual object. For example, selecting a social media API in response to a trend of the physical object on a social media platform. In some implementations, the method 300 includes identifying the first API based on a placement affinity of the virtual object. For example, selecting a weather API based on an outdoor placement affinity. In some implementations, the method 300 includes identifying the first API based on a joint placement of the virtual object. For example, selecting a music API based on a joint, thereby allowing dance moves in response to different types of music genres.
[0073] In some implementations, the method 300 includes determining a data type associated with changing the identified characteristic. For example, the method 300 includes determining whether a value of the characteristic can be changed based on easily accessible API data such as weather, location, or music data. In some implementations, the method 300 includes determining that the first API provides the data type associated with changing the characteristic of the virtual object. For example, if the virtual object has an outdoor placement affinity, the method 300 includes selecting a weather API that provides weather data for configuring weather-related animations. As another example, if the virtual object includes a movable joint, the method 300 includes selecting a music API that provides music data for configuring dance animations.
[0074] As indicated by box 320c, in some implementations, method 300 includes selecting an animation from multiple animations based on a value obtained from a first API. For example, method 300 includes selecting a fitness animation when the value indicates that the device is currently playing a fitness playlist. As another example, method 300 includes selecting a dance animation when the value indicates that the device is currently playing a dance playlist. Utilizing API data to select a specific animation allows for scalable animation systems that can adapt to a variety of inputs and conditions. Devices can support multiple animations without hardcoding each scene, providing greater flexibility in updating or adding new animations as new data types or APIs become available. By automatically selecting animations based on API values, devices reduce the time and computational resources associated with determining which animation to play. For example, the device does not need to wait for user input specifying which animation to play in a given scene. Therefore, selecting animations based on API data tends to reduce latency, thereby enhancing device functionality and improving the user experience. In some implementations, the device caches or prefetches possible animations based on anticipated API data (e.g., based on trends or patterns), further reducing latency.
[0075] As indicated in box 330, in some implementations, method 300 includes displaying an animation of the virtual object based on values obtained from the first API. For example, as Figure 1B As shown, device 20 displays a snow animation 42 based on weather data 52. For example, as... Figure 1E As shown, device 20 displays a hat-wearing animation 82g in response to weather data 54 indicating sunny conditions and location data 56 indicating outdoor location. Animating virtual objects tends to improve user engagement by delivering dynamic, context-aware content adapted to real-time data. Presenting more engaging content increases the device's usability. Automatically animating virtual objects tends to reduce latency by minimizing the need for user input specifying how to animate them. Because virtual objects can exhibit different animations when changing API data indicates a change in context, animating virtual objects based on API data is more flexible than associating specific animations with virtual objects.
[0076] As indicated by box 330a, in some implementations, method 300 includes setting numerical parameters of the animation based on a function of values obtained from the first API. In some implementations, method 300 includes setting the speed of the animation based on values provided by the first API. For example, see reference... Figure 1B The speed at which the virtual snow 44 falls is based on the precipitation value indicated by weather data 52. In some implementations, method 300 includes setting the duration of the animation. For example, refer to... Figure 1G, the object animation system 200 sets the duration of the breakdancing animation 92c based on the duration of the current song being played. In some implementations, the method 300 includes setting a frame rate of the animation based on the value. For example, the device changes the smoothness of the visual motion defined by the animation based on the value. In some implementations, the method 300 includes setting an easing factor for the animation. For example, the device sets the acceleration and / or deceleration of the movement of the virtual object based on the value. Setting numerical parameters such as the speed of the animation based on API data improves device functionality by allowing the device to dynamically adjust the animation to real-world conditions, thereby ensuring that the presentation of the virtual object is contextually relevant and responsive.
[0077] As represented by block 330b, in some implementations, the method 300 includes determining that the first API includes a weather API and that the value obtained from the weather API indicates a weather condition. The device animates the virtual object based on the weather condition indicated by the value. For example, with reference to Figure 1E When the weather data 54 indicates a sunny condition, the object animation system 200 executes the hat-putting-on animation 82g to provide a visual effect showing the virtual character 70 putting on the virtual hat 74. As another example, when the value includes a temperature value that is greater than a threshold temperature, the device applies a fan wind animation to the virtual object to provide a visual effect showing the virtual object fanning itself. As another example, when the value indicates a rainy condition (e.g., the fourth weather condition 80d or the fifth weather condition 80e), the virtual object opens an umbrella (e.g., the fifth animation 82e) or jumps into a puddle. Animating the virtual object based on weather API data enables the device to deliver a contextually relevant and immersive visual experience that reflects real-time environmental conditions.
[0078] As represented by block 330c, in some implementations, the method 300 includes determining that the first API includes a location API and that the value obtained from the location API indicates a geographic location of the device. The device animates the virtual object based on the geographic location indicated by the value. For example, when the geographic location corresponds to an urban environment, the device animates the virtual object to simulate traffic behavior, such as waiting at a crosswalk. As another example, when the geographic location corresponds to a rural environment, the device animates the virtual object to interact with wildlife by mimicking a bird call. Animating the virtual object based on location API data enables the device to dynamically adapt the virtual content to the current geographic context of the user, thereby enhancing the relevance and personalization of the virtual content.
[0079] As represented by block 330d, in some implementations, the method 300 includes determining that the first API includes a music API and that the value obtained from the music API indicates music that is currently being played. The device animates the virtual object based on the music that is currently being played. For example, as represented by block 330d, in some implementations, the method 300 includes determining that the first API includes a music API and that the value obtained from the music API indicates music that is currently being played. The device animates the virtual object based on the music that is currently being played. For example, as represented by block 330d, in some implementations, the method 300 includes determining that the first API includes a music API and that the value obtained from the music API indicates music that is currently being played. The device animates the virtual object based on the music that is currently being played.Figure 1F As shown, the device animates virtual objects to perform ballet movements for classical music, swing dance for jazz music, pop, locking, and breakdancing for pop music, or line dancing for country music. Animating virtual objects based on music API data offers the technical advantage of synchronizing visual content with audio input, creating a consistent and immersive user experience. Animating virtual objects based on currently playing music allows the device to adjust the animation in real time to match the music's rhythm, beat, or genre, enhancing user engagement while efficiently utilizing computing resources by rendering only animations relevant to the current audio context.
[0080] Figure 4 This is a block diagram based on some specific implementations of device 400. In some specific implementations, device 400 implements... Figures 1A-2 The device 20 and / or shown Figures 1A-2 The object animation system 200 is shown. Although some specific features are illustrated, those skilled in the art will recognize from this disclosure that various other features have not been illustrated for the sake of brevity and to avoid obscuring more relevant aspects of the specific embodiments disclosed herein. Therefore, as a non-limiting example, in some embodiments, device 400 includes one or more processing units (PUs) 401, a network interface 402, a programming interface 403, a memory 404, one or more input / output (I / O) devices 408, and one or more communication buses 405 for interconnecting these and various other components.
[0081] In some implementations, PU 401 includes one or more central processing units (CPUs), one or more graphics processing units (GPUs), and / or one or more neural processing units (NPUs).
[0082] In some implementations, a network interface 402 is provided to establish and maintain a metadata tunnel between a cloud-hosted network management system and at least one private network including one or more compatible devices, among other uses. In some implementations, one or more communication buses 405 include circuitry for interconnecting system components and controlling communication between system components. Memory 404 includes high-speed random access memory, such as DRAM, SRAM, DDR RAM, or other random access solid-state memory devices, and may include non-volatile memory, such as one or more disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid-state storage devices. Memory 404 optionally includes one or more storage devices remotely located to one or more PUs 401. Memory 404 includes a non-transitory computer-readable storage medium.
[0083] In some implementations, the memory 404, or non-transitory computer-readable storage medium of the memory 404, stores the following programs, modules, and data structures, or a subset thereof, including an optional operating system 406, the data fetcher 210, the API determiner 220, and the content presenter 240. In various implementations, the device 400 executes these programs, modules, and data structures, or a subset thereof, to implement features disclosed herein. Figure 3 the method 300 illustrated.
[0084] In some implementations, the data fetcher 210 includes instructions 210a and heuristics and metadata 210b for fetching data (e.g., such as position data 56, weather data 54, audio data, IMU data, gaze data, etc.) from one or more sensors and / or from one or more external sources (e.g., a weather service, etc.). In some implementations, the data fetcher 210 performs at least some of the operations represented by block 310 in FIG. 3. Figure 1A the virtual tower 40 illustrated in FIG. 1, Figure 1C the virtual character 70 illustrated in FIG. 1, and / or Figure 2 the virtual object 212 illustrated in FIG. 1). In some implementations, the data fetcher 210 performs at least some of the operations represented by block 310 in FIG. 3. Figure 3 In some implementations, the API determiner 220 includes instructions 220a and heuristics and metadata 220b for determining that a virtual object can be animated based on data provided by an API (e.g., for identifying a selected API 232a illustrated in FIG. 2). In some implementations, the API determiner 220 performs at least some of the operations represented by block 320 in FIG. 3.
[0085] In some implementations, the API determiner 220 includes instructions 220a and heuristics and metadata 220b for determining that a virtual object can be animated based on data provided by an API (e.g., for identifying a selected API 232a illustrated in FIG. 2). In some implementations, the API determiner 220 performs at least some of the operations represented by block 320 in FIG. 3. Figure 2 the selected animation 252a illustrated in FIG. 2). In some implementations, the content presenter 240 performs at least some of the operations represented by block 330 in FIG. 3. Figure 3 In some implementations, the API determiner 220 includes instructions 220a and heuristics and metadata 220b for determining that a virtual object can be animated based on data provided by an API (e.g., for identifying a selected API 232a illustrated in FIG. 2). In some implementations, the API determiner 220 performs at least some of the operations represented by block 320 in FIG. 3.
[0086] In some implementations, the one or more I / O devices 408 include a set of one or more sensors for capturing sensor data provided by an API. For example, the one or more I / O devices 408 include a position sensor for capturing position data 56 illustrated in FIG. 1, an ALS for capturing ambient light data, a microphone for capturing audio data, an IMU for capturing IMU data, and / or an eye tracker for capturing gaze data. In some implementations, the one or more I / O devices 408 include a receiver for receiving API data from another device (e.g., for receiving weather data 54 illustrated in FIG. 1 from a weather service). Figure 2 In some implementations, the API determiner 220 includes instructions 220a and heuristics and metadata 220b for determining that a virtual object can be animated based on data provided by an API (e.g., for identifying a selected API 232a illustrated in FIG. 2). In some implementations, the API determiner 220 performs at least some of the operations represented by block 320 in FIG. 3. Figure 3
[0087] In some implementations, the one or more I / O devices 408 include a set of one or more sensors for capturing sensor data provided by an API. For example, the one or more I / O devices 408 include a position sensor for capturing position data 56 illustrated in FIG. 1, an ALS for capturing ambient light data, a microphone for capturing audio data, an IMU for capturing IMU data, and / or an eye tracker for capturing gaze data. In some implementations, the one or more I / O devices 408 include a receiver for receiving API data from another device (e.g., for receiving weather data 54 illustrated in FIG. 1 from a weather service). Figure 1C In some implementations, the API determiner 220 includes instructions 220a and heuristics and metadata 220b for determining that a virtual object can be animated based on data provided by an API (e.g., for identifying a selected API 232a illustrated in FIG. 2). In some implementations, the API determiner 220 performs at least some of the operations represented by block 320 in FIG. 3. Figure 1B
[0088] In various implementations, the one or more I / O devices 408 include a video pass-through display that displays at least a portion of the physical environment surrounding the device 400 as an image captured by a camera. In various implementations, the one or more I / O devices 408 include an optical pass-through display that is at least partially transparent and passes light emitted or reflected by the physical environment.
[0089] It will be appreciated that Figure 4 The function descriptions of various features that can be present in particular implementations are distinct from structural illustrations of implementations described herein. As will be appreciated by someone of ordinary skill in the art, items shown separately can be combined, and items shown separately can be separated. For example, Figure 4 Some of the functional blocks shown separately in can be implemented as a single block, and various functions of a single functional block can be implemented by one or more functional blocks in various implementations. The actual number of blocks and the division of particular functions between them and how features are allocated among them will vary from implementation to implementation, and in some implementations, depend in part on the particular combination of hardware, software, and / or firmware selected for a particular implementation.
[0090] While various aspects of implementations within the scope of the appended claims are described above, it should be apparent that the various features of the implementations described above can be embodied in a wide variety of forms and that any specific structure and / or function described above is merely illustrative. Based on the present disclosure, a person of ordinary skill in the art should appreciate that an aspect described herein can be implemented independently of any other aspects and that two or more of these aspects can be combined in various ways. For example, an apparatus can be implemented using any number of the aspects described herein, and a method can be implemented using any number of the aspects described herein. Further, an apparatus can be implemented or a method can be practiced using other structure and / or functionality in addition to or other than one or more of the aspects described herein.
Claims
1. A method, the method comprising: In a device that includes non-transitory memory, a display, and one or more processors: Obtain a virtual object that can be animated; The function that determines the animation of the virtual object is a value obtained from a first API among a plurality of application programming interfaces (APIs) available at the device; as well as The animation of the virtual object is displayed based on the value obtained from the first API.
2. The method of claim 1, wherein the numerical parameters of the animation are functions of the values obtained from the first API.
3. The method according to claim 2, wherein the numerical parameter includes the speed of the animation.
4. The method of claim 2, wherein the numerical parameter includes the duration of the animation.
5. The method of claim 1, wherein the first API includes a weather API and the value indicates weather conditions, and the virtual object is animated based on the weather conditions indicated by the value.
6. The method of claim 1, wherein the first API includes a location API and the value indicates the geographic location of the device, and the virtual object is animated based on the geographic location indicated by the value.
7. The method of claim 1, wherein the first API includes a music API and the value indicates the music currently being played, and the virtual object is animated based on the music currently being played.
8. The method of claim 1, wherein the virtual object identifies the first API.
9. The method of claim 1, wherein the device automatically identifies the first API by: The characteristics that identify the virtual object; Determine the data type associated with changing the aforementioned characteristic; and Determine that the first API provides the data type associated with changing the properties of the virtual object.
10. The method of claim 1, further comprising selecting the animation from a plurality of animations based on the value obtained from the first API.
11. The method of claim 1, wherein the virtual object comprises a plurality of parts, the plurality of parts comprising a first part and a second part, wherein the first part is capable of being animated and the second part is not capable of being animated.
12. The method of claim 11, wherein the content creator who creates the virtual object identifies the first portion as capable of being animated and the second portion as not capable of being animated.
13. The method of claim 11, wherein the device automatically determines that the first portion is capable of animation due to its connection to the body of the virtual object via a moving joint.
14. The method according to claim 1, wherein the virtual object represents a physical object.
15. The method of claim 14, wherein the device is located at a first position and the physical object is located at a second position different from the first position; and The value obtained from the first API is associated with the second position.
16. An apparatus, the apparatus comprising: monitor; One or more processors; Non-transitory memory; as well as One or more programs stored in the non-transitory memory, which, when executed by the one or more processors, cause the device to: Obtain a virtual object that can be animated; The function that determines the animation of the virtual object is a value obtained from a first API among a plurality of application programming interfaces (APIs) available at the device; and The animation of the virtual object is displayed based on the value obtained from the first API.
17. The device of claim 16, wherein the virtual object identifies the first API.
18. The device of claim 16, wherein the device automatically identifies the first API by: The characteristics that identify the virtual object; Determine the data type associated with changing the aforementioned characteristic; and Determine that the first API provides the data type associated with changing the properties of the virtual object.
19. The device of claim 1, wherein the one or more procedures further cause the device to select the animation from a plurality of animations based on the value obtained from the first API.
20. A non-transitory memory storing one or more programs, said one or more programs causing the device to: Obtain a virtual object that can be animated; The function that determines the animation of the virtual object is a value obtained from a first API among a plurality of application programming interfaces (APIs) available at the device; and The animation of the virtual object is displayed based on the value obtained from the first API.