IP Library Granted Patent US 10,740,982
Granted Patent B2
US 10,740,982 · App. 15/971,212 · Granted Aug 11, 2020

Automatic placement and arrangement of content items in three-dimensional environment

Inventors: Colton Brett Marshall (Seattle, WA); Amy Scarfone (Seattle, WA); Harold Anthony Martinez Molina (Seattle, WA); Vidya Srinivasan (Issaquah, WA); Andrew John Howe (Sammamish, WA)
Assignee: Microsoft Technology Licensing, LLC
G06T19/20G06F3/04815G06T15/20G06T19/003
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,740,982
App. No.
15/971,212
Granted
Aug 11, 2020
Kind
B2
Abstract

Computing devices for automatic placement and arrangement of objects in computer-based 3D environments are disclosed herein. In one embodiment, a computing device is configured to provide, on a display, a user interface containing a work area having a template of a 3D environment and a gallery containing models of two-dimensional (2D) or 3D content items. The computing device can then detect, via the user interface, a user input selecting one of the models from the gallery to be inserted as an object into the template of the 3D environment. In response to detecting the user input, the computing device can render and surface on the display, a graphical representation of the 2D or 3D content item corresponding to the selected model at a location along a circular arc spaced apart from the default viewer position of a viewer of the 3D environment by a preset radial distance.

Claims (104)

1. A method of automatic placement and arrangement of objects 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 of a computing device, a template of a 3D environment having a background, scene, or sound;

receiving, a user input selecting a model 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 model,

automatically determining a location to place the object according to a preset radial distance from a default viewer position of a viewer of the 3D environment and along a circular arc spaced apart from the default viewer position by the preset radial distance; and

rendering and placing a graphical representation of the 2D or 3D content item as the object at the determined location in the 3D environment.

2. The method of claim 1 wherein:

the object is a first object;

the content item is a first content item; and

the method further includes:

receiving, another user input selecting another model representing another two-dimensional (2D) or 3D content item to be inserted as a second object into the template of the 3D environment; and

in response to receiving the another user input,

automatically determining another location to place the second object according to the preset radial distance from the default viewer position of the viewer of the 3D environment and along the same circular arc spaced apart from the default viewer position by the preset radial distance; and

rendering and placing another graphical representation of the 2D or 3D content item as the second object at the determined another location in the 3D environment.

3. The method of claim 2 , further comprising:

determining whether a separation between the first and second object in the 3D environment is less than a threshold; and

in response to determining that the separation between the first and second objects in the 3D environment is less than the threshold, shifting one or both of the first or second object in the 3D environment along the circular arc such that the separation is not less than the threshold.

4. The method of claim 2 wherein:

the determined locations of the first and second objects are locations expressed in a cylindrical coordinate system; and

the method further comprising:

determining whether a separation angle between the first and second objects in the 3D environment is less than a threshold angle; and

in response to determining that the separation angle between the first and second objects in the 3D environment is less than the threshold angle, shifting one or both of the first or second object in the 3D environment along the circular arc such that the separation angle is not less than the threshold angle.

5. The method of claim 2 wherein:

the determined locations of the first and second objects are locations expressed in a cylindrical coordinate system; and

the method further comprising:

determining whether a separation angle between the first and second objects in the 3D environment is less than a threshold angle of 0°; and

in response to determining that the separation angle between the first and second object in the 3D environment is less than the threshold angle, shifting one or both of the first or second object in the 3D environment along the circular arc such that the separation is not less than the threshold angle.

6. The method of claim 2 wherein:

the determined locations of the first and second objects are locations expressed in a cylindrical coordinate system; and

the method further comprising:

enlarging a view of the first object upon a further user request;

in response to the further user request,

determining an azimuth of the enlarged first object in the 3D environment;

re-calculating whether the separation angle between the first and second objects in the 3D environment is less than the threshold angle based on the determined azimuth of the enlarged first object; and

in response to determining that the separation angle between the first and second object in the 3D environment is now less than the threshold angle, shifting the second object in the 3D environment away from the enlarged first object along the circular arc such that the separation angle is not less than the threshold angle.

7. The method of claim 2 wherein:

the determined locations of the first and second objects are locations expressed in a cylindrical coordinate system; and

the method further comprising:

reducing a radial distance of the first object from the preset radial distance in the 3D environment upon a further user request;

in response to the further user request,

determining an azimuth of the first object in the 3D environment according to the reduced radial distance;

re-calculating whether the separation angle between the first and second objects in the 3D environment is less than the threshold angle based on the determined azimuth of the first object; and

in response to determining that the separation angle between the first and second object in the 3D environment is now less than the threshold angle, shifting the second object in the 3D environment away from the first object along the circular arc such that the separation angle is not less than the threshold angle.

8. The method of claim 1 wherein the preset radial distance is approximately three meters from the default viewer position.

9. The method of claim 1 wherein the determined location of the object is expressed as a coordinate in a cylindrical coordinate system, the coordinate having an azimuth, a radial distance, and a height, and wherein the radial distance is set to the preset radial distance and the height is set to zero meters.

10. A computing device, comprising:

a processor;

a display; and

a memory operatively coupled to the processor and the display, the memory containing instructions executable by the processor to cause the computing device to:

provide, on the display, a user interface containing a work area having a template of a 3D environment and a gallery containing models of two-dimensional (2D) or 3D content items;

detect, via the user interface, a user input selecting one of the models from the gallery to be inserted as an object into the template of the 3D environment; and

