Virtual Object Toolkit

Through the virtual object toolkit, users can customize and synthesize virtual objects, solving the problem of inefficient presentation of objects associated with actions in the prior art, and achieving more efficient user experience and device functions.

CN114647311BActive Publication Date: 2025-04-11APPLE INC
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
CN202210264839.0
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-08-27
Filing Date
2019-08-30
Publication Date
2025-04-11
Estimated Expiration
2039-08-30

AI Technical Summary

Technical Problem

Existing computer-generated reality (CGR) environment devices are inefficient in presenting representations of objects associated with actions and cannot effectively meet user customization needs.

Method used

Through the Virtual Object Toolkit, users can select the appropriate component combination from a set of virtual object templates and component groups to generate custom virtual objects. The toolkit includes components such as head, body, and appendages, which users can select and replace as needed to generate virtual objects with specific functions and behaviors.

Benefits of technology

It realizes the creation of user-defined virtual objects, enhances the user experience and functions of the device, and can effectively present virtual objects associated with actions in a computer-generated real environment.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114647311B_ABST
    Figure CN114647311B_ABST
Patent Text Reader

Abstract

The present disclosure relates to a virtual object toolkit. In some implementations, a method includes obtaining a virtual object toolkit including a set of virtual object templates of a specific virtual object type. In some implementations, the virtual object toolkit includes a plurality of component groups. In some implementations, each component group in the plurality of component groups is associated with a specific portion of a virtual object. In some implementations, the method includes receiving a request to assemble a virtual object. In some implementations, the request includes selecting components from at least some of the plurality of component groups. In some implementations, the method includes synthesizing the virtual object according to the request.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application is a divisional application of the invention patent application with Chinese national application number 201910815537.6, application date August 30, 2019, and invention name “Virtual Object Toolkit”.

[0003] This patent application claims priority to U.S. Patent Application No. 62 / 725,079, filed on August 30, 2018, which is hereby incorporated by reference in its entirety. Technical Field

[0004] The present disclosure generally relates to a virtual object toolkit. Background Art

[0005] Some devices are capable of generating and presenting computer generated reality (CGR) environments. Some CGR environments include virtual environments, which are simulated replacements for physical environments. Some CGR environments include augmented environments, which are modified versions of physical environments. Some devices that present CGR environments include mobile communication devices, such as smart phones, head mounted displays (HMDs), glasses, head mounted displays (HUDs), and optical projection systems. Most previously available devices that present CGR environments are ineffective in presenting representations of certain objects. For example, some previously available devices that present CGR environments are not suitable for presenting representations of objects associated with actions. BRIEF DESCRIPTION OF THE DRAWINGS

[0006] So that the present disclosure can be understood by those of ordinary skill in the art, a more detailed description may be obtained with reference to aspects of some exemplary embodiments, some of which are illustrated in the accompanying drawings.

[0007] Figures 1A-1J is an illustration of an exemplary virtual object toolkit according to some specific implementations.

[0008] Figures 1K-1L is an illustration of an exemplary virtual object container according to some specific implementations.

[0009] Figure 1M-1O is an illustration of an exemplary virtual object toolkit according to some specific implementations.

[0010] Figure 1P-1Q is an illustration of an exemplary virtual object container according to some specific implementations.

[0011] Figure 1R is an illustration of an example virtual object instantiated in an example emergency content container according to some implementations.

[0012] Figure 1S-1Tis an illustration of an exemplary virtual object container according to some specific implementations.

[0013] Figure 1U-1V is an illustration of an exemplary virtual object toolkit according to some specific implementations.

[0014] Figure 1W-1X is an illustration of an exemplary virtual object container according to some specific implementations.

[0015] Figure 1Y-1AG is an illustration of an exemplary virtual object toolkit according to some specific implementations.

[0016] Figure 1AH-1K is an illustration of an exemplary virtual object container according to some specific implementations.

[0017] Figure 1AL is an illustration of an exemplary virtual object supplement toolkit according to some specific implementations.

[0018] Figure 2A-2C is a flowchart representation of a method for synthesizing a virtual object from a virtual object toolkit according to some specific implementations.

[0019] Figure 3 is a block diagram of a server system for synthesizing virtual objects from a virtual object toolkit according to some specific implementations.

[0020] As is common practice, the various features shown in the drawings may not be drawn to scale. Therefore, the sizes of the various features may be arbitrarily expanded or reduced for clarity. In addition, some drawings may not depict all components of a given system, method, or device. Finally, throughout the specification and drawings, similar reference numerals may be used to represent similar features. Summary of the invention

[0021] Various embodiments disclosed herein include devices, systems, and methods for synthesizing virtual objects from a virtual object toolkit. In various embodiments, the device includes a display, a non-transitory memory, and one or more processors coupled to the display and the non-transitory memory. In some embodiments, the method includes obtaining a virtual object toolkit including a set of virtual object templates of a specific virtual object type. In some embodiments, the virtual object toolkit includes multiple component groups. In some embodiments, each component group in the multiple component groups is associated with a specific part of the virtual object. In some embodiments, the method includes receiving a request to assemble a virtual object. In some embodiments, the request includes selecting one of the virtual object templates from a set of virtual object templates. In some embodiments, the request includes selecting a component from at least some of the multiple component groups. In some embodiments, the method includes synthesizing a virtual object according to the request. In some embodiments, a set of actions performed by the virtual object in a computer-generated reality (CGR) environment is a function of the components included in the virtual object.

[0022] According to some specific implementations, the device includes one or more processors, non-transitory memory, and one or more programs. In some specific implementations, one or more programs are stored in non-transitory memory and executed by one or more processors. In some specific implementations, one or more programs include instructions for executing or causing the execution of any method described herein. According to some specific implementations, instructions are stored in a non-transitory computer-readable storage medium, and when the instructions are executed by one or more processors of the device, the device executes or causes the execution of any of the methods described herein. According to some specific implementations, a device includes one or more processors, non-transitory memory, and a device for executing or causing the execution of any of the methods described herein. DETAILED DESCRIPTION

[0023] Many details are described in order to provide a thorough understanding of the example implementations shown in the accompanying drawings. However, the accompanying drawings only illustrate some example aspects of the present disclosure and should not be considered limiting. One of ordinary skill in the art will appreciate that other effective aspects and / or variations do not include all of the specific details described herein. In addition, well-known systems, methods, components, devices, and circuits are not described in detail in order to avoid obscuring more relevant aspects of the exemplary implementations described herein.

[0024] The present disclosure provides methods, systems and / or devices for synthesizing virtual objects from a virtual object toolkit. In various implementations, the virtual object performs an action that satisfies a goal. The virtual object toolkit enables a user of the device to create a customized virtual object. For example, the virtual object toolkit allows a user to synthesize a virtual object by selecting different components from the virtual object toolkit. In some implementations, the virtual object toolkit enhances the user experience of the device by allowing a user of the device to create a customized virtual object. In some implementations, the virtual object toolkit improves the functionality of the device by enabling the device to synthesize and display customized virtual objects.

