Patent Description:
It is therefore the object of the present invention to provide an improved method according to claim <NUM> of projecting a content library of objects in a computer-based 3D environment, as well as a corresponding computing device according to claim <NUM>.

3D environments can be particular suitable for presenting certain types of content to viewers because 3D environments can provide a more immersive viewing experience than two-dimensional (2D) environments. For example, 3D environments can be suitable for presenting training scenarios or product catalogs having 3D images, videos, sound recordings, etc. to viewers.

When authoring content in 3D environments, an author may import a content library containing multiple content items (e.g., 2D or 3D images of products) as objects in a 3D environment. However, authoring 3D environments incorporating content libraries can be challenging because of a whole range of authoring activities that are absent from authoring in 2D environments. For example, authoring activities such as 3D content placement and arrangement, 3D interaction with the placed content items, and motion specification of the 3D content items are absent from 2D authoring. In 2D authoring, when importing multiple objects into a 2D environment, the 2D objects can be arranged in a grid with rows and/or columns. In contrast, laying out the objects in a two-dimensional grid in a 3D environment may cause certain difficulties for viewers. For example, some objects in a 2D grid can cause occlusion in a 3D environment because one object can be partially or completely in front another object along a depth-dimension. The occlusion can cause the authored content to be obscured or confusing to a viewer. Even without occlusion, one- or two-dimensional arrangement of the objects in a 3D environment can render the objects to appear incoherent because apparent sizes of the objects can change with respect to a depth-dimension. As such, appearance uniformity or coherency of the objects can be lacking in the 3D environment when objects from a content library are presented as a grid.

In order to address the foregoing challenges, an author of 3D content typically needs to experiment with a large number of positions and arrangements of each object via trial and error to determine an optimal arrangement for the multiple objects in a 3D environment. Such experimentation can be labor intensive, inconsistent, and may not even produce a coherent placement and/or arrangement of the objects in the 3D environment. Imprecise placement and/or arrangement can detract user experience, or even induce headache, dizziness, or other negative physiological responses in a viewer when viewing content in the 3D environment.

Several embodiments of the disclosed technology can address at least some aspects of the foregoing challenges by automatically placing, arranging, and projecting supported 2D or 3D content items from an imported content library as objects arranged in a suitable geometric shape in a 3D environment taking into account of a combination of (i) a viewer's depth reception; (ii) the viewer's field of view; (iii) relative positions of one object relative to neighboring object in the 3D environment, and (iv) a field of view of AR/VR/MR headset. An environment data file can then be generated based on the automatically placed objects to create a file containing 3D content that can be distributed to other computing devices for reproducing the 3D environment.

In an example implementation, an authoring application can be configured to provide a template of a 3D environment having, for instance, a background (e.g., a blue sky), a scene (e.g., a mountain), a sound (e.g., sound of wind blowing), and one or more background objects (e.g., trees on the mountain). The template of the 3D environment can also comprise one or more anchor points at which content items (e.g., a 2D or 3D representation of car, bus, plane, etc.) from a content library can be automatically positioned within the 3D environment. The authoring application can also be configured to provide a facility for importing the content library and present available content libraries and corresponding content items as a gallery, a list, or in other suitable interface format.

Upon receiving a user input instructing the authoring application to import a content library into the 3D environment, the authoring application can be configured to import at least some of the content items in the content library as objects and automatically arrange the objects in a suitable geometric shape for a suitable viewing experience. In certain embodiments, the authoring application can be configured to initially resize (e.g., height, width, etc.) the content items from the content library based on a preset container size. For example, the preset container size can be a cube having a volume of about <NUM>, <NUM>, or <NUM> cubic meters. In other embodiments, objects representing the content items may be preprocessed to have the same or similar sizes before being imported into the 3D environment. Thus, the optional resizing by the authoring application may be omitted.

The authoring application can be configured to automatically determine a position and arrangement of the content items relative to a viewer in the 3D environment based on a preset distance from the viewer and presentation format. In one implementation, the multiple content items can be automatically arranged in the 3D environment along a planar circle or a portion of a circle (i.e., an arc) having a center that is spaced apart along a depth-dimension from the viewer at a preset distance along a field of view of the viewer. In one example, the preset distance between the center and the viewer can be about <NUM>, <NUM>, <NUM>, <NUM> meters while the circle has a radius of about <NUM>, <NUM>, <NUM>, or <NUM> meters. In other implementations, the content items may be arranged along an oval, a part of an oval, a triangle, a polygon, a grid, or other suitable geometric shapes and/or presentation formats.

The authorizing application can further be configured to determine a relative position of the objects along the circle or arc relative to one another in the 3D environment. In certain embodiments, the authoring application can utilize a cylindrical coordinate system to place the objects along the circle or arc. As such, each object can be identified by a polar coordinate along a polar axis (e.g., a depth dimension), a longitudinal coordinate along a longitudinal axis (e.g., a height dimension), and an angle coordinate relative to an origin of the coordinate system (e.g., the center of the circle or arc). In accordance with embodiments of the disclosed technology, the objects can be place at generally equal distance from the center of the circle or arc with a corresponding angle value of, e.g., about <NUM>°, about <NUM>°, about <NUM>°, or other suitable values.

