IP Library Granted Patent US 11,494,987
Granted Patent B2
US 11,494,987 · App. 16/124,124 · Granted Nov 8, 2022

Providing augmented reality in a web browser

Inventors: Erik Murphy-Chutorian (Palo Alto, CA); Nicholas Butko (Cupertino, CA); Rigel Benton (Mountain View, CA); Dat Chu (Mountain View, CA); Scott Pollack (Mountain View, CA); Alvin Portillo (San Francisco, CA)
G06T19/006G06F40/154G06T15/005
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 11,494,987
App. No.
16/124,124
Granted
Nov 8, 2022
Kind
B2
Abstract

Implementations generally relate to providing augmented reality in a web browser. In one implementation, a method includes capturing images of a physical scene with a camera of a device. The method further includes determining motion of the camera using six degrees of freedom (6DoF) markerless tracking. The method further includes overlaying virtual three-dimensional (3D) content onto a depicted physical scene in the images, resulting in augmented reality (AR) images. The method further includes rendering the AR images in a browser of the device.

Claims (65)

1. A system comprising:

one or more processors;

logic encoded in one or more non-transitory computer-readable storage media for execution by the one or more processors and when executed operable to perform operations comprising:

capturing images of three-dimensional (3D) objects in a physical scene with a camera of a device;

computing feature points of one or more of the 3D objects using a graphics processing unit (GPU);

transmitting the feature points from the GPU to at least one central processing unit (CPU);

determining changes in 3D positional and rotational information of the camera relative to the feature points of the one or more 3D objects in the physical scene using six degrees of freedom (6DoF) markerless tracking;

overlaying virtual 3D content onto a depicted physical scene in the images, resulting in augmented reality (AR) images;

rendering the AR images in a browser of the device based at least in part on a web application that is executed in the browser, wherein the web application is based at least in part on a subset of JavaScript transpiled or compiled from source code of another programming language that optimizes performance of generated JavaScript;

performing runtime optimizations to JavaScript frameworks; and

processing image frames in a pipeline, wherein the GPU processes the images frames prior to the CPU processing the image frames.

2. The system of claim 1 , wherein the logic when executed is further operable to perform operations comprising switching between different computation pipelines based on one or more of device characteristics and runtime performance evaluation.

3. The system of claim 1 , wherein the subset of JavaScript is compiled from C++.

4. The system of claim 1 , wherein the logic when executed is further operable to perform operations comprising:

processing the images using a computer program executed on the GPU; and

extracting the feature points from the images using a shader.

5. The system of claim 1 , wherein the logic when executed is further operable to perform operations comprising performing multithread execution of JavaScript in the browser.

6. The system of claim 1 , wherein the at least one CPU processes a first image frame that was previously processed by the at least one GPU, and wherein the at least one CPU processes the first image frame and the at least one GPU processes a second image frame simultaneously.

7. The system of claim 1 , wherein the logic when executed is further operable to perform operations comprising:

accessing from the device one or more of sensor data, camera image data, and inertial measurements using web frameworks; and

rendering the AR images based at least in part on one or more of the sensor data, the camera image data, and the inertial measurements.

8. The system of claim 1 , wherein the logic when executed is further operable to perform operations comprising:

performing multithread execution, wherein the multithread execution comprises the at least one CPU executing a first JavaScript operation in the browser in a main thread and executing one or more second JavaScript operations in the browser in one or more background threads, and wherein the main thread and the one or more background threads are performed asynchronously;

determining one or more intrinsic parameters of the camera, wherein the one or more intrinsic parameters comprises at least one or more of a field of view, a principal point, and distortion parameters; and

rendering the virtual 3D content using a 3D rendering engine and a JavaScript 3D content library.

9. The system of claim 1 , wherein the logic when executed is further operable to perform operations comprising:

obtaining camera data from a device library via the browser;

parsing the camera data;

analyzing sensor data comprising one or more of camera feed and inertial measurements;

estimating at runtime one or more sensor characteristics based on the sensor data; and

determining one or more intrinsic parameters of the camera, wherein the one or more intrinsic parameters comprises at least one or more of a field of view, a principal point, and distortion parameters.