[0025] The physical environment refers to the physical world that people can sense and / or interact with without the help of electronic systems. A physical environment, such as a physical park, includes physical objects, such as physical trees, physical buildings, and physical people. People can directly sense and / or interact with the physical environment, such as through vision, touch, hearing, taste, and smell.

[0026] In contrast, a computer generated reality (CGR) environment refers to a fully or partially simulated environment that a person perceives and / or interacts with via an electronic system. In CGR, a subset of a person's physical movements, or representations thereof, are tracked, and in response, one or more features of one or more virtual objects simulated in the CGR environment are adjusted in a manner that complies with at least one law of physics. For example, a CGR system may detect a person's head turning, and in response, adjust the graphical content and sound field presented to the person in a manner similar to the way such views and sounds change in a physical environment. In some cases (e.g., for accessibility reasons), adjustments to features of virtual objects in a CGR environment may be made in response to representations of physical movement (e.g., voice commands).

[0027] A person may sense and / or interact with a CGR object using any of their senses, including vision, hearing, touch, taste, and smell. For example, a person may sense and / or interact with an audio object that creates a 3D or spatial audio environment that provides the perception of a point audio source in 3D space. As another example, an audio object may enable audio transparency that selectively introduces ambient sounds from the physical environment with or without computer-generated audio. In some CGR environments, a person may sense and / or interact only with an audio object.

[0028] Examples of CGR include virtual reality and mixed reality.

[0029] A virtual reality (VR) environment refers to a simulated environment designed to be based entirely on computer-generated sensory input to one or more senses. A VR environment includes a plurality of virtual objects that a person can sense and / or interact with. For example, trees, buildings, and computer-generated images representing avatars of people are examples of virtual objects. A person can sense and / or interact with virtual objects in a VR environment through a simulation of the person's presence within the computer-generated environment, and / or through a simulation of a subset of the person's physical movements within the computer-generated environment.

[0030] In contrast to VR environments, which are designed to be based entirely on computer-generated sensory input, a mixed reality (MR) environment refers to a simulated environment designed to include sensory input from the physical environment, or representations thereof, in addition to computer-generated sensory input (e.g., virtual objects). On the virtuality continuum, a mixed reality environment is anything between a fully physical environment at one end and a virtual reality environment at the other end, but not including both ends.

[0031] In some MR environments, computer-generated sensory input can respond to changes in sensory input from the physical environment. In addition, some electronic systems used to render the MR environment can track position and / or orientation relative to the physical environment to enable virtual objects to interact with real objects (i.e., physical items from the physical environment or representations thereof). For example, the system can cause motion so that virtual trees appear stationary relative to the physical ground.

[0032] Examples of mixed reality include augmented reality and augmented virtuality.

[0033] An augmented reality (AR) environment refers to a simulated environment in which one or more virtual objects are superimposed on a physical environment or a representation thereof. For example, an electronic system for presenting an AR environment may have a transparent or translucent display through which a person can directly view the physical environment. The system may be configured to present virtual objects on a transparent or translucent display so that a person uses the system to perceive virtual objects superimposed on a physical environment. Alternatively, the system may have an opaque display and one or more imaging sensors that capture images or videos of a physical environment that are representations of the physical environment. The system combines the image or video with the virtual object and presents the composition on an opaque display. People use the system to indirectly view the physical environment via an image or video of the physical environment and perceive virtual objects superimposed on the physical environment. As used herein, a video of a physical environment displayed on an opaque display is referred to as a "transparent video," meaning that the system uses one or more image sensors to capture images of the physical environment and uses those images when presenting an AR environment on an opaque display. Further alternatively, the system may have a projection system that projects virtual objects into a physical environment, for example as a hologram or on a physical surface, so that a person using the system perceives the virtual objects superimposed on the physical environment.

[0034] An augmented reality environment also refers to a simulated environment in which a representation of a physical environment is transformed by computer-generated sensory information. For example, in providing a pass-through video, the system may transform one or more sensor images to apply a selected perspective (e.g., a viewpoint) that is different from the perspective captured by the imaging sensor. For another example, a representation of a physical environment may be transformed by graphically modifying (e.g., enlarging) a portion thereof so that the modified portion may be a representative but not true version of the original captured image. For another example, a representation of a physical environment may be transformed by graphically eliminating or blurring a portion thereof.

[0035] An augmented virtual (AV) environment refers to a simulated environment in which a virtual or computer-generated environment is combined with one or more sensory inputs from a physical environment. The sensory input may be a representation of one or more features of the physical environment. For example, an AV park may have virtual trees and virtual buildings, but the faces of people are realistically reproduced from images taken of physical people. For another example, a virtual object may take the shape or color of a physical object imaged by one or more imaging sensors. For another example, a virtual object may take a shadow that conforms to the position of the sun in the physical environment.

[0036] There are many different types of electronic systems that enable people to sense and / or interact with various CGR environments. Examples include head-mounted systems, projection-based systems, head-up displays (HUDs), vehicle windshields with integrated display capabilities, windows with integrated display capabilities, displays formed as lenses designed to be placed on people's eyes (e.g., similar to contact lenses), headphones / earpieces, speaker arrays, input systems (e.g., wearable or handheld controllers with or without tactile feedback), smart phones, tablets, and desktop / laptop computers. A head-mounted system can have one or more speakers and an integrated opaque display. Alternatively, a head-mounted system can be configured to receive an external opaque display (e.g., a smart phone). A head-mounted system can be combined with one or more imaging sensors for capturing images or videos of a physical environment, and / or one or more microphones for capturing audio of a physical environment. Instead of an opaque display, a head-mounted system can have a transparent or translucent display. A transparent or translucent display can have a medium through which light representing an image is directed to a person's eyes. The display can utilize digital light projection, OLED, LED, uLED, liquid crystal on silicon, laser scanning light source, or any combination of these technologies. The medium can be an optical waveguide, a hologram medium, an optical combiner, an optical reflector, or any combination thereof. In one specific implementation, a transparent or translucent display can be configured to selectively become opaque. A projection-based system can employ retinal projection technology that projects a graphic image onto a person's retina. The projection system can also be configured to project a virtual object into a physical environment, such as a hologram or onto a physical surface.

[0037] Figures 1A-1J is a diagram of an exemplary virtual object toolkit 10 for synthesizing an insect virtual object. Therefore, in some embodiments, the virtual object toolkit 10 is referred to as an insect virtual object toolkit. Figure 1A , the virtual object toolkit 10 includes a set of virtual object templates 20 (hereinafter referred to as "templates 20" for simplicity) of a specific virtual object type. In some specific implementations, the virtual object toolkit includes templates of a specific type of object. Figure 1A In the example of FIG. 1 , template 20 corresponds to various insects. Figure 1A As shown, the templates 20 include an ant template 20a for synthesizing an ant virtual object, a bee template 20b for synthesizing a bee virtual object, a beetle template 20c for synthesizing a beetle virtual object, a butterfly template 20d for synthesizing a butterfly virtual object, a cricket template 20e for synthesizing a cricket virtual object, and a fly template 20f for synthesizing a fly virtual object. In some implementations, the user scrolls through the templates 20 to identify a desired template.