The inventors have recognized that such an arrangement of the objects may provide a suitable or even optimal viewing experience for the objects in the content library to the viewer. For example, when viewing the objects by the viewer, the object(s) closes to the viewer would appear larger than others due to the depth perception of the viewer. As such, the viewer can have a more detailed view of such objects than others in the content library. As discussed in more detail below, the viewer can then rotate, scroll, or pan the objects along the circle or arc such that other objects can be rotated to be closer to the viewer and appear larger to the viewer, and thus allowing for a more detailed view of the objects.

In certain embodiments, the authoring application can also be configured to place only a preset number of the content items as objects at a portion of the circle or arc closes to the viewer along the polar axis. Examples of the preset number can be <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, or other suitable numbers. Other than the preset number of objects closest to the viewer, the authoring application can be configured to present other objects as ellipses or other suitable symbols indicating that additional objects are available for viewing. In other embodiments, all of the content items may be presented along the circle or arc without using ellipses.

The authoring application can also be configured to import multiple content libraries and automatically arrange content items from the multiple content libraries as object groups in the 3D environment. The objects from different content libraries can be organized as object groups that are spaced apart in the 3D environment along, for example, a longitudinal axis (e.g., along a height dimension). As such, the 3D environment would present multiple object groups of objects in a stacked formation with each object group having objects arranged along a respective circle or arc. In other embodiments, the object groups can be arranged in the 3D environment in a staggered, interleaved, or other suitable formations.

The authorizing application can also be configured to impose certain behavioral characteristics to the objects arranged around the circle or arc when importing the content library. For example, the objects may be rotated along the circle or arc upon receiving a viewer's input for rotation, scrolling, panning, or other suitable input, using, for example, a laser pointer or other suitable 3D interaction device. In response, a viewing application of the 3D environment can be configured to modify relative positions of the objects of a content library in the 3D environment by presenting additional objects at positions closest or closer to the viewer via step-rotation, scrolling, or other suitable actions. The authoring application can also impart physical characteristics such as inertia to the objects such that scrolling of the objects may appear to slow down to a stop after a period of time.

As such, several embodiments of the disclosed technology can provide a user friendly authoring environment that allows an author to intelligently place supported 2D or 3D content items from a content library into the template of the 3D environment. By automatically positioning and arranging the objects in the 3D environment as described above, several embodiments of the disclosed technology can eliminate repetitive trial and error experimentations to determine the optimal placement and/or arrangements of the inserted objects of a content library, and thus improving productivity and user friendliness of creating 3D content that can provide an immersive experience to viewers.

Certain embodiments of systems, devices, components, modules, routines, data structures, and processes for content library projection in a 3D environment are described below. In the following description, specific details of components are included to provide a thorough understanding of certain embodiments of the disclosed technology. A person skilled in the relevant art will also understand that the technology can have additional embodiments. The technology can also be practiced without several of the details of the embodiments described below with reference to <FIG>.

As used herein, a "three-dimensional environment" or "3D environment" generally refers to a computer-based simulated 3D platform in which two-dimensional (2D) or 3D representations of images, videos, sounds, or other digital content items can be presented to a viewer. A 3D environment can be a virtual space, such as a virtual reality (VR) world, or can be a real world space in which content can be displayed or layered on top of the real world, such as via augmented reality (AR) or other VR techniques.

Also used herein, the term "model" generally refers to data representing a 2D or 3D content item that can be rendered as an object in a 3D environment. Example models can include data representing a virtual room, a virtual scene, or any other subpart of a virtual world. Further used herein, the term "object" or "virtual object" generally refers to a visual representation of a 2D or 3D content item rendered in a 3D environment. Example objects can include 3D images, video recordings, etc. Further used herein, a "content library" generally refers to a file, file folder, list, or other suitable data structure containing data representing one or more models of respective content items that may or may not be rendered in a 3D environment. One example content library can include a file folder containing 2D or 3D images of products in a product catalog.

Aspects of the present disclosure are related to 3D environment authoring and generation using an authoring application. A 3D environment can contain one or more models individually include a virtual room, a virtual scene, or any other subpart of a virtual world. A user of the authoring application can graphically select a content library containing multiple 2D or 3D representations of models of content items and insert the selected representations into a 3D environment. As described in more detail below, a user can use an authoring application to select and insert models of content items in the content library into a 3D environment. In response, the authoring application can automatically determine placement and/or arrangement of the inserted content items and projecting the corresponding objects in the 3D environment such that a suitable view of the objects in the 3D environment is obtained. The 3D environment can then be stored as an environment data file containing information relating to the one or more models and/or content items in the 3D environment.

In certain embodiments, different types of content can be embedded or included in the 3D environment. Example content types can include 3D objects (e.g., 3D models, figures, shapes, etc.) or 2D objects (e.g., files, images, presentations, documents, web sites, videos, remote resources, etc.), etc. In other embodiments, a 3D environment can be a virtual space, such as a virtual reality (VR) world, or can be a real world space in which content can be displayed or layered on top of the real world, such as via augmented reality (AR) or other VR techniques. The 3D environment with the inserted models can then be stored as an environment data file later used to reproduce a 3D environment having 3D renderings of the inserted models.

