IP Library Granted Patent US 11,521,352
Granted Patent B1
US 11,521,352 · App. 17/086,307 · Granted Dec 6, 2022

Mesh updates via mesh frustum cutting

Inventors: Devin Bhushan (San Jose, CA); Seunghee Han (San Jose, CA); Caelin Thomas Jackson-King (Gormley, CA); Jamie Kuppel (Sunnyvale, CA); Stanislav Yazhenskikh (Santa Clara, CA); Jim Jiaming Zhu (Scarborough, CA)
Assignee: SPLUNK INC.
G06T17/205G01B11/22G01S17/89G06T19/006G06T19/20H04L67/10G06T2219/024G06T2219/2004
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,521,352
App. No.
17/086,307
Filed
Oct 30, 2020
Granted
Dec 6, 2022
Kind
B1
Art Unit
2613
USPC
345/423
Abstract

Various implementations or examples set forth a method for scanning a three-dimensional (3D) environment. The method includes generating, based on sensor data captured by a depth sensor on a device, one or more 3D meshes representing a physical space, wherein each of the 3D meshes comprises a corresponding set of vertices and a corresponding set of faces comprising edges between pairs of vertices; determining that a mesh is visible in a current frame captured by an image sensor on the device; determining, based on the corresponding set of vertices and the corresponding set of faces for the mesh, a portion of the mesh that lies within a view frustum associated with the current frame; and updating the one or more 3D meshes by texturing the portion of the mesh with one or more pixels in the current frame onto which the portion is projected.

Claims (69)

1. A method for scanning a three-dimensional (3D) environment, comprising:

generating, based on sensor data captured by a depth sensor on a device, one or more 3D meshes representing a physical space, wherein each of the one or more 3D meshes comprises a corresponding set of vertices and a corresponding set of faces comprising edges between pairs of vertices;

determining that a mesh in the one or more 3D meshes is visible in a current frame captured by an image sensor on the device;

determining, based on the corresponding set of vertices and the corresponding set of faces for the mesh, a portion of the mesh that lies within a view frustum associated with the current frame; and

updating the one or more 3D meshes by texturing the portion of the mesh with one or more pixels in the current frame onto which the portion of the mesh is projected.

2. The method of claim 1 , further comprising transmitting a stream comprising the textured portion of the mesh to a distributed messaging system for receipt by one or more remote devices.

3. The method of claim 1 , further comprising transmitting the textured portion of the mesh for receipt by one or more remote devices executing an extended reality application that renders the one or more 3D meshes in an augmented reality environment.

4. The method of claim 1 , wherein determining that the mesh is visible in the current frame comprises:

generating a grid of 2D points in the current frame;

generating a set of rays representing projection of the grid of 2D points into a 3D space in which the sets of vertices of the one or more 3D meshes are distributed;

determining at least a subset of the one or more 3D meshes that intersect the set of rays; and

identifying the mesh in the at least a subset of the one or more 3D meshes as visible in the current frame based on a proximity of the mesh to the image sensor.

5. The method of claim 1 , wherein determining that the mesh is visible in the current frame comprises:

generating a grid of 2D points in the current frame;

generating, in parallel for the grid of 2D points, a set of rays representing projection of the grid of 2D points into a 3D space in which the sets of vertices of the one or more 3D meshes are distributed;

determining at least a subset of the one or more 3D meshes that intersect the set of rays; and

identifying the mesh in the at least a subset of the one or more 3D meshes as visible in the current frame based on a proximity of the mesh to the image sensor.

6. The method of claim 1 , wherein determining the portion of the mesh that lies within the view frustum comprises:

grouping faces in the mesh into a first set of faces that is fully outside the view frustum, a second set of faces that is fully inside the view frustum, and a third set of faces that intersect the view frustum; and

dividing the third set of faces by one or more planes bounding the view frustum to generate a fourth set of faces that is fully outside the view frustum or fully inside the view frustum.

7. The method of claim 1 , wherein determining the portion of the mesh that lies within the view frustum comprises:

grouping faces in the mesh into a first set of faces that is fully outside the view frustum, a second set of faces that is fully inside the view frustum, and a third set of faces that intersect the view frustum based on positions of one or more vertices in each of the faces in a positive half-space or a negative half-space of a plane bounding the view frustum; and

dividing the third set of faces by one or more planes bounding the view frustum to generate a fourth set of faces that is fully outside the view frustum or fully inside the view frustum.

8. The method of claim 1 , wherein determining the portion of the mesh that lies within the view frustum comprises:

determining one or more faces in the mesh that intersect the view frustum;

calculating intersection points of the one or more faces with a plane representing a boundary of the view frustum; and

forming one or more new faces using the intersection points and one or more vertices of the one or more faces.

9. The method of claim 1 , wherein determining the portion of the mesh that lies within the view frustum comprises:

identifying a first set of faces in the mesh that are fully inside a plurality of planes that bound the view frustum;

dividing a second set of faces in the mesh that intersect the plurality of planes by the plurality of planes to generate a third set of faces that are fully inside the view frustum; and

adding the first set of faces and the third set of faces to the portion of the mesh.

10. The method of claim 1 , wherein updating the one or more 3D meshes comprises:

