IP Library › Granted Patent US 12,638,950
Granted Patent B2
US 12,638,950 · App. 17/827,651 · Granted May 26, 2026

Object placement for electronic devices

Inventors: Michael E. Buerli (San Francisco, CA); Pavel V. Dudrenov (San Francisco, CA)
Assignee: Apple Inc.
G06F3/04815G06F3/04842G06F3/04845G06T7/70G06T19/006G06T19/20
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 12,638,950
App. No.
17/827,651
Granted
May 26, 2026
Kind
B2
Abstract

Aspects of the subject technology provide a real-time system for positioning and/or arranging application content anchored to locations in a physical environment. The subject technology may include a placement system that facilitates placement of application content relative to the anchors, according to application and/or system preferences and/or requirements for display of the content.

Claims (85)

1 . A computer-implemented method, comprising:

using at least one processor executing stored program instructions:

receiving, at an operating system (OS) process of a device from an application running on the device, a request for an anchor for anchoring of virtual content relative to a physical environment, wherein the request indicates at least a region for the requested anchor and the OS process is separate from the application;

determining, by the OS process, whether the requested anchor is an implicit anchor type or an explicit anchor type;

in response to determining, by the OS process, that the requested anchor is the implicit anchor type:

obtaining, by the OS process of the device, placement context information corresponding to at least one virtual or physical object other than the virtual content;

determining, by the OS process, a placement location for the virtual content within the region based on the requested anchor and the placement context information; and

generating the requested anchor by the OS process using the placement location;

in response to determining, by the OS process, that the requested anchor is the explicit anchor type:

obtaining, by the OS process of the device, an anchor location from the request for the anchor; and

generating the requested anchor by the OS process using the anchor location;

providing an identifier of the requested anchor from the OS process to the application;

receiving, by the OS process of the device, rendering application data from the application for displaying the virtual content corresponding to the identifier of the requested anchor; and

displaying, by the OS process, the virtual content at the anchor location corresponding to the requested anchor.

2 . The computer-implemented method of claim 1 , wherein when the requested anchor is the implicit anchor type, the placement context information comprises occupancy information for other virtual content including at least one virtual object other than the virtual content.

3 . The computer-implemented method of claim 2 , wherein the placement context information further comprises an available region in the physical environment that meets one or more criteria for the requested anchor.

4 . The computer-implemented method of claim 1 , wherein the OS process comprises a first OS process and second OS process, and wherein in response to determining, by the OS process, that the requested anchor is the implicit anchor type further comprises:

generating, by the first OS process, a first transform between a coordinate origin and a physical anchor location;

generating, by the second OS process, a second transform between the physical anchor location and the placement location; and

providing the second transform from the second OS process to the first OS process,

wherein generating the requested anchor comprises generating, by the first OS process, a third transform between the coordinate origin and the placement location by combining the first transform and the second transform.

5 . The computer-implemented method of claim 1 , further comprising:

receiving, by the OS process, an additional request from the application for an additional explicit anchor for additional virtual content; and

generating, by the OS process and responsive to the additional request, an additional anchor and a corresponding additional identifier, without determining an additional placement location.

6 . The computer-implemented method of claim 1 , further comprising, after displaying the virtual content anchored to the anchor location:

receiving, by the device, a request to move the virtual content;

generating, responsive to the request to move the virtual content, a proxy anchor for the virtual content, the proxy anchor corresponding to a physical object in the physical environment;

tracking movement of the proxy anchor; and

moving the displayed virtual content according to the movement of the proxy anchor.

7 . The computer-implemented method of claim 6 , further comprising:

maintaining the anchor location for the virtual content during a first portion of the moving of the displayed virtual content, the first portion within a threshold distance of the anchor location.

8 . The computer-implemented method of claim 7 , further comprising:

receiving, by the device during the first portion of the moving, a request to de-anchor the virtual content from the proxy anchor; and

snapping the virtual content back to the anchor location responsive to the request to de-anchor the virtual content from the proxy anchor.

9 . The computer-implemented method of claim 7 , further comprising

de-anchoring the virtual content from the anchor location based on a determination that the moving of the virtual content has reached the threshold distance from the anchor location.

10 . The computer-implemented method of claim 9 , further comprising:

obtaining additional placement context information during the moving of the virtual content;

generating a new anchor for the virtual content based on the additional placement context information; and

generating a further new anchor for additional virtual content previously displayed at a further anchor location based on the additional placement context information and the movement of the virtual content.

11 . The computer-implemented method of claim 1 , wherein the virtual content comprises a user-interface window of an application, further comprising receiving, by the OS process of the device, rendering application data from the application running on the device for displaying the virtual content at an anchor location corresponding to the identifier of the requested anchor.

12 . The computer-implemented method of claim 11 , further comprising:

receiving, by the device, a request to remove a portion of the virtual content from the user-interface window; and

generating a new anchor location for the portion of the virtual content.

13 . The computer-implemented method of claim 1 , further comprising:

storing the requested anchor for the virtual content prior to, and during, a power down event for the device;

upon power up of the device following the power down event:

detecting at least a portion of the physical environment;

obtaining the stored anchor; and

re-displaying the virtual content at the anchor location corresponding to the requested anchor.