Content authored in a 3D environment according to aspects disclosed herein can then be consumed using a viewing application on a viewing device such as a desktop computer or a smartphone. In one example, a 3D environment can be experienced across a wide spectrum of computing devices, ranging from low-end devices (e.g., GOOGLE CARDBOARD) to high-end devices (e.g., MICROSOFT HOLOLENS, OCULOUS RIFT, HTC VIVE, etc.). By using desktop or mobile computing devices to generate 3D environments, additional related overhead (e.g., the transmission of all required textures, light maps, audio files, etc.) can be avoided. Further, device-specific or platform-specific particularities can be handled by the viewing application, thereby making such particularities invisible to both the end-user and the author of the 3D environment.

The viewing application can comprise computing resources associated with the models used by the environment data file. In some examples, the environment data file can comprise computing resources for use when rendering the 3D environment or resources can be retrieved from a server or other remote location. When rendering the 3D environment, the viewing application can identify one or more anchor points when stitching adjacent or connected models specified by the environment data file together into a 3D environment. As an example, a model can comprise an entry anchor point and an exit anchor point. The entry anchor point can indicate a doorway or other entrance into the model, and the exit anchor point can indicate a doorway or other exit from the model. Thus, when stitching multiple models (e.g., adjacent or connected models) together, the exit anchor point of a first model can be used to position the entry anchor point of a second model (and, by extension, the second model), thereby creating a continuous combination of the models.

Authoring 3D environments incorporating content libraries containing multiple content items can be challenging because of a whole range of authoring activities that are absent from authoring in 2D environments. For example, in 2D authoring, when inserting multiple objects into a 2D environment, the inserted objects are typically arranged in a grid with rows and/or columns. In contrast, laying out the objects in a grid in a 3D environment may cause certain difficulties for viewers. For instance, some objects in the grid can cause occlusion in a 3D environment because one object can be partially or completely in front of another object along a depth-dimension. The occlusion can cause the authored content to be obscured or confusing to a viewer. Even without occlusion, one- or two-dimensional arrangement of the objects in a 3D environment can render the objects to appear incoherent because apparent sizes of the objects can change in relation to a distance from the viewer. As such, appearance uniformity or coherency of the objects can be lacking in the 3D environment when the objects are simply laid out as a 2D grid.

Several embodiments of the disclosed technology can address at least some aspects of the foregoing challenges by automatically placing, arranging, and projecting supported 2D or 3D content items imported from a content library as objects in a 3D environment taking into account of a combination of (i) a viewer's depth reception; (ii) the viewer's field of view; (iii) relative positions of one object relative to neighboring object in the 3D environment; and (iv) a field of view of an AR/VR/MR headset. An environment data file can then be generated based on the automatically placed objects to create a file containing 3D content that can be distributed to other computing devices for reproducing the 3D environment, as described in more detail below with reference to <FIG>.

<FIG> is a schematic diagram illustrating a computing framework <NUM> for content library projection in a 3D environment in accordance with embodiments of the disclosed technology. As shown in <FIG>, the computing framework <NUM> can include an authoring devices <NUM> corresponding to an author <NUM> and one or more viewing devices <NUM> corresponding to viewers <NUM> (shown as first and second viewers 103a and 103b). The authoring device <NUM> and the viewing devices <NUM> can individually include a mobile computing device, a laptop, a tablet computer, a desktop computer, or other suitable types of computing device. Even though only one authoring device <NUM> and two viewing devices <NUM> are shown in <FIG> for illustration purposes, in other embodiments, the computing framework <NUM> can facilitate content authoring for additional authors <NUM> and/or viewers <NUM> with corresponding authoring and viewing devices (not shown). Example configurations of the authoring device <NUM> and the viewing devices <NUM> are described below in more detail with reference to <FIG>.

As shown in <FIG>, the authoring device <NUM> can include an authoring application <NUM>, a model store <NUM> containing data records of models <NUM>, and an output store <NUM> containing data records of 3D environment files <NUM>. The authoring application <NUM> can be configured to provide the author <NUM> a user interface <NUM> (shown in <FIG>) representing a 3D environment to facilitate authoring content in a 3D environment. In certain embodiments, the authoring application <NUM> can be a web-based application accessible by the author <NUM> via a web browser. In other examples, the authoring application <NUM> can be an executable application, which can be retrieved and executed by a processor of the authoring device <NUM>.

In one embodiment, the authoring application <NUM> can be configured to display 2D or 3D representations of one or more models <NUM> of content items of a content library as a gallery, list, or other suitable form. The author <NUM> can then select and insert the content library into the provided 3D environment as multiple objects corresponding to the content library. In other embodiments, the authoring application <NUM> can provide a variety of themes. Different models <NUM> or content library can be associated with one or more themes, or can be altered or adapted based on a selected theme (e.g., colors, textures, lighting, etc.). As described in more detail below with reference to <FIG>, the authoring application <NUM> can contain additional modules and routines configured to automatically projecting content items from a content library as objects in a 3D environment such that the author <NUM> can place all of the content items from the content library into the 3D environment without labor intensive trial and error experimentations.

The model store <NUM> can store one or more models <NUM> representing corresponding content items of one or more content libraries that can be used to author a 3D environment. In one example, models <NUM> or content libraries may be associated with one or more themes. When the author <NUM> selects a theme or content library, the authoring application <NUM> can provide one or more models <NUM> or content libraries associated with the selected theme. In some examples, a set of models <NUM> can be designed such that stitching a model <NUM> together with another model <NUM> from the same set can form a seemingly continuous model <NUM>. In other examples, aspects of a model <NUM> stored in the model store <NUM> can be generated dynamically or programmatically. In certain embodiments, the author <NUM> can create the models <NUM> using the authoring application <NUM>. In other embodiments, the models <NUM> can be retrieved from, for example, third party vendors of 2D or 3D content items, or from other suitable sources.