[0038] like Figure 1AAs shown, the virtual object toolkit 10 includes component groups 30. In some implementations, each component group 30 is associated with a specific part of the virtual object. Figure 1A In the example of FIG. 3 , the component group 30 includes a head component group 32, a body component group 34, and an appendage component group 36. The head component group 32 includes components that can be selected as the head of the insect virtual object. Figure 1A In the example of FIG. 3 , head component group 32 includes a teapot enable representation 32a for selecting a teapot as the head, a football enable representation 32b for selecting a football as the head, and a watermelon enable representation 32c for selecting a watermelon as the head. Body component group 34 includes components that can be selected as the body (e.g., torso) of the insect virtual object. Figure 1A In the example of , body component group 34 includes a burrito enable representation 34a for selecting a burrito as the body, a jelly enable representation 34b for selecting jelly as the main body, and a rock enable representation 34c for selecting a rock as the body. Appendage component group 36 includes a candy enable representation 36a for selecting a candy as an appendage, a wing enable representation 36b for selecting a wing as an appendage, and a stick enable representation 36c for selecting a stick as an appendage.

[0039] exist Figure 1A In the example of , virtual object toolkit 10 includes create enable representation 40a (e.g., create insect virtual object enable representation). In response to receiving a selection to create enable representation 40a, virtual object toolkit 10 creates an insect virtual object with the selected parts. In some specific implementations, the selection to create enable representation 40a represents a request to create an insect virtual object using the selected parts.

[0040] Figure 1B A user input 50a is shown selecting the ant template 20a. The user input 50a corresponds to a request to synthesize an ant virtual object.

[0041] refer to Figure 1C , in response to Figure 1B , the virtual object toolkit 10 displays a preview pane 60. The preview pane 60 shows an ant virtual object 70 having a head 72 (e.g., a default head component), a body 74 (e.g., a default body component), and an appendage 76 (e.g., a default appendage component). Figure 1C The head 72, body 74 and appendage 76 shown in FIG. 7 are default parts of the ant virtual object 70. The default parts of the ant virtual object 70 can be replaced with parts from the head part group 32, the body part group 34 and the appendage part group 36.

[0042] Figure 1DUser input 50b is shown selecting soccer ball affordance 32b. User input 50b corresponds to a request to utilize a soccer ball as head 72 of ant virtual object 70. In some implementations, user input 50b corresponds to a request to replace a default head component of ant virtual object 70 with a soccer ball.

[0043] like Figure 1E As shown, in response to Figure 1D 7. The selection of the soccer ball indicator 32b in the ant virtual object 70 utilizes the soccer ball as the head 72 of the ant virtual object 70. In some implementations, the appearance of the soccer ball indicator 32b changes (e.g., becomes bold) to indicate that the soccer ball is being used as the head 72 of the ant virtual object 70. In some implementations, the appearance of the teapot indicator 32a and the watermelon indicator 32c changes (e.g., becomes gray) to indicate that the additional head parts cannot be selected.

[0044] Figure 1F User input 50c is shown selecting burrito affordance 34a. User input 50c corresponds to a request to utilize a burrito as body 74 of ant virtual object 70. In some implementations, user input 50c corresponds to a request to replace a default body part of ant virtual object 70 with a burrito.

[0045] like Figure 1G As shown, in response to Figure 1F 7 and 8. The burrito affordance 34a in the ant virtual object 70 is selected to utilize the burrito as the body 74 of the ant virtual object 70. In some implementations, the appearance of the burrito affordance 34a changes (e.g., becomes bold) to indicate that the burrito is being used as the body 74 of the ant virtual object 70. In some implementations, the appearance of the jelly affordance 34b and the rock affordance 34c is changed (e.g., becomes gray) to indicate that additional body parts cannot be selected.

[0046] Figure 1H User input 50d is shown selecting candy affordance 36a. User input 50d corresponds to a request to utilize candy (e.g., a candy bar, a candy bar, etc.) as an appendage 76 of ant virtual object 70. In some implementations, user input 50d corresponds to a request to replace a default appendage of ant virtual object 70 with candy.

[0047] like Fig. 1I As shown, in response to Figure 1H7. The candy enable representation 36a is selected to utilize the candy as an appendage 76 of the ant virtual object 70. In some implementations, the appearance of the candy enable representation 36a changes (e.g., becomes bold) to indicate that the candy is being used as an appendage 76 of the ant virtual object 70. In some implementations, the appearance of the wing enable representation 36b and the stick enable representation 36c changes (e.g., becomes gray) to indicate that the additional appendage parts cannot be selected.

[0048] Figure 1J User input 50e is shown selecting to create affordance 40a. User input 50e corresponds to synthesizing Figure 1J The preview pane 60 shows a request for the ant virtual object 70. Figure 1J In the example of FIG. 5 , user input 50 e corresponds to a request to synthesize an ant virtual object 70 with a soccer ball as head 72 , a burrito as body 74 , and candies as appendages 76 .

[0049] Figure 1K An ant virtual object container 80 including an ant virtual object 70 is shown. Figure 1K In the example of , the ant virtual object container 80 includes a modification affordance 84, a rotation affordance 86, an instantiation affordance 88, and a sharing affordance. The modification affordance 84 provides an option for modifying the ant virtual object 70. The rotation affordance 86 provides an option for rotating the ant virtual object 80 within the ant virtual object container 70. The instantiation affordance 88 provides an option for instantiating the ant virtual object 70 in the CGR environment, wherein the ant virtual object 70 performs an action that satisfies the goal of the ant virtual object 70. The sharing affordance 89 provides an option for sharing the ant goal affordance 70.

[0050] Figure 1L User input 50f is shown selecting modify affordance 84. User input 50f corresponds to a request to modify ant virtual object 70.

[0051] Figure 1M The virtual object toolkit 10 is shown with the option to modify the ant virtual object 70. Figure 1M As shown, the virtual object toolkit 10 includes a modification affordance 40b. Figure 1M In the example of , the affordance corresponding to the current selection of a component has a different appearance than affordances corresponding to other available components. For example, the football affordance 32b is shown in bold, while the teapot affordance 32a and the watermelon affordance 32c are not bold.

[0052] Figure 1NUser input 50g is shown selecting watermelon affordance 32c. User input 50g corresponds to a request to change head 72 of ant virtual object 70 from a soccer ball to a watermelon. Fig.1O , the preview pane 60 displays an ant virtual object 70 having a watermelon as a head 72 . Fig.1O User input 50h corresponding to a request to accept the changes shown in preview pane 60 is also shown. Figure 1P A modified ant virtual object container 80a including a modified ant virtual object 70a is shown. Figure 1P As shown, the modified ant virtual object 70a has a watermelon as its head.