in response to detecting the user input selecting the model, render and surface on the display, a graphical representation of the 2D or 3D content item corresponding to the selected model as the object at a location along a circular arc spaced apart from the default viewer position of a viewer of the 3D environment by a preset radial distance.

11. The computing device of claim 10 wherein the memory contains additional instructions executable by the processor to cause the computing device to:

determine whether a separation between the object and a neighboring object in the 3D environment is less than a threshold; and

in response to determining that the separation between the objects and the neighboring object in the 3D environment is less than the threshold, shift the object in the 3D environment along the circular arc away from the neighboring object such that the separation is not less than the threshold.

12. The computing device of claim 10 wherein:

the location of the object is expressed as a coordinate in a cylindrical coordinate system; and

the memory contains additional instructions executable by the processor to cause the computing device to:

determine whether a separation angle between the object and the neighboring object in the 3D environment is less than a threshold angle; and

in response to determining that the separation angle between the object and the neighboring object in the 3D environment is less than the threshold angle, shifting at least one of the object or the neighboring object relative to each other along the circular arc such that the separation angle is not less than the threshold angle.

13. The computing device of claim 10 wherein:

the location of the object is expressed as a coordinate in a cylindrical coordinate system; and

the memory contains additional instructions executable by the processor to cause the computing device to:

determine whether a separation angle between the object and the neighboring object in the 3D environment is less than a threshold angle of 5°; and

in response to determining that the separation angle between the object and the neighboring object in the 3D environment is less than the threshold angle, shifting at least one of the object or the neighboring object relative to each other along the circular arc such that the separation angle is not less than the threshold angle.

14. The computing device of claim 10 wherein:

the location of the object is expressed as a coordinate in a cylindrical coordinate system; and

the memory contains additional instructions executable by the processor to cause the computing device to:

enlarge a size of the object upon a further user request;

in response to the further user request,

determining a new azimuth of the enlarged object in the 3D environment;

re-calculating whether the separation angle between the object and the neighboring object in the 3D environment is less than the threshold angle based on the determined new azimuth of the enlarged object; and

in response to determining that the separation angle between the object and the neighboring object in the 3D environment is now less than the threshold angle, shifting the object or the neighboring object relative to each other along the circular arc.

15. The computing device of claim 10 wherein:

the location of the object is expressed as a coordinate in a cylindrical coordinate system; and

the memory contains additional instructions executable by the processor to cause the computing device to:

reduce a radial distance of the neighboring object from the preset radial distance in the 3D environment upon a further user request;

in response to the further user request,

determining a new azimuth of the neighboring object in the 3D environment;

re-calculating whether the separation angle between the object and the neighboring object in the 3D environment is less than the threshold angle based on the determined new azimuth of the neighboring object; and

in response to determining that the separation angle between the object and the neighboring object in the 3D environment is now less than the threshold angle, shifting the object or the neighboring object relative to each other along the circular arc.

16. The computing device of claim 10 wherein the memory contains additional instructions executable by the processor to cause the computing device to:

in response to detecting the user input selecting the model,

determine whether a size of a graphical representation of the 2D or 3D content item defined by the model exceeds a preset size; and

in response to determining that the graphical representation of the 2D or 3D content item defined by the model exceeds the preset size, reducing the size of the graphical representation of the 2D or 3D content item to be not larger than the preset size.

17. The computing device of claim 10 wherein the memory contains additional instructions executable by the processor to cause the computing device to:

in response to detecting the user input selecting the model,

determine whether a size of a graphical representation of the 2D or 3D content item defined by the model exceeds a preset size defined by a cube; and

in response to determining that the graphical representation of the 2D or 3D content item defined by the model exceeds the preset size, reducing the size of the graphical representation of the 2D or 3D content item to fit inside the cube.

18. A method of automatic placement and arrangement of objects 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, a user interface containing a work area having a template of a 3D environment and a gallery containing models of two-dimensional (2D) or 3D content items;

detecting, via the user interface, a user input selecting one of the models from the gallery to be inserted as an object into the template of the 3D environment; and

in response to detecting the user input selecting the model, rendering and surfacing on the display, a graphical representation of the 2D or 3D content item corresponding to the selected model as the object at a location along a circular arc spaced apart from the default viewer position of a viewer of the 3D environment by a preset radial distance.

19. The method of claim 18 wherein:

providing the user interface includes providing a user interface containing a work area having a template of a 3D environment having multiple anchor points;

the individual anchor points are arranged along the circular arc spaced apart from the default viewer position of the viewer of the 3D environment by the preset radial distance; and

detecting the user input includes detecting a user input to insert the selected model to one of the anchor point.

20. The method of claim 18 wherein:

providing the user interface includes providing a user interface containing a work area having a template of a 3D environment having multiple anchor points;

the individual anchor points are arranged along the circular arc spaced apart from the default viewer position of the viewer of the 3D environment by the preset radial distance;

detecting the user input includes detecting a user input to insert the selected model to one of the anchor point; and

rendering and surfacing the graphical representation of the 2D or 3D content item includes rendering and surfacing the graphical representation of the 2D or 3D content item at the anchor point.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 4, 2018
From: MARSHALL, COLTON BRETT; SCARFONE, AMY; MARTINEZ MOLINA, HAROLD ANTHONY; SRINIVASAN, VIDYA; HOWE, ANDREW JOHN
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 045716/0782 →
Continuity (1)
Related Publication 20190340829A1 · Nov 7, 2019