In certain embodiments, a model <NUM> may indicate that certain aspects may be substituted depending on another model <NUM> with which the original model <NUM> can be stitched. As an example, a first model <NUM> can indicate that a wall or archway may be replaced with a door. As such, an entry point of a second model may be stitched to the first model at the door. In other embodiments, other suitable replacement or model generation techniques may be used to generate the various models <NUM>.

The authoring application <NUM> can also be configured to output an authored 3D environment as an environment data file <NUM> containing 3D environment data to, for example, the output store <NUM>. In one implementation, the environment data file <NUM> can comprise information associated with selected models <NUM> (e.g., a model identifier, a model name, a model type, etc.), positioning information (e.g., coordinates, anchor point identifiers, etc.), content information (e.g., which content should be displayed for one or more anchor points, the content to be displayed, a reference to content, etc.), custom resources (e.g., custom textures, sounds, etc.), among other information. As shown in <FIG>, the output store <NUM> can be configured to store one or more environment data files <NUM>. As used herein, an "environment data file" can include a file on a file system, an entry in a database, or can be stored using any of a variety of other data storage techniques.

As shown in <FIG>, the viewing devices <NUM> can each contain a viewing application <NUM> configured to generate, view, explore, and/or interact with a 3D environment based on an environment data file <NUM>. In one example, viewing application <NUM> may be a web-based application accessible using a web browser. In other examples, the viewing application <NUM> can be an executable application for the viewing devices <NUM>. In operation, the viewing application <NUM> can be configured to evaluate an environment data file <NUM> to identify one or more models <NUM> of a 3D environment. If an environment data file <NUM> references a plurality of models <NUM>, the models <NUM> may be stitched together when rendering the 3D environment. The viewing application <NUM> can populate the rendered 3D environment with content based on the content specified by the environment data file <NUM>. In one example, the viewing application <NUM> can use any of a variety of 3D rendering engines and can handle device- and/or engine-specific implementation details when rendering the 3D environment.

In certain embodiments, the viewing application <NUM> can be configured to retrieve an environment data file <NUM> from the output store <NUM>, which, in conjunction with one or more models <NUM> from the model store <NUM>, may be used to generate a 3D environment. In other embodiments in which the viewing application <NUM> is a locally-executed application, a model store <NUM> may be stored locally and/or remotely to the viewing device <NUM> executing the viewing application <NUM>, and at least a part of an environment data file <NUM> may be retrieved from the output store <NUM>. In further embodiments, the environment data file <NUM> may be streamed or retrieved in chunks from the output store <NUM> to the viewing devices <NUM>.

<FIG> are partially schematic diagrams illustrating certain hardware/software components of the computing framework <NUM> of <FIG> in accordance with embodiments of the disclosed technology. As shown in <FIG>, the authoring application <NUM> can include an interface component <NUM>, a sizing component <NUM>, a projection component <NUM>, and an output component <NUM> operatively coupled to one another. Even though particular components are shown in <FIG> for illustration purposes, in other embodiments, the authoring application <NUM> can also include an input component or other suitable types of component.

In <FIG> and in other Figures herein, individual software components, objects, classes, modules, and routines may be a computer program, procedure, or process written as source code in C, C++, C#, Java, and/or other suitable programming languages. A component may include, without limitation, one or more modules, objects, classes, routines, properties, processes, threads, executables, libraries, or other components. Components may be in source or binary form. Components may include aspects of source code before compilation (e.g., classes, properties, procedures, routines), compiled binary units (e.g., libraries, executables), or artifacts instantiated and used at runtime (e.g., objects, processes, threads).

Components within a system may take different forms within the system. As one example, a system comprising a first component, a second component and a third component can, without limitation, encompass a system that has the first component being a property in source code, the second component being a binary compiled library, and the third component being a thread created at runtime. The computer program, procedure, or process may be compiled into object, intermediate, or machine code and presented for execution by one or more processors of a personal computer, a network server, a laptop computer, a smartphone, and/or other suitable computing devices.

Equally, components may include hardware circuitry. A person of ordinary skill in the art would recognize that hardware may be considered fossilized software, and software may be considered liquefied hardware. As just one example, software instructions in a component may be burned to a Programmable Logic Array circuit, or may be designed as a hardware circuit with appropriate integrated circuits. Equally, hardware may be emulated by software. Various implementations of source, intermediate, and/or object code and associated data may be stored in a computer memory that includes read-only memory, random-access memory, magnetic disk storage media, optical storage media, flash memory devices, and/or other suitable computer readable storage media excluding propagated signals.

As shown in <FIG>, the interface component <NUM> of the authoring application <NUM> can be configured to provide a user interface <NUM> for facilitating the author <NUM> creating and/or modifying a 3D environment. In the illustrated example, the user interface <NUM> can include a menu bar <NUM> containing one or more menu groups such as "File," "Edit," and "Help. " Each of the foregoing menu groups may be expanded for additional menu items such as "New," "Open," "Save," etc. In other examples, the menu bar <NUM> can include other suitable types of menu items.