[0053] Figure 1Q User input 50i is shown selecting instantiation affordance 88. User input 50i corresponds to a request to instantiate an ant virtual object 70 in the emergent content container, wherein ant virtual object 70 performs an action that satisfies a goal.

[0054] Figure 1R An emergent content container 90 is shown that includes an ant virtual object 70. In some implementations, the emergent content container 90 includes a CGR environment in which the ant virtual object 70 performs one or more actions (e.g., a sequence of actions) that satisfy one or more goals (e.g., a set of goals) of the ant virtual object 70. In some implementations, the CGR environment corresponds to a physical environment (e.g., the CGR environment is an enhancement of the physical environment). In some implementations, the CGR environment corresponds to a simulated environment (e.g., a fictional environment).

[0055] In some implementations, the emergency content container 90 is associated with an emergency content engine that generates one or more goals for the ant virtual object 70. In some implementations, these goals trigger a graph and / or storyline for the ant virtual object 70. In some implementations, the emergency content container 90 is associated with a virtual object engine that generates one or more actions for the ant virtual object 70.

[0056] like Figure 1RAs shown, emergency content container 90 includes various container enable representations 92. In some embodiments, container enable representations 92 are grouped into container enable representation blocks. In various embodiments, container enable representations 92 allow various operations to be performed relative to emergency content container 90. For example, in some embodiments, container enable representations 92 include a screenshot enable representation 92a that captures an image of emergency content container 90 in response to being selected. In some embodiments, container enable representations 92 include a sharing enable representation 92b that provides an option for sharing emergency content container 90 with other devices (e.g., other devices of the same user and / or other devices of other users) in response to being selected.

[0057] In some implementations, container affordance 92 includes microphone affordance 92c that, in response to being selected, allows a user of the device to interact with a virtual object instantiated in emergency content container 90. For example, in some implementations, in response to detecting selection of microphone affordance 92c, emergency content container 90 receives audio input. In such implementations, emergency content container 90 causes a virtual object instantiated in emergency content container 90 to respond to the audio input. For example, emergency content container 90 changes the action performed by the instantiated virtual object in response to the audio input.

[0058] In some embodiments, the container enable representation 92 includes a speaker enable representation 92d, which when selected allows a user of the device to control the volume associated with the emergency content container 90 (e.g., enabling the user to listen to conversations recited by virtual objects instantiated in the emergency content container 90).

[0059] In some embodiments, the container enable indication 92 includes content playback enable indications, such as a rewind enable indication 92e, a play enable indication 92f, and a fast forward enable indication 92g. In some embodiments, selection of the play enable indication 92f causes the emergency content container 90 to transition from an editing mode to a play mode, in which the ant virtual object 70 begins to perform an action. In some embodiments, when the rewind enable indication 92e is selected, the content displayed by the emergency content container 90 is rewound. In some embodiments, when the fast forward enable indication 92g is selected, the content displayed by the emergency content container 90 is fast forwarded. In some embodiments, the container enable indication 92 includes a record enable indication 92h, which, when selected, causes the content displayed by the emergency content container 90 to be recorded.

[0060] In some implementations, container affordance 92 includes an add virtual object affordance 92i that, when selected, provides an option to add a virtual object to emergency content container 90. In some implementations, add virtual object affordance 92i allows additional instances of virtual objects that are already instantiated in emergency content container 90 to be instantiated. In some implementations, add virtual object affordance 92i allows instances of virtual objects that are not currently instantiated in emergency content container 90 to be instantiated.

[0061] In some implementations, container affordance 92 includes a duplicate virtual object affordance 92j that, when selected, provides an option to duplicate (e.g., copy) a virtual object that has been instantiated in emergent content container 90. Figure 1R In the example of , selection of the repeat virtual object affordance 92 j provides an option to repeat the ant virtual object 90 that has been instantiated in the emergency content container 70 .

[0062] In some implementations, container affordance 92 includes a delete virtual object affordance 92k that, when selected, provides an option for deleting a virtual object instantiated in emergency content container 90. Figure 1R In the example of , selection of the delete virtual object affordance 92k provides an option to delete the ant virtual object 90 that has been instantiated in the emergency content container 70 .

[0063] Figure 1S User input 50j is shown selecting sharing affordance 89. User input 50j corresponds to a request to share ant virtual object 70.

[0064] Figure 1T Sharing options 890 are shown displayed in response to selection of sharing affordance 89. Figure 1T In the example of , sharing options 890 include local sharing affordance 892, message affordance 894, mail affordance 896, and publish affordance 898. When local sharing affordance 892 is selected, an option to share ant virtual object 70 with nearby devices is provided. When message affordance 894 is selected, an option to share ant virtual object 70 via instant messaging is provided. When mail affordance 896 is selected, an option to share ant virtual object 70 via email is provided. When publish affordance 898 is selected, an option to publish (e.g., distribute) ant virtual object 70 is provided. In some specific implementations, ant virtual object 70 is distributed via a digital asset store (e.g., a virtual object store, a digital media store, etc.).

[0065] Figure 1UUser input 50k is shown selecting to create affordance 40a. Figure 1U In the example of , no parts are selected from the appendage parts set 36. More generally, in various implementations, a request to synthesize a virtual object is associated with an incomplete part selection.

[0066] like Figure 1V As shown, in some implementations, in response to no parts being selected from the appendage parts set 36, a prompt 42 is displayed requesting the user to select a part from the appendage parts set 36. More generally, in various implementations, in response to an incomplete selection of a part, a prompt is displayed requesting the user to complete the selection of the part.

[0067] like Figure 1W As shown, in some implementations, in response to no parts being selected from the appendage parts group 36, a virtual object 70b is synthesized having a default appendage part 76. More generally, in various implementations, a default part from a part group is selected in response to no part from that particular group being selected.

[0068] like Figure 1X As shown, in some implementations, in response to no parts being selected from the appendage parts group 36, a virtual object 70c is synthesized without an appendage. More generally, in various implementations, in response to not selecting a part from a particular part group, a virtual object is synthesized without a part from the particular part group.

[0069] Figure 1Y A feature set 38 is shown, which includes various functions, such as crawl 38a, fly 38b, and talk 38c. Thus, the virtual object toolkit 10 allows a user to select features for a virtual object. Figure 1Y Also shown is a behavior component set 39, which includes various behavior components, such as friendly behavior 39a, offensive behavior 39b, and cooperative behavior 39c. Thus, the virtual object toolkit 10 allows the user to select behavior components for a virtual object.

[0070] Figure 1Z-1AB A sequence is shown in which the virtual object toolkit 10 prevents the user from selecting parts that are inconsistent with each other. For example, Figure 1Z User input 501 selecting friendly behavior 39a is shown. Figure 1AA User input 50m is shown selecting an attack behavior 39b. Fig. 1AB A prompt 44 is shown indicating that the selection of the offensive behavior 39b is inconsistent with a previous selection. Fig. 1AB In the example of , the selection of the offensive behavior 39b is inconsistent with the previous selection of the friendly behavior 39a.