14 . The computer-implemented method of claim 1 , wherein when the requested anchor is the implicit anchor type, determining the placement location comprises:

obtaining an anchor location of a physical anchor object or a virtual anchor object that corresponds to the requested anchor;

determining the placement location to be different than the anchor location of the physical anchor object or the virtual anchor object; and

determining a relative transform between the placement location and the anchor location of the physical anchor object or the virtual anchor object.

15 . The computer-implemented method of claim 14 , wherein the physical anchor object comprises at least one of a floor, a wall, a desk, or a table.

16 . The computer-implemented method of claim 14 , wherein the virtual anchor object comprises at least one of a floating vertical plane or a floating horizontal plane.

17 . A device, comprising:

a processor; and

a memory containing instructions that, when executed by the processor, cause the processor to:

receive, at an operating system (OS) process of the device from an application running on the device, a request for an anchor for anchoring of virtual content relative to a physical environment, wherein the request indicates at least a region for the requested anchor and the OS process is separate from the application;

determine, by the OS process, whether the requested anchor is an implicit anchor type or an explicit anchor type;

in response to a determination, by the OS process, that the requested anchor is the implicit anchor type:

obtain, by the OS process of the device, placement context information corresponding to at least one virtual or physical object other than the virtual content;

determine, by the OS process, a placement location for the virtual content based on the requested anchor and the placement context information; and

generate the requested anchor by the OS process using the placement location;

in response to another determination, by the OS process, that the requested anchor is the explicit anchor type:

obtain, by the OS process of the device, an anchor location from the request for the anchor; and

generate the requested anchor by the OS process using the anchor location;

provide an identifier of the requested anchor from the OS process to the application;

receive, by the OS process of the device, rendering application data from the application for displaying the virtual content corresponding to the identifier of the requested anchor; and

provide, by the OS process, the virtual content for display at the anchor location corresponding to the requested anchor.

18 . The device of claim 17 , wherein the placement context information comprises occupancy information for other virtual content including at least one virtual object other than the virtual content, and an available region in the physical environment that meets one or more criteria for the requested anchor.

19 . A non-transitory computer-readable medium storing instructions which, when executed by one or more processors, cause the one or more processors to perform operations including:

receiving, at an operating system (OS) process of a device from an application running on the device, a request for an anchor for anchoring of virtual content relative to a physical environment, wherein the request indicates at least a region for the requested anchor and the OS process is separate from the application;

determining, by the OS process, whether the requested anchor is an implicit anchor type or an explicit anchor type;

in response to determining, by the OS process, that the requested anchor is the implicit anchor type;

obtaining, by the OS process of the device, placement context information corresponding to at least one virtual or physical object other than the virtual content;

determining, by the OS process, a placement location for the virtual content based on the requested anchor and the placement context information;

generating the requested anchor by the OS process using the placement location;

in response to determining, by the OS process, that the requested anchor is the explicit anchor type:

obtaining, by the OS process of the device, an anchor location from the request for the anchor; and

generating the requested anchor by the OS process using the anchor location;

providing an identifier of the requested anchor from the OS process to the application;

receiving, by the OS process of the device, rendering application data from the application for displaying the virtual content corresponding to the identifier of the requested anchor; and

displaying, by the OS process, the virtual content at the anchor location corresponding to the requested anchor.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 10, 2022
From: BUERLI, MICHAEL E.; DUDRENOV, PAVEL V.
To: APPLE INC.
Reel/Frame 060776/0212 →
Continuity (2)
Provisional Application 63230666 · Aug 6, 2021
Related Publication 20230040610A1 · Feb 9, 2023
References Cited (22)
US 8022967B2 · Okuno et al. · 2011 [cited by applicant]
US 9269003B2 · Schmalstieg · 2016 [cited by applicant]
US 10019962B2 · Liu · 2018 [cited by examiner]
US 10186087B2 · Davis et al. · 2019 [cited by applicant]
US 20120249741A1 · Maciocci · 2012 [cited by examiner]
US 20130044128A1 · Liu · 2013 [cited by examiner]
US 20150241959A1 · Abovitz · 2015 [cited by examiner]
US 20180045963A1 · Hoover · 2018 [cited by examiner]
US 20180350099A1 · Yerkes · 2018 [cited by examiner]
US 20190065027A1 · Hauenstein · 2019 [cited by examiner]
US 20190272674A1 · Comer et al. · 2019 [cited by applicant]
US 20190353904A1 · Ardovino · 2019 [cited by examiner]
US 20200081530A1 · Greenberg · 2020 [cited by applicant]
US 20200111256A1 · Bleyer · 2020 [cited by examiner]
US 20210005021A1 · Evertt · 2021 [cited by examiner]
US 20210019946A1 · Sonasath · 2021 [cited by examiner]
US 20210097775A1 · Zurmoehle · 2021 [cited by examiner]
US 20210110562A1 · Dunkley · 2021 [cited by examiner]
EP 3495926A1 · 2019 [cited by applicant]
EP 3896556A1 · 2021 [cited by applicant]
International Search Report and Written Opinion from PCT/US2022/038952, dated Nov. 16, 2022, 14 pages. [cited by applicant]
Indian Patent Application No. 202417007290; Office Action dated Jun. 5, 2025, 8 pages. [cited by applicant]