As shown in <FIG>, the user interface <NUM> can also include a 3D working area <NUM> and a display area for content libraries <NUM> containing multiple content items or objects <NUM> available for importation. The 3D working area can be initially loaded with a template <NUM> of a 3D environment or with a previously saved 3D environment corresponding to an environment data file <NUM> in the output store <NUM>. In the illustrated example, the 3D working area <NUM> is loaded with a template <NUM> of a 3D environment having a mountain, a sky, and an open ground in front of the mountain (shown in phantom lines for clarity). In other examples, the template <NUM> can include forest, buildings, or other suitable types of 3D environment. Also, as shown in <FIG>, only one content library <NUM> is shown for illustration purposes. In particular, the example content library <NUM> contains multiple objects <NUM> related to transportation, including, for instance, a car 135a, a bus 135b, a bicycle 135c, a plane 135d, and a train 135e. In other examples, objects <NUM> of additional content libraries <NUM> can also be presented in the display area <NUM>.

The interface component <NUM> can also be configured to provide one or more anchor point <NUM> in the template <NUM> for placement of 2D or 3D objects from, for example, the content library <NUM>. In <FIG>, the anchor point <NUM> is represented as a cross. In other embodiments, the anchor point <NUM> can also be represented as an arrow, star, or other suitable representations. In certain embodiments, the anchor point <NUM> can be designated by the author <NUM> by, for example, placing the anchor point <NUM> at an author selected location. In other embodiments, the anchor point <NUM> can be automatically determined by the interface component <NUM> at a location by the projection component <NUM> and provided in the 3D working area as one of multiple default anchor points <NUM>. In further embodiments, the interface component <NUM> can allow the author <NUM> to place the anchor point <NUM> at locations within certain limited areas in the 3D environment.

As shown in <FIG>, the interface component <NUM> can also be configured to detect that the author <NUM> selects the content library <NUM> to be inserted into the 3D environment at the anchor point <NUM>, via, for instance, drag and drop, as indicated by the dotted arrow and cursor <NUM>. Optionally, the interface component <NUM> can then pass the detected user input to the sizing component <NUM> for determining whether the selected content library <NUM> contains object <NUM> that require resizing.

In one embodiment, the sizing component <NUM> can be configured to determine whether the objects <NUM> in the selected content library <NUM> requires resizing by fitting the objects <NUM> into a container of a preset size. For example, in a particular implementation, the sizing component <NUM> can be configured to fit the bicycle 135c into a cube having a one cubic meter volume. In other examples, the sizing component <NUM> can be configured to fit the objects <NUM> into a sphere, a cylinder, or other suitable shapes of volume with suitable sizes.

In response to determining that an object <NUM> (e.g., the bicycle 135c) exceeds the container in at least one dimension, the sizing component <NUM> can resize the object <NUM> so the object <NUM> just fits inside the container. On the other hand, when the object <NUM> is too small, for example, not having at least one dimension within <NUM>%, <NUM>%, or other suitable threshold of a corresponding dimension of the container, the sizing component <NUM> can also enlarge the object <NUM> to be sized just to fit into the container. Such resizing can thus render all objects <NUM> in the content library to be approximately the same size for optimal viewing in the 3D environment.

Upon completion of the foregoing sizing operations, the sizing component <NUM> can pass control to the projection component <NUM> for determining a position and arrangement for the inserted objects <NUM> from the content library <NUM>. In accordance with embodiments of the disclosed technology, it has been recognized that placing the objects <NUM> in a Cartesian coordinate system in the 3D environment may not be convenient to provide a suitable view to the viewers <NUM> (<FIG>). For example, if the objects <NUM> are arranged along one- or two-dimension along two orthogonal directions, some objects <NUM> may overlap with others to cause occlusion.

To address the foregoing challenge, several embodiments of the disclosed technology utilize a cylindrical coordinate system to place the objects <NUM> in the content library <NUM> along a circular arc <NUM> or circle relative to the position of the viewer <NUM>. Such a placement arrangement can provide a suitable viewing experience to the viewer <NUM>. For example, as shown in <FIG>, each object <NUM> can be identified by a polar coordinate along a polar axis, a longitudinal coordinate along a longitudinal axis, and an angle relative to an original of the cylindrical coordinate system. Example origins can be a default location of the viewer <NUM>, the anchor point <NUM>, a center <NUM> (<FIG>) of the circular arc <NUM> (<FIG>) or the circle <NUM>' (<FIG>), or another suitable location in the 3D environment.

In one implementation, the projection component <NUM> can be configured to determine a line of sight <NUM> for the viewer <NUM> from a default position of the viewer <NUM>. Upon obtaining a direction of the line of sight <NUM>, the projection component <NUM> can be configured to determine a circular arc <NUM> or a circle <NUM>' having a center <NUM> that is spaced apart from the default position of the viewer <NUM> by a preset distance. For instance, the preset distance between the center <NUM> and the viewer can be about <NUM>, <NUM>, <NUM>, <NUM> meters while the circular arc <NUM> has a radius of about <NUM>, <NUM>, <NUM>, or <NUM> meters. In <FIG>, the circular arc <NUM> and circle <NUM>" are shown as dashed lines for illustration purposes. The circular arc <NUM> and circle <NUM>' are not visually presented in the 3D environment to viewers, but instead the placement of the objects <NUM> forms the circular arc <NUM> or the circle <NUM>'.