[0071] Figure 1AC-1ADA sequence is shown in which the virtual object toolkit 10 indicates that the selection of a component is consistent with a previous selection of a component. For example, Figure 1AC User input 50n is shown selecting collaborative activity 39c. Figure 1AD A prompt 46 is shown indicating that the selection of the collaborative behavior 39c is consistent with the previous selection of the component. Figure 1AD In the example, the selection of collaborative action 39c is the same as Figure 1Z This is consistent with the previous choice of friendly behavior 39a.

[0072] Figure 1AE-1G A sequence is shown in which some of these components are associated with the degree of deficiency. Figure 1AE Some components are shown to be associated with availability indicators indicating the number of instances that are available. Figure 1AE In the example of FIG. 3 , the teapot affordance 32a is associated with the teapot availability indicator 33a, thereby indicating that three teapots are available. Similarly, the football affordance is associated with the football availability indicator 33b, thereby indicating that five footballs are available. Figure 1AE As shown, in some implementations, the availability of components varies. For example, there are more rocks and sticks than watermelons.

[0073] Figure 1AF User input 50o is shown selecting a soccer ball affordance 32b. User input 50o corresponds to a request to utilize a soccer ball as head 72 of ant virtual object 70. Prior to user input 50o, five soccer balls are available. Figure 1AG As shown in , after the user enters 50 degrees, there are four footballs left. Figure 1AG As shown, the ball availability indicator 33b is updated to indicate that four balls remain.

[0074] Figures 1AH-1AJ A sequence in which an ant virtual object 70 is associated with contribution information indicating the composition of the ant virtual object 70 is shown. Figure 1AH An ant virtual object container 87 is shown including information affordance 80. In some implementations, contribution information about ant virtual object 70 is displayed when information affordance 87 is selected.

[0075] Figure 1AI User input 50p is shown selecting information affordance 87. User input 50p corresponds to a request to display contribution information about ant virtual object 70.

[0076] Figure 1AJContribution information 870 associated with the ant virtual object 70 is shown. In various implementations, the contribution information 870 indicates the components (e.g., composition) of the ant virtual object 70. For example, in some implementations, the contribution information 870 includes a contribution percentage 872. Figure 1AJ In the example of , the contribution percentage 872 indicates that the ant virtual object 70 is 20% football, 60% burrito, and 20% candy. Figure 1AJ As shown, in some implementations, the contribution information 870 indicates contribution points 874 (eg, credited / awarded) distributed to owners of components used to synthesize the ant virtual object 70. Figure 1AJ In the example of , 2 points are assigned to the entity that owns (e.g., creates) the soccer component, 3 points are assigned to the entity that owns the burrito component, and one point is assigned to the entity that creates the candy component.

[0077] refer to Figure 1AK In some implementations, the ant virtual object container 80 includes an affordance that allows the user to obtain a physical representation of the ant virtual object 70. For example, in some implementations, the ant virtual object container 80 includes a 3D printing affordance 85a that, when selected, causes a 3D printer to build a physical representation of the ant virtual object 70. In some implementations, the ant virtual object container 80 includes a purchase affordance 85b that allows the user to purchase (e.g., purchase) a physical representation (e.g., a physical model) of the ant virtual object 70.

[0078] Figure 1AL A virtual object supplement toolkit 10a is shown. In some implementations, the virtual object supplement toolkit 10a provides options for supplementing (e.g., enhancing or accessing) virtual objects. In some implementations, the virtual object supplement toolkit does not provide the option of synthesizing virtual objects from scratch. In other words, in some implementations, the virtual object supplement toolkit 10a does not include sufficient components for synthesizing virtual objects.

[0079] exist Figure 1AL In the example of , the virtual object supplement toolkit 10a includes a skin component 12. For example, the virtual object supplement toolkit 10a includes a desert skin enable representation 12a for applying a desert skin to the ant virtual object 70, a rainforest skin enable representation 12b for applying a rainforest skin to the ant virtual object 70, and an urban skin enable representation 12c for applying an urban skin to the ant virtual object 70.

[0080] exist Figure 1ALIn the example of , the virtual object supplement toolkit 10a includes an accessory part 14. For example, the virtual object supplement toolkit 10a includes a sunglasses enable representation 14a for accessing the ant virtual object 70 with a pair of sunglasses, a hat enable representation 14b for placing a hat on the head 72 of the ant virtual object 70, and a hoodie enable representation 14c for placing a hoodie on the body 74 of the ant virtual object 70.

[0081] In some implementations, changing the size of a virtual object will trigger a change in the number of components that make up the virtual object. In some implementations, increasing the size of a virtual object will trigger an increase in the number of components that make up the virtual object. For example, increasing Figure 1R The size of the ant virtual object 70 shown in FIG. 7 will trigger an increase in the number of appendages 76 included in the ant virtual object 70. In some implementations, reducing the size of the virtual object will trigger a decrease in the number of parts that make up the virtual object. For example, reducing Figure 1R The size of the ant virtual object 70 shown in FIG. 7 will trigger a reduction in the number of appendages 76 included in the ant virtual object 70. More generally, in various implementations, the level of detail associated with a virtual object is a function of the size of the virtual object (e.g., increasing the size of the virtual object will trigger a higher level of detail).

[0082] In various implementations, the goal of the virtual object is a function of a component of the virtual object. In some implementations, the goal of the ant virtual object 70 is a function of a physical component of the ant virtual object 70. For example, in some implementations, if the ant virtual object 70 is made of steel, the goal of the ant virtual object 70 includes protecting the area in which the ant virtual object 70 is instantiated. However, if the ant virtual object 70 is made of jelly, the goal of the ant virtual object 70 includes running away from danger.

[0083] In various implementations, the action of the virtual object is a function of a component of the virtual object. For example, in some implementations, the action of the ant virtual object 70 is a function of a behavior component of the ant virtual object 70. For example, in some implementations, if the ant virtual object 70 includes a friendly behavior component, the action of the ant virtual object 70 includes chatting with other virtual objects instantiated in the emergency content container 90. However, if the ant virtual object 70 includes an attack behavior component, the action of the ant virtual object 70 includes attacking other virtual objects instantiated in the emergency content container 90.

[0084] In various implementations, virtual objects represent characters or variations thereof from fictional material such as movies, video games, comics, and / or novels. In various implementations, virtual objects represent things (e.g., tangible objects). For example, in some implementations, virtual objects represent equipment (e.g., machines such as airplanes, tanks, robots, cars, etc.). In some implementations, virtual objects represent things (e.g., equipment) from fictional material. In some implementations, virtual objects represent physical artifacts from a physical environment.