10. A non-transitory computer-readable storage medium carrying program instructions thereon, the instructions when executed by one or more processors are operable to perform operations comprising:

capturing images of three-dimensional (3D) objects in a physical scene with a camera of a device;

computing feature points of one or more of the 3D objects using a graphics processing unit (GPU);

transmitting the feature points from the GPU to at least one central processing unit (CPU);

determining changes in 3D positional and rotational information of the camera relative to the feature points of the one or more 3D objects in the physical scene using six degrees of freedom (6DoF) markerless tracking;

overlaying virtual 3D content onto a depicted physical scene in the images, resulting in augmented reality (AR) images;

rendering the AR images in a browser of the device based at least in part on a web application that is executed in the browser, wherein the web application is based at least in part on a subset of JavaScript transpiled or compiled from source code of another programming language that optimizes performance of generated JavaScript;

performing runtime optimizations to JavaScript frameworks; and

processing image frames in a pipeline, wherein the GPU processes the images frames prior to the CPU processing the image frames.

11. The computer-readable storage medium of claim 10 , wherein the subset of JavaScript comprises WebAssembly.

12. The computer-readable storage medium of claim 10 , wherein the subset of JavaScript is compiled from C++.

13. The computer-readable storage medium of claim 10 , wherein the instructions when executed are further operable to perform operations comprising:

processing the images using a computer program executed on the GPU; and

extracting the feature points from the images.

14. The computer-readable storage medium of claim 10 , wherein the instructions when executed are further operable to perform operations comprising performing multithread execution of JavaScript in the browser.

15. The computer-readable storage medium of claim 10 , wherein the at least one CPU processes a first image frame that was previously processed by the at least one GPU, and wherein the at least one CPU processes the first image frame and the at least one GPU processes a second image frame simultaneously.

16. The computer-readable storage medium of claim 10 , wherein the instructions when executed are further operable to perform operations comprising:

accessing from the device one or more of sensor data, camera image data, and inertial measurements using web frameworks; and

rendering the AR images based at least in part on one or more of the sensor data, the camera image data, and the inertial measurements.

17. The computer-readable storage medium of claim 10 , wherein the instructions when executed are further operable to perform operations comprising rendering the virtual 3D content using a 3D rendering engine and a JavaScript 3D content library.

18. The computer-readable storage medium of claim 10 , wherein the instructions when executed are further operable to perform operations comprising:

obtaining camera data from a device library via the browser;

parsing the camera data; and

determining one or more intrinsic parameters of the camera, wherein the one or more intrinsic parameters comprises at least one or more of a field of view, a principal point, and distortion parameters.

19. A computer-implemented method comprising:

capturing images of three-dimensional (3D) objects in a physical scene with a camera of a device;

computing feature points of one or more of the 3D objects using a graphics processing unit (GPU);

transmitting the feature points from the GPU to at least one central processing unit (CPU);

determining changes in 3D positional and rotational information of the camera relative to the feature points of the one or more 3D objects in the physical scene using six degrees of freedom (6DoF) markerless tracking;

overlaying virtual 3D content onto a depicted physical scene in the images, resulting in augmented reality (AR) images;

rendering the AR images in a browser of the device based at least in part on a web application that is executed in the browser, wherein the web application is based at least in part on a subset of JavaScript transpiled or compiled from source code of another programming language that optimizes performance of generated JavaScript;

performing runtime optimizations to JavaScript frameworks; and

processing image frames in a pipeline, wherein the GPU processes the images frames prior to the CPU processing the image frames.

20. The method of claim 19 , wherein the subset of JavaScript comprises WebAssembly.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2025
From: NIANTIC, INC.
To: NIANTIC SPATIAL, INC.
Reel/Frame 071555/0833 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 16, 2023
From: 8TH WALL, INC.; 8TH WALL, LLC
To: NIANTIC, INC.
Reel/Frame 064614/0970 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 20, 2018
From: MURPHY-CHUTORIAN, ERIK; BUTKO, NICHOLAS; BENTON, RIGEL; CHU, DAT; POLLACK, SCOTT; PORTILLO, ALVIN
To: 8TH WALL INC.
Reel/Frame 046932/0911 →
Continuity (1)
Related Publication 20200082624A1 · Mar 12, 2020