As shown in <FIG>, the projection component <NUM> can then be configured to place the objects <NUM> along the circular arc <NUM> having a preset radius. In the illustrated example, the projection component <NUM> is configured to place only a preset number (i.e., the car 135a, the bicycle 135c, and the bus 135b) of the objects <NUM> at a portion of the circular arc <NUM> closes to the viewer <NUM>. Other examples of the preset number can be <NUM>, <NUM>, <NUM>, <NUM>, or other suitable numbers. Other than the preset number of objects <NUM> closest to the viewer <NUM>, the projection component <NUM> can be configured to present ellipsis <NUM> and <NUM>' or other suitable symbols indicating that additional objects <NUM> are available for viewing. Thus, when viewing the objects <NUM> by the viewer <NUM>, the object <NUM> (e.g., the bicycle 135c) closes to the viewer <NUM> would appear larger than others due to the depth perception of the viewer <NUM>. As discussed in more detail below, the viewer <NUM> can also rotate, scroll, or pan the objects such that other objects <NUM> can appear larger to the viewer <NUM> for a more detailed view of the objects <NUM>. In other embodiments, all of the content items may be presented as objects <NUM> along the circular arc <NUM> or circle <NUM>' without using ellipsis, as described in more detail below with reference to <FIG>.

The projection component <NUM> can further be configured to determine a relative position of the objects <NUM> along the circular arc <NUM> relative to other objects <NUM> in the 3D environment. In the illustrated example, the objects <NUM> can each be place at generally an equal distance (e.g., the radius) from the center <NUM> of the circular arc <NUM> with a corresponding angle separation from a neighboring object <NUM> of, e.g., about <NUM>°, about <NUM>°, about <NUM>°, or other suitable angle separations. The inventors have recognized that such a placement arrangement of the objects <NUM> may provide a suitable or even optimal viewing experience for the objects <NUM> in the content library <NUM> to the viewer <NUM>.

The projection component <NUM> can also be configured to impose certain behavioral characteristics to the objects <NUM> arranged around the circular arc <NUM>. For example, the objects <NUM> may be repositioned along the circular arc <NUM> upon receiving a viewer's input for rotation, scrolling, panning, or other suitable input, using, for example, a laser pointer. In response, relative positions of the objects <NUM> in the 3D environment by presenting additional objects <NUM> at positions closest or closer to the viewer <NUM>. For example, as shown in <FIG>, a viewer <NUM> may provide a user input <NUM> for scrolling the objects <NUM> in a counter-clockwise direction. In response, as shown in <FIG>, the car 135a can be rotated to a position closes to the viewer <NUM> while the plan 135d is now shown as an image instead of an ellipsis <NUM>. The bus 135b is now shown as another ellipsis <NUM>'. In another example, as shown in <FIG>, the viewer <NUM> can also provide another user input <NUM>' for scrolling the objects <NUM> in a clockwise direction. In response, as shown in <FIG>, the bus 135b can be rotated to a position closes to the viewer <NUM> while the train 135e is now shown as an image instead of an ellipsis <NUM>'. The car 135a is now shown as another ellipsis <NUM>". In other embodiments, the authoring application can also impart physical characteristics such as inertia to the objects such that rotating or scrolling of the objects may appear to slow down after a period of time.

Even though the objects <NUM> of the content library <NUM> are shown as automatically placed along a circular arc <NUM> in a particular sequence, in other embodiments, the projection component <NUM> can also be configured to allow the author <NUM> to change a relatively position of an object <NUM> relative to other objects <NUM>. For example, the author <NUM> may change the sequence shown in <FIG> from bicycle 135c, bus 135a, and train 135e to bus 135a, bicycle 135c, and the train 135e. During such a change, relative angle separation between neighboring objects <NUM> can still be maintained.

In further embodiments, the projection component <NUM> can also be configured to automatically place the objects <NUM> along a circle, an oval, or other suitable shapes in the 3D environment. For example, as shown in <FIG>, the objects <NUM> in the content library <NUM> are placed along a circle <NUM> having the center <NUM> spaced apart from the viewer <NUM> by the preset distance. In the illustrated embodiment, not all of the objects <NUM> are shown as images but instead some are shown as ellipsis <NUM>. In other embodiments, all of the objects <NUM> may be shown as images along the circle <NUM>' as long as a threshold angle separation (e.g., <NUM>°) between neighboring objects <NUM> are maintained.

In further embodiments, the projection component <NUM> can be configured to import and automatically arrange content items from additional content libraries <NUM> (not shown) as objects <NUM> in the 3D environment. The objects <NUM> from different content libraries can be organized as groups that are spaced apart in the 3D environment along, for example, a longitudinal axis. As such, the 3D environment would present multiple groups of objects <NUM> in a stacked formation with each group having objects arranged along a corresponding circle <NUM>' or circular arc <NUM> at a corresponding plane, as shown in <FIG>. In other embodiments, the groups can be arranged in the 3D environment along the polar axis or in other suitable formations.