[0085] In various implementations, a virtual object performs an action to meet (e.g., complete or achieve) a goal. In some implementations, a virtual object is associated with a specific goal, and the virtual object performs an action that improves the possibility of meeting the specific goal. In some implementations, for example, a virtual object is referred to as an object representation because the virtual object represents various objects (e.g., a physical product or a fictional product). In some implementations, a virtual object representing a character is referred to as a character virtual object. In some implementations, a character virtual object performs an action to achieve a character goal. In some implementations, a virtual object representing equipment is referred to as an equipment virtual object. In some implementations, an equipment virtual object performs an action to achieve an equipment goal. In some implementations, a goal implementer representing an environment is referred to as an environment virtual object. In some implementations, an environment goal implementer performs an environment action to achieve an environment goal.

[0086] Figure 2A Flowchart representation of method 200 for synthesizing a virtual object from a virtual object toolkit. In various implementations, method 200 is performed by a device having a display, a non-transitory memory, and one or more processors coupled to the display and the non-transitory memory. In some implementations, method 200 is performed by a processing logic component (including hardware, firmware, software, or a combination thereof). In some implementations, method 200 is performed by a processor executing a code stored in a non-transitory computer-readable medium (e.g., a memory). In short, in some implementations, method 200 includes obtaining a virtual object toolkit, receiving a request to assemble a virtual object, and synthesizing a virtual object according to the request.