creating a clone of an older version of the mesh, wherein the clone lacks the portion of the mesh that lies within the view frustum; and

discarding the older version of the mesh to trigger texturing of the portion of the mesh with the one or more pixels in the current frame.

11. The method of claim 1 , wherein updating the one or more 3D meshes comprises:

creating a clone of an untextured version of the mesh, wherein the clone includes the portion of the mesh that lies within the view frustum and is textured with the one or more pixels in the current frame; and

overlaying an untextured version of the mesh with the clone.

12. The method of claim 1 , wherein the host device comprises a mobile device and the depth sensor comprises a light detection and ranging (LIDAR) sensor.

13. A computing device, comprising:

a memory that includes an application; and

a processor that is coupled to the memory, and when executing the application, performs the steps of:

generating, based on sensor data captured by a depth sensor on a device, one or more 3D meshes representing a physical space, wherein each of the one or more 3D meshes comprises a corresponding set of vertices and a corresponding set of faces comprising edges between pairs of vertices;

determining that a mesh in the one or more 3D meshes is visible in a current frame captured by an image sensor on the device;

determining, based on the corresponding set of vertices and the corresponding set of faces for the mesh, a portion of the mesh that lies within a view frustum associated with the current frame; and

updating the one or more 3D meshes by texturing the portion of the mesh with one or more pixels in the current frame onto which the portion of the mesh is projected.

14. The computing device of claim 13 , wherein the processor further performs transmitting a stream comprising the textured portion of the mesh to a distributed messaging system for receipt by one or more remote devices that render the one or more 3D meshes in an augmented reality environment.

15. The computing device of claim 13 , wherein determining that the mesh is visible in the current frame comprises:

generating a grid of 2D points in the current frame;

generating, in parallel for the grid of 2D points, a set of rays representing projection of the grid of 2D points into a 3D space in which the sets of vertices of the one or more 3D meshes are distributed;

determining at least a subset of the one or more 3D meshes that intersect the set of rays; and

identifying the mesh in the at least a subset of the one or more 3D meshes as visible in the current frame based on a proximity of the mesh to the image sensor.

16. The computing device of claim 13 , wherein determining the portion of the mesh that lies within the view frustum comprises:

grouping faces in the mesh into a first set of faces that is fully outside the view frustum, a second set of faces that is fully inside the view frustum, and a third set of faces that intersect the view frustum based on positions of one or more vertices in each of the faces in a positive half-space or a negative half-space of a plane bounding the view frustum;

calculating intersection points of third set of faces with one or more planes bounding the view frustum; and

forming a fourth set of faces using the intersection points and one or more vertices of each face in the third set of faces.

17. The computing device of claim 13 , wherein updating the one or more 3D meshes comprises:

creating a clone of an older version of the mesh, wherein the clone lacks the portion of the mesh that lies within the view frustum; and

discarding the older version of the mesh to trigger texturing of the portion of the mesh with the one or more pixels in the current frame.

18. The computing device of claim 13 , wherein updating the one or more 3D meshes comprises::

creating a clone of an untextured version of the mesh, wherein the clone includes the portion of the mesh that lies within the view frustum and is textured with the one or more pixels in the current frame; and

overlaying an untextured version of the mesh with the clone.

19. A non-transitory computer readable medium storing instructions that, when executed by a processor, cause the processor to perform the steps of:

generating, based on sensor data captured by a depth sensor on a device, one or more 3D meshes representing a physical space, wherein each of the one or more 3D meshes comprises a corresponding set of vertices and a corresponding set of faces comprising edges between pairs of vertices;

determining that a mesh in the one or more 3D meshes is visible in a current frame captured by an image sensor on the device;

determining, based on the corresponding set of vertices and the corresponding set of faces for the mesh, a portion of the mesh that lies within a view frustum associated with the current frame; and

updating the one or more 3D meshes by texturing the portion of the mesh with one or more pixels in the current frame onto which the portion of the mesh is projected.

20. The non-transitory computer readable medium of claim 19 , wherein determining the portion of the mesh that lies within the view frustum comprises:

grouping faces in the mesh into a first set of faces that are fully outside the view frustum, a second set of faces that are fully inside the view frustum, and a third set of faces that intersect the view frustum; and

dividing the third set of faces by one or more planes bounding the view frustum to generate a fourth set of faces that are fully outside the view frustum and a fifth set of faces that are fully inside the view frustum.

Assignments (3)
CHANGE OF NAME Recorded Jul 22, 2025
From: SPLUNK INC.
To: SPLUNK LLC
Reel/Frame 072170/0599 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 22, 2025
From: SPLUNK LLC
To: CISCO TECHNOLOGY, INC.
Reel/Frame 072173/0058 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 10, 2021
From: BHUSHAN, DEVIN; HAN, SEUNGHEE; JACKSON-KING, CAELIN THOMAS; KUPPEL, JAMIE; YAZHENSKIKH, STANISLAV; ZHU, JIM JIAMING
To: SPLUNK INC.
Reel/Frame 056186/0280 →
Continuity (3)
Provisional Application 63093123 · Oct 16, 2020
Provisional Application 63093111 · Oct 16, 2020
Provisional Application 63093143 · Oct 16, 2020