When the author <NUM> finishes inserting objects <NUM> and/or content libraries <NUM> into the 3D environment, the output component <NUM> can be configured to generate an environment data file <NUM> to be stored in the output store <NUM>. The environment data file <NUM> can contain data representing the template <NUM> of the 3D environment as well as an identity, position, size, relative location, or other suitable information of the objects inserted into the template <NUM>.

<FIG> are schematic top views illustrating certain positional arrangements in a 3D environment during certain stages of operation in accordance with embodiments of the disclosed technology. As shown in <FIG>, the various objects <NUM> from a content library <NUM> (<FIG>) can be represented along a circle <NUM>' in a cylindrical coordinate system in which each object <NUM> has a preset angle separation (e.g., <NUM>°) from a neighbor and a radius (e.g., <NUM> meters) relative to the center <NUM> that is spaced apart from a position of the viewer <NUM> along a light of sight <NUM> of the viewer <NUM>. In the illustrated example, three objects <NUM> closest to the viewer <NUM> are represented as actual images (or other suitable content types) while the other objects <NUM> are represented as ellipsis <NUM>. In another examples, as shown in <FIG>, five objects <NUM> closest to the viewer <NUM> are represented as actual images (or other suitable content types) while the other objects <NUM> are represented as ellipsis <NUM>. In further examples, all of the objects <NUM> may be represented as actual images (or other suitable content types) along the circle <NUM>'.

<FIG> are flowcharts illustrating certain processes of content library projection in a 3D environment in accordance with embodiments of the disclosed technology. Even though the processes are described below with reference to the computing framework <NUM> of <FIG>, in other embodiments, the processes can be implemented in computing frameworks with additional and/or different components.

As shown in <FIG>, a process <NUM> of projection of content library in a 3D environment includes receiving a selection of a content library having multiple models each corresponding to a content item to be placed as an object in the 3D environment at stage <NUM>. In one embodiment, the selection can be received by detecting that an author <NUM> (<FIG>) dragged and dropped a graphic representation of the content library into the 3D environment, as shown in <FIG>. In other embodiments, the selection can be received by detecting an insert command, a copy/paste command, and/or other suitable commands.

Upon receiving the selection of the content library, the process <NUM> can optionally include sizing one or more virtual objects described by the models in the content library at stage <NUM>. In certain embodiments, sizing the virtual objects can initially include determining whether the object requires resizing, for example, by using a container shown in <FIG>. In response to determining that resizing is needed, the virtual object can be resized, for example, proportionally along three dimensions such that the object is not too large or small when compared to the container. In other embodiments, sizing the virtual objects can include modifying at least one dimension of the objects based on a preset value without determining whether the object requires resizing. In further embodiments, sizing the virtual objects can be omitted from the process <NUM>.

The process <NUM> can then include projecting the objects from the content library in the 3D environment at stage <NUM>. In certain embodiments, the objects can be positioned in the 3D environment based on a cylindrical coordinate system and along a circle, circular arc, or oval. Each object can be placed according to an azimuth, a radial distance, and a height. For example, a center <NUM> (<FIG>) can be an origin of the coordinate system, and the objects placed along a circle can each have a different azimuth, but the same radial distance and height. In particular, an object closest to the viewer <NUM> in <FIG> can have an example coordinate of (<NUM>°, <NUM> meters, <NUM> meter), corresponding to a location that is <NUM> meters away from the viewer <NUM> along the line of sight <NUM> of the viewer <NUM>. In other embodiments, the objects can be placed in the 3D environment based on a Cartesian coordinate system, a spherical coordinate system, or other suitable types of coordinate system. Example operations of projecting the objects are described in more detail below with reference to Figure 5B.

The process <NUM> can then include a decision stage <NUM> to determine whether additional content libraries are selected. In response to determining that an additional content library is selected for insertion, the process <NUM> revers to receiving the selection at stage <NUM>; otherwise, the process <NUM> proceeds to generating an environment data file containing data representing the projected content library in the 3D environment at stage <NUM>, as described in more detail above with reference to <FIG>.

<FIG> illustrates example operations for projecting a content library in a 3D environment. As shown in <FIG>, the operations can include arranging objects from a content library along a circle or circular arc at stage <NUM>. In certain embodiments, the objects are spaced apart from one another by a preset angle separation, e.g., <NUM>°, <NUM>°, or <NUM>°. In other embodiments, the objects can be spaced apart by relative distance or other suitable parameters. The operations can then include a decision stage to determine whether sufficient spaces are available to accommodate all of the objects in the content library based on, for example, the preset angle separation. In response to determining that sufficient spaces are available along the circle or circular arc, the operations can include projecting the objects as images, videos, or other suitable types of content items along the circle or circular arc at stage <NUM>. In response to determining that sufficient spaces are not available along the circle or circular arc, the operations can include projecting the some objects as images, videos, or other suitable types of content items along a portion of the circle or circular arc while projecting ellipsis representing other objects along another portion of the circle or circular arc at stage <NUM>.

<FIG> illustrates example operations for manipulating positions of objects of a projected content item in a 3D environment. As shown in <FIG>, the operations can include monitoring for a user input for rotating, scrolling, panning, or other suitable types of navigational operation. The operations can then include a decision stage <NUM> to determine whether position of the objects should be adjusted based on a monitored user input. In response to determining that positions of the objects are to be adjusted, the operations can include adjusting relative positions at stage <NUM> by, for example, shifting angle offset relative to an origin as shown in <FIG>.