[0087] As shown in block 210, in various implementations, method 200 includes obtaining a virtual object toolkit (e.g., Figure 1A In some implementations, the virtual object toolkit includes a set of virtual object templates (e.g., Figure 1AIn some implementations, the set of virtual object templates has a specific virtual object type (e.g., the set of virtual object templates share a set of features, e.g., the set of virtual object templates 20 is used to synthesize an insect virtual object). In some implementations, the virtual object toolkit includes a plurality of component groups (e.g., Figure 1A In some implementations, each of the plurality of component groups is associated with a particular portion of the virtual object (e.g., Figure 1A In the example of FIG. 1 , the head component group 32 is associated with the head portion of the insect virtual object, the body component group 34 is associated with the body portion of the insect virtual object, and the appendage component group 36 is associated with the appendage portion of the insect virtual object).

[0088] As shown in block 210a, in some implementations, at least one of the plurality of groups includes a physical component (e.g., Figure 1A 32, body component group 34, and appendage component group 36 shown in FIG. 3 ). In some implementations, physical components refer to components that determine the physical appearance of a virtual object (e.g., physical components define the look and / or feel of a virtual object). In some implementations, at least one of the plurality of groups includes functional components (e.g., Figure 1Y In some implementations, a functional component refers to a component that determines the functionality of a virtual object (e.g., a functional component defines the functionality of a virtual object). In some implementations, at least one of the plurality of groups includes a behavior component (e.g., Figure 1Y In some implementations, a behavior component refers to a component that determines the behavior of a virtual object. In some implementations, at least one of the multiple groups includes an enhancement component (e.g., Figure 1AL In some implementations, an enhancement component refers to a component that enhances (eg, supplements) a virtual object.

[0089] As shown in block 210b, in some implementations, different components are provided by different entities (e.g., different contributors, different publishers, and / or different users). For example, in some implementations, different components are created by different entities. Figure 1A In some implementations, the teapot corresponding to the teapot affordance 32a is created by a first entity, and the soccer ball corresponding to the soccer ball affordance 32b is created by a second entity. In various implementations, the virtual object toolkit includes components provided by different entities, thereby allowing a user to compose virtual objects composed of components created by different entities. Thus, the user is not limited to assembling virtual objects from components created only by the user.

[0090] As shown in block 210c, in various implementations, the virtual object toolkit includes accessories. For example, in some implementations, the virtual object toolkit includes a virtual object supplemental toolkit (e.g., Figure 1AL The virtual object supplement kit 10a shown in FIG. 1 includes accessories (e.g., Figure 1AL The accessory part 14 shown).

[0091] As shown in block 220, in various implementations, method 200 includes receiving a request to assemble a virtual object. In some implementations, the request includes selecting a component from at least some of a plurality of component groups. Figure 1J In the example of FIG. 4 , user input 50 e selecting create affordance 40 a corresponds to a request to assemble a virtual object.

[0092] As shown in block 220a, in some implementations, method 200 includes determining whether the selected components are available. In some implementations, method 200 includes displaying a prompt for selecting an alternative component in response to determining that at least some of the selected components are not available.

[0093] As indicated at block 220b, in some implementations, method 200 includes removing the selected component from the virtual object toolkit. In some implementations, the component has a specific number of available instances. In such implementations, method 200 includes indicating that the number of available instances of the component decreases after selecting the component to assemble the virtual object. Figure 1AE-1G In the example of FIG. 5 , in response to user input 50°, the ball availability indicator 33b is updated to indicate that the number of available balls is reduced from 5 to 4.

[0094] As shown in block 230, in various implementations, method 200 includes synthesizing a virtual object (e.g., synthesizing Figure 1K In various implementations, a set of actions performed by a virtual object in a CGR environment is a function of the components included in the virtual object. As described herein, in some implementations, a virtual object engine generates a set of actions for a virtual object. In such implementations, a set of actions generated by the virtual object engine is a function of the components that make up the virtual object.

[0095] As shown in block 230a, in some implementations, method 200 includes verifying the compatibility of the selected component. For example, in some implementations, method 200 includes determining whether the selected component can be used to assemble a functional virtual object. As shown in block 230b, in some implementations, method 200 includes displaying a prompt to indicate the selection of an incompatible component (e.g., Fig. 1AB44 shown in ). In some implementations, the prompt identifies the incompatible component. As shown in block 230c, in some implementations, method 200 includes replacing the incompatible component with a default component. As shown in block 230d, in some implementations, method 200 includes synthesizing a virtual object without the incompatible component (e.g., the virtual object does not include one of the components that are incompatible with each other).

[0096] As shown in block 230e, in some implementations, method 200 includes retaining permissions associated with respective components used to synthesize virtual objects. For example, in some implementations, each component is associated with permissions that define whether / how the component can be distributed (e.g., permissions indicate whether the component can be copied).

[0097] See also Figure 2B As shown in block 240, in some implementations, method 200 includes instantiating a virtual object in one of an augmented reality (AR) environment and a virtual reality (VR) environment. Figure 1R As shown, the ant virtual object 70 is instantiated in the emergent content container 90. As shown in block 240a, in some implementations, the virtual object performs one or more actions (e.g., a sequence of actions) that satisfy one or more goals (e.g., a set of goals) of the virtual object. In some implementations, the method 200 includes generating actions and / or goals based on the components that make up the virtual object.

[0098] As shown in block 245, in some implementations, method 200 includes obtaining selection criteria. In some implementations, the selection criteria indicate a set of components from which at least one component must be selected in order to synthesize a virtual object. In some implementations, the selection criteria indicate compatible components. In some implementations, the selection criteria indicate incompatible components. In some implementations, method 200 includes receiving the selection criteria from an entity that creates a virtual object toolkit. In some implementations, method 200 includes receiving the selection criteria from an entity that creates one or more components in the virtual object toolkit. For example, in some implementations, some components are associated with corresponding selection criteria indicating other compatible / incompatible components.

[0099] As shown in block 250a, in some implementations, method 200 includes displaying a prompt to complete the selection. In some implementations, the prompt identifies a set of components from which components must be selected to synthesize the virtual object. For example, displaying Figure 1V Tip 42 shown.

[0100] As shown in block 250b, in some implementations, method 200 includes selecting a default part for an unselected component group. Figure 1W As shown, the ant virtual object 70b includes default accessory parts because no parts are selected from Figure 1U The appendage component group 36 in.

[0101] As shown in block 250c, in some implementations, method 200 includes synthesizing an incomplete virtual object. For example, in some implementations, method 200 includes synthesizing a virtual object that does not have a portion corresponding to an unselected component group. For example, Figure 1X As shown, the ant virtual object 70c does not include appendages because no parts are selected from Figure 1U The appendage component group 36 in.

[0102] See also Figure 2C As shown in block 255, in some implementations, a virtual object indicates its constituent parts. For example, in some implementations, a virtual object indicates the parts that constitute the virtual object. For example, Figure 1AL As shown, the ant virtual object container 80 displays contribution information 870 .

[0103] As shown in block 260, in some implementations, the virtual object indicates the corresponding percentages of the parts that make up the virtual object. Figure 1AJ As shown, the ant virtual object container 80 indicates the contribution percentage 872 of the components that make up the ant virtual object 70. As shown in block 260a, in some specific implementations, the method 200 includes distributing points based on the contribution percentage. Figure 1AJ As shown, contribution points 874 are distributed based on contribution percentage 872. In some implementations, method 200 includes distributing points to entities that created the corresponding components.

[0104] As shown in block 265, in some implementations, method 200 includes displaying an option for obtaining a physical representation of the virtual object. In some implementations, method 200 includes allowing a user to 3D print the virtual object. For example, Figure 1AK As shown, the ant virtual object container 80 includes a 3D printable representation 85a. In some embodiments, the method 200 includes allowing a user to purchase a physical model of a virtual object. For example, Figure 1AK As shown, the ant virtual object container 80 includes a purchase affordance representation 85 b for purchasing the physical model of the ant virtual object 70 .

[0105] As shown in block 270, in some implementations, method 200 includes obtaining a virtual object supplement kit (e.g., a supplement kit) that includes supplemental parts to supplement the virtual object. Figure 1AL As shown, the virtual object supplement toolkit 10 a allows a user to supplement the ant virtual object 70 by applying a skin to the ant virtual object 70 and / or by accessing the ant virtual object 70 .

[0106] Figure 3is a block diagram of a server system 300 having one or more components of a device enabled according to some implementations. Although some specific features are shown, those of ordinary skill in the art will recognize from this disclosure that various other features are not shown for the sake of brevity and so as not to obscure more relevant aspects of the implementations disclosed herein. To this end, as a non-limiting example, in some implementations, the server system 300 includes one or more processing units (CPUs) 301, a network interface 302, a programming interface 303, a memory 304, and one or more communication buses 305 for interconnecting these and various other components.

[0107] In some implementations, a network interface 302 is provided to, among other purposes, 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. In some implementations, a communication bus 305 includes circuits that interconnect and control communications between system components. Memory 304 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 magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid-state storage devices. Memory 304 optionally includes one or more storage devices located away from CPU 301. Memory 304 includes non-transitory computer-readable storage media.

[0108] In some implementations, the memory 304 or a non-transitory computer-readable storage medium of the memory 304 stores the following programs, modules, and data structures, or a subset thereof, including an optional operating system 306 , a virtual object toolkit 310 , a request interpreter 320 , and a virtual object synthesizer 360 .

[0109] In various implementations, the virtual object toolkit 310 is similar to Figure 1A In some implementations, the virtual object toolkit 310 includes a template 312 (e.g., similar to Figure 1A In some implementations, the virtual object toolkit 310 includes a plurality of component groups 314 (e.g., similar to Figure 1A In some implementations, each set of parts 314 includes a part 316 that corresponds to a particular portion of a virtual object (eg, one of the set of parts 314 includes a part that can be used as a head of a virtual object).

[0110] In various implementations, request interpreter 320 interprets the request to synthesize a virtual object. For example, in some implementations, request interpreter 320 obtains user input selecting a template from template 312. In some implementations, request interpreter 320 obtains another user input selecting a particular component 316. In some implementations, request interpreter 320 displays a prompt for completing the component selection (e.g., request interpreter 320 displays Figure 1V In some implementations, the request interpreter 320 displays a prompt indicating that the selected component is incompatible with other previously selected components (e.g., the request interpreter 320 displays Fig. 1AB In some implementations, request interpreter 320 displays a prompt indicating that the selected component is compatible with other previously selected components (e.g., request interpreter 320 displays Figure 1AD Tip 46 shown in ).

[0111] In various implementations, the virtual object synthesizer 360 synthesizes the virtual object based on the request. In some implementations, the virtual object synthesizer 360 synthesizes the virtual object using components from a virtual object toolkit identified in the request. In some implementations, the virtual object synthesizer 360 updates the virtual object toolkit to indicate the components used to synthesize the virtual object (e.g., the virtual object synthesizer 360 updates the virtual object toolkit to indicate the components used to synthesize the virtual object). Figure 1AG In some implementations, the virtual object synthesizer 360 may include a soccer ball availability indicator 33b in a virtual object container (e.g., Figure 1K The virtual object is displayed in a virtual object container 80 shown, thereby allowing a user to modify the virtual object, inspect the virtual object (e.g., by rotating the virtual object), instantiate the virtual object, and / or share the virtual object.

[0112] Although various aspects of specific implementations within the scope of the appended claims are described above, it should be apparent that the various features of the above-mentioned specific implementations can be embodied in a variety of forms, and any of the above-mentioned specific and / or functions are merely illustrative. Based on this disclosure, it should be understood by those skilled in the art that the aspects described herein can be implemented independently of any other aspects, and two or more of these aspects can be combined in various ways. For example, any number of aspects set forth herein can be used to implement a device and / or a method can be practiced. In addition, in addition to or different from one or more aspects set forth herein, other structures and / or functions can be used to implement such a device and / or such a method can be practiced.

[0113] It will also be understood that, although the terms "first", "second", etc. may be used to describe various elements in this article, these elements should not be limited by these terms. These terms are only used to distinguish one element from another element. For example, a first node may be referred to as a second node, and similarly, a second node may be referred to as a first node, which changes the meaning of the description, as long as all occurrences of the "first node" are consistently renamed and all occurrences of the "second node" are consistently renamed. Both the first node and the second node are nodes, but they are not the same node.

[0114] The terms used herein are only for describing specific embodiments and are not intended to limit the claims. As used in the description of the present embodiment and the appended claims, the singular forms of "a", "an", "the / said" are intended to also cover the plural forms, unless the context clearly indicates otherwise. It will also be understood that the terms "and / or" used herein refer to and cover any and all possible combinations of one or more items in the associated listed items. It will also be understood that the terms "comprises" and / or "comprising" when used in this specification specify the presence of stated features, integers, steps, operations, elements and / or parts, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, parts, and / or their groupings.

[0115] As used herein, the term “if” may be interpreted to mean “when the antecedent is true” or “when the antecedent is true” or “in response to determining” or “upon determining” or “in response to detecting” that the antecedent is true, depending on the context. Similarly, the phrase “if it is determined that [the antecedent is true]” or “if [the antecedent is true]” or “when [the antecedent is true]” is interpreted to mean “upon determining that the antecedent is true” or “in response to determining” or “upon determining” that the antecedent is true or “when detecting that the antecedent is true” or “in response to detecting” that the antecedent is true, depending on the context.

Claims

1. A method for synthesizing a virtual object, comprising: At a device comprising a display, a non-transitory memory, and one or more processors coupled to the non-transitory memory: displaying on the display a user interface including a plurality of affordances; detecting a user input for at least one of the plurality of affordances, the user input corresponding to a request to obtain a composite virtual object from a virtual object template comprising a plurality of component assemblies, wherein the request indicates a selection of a subset of the plurality of component assemblies; synthesizing the virtual object according to the request, wherein a set of actions performed by the virtual object in an environment is a function of the subset of the plurality of component groups included in the virtual object; as well as A preview of the virtual object is displayed on the display.

2. The method according to claim 1, further comprising: generating the set of actions for the virtual object based on the subset of the plurality of component groups included in the virtual object; as well as The virtual object is displayed on the display performing the set of actions to satisfy the goal of the virtual object.

3. The method according to claim 1 or 2, further comprising: obtaining selection criteria identifying a set of component assemblies from the plurality of component assemblies; as well as Responsive to selection of a component that is a missing component from at least one of the set of component groups identified by the selection criteria, it is determined that the selection of the component indicated in the request is incomplete.

4. The method according to claim 3, further comprising: A prompt for completing the selection of a component is displayed on the display.

5. The method according to claim 3, further comprising: A default component is selected for the unselected component group to complete the selection of the component. 6 . The method according to claim 3 , wherein synthesizing the virtual object comprises synthesizing an incomplete virtual object, the incomplete virtual object missing one or more components specified in the set of virtual object templates.

7. The method of any one of claims 1, 2, and 4-6, wherein at least one of the plurality of component groups comprises a combination of physical components, functional components, and behavioral components.

8. The method of any one of claims 1, 2, and 4-6, wherein the plurality of component groups include components created by different entities.

9. The method according to any one of claims 1, 2, and 4-6, wherein synthesizing the virtual object comprises: determining whether the selected components are compatible with each other; as well as In response to determining that at least one of the selected components is incompatible with at least another of the selected components, a prompt is displayed on the display to replace at least one of the selected components that is incompatible.

10. The method according to any one of claims 1, 2, and 4-6, wherein synthesizing the virtual object comprises: determining whether the selected components are compatible with each other; as well as In response to determining that at least one of the selected components is incompatible with at least another of the selected components, at least one of the incompatible ones of the selected components is replaced with a default component.

11. The method according to any one of claims 1, 2, and 4-6, wherein synthesizing the virtual object comprises: determining whether the selected components are compatible with each other; as well as In response to determining that at least one of the selected components is incompatible with at least another of the selected components, the virtual object is synthesized without the at least one incompatible one of the selected components.

12. The method according to any one of claims 1, 2 and 4-6, further comprising: The selected component is removed from the virtual object toolkit.

13. The method according to any one of claims 1, 2 and 4-6, further comprising: A list of components constituting the virtual object is displayed on the display.

14. The method of any one of claims 1, 2, and 4-6, wherein the virtual object indicates respective percentages of components used to synthesize the virtual object.

15. The method according to claim 14, further comprising: Based on the respective percentages, credits are distributed to entities that created the components used to synthesize the virtual object.

16. The method of any one of claims 1, 2, 4-6 and 15, wherein each component in the plurality of component groups is associated with a specific portion of the virtual object.

17. A device for synthesizing a virtual object, comprising: one or more processors; monitor; non-transitory memory; and one or more programs stored in the non-transitory memory, which, when executed by the one or more processors, cause the device to: displaying on the display a user interface including a plurality of affordances; detecting a user input for at least one of the plurality of affordances, the user input corresponding to a request to obtain a composite virtual object from a virtual object template comprising a plurality of component assemblies, wherein the request indicates a selection of a subset of the plurality of component assemblies; synthesizing the virtual object according to the request, wherein a set of actions performed by the virtual object in an environment is a function of the subset of the plurality of component groups included in the virtual object; as well as A preview of the virtual object is displayed on the display.

18. The device of claim 17, wherein the one or more programs further cause the device to: generating the set of actions for the virtual object based on the subset of the plurality of component groups included in the virtual object; and The virtual object is displayed on the display performing the set of actions to satisfy the goal of the virtual object.

19. The device of claim 17, wherein the one or more programs further cause the device to: obtaining selection criteria identifying a set of component assemblies from the plurality of component assemblies; and Responsive to selection of a component that is a missing component from at least one of the set of component groups identified by the selection criteria, it is determined that the selection of the component indicated in the request is incomplete.

20. The device of claim 19, wherein the one or more programs further cause the device to: A prompt for completing the selection of a component is displayed on the display.

21. A non-transitory memory storing one or more programs which, when executed by one or more processors of a device, cause the device to: displaying on a display a user interface including a plurality of affordances; detecting a user input for at least one of the plurality of affordances, the user input corresponding to a request to obtain a composite virtual object from a virtual object template comprising a plurality of component assemblies, wherein the request indicates a selection of a subset of the plurality of component assemblies; synthesizing the virtual object according to the request, wherein a set of actions performed by the virtual object in an environment is a function of the subset of the plurality of component groups included in the virtual object; as well as A preview of the virtual object is displayed on the display.

22. The non-transitory memory of claim 21 , wherein the one or more programs further cause the device to: generating the set of actions for the virtual object based on the subset of the plurality of component groups included in the virtual object; and The virtual object is displayed on the display performing the set of actions to satisfy the goal of the virtual object.

23. The non-transitory memory of claim 21 , wherein the one or more programs further cause the device to: obtaining selection criteria identifying a set of component assemblies from the plurality of component assemblies; and Responsive to selection of a component that is a missing component from at least one of the set of component groups identified by the selection criteria, it is determined that the selection of the component indicated in the request is incomplete.

24. The non-transitory memory of claim 23, wherein the one or more programs further cause the device to: A default component is selected for the unselected component group to complete the selection of the component.

Citation Information

Patent Citations

  • Constraint evaluation in directed acyclic graphs

    US20140035908A1

  • Generalized instancing for three-dimensional scene data

    US20140267239A1

  • Virtual object registry and tracking platform

    US20170052676A1