<FIG> is a computing device <NUM> suitable for certain components of the computing framework <NUM> in <FIG>. For example, the computing device <NUM> can be suitable for the authoring device <NUM> or the viewing devices <NUM> of <FIG>. In a very basic configuration <NUM>, the computing device <NUM> can include one or more processors <NUM> and a system memory <NUM>. A memory bus <NUM> can be used for communicating between processor <NUM> and system memory <NUM>.

Depending on the desired configuration, the processor <NUM> can be of any type including but not limited to a microprocessor (µP), a microcontroller (µC), a digital signal processor (DSP), or any combination thereof. The processor <NUM> can include one more levels of caching, such as a level-one cache <NUM> and a level-two cache <NUM>, a processor core <NUM>, and registers <NUM>. An example processor core <NUM> can include an arithmetic logic unit (ALU), a floating point unit (FPU), a digital signal processing core (DSP Core), or any combination thereof. An example memory controller <NUM> can also be used with processor <NUM>, or in some implementations memory controller <NUM> can be an internal part of processor <NUM>.

Depending on the desired configuration, the system memory <NUM> can be of any type including but not limited to volatile memory (such as RAM), non-volatile memory (such as ROM, flash memory, etc.) or any combination thereof. The system memory <NUM> can include an operating system <NUM>, one or more applications <NUM>, and program data <NUM>. This described basic configuration <NUM> is illustrated in Figure <NUM> by those components within the inner dashed line.

The computing device <NUM> can have additional features or functionality, and additional interfaces to facilitate communications between basic configuration <NUM> and any other devices and interfaces. For example, a bus/interface controller <NUM> can be used to facilitate communications between the basic configuration <NUM> and one or more data storage devices <NUM> via a storage interface bus <NUM>. The data storage devices <NUM> can be removable storage devices <NUM>, non-removable storage devices <NUM>, or a combination thereof. Examples of removable storage and non-removable storage devices include magnetic disk devices such as flexible disk drives and hard-disk drives (HDD), optical disk drives such as compact disk (CD) drives or digital versatile disk (DVD) drives, solid state drives (SSD), and tape drives to name a few. Example computer storage media can include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. The term "computer readable storage media" or "computer readable storage device" excludes propagated signals and communication media.

The system memory <NUM>, removable storage devices <NUM>, and non-removable storage devices <NUM> are examples of computer readable storage media. Computer readable storage media include, but not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other media which can be used to store the desired information and which can be accessed by computing device <NUM>. Any such computer readable storage media can be a part of computing device <NUM>. The term "computer readable storage medium" excludes propagated signals and communication media.

The computing device <NUM> can also include an interface bus <NUM> for facilitating communication from various interface devices (e.g., output devices <NUM>, peripheral interfaces <NUM>, and communication devices <NUM>) to the basic configuration <NUM> via bus/interface controller <NUM>. Example output devices <NUM> include a graphics processing unit <NUM> and an audio processing unit <NUM>, which can be configured to communicate to various external devices such as a display or speakers via one or more A/V ports <NUM>. Example peripheral interfaces <NUM> include a serial interface controller <NUM> or a parallel interface controller <NUM>, which can be configured to communicate with external devices such as input devices (e.g., keyboard, mouse, pen, voice input device, touch input device, etc.) or other peripheral devices (e.g., printer, scanner, etc.) via one or more I/O ports <NUM>. An example communication device <NUM> includes a network controller <NUM>, which can be arranged to facilitate communications with one or more other computing devices <NUM> over a network communication link via one or more communication ports <NUM>.

The network communication link can be one example of a communication media. Communication media can typically be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and can include any information delivery media. A "modulated data signal" can be a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media can include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), microwave, infrared (IR) and other wireless media. The term computer readable media as used herein can include both storage media and communication media.

The computing device <NUM> can be implemented as a portion of a small-form factor portable (or mobile) electronic device such as a cell phone, a personal data assistant (PDA), a personal media player device, a wireless web-watch device, a personal headset device, an application specific device, or a hybrid device that include any of the above functions. The computing device <NUM> can also be implemented as a personal computer including both laptop computer and non-laptop computer configurations.

Claim 1:
A method of projecting a content library (<NUM>) of objects (<NUM>) in a computer-based three-dimensional, 3D, environment when authoring content using a computing device having a display and processor, the method comprising:
with the processor of the computing device,
providing, on the display (<NUM>) of a computing device, a template (<NUM>) of a 3D environment having a background;
receiving, a user input selecting a content library containing multiple models individually representing a two-dimensional, 2D, or 3D content item to be inserted as an object into the template of the 3D environment; and
in response to receiving the user input selecting the content library,
characterised by automatically determining a location to place the individual objects along at least a portion of a circle in the 3D environment, the at least a portion of the circle (<NUM>, <NUM>', <NUM>") having a center (<NUM>, <NUM>') at a preset distance from and along a line of sight (<NUM>) of a viewer (<NUM>) of the 3D environment;
rendering and placing a graphical representation of the individual 2D or 3D content items as the objects at the determined locations along the at least a portion of the circle in the 3D environment; and
imparting behavioral characteristics to the rendered and placed graphical representation of the individual 2D or 3D content items along the at least a portion of the circle in the 3D environment, the behavioral characteristics including scrolling or panning of the rendered objects along the at least a portion of the circle.