Simple environment solver using plane extraction
By identifying the environmental surface plane and using corner points to represent the environment, the problem of waste of computing resources in dense mesh models is solved, and fast and accurate environmental reconstruction and effective display of virtual objects are achieved.
Patent Information
- Application Number
- JP2021577449
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-07-03
- Filing Date
- 2020-06-25
- Publication Date
- 2025-02-04
- Estimated Expiration
- 2040-06-25
AI Technical Summary
When existing XR systems rebuild the environment, the dense mesh model contains unnecessary details, resulting in waste of computing resources and time, making it difficult to quickly and accurately represent the main features of the environment, such as wall area or decoration, affecting the effectiveness of the application.
By identifying the surface plane of the environment and using a set of corner points to represent the environment, reducing computing and storage requirements, quickly rebuilding the environment with the depth and image information captured by the sensor, supporting a multi-user experience.
It realizes fast and accurate environmental reconstruction, reduces the consumption of computing resources and storage space, and supports the interaction and display of virtual objects in the physical environment.
Smart Images

Figure 0007626726000001 
Figure 0007626726000002 
Figure 0007626726000003
Abstract
Description
[Technical field]
[0001] This application relates generally to cross-reality systems that use 3D world reconstruction to render scenes. [Background technology]
[0002] A computer may control a human user interface and create an X-reality (XR or cross-reality) environment in which some or all of the XR environment is generated by the computer as it is perceived by the user. These XR environments may be virtual reality (VR), augmented reality (AR), and mixed reality (MR) environments in which some or all of the XR environment may be generated by the computer, in part, using data that describes the environment. This data may describe virtual objects, for example, that may be rendered so that a user can sense or perceive and interact with the virtual objects as part of the physical world. The user may experience these virtual objects as a result of data being rendered and presented through a user interface device, such as a head-mounted display device. The data may control audio that may be displayed to the user for viewing or played to the user for hearing, or may control a tactile (or haptic) interface, allowing the user to experience touch sensations that the user senses or perceives as they feel the virtual objects.
[0003] XR systems can be useful for many applications ranging from scientific visualization, medical training, engineering design and prototyping, remote manipulation and telepresence, and personal entertainment. AR and MR, in contrast to VR, involve one or more objects in association with real objects in the physical world. The experience of virtual objects interacting with real objects greatly enhances the user's enjoyment when using XR systems and also opens up possibilities for a variety of applications that present realistic and easily understandable information about how the physical world can be altered.
[0004] An XR system may represent the physical world around a user of the system as a "mesh." The mesh may be represented by a number of interconnected triangles. Each triangle has edges that join points on the surface of an object in the physical world such that each triangle represents a portion of the surface. Information about portions of the surface, such as color, texture, or other properties, may be associated and stored within the triangles. In operation, the XR system may process image information and detect points and surfaces to create or update a mesh. Summary of the Invention [Means for solving the problem]
[0005] Aspects of the present application relate to methods and apparatus for rapidly generating environments containing computer-generated objects. The techniques described herein may be used together, separately, or in any suitable combination.
[0006] Some embodiments relate to a portable electronic system that includes a sensor configured to capture information about a physical world and a processor configured to execute computer-executable instructions for computing a three-dimensional (3D) representation of a portion of the physical world based, at least in part, on the captured information about the physical world. The computer-executable instructions include instructions for extracting a plurality of plane segments from the sensor-captured information, identifying a plurality of surface planes based, at least in part, on the plurality of surface segments, and inferring a plurality of corner points of the portion of the physical world based, at least in part, on the plurality of surface planes.
[0007] In some embodiments, the computer-executable instructions further comprise instructions for constructing a mesh model of the portion of the physical world using the corner points.
[0008] In some embodiments, the plurality of surface planes are identified based at least in part on input from a user wearing at least a portion of the portable electronic system.
[0009] In some embodiments, the portable electronic system includes a transceiver configured for communication over a computer network with a device providing a remote memory.
[0010] In some embodiments, the processor implements a service configured to provide an application with a 3D representation of a portion of the physical world.
[0011] In some embodiments, the service stores the salient points in local memory or transfers the salient points to cloud memory as a three-dimensional (3D) representation of a portion of the physical world.
[0012] In some embodiments, identifying the plurality of surface planes includes determining whether a dominant plane segment normal exists among a group of face segment normals of the plurality of face segments; when the determining indicates a dominant plane segment normal of the group, setting the dominant plane segment normal as the surface plane normal; and when the determining does not indicate a dominant plane segment normal of the group, calculating the surface plane normal from at least a portion of the face segment normals of the group.
[0013] In some embodiments, calculating the surface plane normal comprises calculating a weighted average of at least a portion of the surface partition normals of the group.
[0014] In some embodiments, inferring a plurality of corner points of a portion of the physical world includes extending a first and a second surface plane of the plurality of surface planes to infinity and obtaining a boundary line that intersects with the first and second surface planes.
[0015] In some embodiments, the step of inferring a plurality of corner points of the portion of the physical world further includes inferring one of the plurality of corner points by intersecting the boundary line with a third surface plane.
[0016] Some embodiments relate to at least one non-transitory computer-readable medium encoded with a plurality of computer-executable instructions that, when executed by at least one processor, implements a method for providing a three-dimensional (3D) representation of a portion of a physical world, in which the portion of the physical world is represented using a plurality of corner points, the method including capturing information about a portion of the physical world within a user's field of view (FOV), extracting a plurality of surface partitions from the captured information, identifying a plurality of surface planes from the plurality of surface partitions, and calculating a plurality of corner points that represent the portion of the physical world based on surface plane intersections of the plurality of identified surface planes.
[0017] In some embodiments, the method includes calculating whether the first plurality of corner points form a closure.
[0018] In some embodiments, calculating whether an occlusion is formed includes determining whether boundaries joining the first plurality of corner points can be connected to define a surface that joins and bounds the enclosed volume.
[0019] In some embodiments, the portion of the physical world is a first portion of the physical world, the user is a first user, and the plurality of corner points is a first plurality of corner points, and the method further includes receiving a second plurality of corner points of a second portion of the physical world from a second user, and providing a 3D representation of the physical world based at least in part on the first and second plurality of corner points.
[0020] In some embodiments, the user is a first user, and the method further includes communicating, via a computer network, corner points calculated from the captured information about a portion of the physical world that is within the FOV of the first user; receiving the communicated corner points at an XR device used by a second user; and rendering, using the XR device, information about the portion of the physical world to the second user based on the received corner points.
[0021] In some embodiments, the method includes calculating metadata for the salient points, the metadata indicating a location relationship between the salient points.
[0022] In some embodiments, the method includes storing the salient points, including the respective metadata, such that the salient points are readable by multiple users, including the user.
[0023] Some embodiments relate to a method of operating a cross reality system for reconstructing an environment, the cross reality system including a processor configured to process image information in communication with a sensor worn by a user that generates depth information for distinct regions within a field of view of the sensor, the method including extracting a plurality of surface partitions from the depth information, displaying the extracted surface partitions to a user, receiving user input indicating a plurality of surface planes, each representing a surface bounding the environment, and calculating a plurality of corner points of the environment based at least in part on the plurality of surface planes.
[0024] In some embodiments, the method includes determining whether a plurality of corner points form a closure.
[0025] In some embodiments, the method includes storing the corner point once it is determined that an occlusion is formed.
[0026] The above description is provided by way of illustration and is not intended to be limiting. The present invention provides, for example, the following: (Item 1) 1. A portable electronic system comprising: A sensor configured to capture information about the physical world; 11. A processor, the processor being configured to execute computer-executable instructions for computing a three-dimensional (3D) representation of a portion of the physical world based at least in part on captured information about the physical world, the computer-executable instructions comprising: extracting a plurality of surface segments from the sensor acquisition information; identifying a plurality of surface planes based at least in part on the plurality of surface partitions; inferring a plurality of corner points of the portion of the physical world based at least in part on the plurality of surface planes; a processor comprising instructions for: A portable electronic system comprising: (Item 2) 2. The portable electronic system of claim 1, wherein the computer-executable instructions further comprise instructions for constructing a mesh model of a portion of the physical world using the corner points. (Item 3) 2. The portable electronic system of claim 1, wherein the plurality of surface planes are identified based, at least in part, on input from a user wearing at least a portion of the portable electronic system. (Item 4) Item 1 , a portable electronic system according to item 1 , comprising a transceiver configured for communication over a computer network with a device providing a remote memory. (Item 5) 2. The portable electronic system of claim 1, wherein the processor implements a service configured to provide an application with a 3D representation of a portion of the physical world. (Item 6) 6. The portable electronic system of claim 5, wherein the service stores the salient points in local memory or transfers the salient points to cloud memory as a three-dimensional (3D) representation of a portion of the physical world. (Item 7) Identifying the plurality of surface planes comprises: determining whether a dominant facet normal is present among a group of facet normals of the plurality of facets; when said determining indicates a dominant surface partition normal of said group, setting said dominant surface partition normal as a surface normal; calculating the surface normal from at least a portion of the surface plot normals of the group when the determining does not indicate a dominant surface plot normal of the group. 2. The portable electronic system of claim 1, comprising: (Item 8) 8. The portable electronic system of claim 7, wherein calculating the surface normal comprises calculating a weighted average of at least a portion of the group of surface section normals. (Item 9) Inferring a plurality of corner points of the portion of the physical world includes: extending a first and a second surface plane of the plurality of surface planes to infinity; obtaining a boundary line that intersects with the first and second surface planes; The method according to item 1, comprising: (Item 10) 10. The method of claim 9, wherein inferring a plurality of corner points of the portion of the physical world further comprises inferring one of the plurality of corner points by intersecting the boundary line with a third surface plane. (Item 11) At least one non-transitory computer-readable medium encoded with a plurality of computer-executable instructions, which when executed by at least one processor, performs a method for providing a three-dimensional (3D) representation of a portion of a physical world, the portion of the physical world being represented using a plurality of corner points, the method comprising: capturing information about a portion of the physical world that is within a user's field of view (FOV); extracting a plurality of surface segments from the captured information; identifying a plurality of surface planes from the plurality of surface segments; calculating a plurality of corner points representing a portion of the physical world based on surface plane intersections of the plurality of identified surface planes; A method comprising: (Item 12) Item 12. The method of item 11, comprising calculating whether the first plurality of corner points form a closure. (Item 13) Item 13. The method of item 12, wherein calculating whether an occlusion is formed includes determining whether boundaries joining the first plurality of corner points can be connected to define a surface that joins and bounds a closed volume. (Item 14) the portion of the physical world is a first portion of the physical world and the user is a first user; the plurality of corner points is a first plurality of corner points; The method further comprises: receiving a second plurality of corner points of a second portion of the physical world from a second user; providing a 3D representation of the physical world based, at least in part, on the first and second pluralities of salient points; and Item 12. The method according to item 11, comprising: (Item 15) the user is a first user, The method further comprises: communicating, via a computer network, corner points calculated from the captured information about a portion of the physical world that is within the first user's FOV; receiving the communicated corner point at an XR device used by a second user; Rendering, with the XR device, to the second user, information about the portion of the physical world based on the received plurality of corner points. Item 12. The method according to item 11, comprising: (Item 16) Item 12. The method of item 11, comprising calculating metadata for the salient points, the metadata indicating location relationships between the salient points. (Item 17) 20. The method of claim 16, comprising storing the salient points including respective metadata such that the salient points are readable by multiple users including the user. (Item 18) 1. A method of operating a cross reality system for reconstructing an environment, the cross reality system comprising a processor configured to process image information in communication with a sensor worn by a user generating depth information relating to distinct regions within a field of view of the sensor, the method comprising: extracting a plurality of surface partitions from the depth information; displaying the extracted surface partition to the user; receiving user input indicating a number of surface planes, each of which represents a surface bounding the environment; calculating a plurality of corner points of the environment based at least in part on the plurality of surface planes; A method comprising: (Item 19) 20. The method of claim 18, further comprising determining whether the plurality of corner points form an occlusion. (Item 20) 20. The method of claim 19, further comprising storing the corner point once it is determined that the occlusion is formed. [Brief description of the drawings]
[0027] The accompanying drawings are not intended to be drawn to scale. In the drawings, each identical or nearly identical component that is illustrated in various figures is represented by a like numeral. For purposes of clarity, not every component is labeled in every figure.
[0028] [Figure 1] FIG. 1 is a sketch illustrating an example of a simplified augmented reality (AR) scene, according to some embodiments.
[0029] [Diagram 2] FIG. 2 is a sketch of an example simplified AR scene illustrating an example world reconstruction use case including visual occlusion, physics-based interaction, and environmental inference, according to some embodiments.
[0030] [Diagram 3] FIG. 3 is a schematic diagram illustrating data flow within an AR system configured to provide an experience of AR content that interacts with the physical world, according to some embodiments.
[0031] [Figure 4] FIG. 4 is a schematic diagram illustrating an example of an AR display system, according to some embodiments.
[0032] [Figure 5A] FIG. 5A is a schematic diagram illustrating a user wearing an AR display system that renders AR content as the user moves through a physical world environment, according to some embodiments.
[0033] [Figure 5B] FIG. 5B is a schematic diagram illustrating a viewing optics assembly and associated components, according to some embodiments.
[0034] [Figure 6]FIG. 6 is a schematic diagram illustrating an AR system using a 3D reconstruction system, according to some embodiments.
[0035] [Figure 7A] FIG. 7A is a schematic diagram illustrating a 3D space discretized into voxels, according to some embodiments.
[0036] [Figure 7B] FIG. 7B is a schematic diagram illustrating the reconstruction range for a single viewpoint, according to some embodiments.
[0037] [Figure 7C] FIG. 7C is a schematic diagram illustrating the perception range versus the reconstruction range at a single point, according to some embodiments.
[0038] [Figure 8] 8A-F are schematic diagrams illustrating the reconstruction of a surface in the physical world into a voxel model by an image sensor viewing the surface from multiple positions and viewpoints, according to some embodiments.
[0039] [Figure 9] FIG. 9 is a schematic diagram illustrating a scene represented by bricks containing voxels, surfaces within the scene, and a depth sensor that captures the surfaces in a depth image, according to some embodiments.
[0040] [Figure 10A] FIG. 10A is a schematic diagram illustrating a 3D space represented by eight bricks.
[0041] [Figure 10B] FIG. 10B is a schematic diagram illustrating a voxel grid within the brick of FIG. 10A.
[0042] [Figure 11] FIG. 11 is a schematic diagram illustrating a planar extraction system, according to some embodiments.
[0043] [Figure 12] FIG. 12 is a schematic diagram illustrating a portion of the plane extraction system of FIG. 11 along with details regarding the plane extraction, in accordance with some embodiments.
[0044] [Figure 13] FIG. 13 is a schematic diagram illustrating a scene represented by bricks containing voxels and example planar data within the scene, according to some embodiments.
[0045] [Figure 14] FIG. 14 is a schematic diagram illustrating the planar data storage of FIG. 11 according to some embodiments.
[0046] [Figure 15] FIG. 15 is a schematic diagram illustrating planar geometry extraction when a planar query is sent to the planar data store of FIG. 11 in accordance with some embodiments.
[0047] [Figure 16A] FIG. 16A is a schematic diagram illustrating steps of generating the plane covering points of FIG. 15 according to some embodiments.
[0048] [Figure 16B] FIG. 16B is a schematic diagram illustrating various example planar geometric shape representations that may be extracted from an example rasterized planar mask, according to some embodiments.
[0049] [Figure 17] FIG. 17 illustrates a mesh for a scene, according to some embodiments.
[0050] [Figure 18A] FIG. 18A shows the scene of FIG. 17 represented by an outer rectangular plane, according to some embodiments.
[0051] [Figure 18B] FIG. 18B shows the scene of FIG. 17 represented by an inner rectangular plane, according to some embodiments.
[0052] [Figure 18C] FIG. 18C shows the scene of FIG. 17 represented by a polygonal plane according to some embodiments.
[0053] [Figure 19] FIG. 19 shows the scene of FIG. 17 with the mesh denoised by flattening the mesh shown in FIG. 17 in accordance with some embodiments.
[0054] [Figure 20] FIG. 20 is a flowchart illustrating a method of operating an AR system to generate a 3D reconstruction of an environment, according to some embodiments.
[0055] [Figure 21] FIG. 21 is a flowchart illustrating a method of identifying a surface plane based, at least in part, on the surface partition obtained in FIG. 20, according to some embodiments.
[0056] [Figure 22] FIG. 22 is a flowchart illustrating a method for inferring the salient points in FIG. 20 according to some embodiments.
[0057] [Figure 23] FIG. 23 is a simplified schematic diagram illustrating an AR system configured to perform the method of FIG. 20, according to some embodiments.
[0058] [Figure 24] FIG. 24 is a simplified schematic diagram illustrating surface partition extraction of an environment, according to some embodiments.
[0059] [Diagram 25]FIG. 25 is a simplified schematic diagram illustrating surface planes identified based on the extracted surface partitions of the environment in FIG. 24, according to some embodiments.
[0060] [Figure 26] FIG. 26 is a simplified schematic diagram illustrating the boundary line obtained by intersecting the two wall planes in FIG. 25 according to some embodiments.
[0061] [Figure 27] FIG. 27 is a simplified schematic diagram illustrating corner points inferred by intersecting the boundary lines in FIG. 26 with the floor and ceiling planes in FIG. 25, respectively, according to some embodiments.
[0062] [Figure 28] FIG. 28 is a schematic diagram illustrating a 3D reconstruction of the environment in FIG. 24 based, at least in part, on salient points, according to some embodiments. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0063] Described herein are methods and apparatus for creating and using a three-dimensional (3D) world reconstruction of an environment, such as an indoor environment, in an X-Reality (XR or cross-reality) system. Traditionally, a 3D representation of an environment is constructed by scanning the entire environment, including, for example, walls, floors, and ceilings, with an XR system held and / or worn by a user. The XR system generates a dense mesh to represent the environment. The inventors recognize and understand that the dense mesh may include unnecessary detail for the particular task being performed by the XR system. For example, the present system builds a dense mesh model using a large number of triangles to represent slight imperfections on a wall and to represent any decoration on the wall, but the model may be used by an application to present a virtual object covering the surface of the wall, or to identify the location of the wall, or to calculate the area of the wall (tasks that may not be affected by slight imperfections on the wall or that may not be accomplished if the area of the wall cannot be accurately calculated due to decorations covering the surface of the wall). Examples of such applications may include a home construction application, where data representing the structure of a room may be sufficient, and games such as "Dr. Grordbort's Invaders," which require data representing wall area and may give erroneous error messages of insufficient wall space due to decorations covering the wall surfaces, allowing portholes to be opened for evil robots.
[0064] The inventors have recognized and appreciated techniques for quickly and accurately representing a room or other portion of an environment as a set of corner points. The corner points may be derived by identifying surface planes that represent surfaces of the environment, such as any walls, floors, and / or ceilings. The surface planes may be calculated from information collected by sensors on a wearable device that may be used to scan a portion of the environment. The sensors may provide depth and / or image information. The XR system may obtain surface parcels from the depth and / or image information. Each surface parcel may indicate the orientation of the plane that it represents, for example, by a surface normal. The XR system may then identify a surface plane of the environment from a group of one or more surface parcels. In some embodiments, the surface planes may be selected ad-hoc by a user operating the XR system. In some embodiments, the XR system may automatically identify the surface planes.
[0065] A 3D representation of the environment can be quickly and accurately reconstructed using the corner points of the environment. A simple mesh representation of the environment, for example, generated from the corner points, can be used instead of or in addition to a mesh calculated in a conventional manner. In some embodiments, for multi-user experiences, the corner points can be transmitted between multiple users in an XR experience involving the environment. The corner points of the environment can be transmitted significantly faster than a dense mesh of the environment. Furthermore, constructing a 3D representation of the environment based on the corner points of the environment consumes less computing power, storage space, and network bandwidth compared to scanning a dense mesh of the entire environment.
[0066] Techniques as described herein may be used with or apart from many types of devices, including wearable or portable devices with limited computational resources, providing cross-reality scenes, and for many types of scenes. In some embodiments, the techniques may be implemented by a service forming part of an XR system. Applications performing tasks for which simple information to reconstruct the environment is sufficient may interact with the service, obtain a set of corner points, with or without associated metadata about the points and / or the surfaces they bound, and render information about the environment. Applications may, for example, render virtual objects against those surfaces. For example, an application may render a virtual photo or other object hung on a wall. As another example, an application may render a virtual color overlay on a wall, varying its perceived color, or display tags on surfaces of the environment, such as tags indicating the area of the surface, the amount of paint required to cover the surface, or other information that may be calculated about the environment.
[0067] AR System Overview
[0068] Figures 1-2 illustrate such a scene. For illustrative purposes, an AR system is used as an example of an XR system. Figures 3-8 illustrate an example AR system including one or more processors, memory, sensors, and a user interface that may operate in accordance with the techniques described herein.
[0069] With reference to Figure 1, an outdoor AR scene 4 is depicted in which a user of the AR technology sees a physical world park-like setting 6 featuring people, trees, buildings in the background, and a concrete platform 8. In addition to these items, the user of the AR technology also perceives that they "see" a robot figure 10 standing on the physical world concrete platform 8, and a flying cartoon-like avatar character 2 that appears to be an anthropomorphic bumblebee, although these elements (e.g., the avatar character 2 and the robot figure 10) do not exist in the physical world. Due to the extreme complexity of the human visual perception and nervous system, it is difficult to produce AR technology that facilitates a comfortable, natural-feeling, and rich presentation of virtual image elements among other virtual or physical world image elements.
[0070] Such AR scenes can be achieved using a system that includes a world reconstruction component that can build and update a representation of the physical world surfaces around the user. This representation can be used for occluding rendering, placing virtual objects into physics-based interaction states, and for virtual character path planning and navigation, or other operations where information about the physical world is used. Figure 2 depicts another example of an AR scene 200 showing an example world reconstruction use case including visual occlusion 202, physics-based interaction 204, and environmental inference 206, according to some embodiments.
[0071] The exemplary scene 200 is a living room with a wall, a bookcase on one side of the wall, a floor lamp in the corner of the room, a floor, a sofa, and a coffee table on the floor. In addition to these physical items, the user of the AR technology also perceives virtual objects such as an image on the wall behind the sofa, a bird that flew in through the door, a deer peeking out of the bookcase, and an ornament in the form of a windmill placed on the coffee table. For the image on the wall, the AR technology requires information not only about the surface of the wall, but also about the objects and surfaces in the room, such as the lamp shape, which occludes the image and renders the virtual object correctly. For the bird that flew in, the AR technology requires information about all objects and surfaces around the room to render the bird with realistic physics and avoid bouncing off the objects and surfaces or the bird in case of collision. For the deer, the AR technology requires information about the surfaces, such as the floor or the coffee table, and calculates where the deer should be placed. For the windmill, the system may identify it as a separate object from the table and may infer that it is movable, while the corner of the shelf or the corner of the wall may be inferred to be stationary. Such specificity can be used in inferences regarding the parts of the scene that are used or updated in each of the various operations.
[0072] The scene may be presented to the user via a system that includes multiple components, including a user interface that may stimulate one or more user senses, including sight, sound, and / or touch. In addition, the system may include one or more sensors that may measure parameters of the physical portion of the scene, including the user's position and / or movement within the physical portion of the scene. Furthermore, the system may include one or more computing devices with associated computer hardware, such as memory. These components may be integrated into a single device or distributed across multiple interconnected devices. In some embodiments, some or all of these components may be integrated into a wearable device.
[0073] 3 depicts an AR system 302 configured to provide an experience of AR content that interacts with a physical world 306, according to some embodiments. The AR system 302 may include a display 308. In the illustrated embodiment, the display 308 may be worn by a user as part of a headset such that the user may wear the display over their eyes like a pair of goggles or glasses. At least a portion of the display may be transparent such that the user may observe a see-through reality 310. The see-through reality 310 may correspond to a portion of the physical world 306 within a current perspective of the AR system 302, which may correspond to the user's perspective when the user is wearing a headset that incorporates both the display and sensors of the AR system and obtains information about the physical world.
[0074] The AR content may also be presented on the display 308, overlaid on the see-through reality 310. To provide accurate interaction between the AR content and the see-through reality 310 on the display 308, the AR system 302 may include a sensor 322 configured to capture information about the physical world 306.
[0075] The sensors 322 may include one or more depth sensors that output a depth map 312. Each depth map 312 may have a number of pixels, each of which may represent a distance to a surface in the physical world 306 in a particular direction relative to the depth sensor. Raw depth data may originate from the depth sensors to create a depth map. Such a depth map may be updated as fast as the depth sensors can form new images, which may be hundreds or thousands of times per second. However, the data may be noisy, incomplete, and have holes, shown as black pixels on the illustrated depth map.
[0076] The system may include other sensors, such as image sensors. The image sensors may obtain information that may be processed to represent the physical world in other ways. For example, images may be processed in the world reconstruction component 316 to create a mesh that represents connected portions of objects in the physical world. Metadata about such objects, including, for example, color and surface texture, may also be obtained using the sensors and stored as part of the world reconstruction.
[0077] The system may also obtain information about the user's head pose relative to the physical world. In some embodiments, the sensor 310 may include an inertial measurement unit, which may be used to calculate and / or determine the head pose 314. The head pose 314 for a depth map may indicate the current viewpoint of the sensor capturing the depth map, for example with six degrees of freedom (6DoF), but the head pose 314 may be used for other purposes, such as to relate image information to a particular part of the physical world or to relate the position of a display worn on the user's head to the physical world. In some embodiments, the head pose information may be derived in a manner other than from an IMU, such as from analyzing objects in an image.
[0078] The world reconstruction component 316 may receive the depth map 312 and head pose 314 and any other data from the sensors and integrate the data into a reconstruction 318, which may at least appear to be a single combined reconstruction. The reconstruction 318 may be more complete and less noisy than the sensor data. The world reconstruction component 316 may update the reconstruction 318 using spatial and temporal averages over time of the sensor data from multiple viewpoints.
[0079] Reconstruction 318 may include a representation of the physical world in one or more data formats, including, for example, voxels, meshes, planes, etc. Different formats may represent alternative representations of the same portion of the physical world or may represent different portions of the physical world. In the illustrated example, on the left side of reconstruction 318, a portion of the physical world is presented as a global surface, and on the right side of reconstruction 318, a portion of the physical world is presented as a mesh.
[0080] Reconstruction 318 may be used for AR functions, such as producing a surface representation of the physical world for occlusion handling or physics-based processing. This surface representation may change as the user moves or objects in the physical world change. Aspects of reconstruction 318 may be used by component 320, for example, to produce a changing global surface representation in world coordinates, which may be used by other components.
[0081] AR content may be generated, such as by an AR application 304, based on this information. The AR application 304 may be, for example, a game program that performs one or more functions based on information about the physical world, such as visual occlusion, physics-based interactions, and environmental inference. These functions may be performed by querying data in different formats from the reconstruction 318 produced by the world reconstruction component 316. In some embodiments, the component 320 may be configured to output updates as the representation in the region of interest of the physical world changes. The region of interest may be set to approximate a portion of the physical world in the vicinity of the user of the system, such as a portion in the user's field of view, or projected (predicted / determined) to occur in the user's field of view.
[0082] The AR application 304 may use this information to generate and update AR content, the virtual portions of which may be presented on the display 308 in combination with the see-through reality 310 to create a realistic user experience.
[0083] In some embodiments, the AR experience may be provided to the user through a wearable display system. FIG. 4 illustrates an example of a wearable display system 80 (hereinafter referred to as "system 80"). System 80 includes a head-mounted display device 62 (hereinafter referred to as "display device 62") and various mechanical and electronic modules and systems to support the functionality of display device 62. Display device 62 may be coupled to a frame 64, which is wearable by a display system user or viewer 60 (hereinafter referred to as "user 60") and configured to position display device 62 in front of the eyes of user 60. According to various embodiments, display device 62 may be a sequential display. Display device 62 may be monocular or binocular. In some embodiments, display device 62 may be an example of display 308 in FIG. 3.
[0084] In some embodiments, a speaker 66 is coupled to the frame 64 and positioned proximate the ear canal of the user 60. In some embodiments, another speaker, not shown, is positioned adjacent another ear canal of the user 60 to provide stereo / adjustable sound control. The display device 62 is operatively coupled, such as by wired leads or wireless connectivity 68, to a local data processing module 70, which may be mounted in a variety of configurations, such as fixedly attached to the frame 64, fixedly attached to a helmet or hat worn by the user 60, built into headphones, or otherwise removably attached to the user 60 (e.g., in a backpack configuration, in a belt-coupled configuration).
[0085] The local data processing module 70 may include a processor and digital memory, such as non-volatile memory (e.g., flash memory), both of which may be utilized to aid in processing, caching, and storing data. The data includes a) data captured from sensors (e.g., which may be operatively coupled to the frame 64 or otherwise attached to the user 60), such as image capture devices (such as cameras), microphones, inertial measurement units, accelerometers, compasses, GPS units, wireless devices, and / or gyroscopes, and / or b) data obtained and / or processed using the remote processing module 72 and / or remote data repository 74, possibly for passing to the display device 62 after processing or readout. The local data processing module 70 may be operatively coupled to the remote processing module 72 and the remote data repository 74 by communication links 76, 78, via wired or wireless communication links, etc., respectively, such that these remote modules 72, 74 are operatively coupled to each other and available as resources to the local processing and data module 70. 3 may be implemented, at least in part, within the local data processing module 70. For example, the local data processing module 70 may be configured to execute computer-executable instructions to generate a physical world representation based, at least in part, on at least a portion of the data.
[0086] In some embodiments, the local data processing module 70 may include one or more processors (e.g., a graphics processing unit (GPU)) configured to analyze and process the data and / or image information. In some embodiments, the local data processing module 70 may include a single processor (e.g., a single-core or multi-core ARM processor), which would limit the computational budget of the module 70 but allow for smaller devices. In some embodiments, the world reconstruction component 316 may generate the physical world representation in real time over a non-predetermined space using a computational budget of less than a single ARM core, such that the remaining computational budget of the single ARM core may be accessed for other uses, such as, for example, extracting meshes.
[0087] In some embodiments, the remote data repository 74 may include a digital data storage facility, which may be available through the Internet or other networking configurations in a "cloud" resource configuration. In some embodiments, all data is stored and all calculations are performed in the local data processing module 70, allowing for fully autonomous use from remote modules. World reconstructions may, for example, be stored in whole or in part within this repository 74.
[0088] In some embodiments, the local data processing module 70 is operably coupled to a battery 82. In some embodiments, the battery 82 is a removable power source, such as a commercially available battery. In other embodiments, the battery 82 is a lithium ion battery. In some embodiments, the battery 82 includes both an internal lithium ion battery that is rechargeable by the user 60 during periods of non-operation of the system 80, and a removable battery, so that the user 60 may operate the system 80 for longer periods of time without having to plug in a power source and charge the lithium ion battery, or without having to shut off the system 80 and replace the battery.
[0089] 5A illustrates a user 30 wearing an AR display system that renders AR content as the user 30 moves through a physical world environment 32 (hereafter referred to as "environment 32"). The user 30 positions the AR display system at a location 34, and the AR display system records ambient information of the passable world (e.g., digital representations of real objects in the physical world that may be stored and updated with changes to the real objects in the physical world) for the location 34, such as pose relationships to mapped features or directional audio input. The location 34 is aggregated to a data input 36 and processed by at least a passable world module 38, which may be implemented by, for example, processing on the remote processing module 72 of FIG. 4. In some embodiments, the passable world module 38 may include a 3D reconstruction component 316.
[0090] The passable world module 38 determines where and how the AR content 40 may be placed in the physical world as determined from the data input 36. The AR content is "placed" in the physical world by presenting, via the user interface, both a representation of the physical world and the AR content, the AR content is rendered as if it were interacting with objects in the physical world, and the objects in the physical world are presented as if the AR content were obscuring the user's view of those objects, when appropriate. In some embodiments, the AR content may be placed by appropriately selecting a portion of a fixed element 42 (e.g., a table) from the reconstruction (e.g., reconstruction 318) and determining the shape and position of the AR content 40. As an example, the fixed element may be a table, and the virtual content may be positioned to appear as if it were on the table. In some embodiments, the AR content may be placed within a structure in the field of view 44, which may be the current field of view or an estimated future field of view. In some embodiments, the AR content may be placed relative to a mapped mesh model 46 of the physical world.
[0091] As depicted, the fixed elements 42 serve as a substitute for any fixed elements in the physical world, which may be stored in the passable world module 38 such that the user 30 may perceive content on the fixed elements 42 without the system having to map to the fixed elements 42 each time it is visible to the user 30. The fixed elements 42 may thus be mapped mesh models from a previous modeling session or determined from a separate user, but stored on the passable world module 38 for future reference by multiple users. Thus, the passable world module 38 may allow the device of the user 30 to recognize the environment 32 from the previously mapped environment and display AR content without first mapping the environment 32, saving computational processes and cycles and avoiding latency of any rendered AR content.
[0092] A mapped mesh model 46 of the physical world may be created by the AR display system, and appropriate surfaces and metrics for interacting with and displaying the AR content 40 can be mapped and stored in the passable world module 38 for future retrieval by the user 30 or other users without the need for remapping or modeling. In some embodiments, the data inputs 36 are inputs such as geographic location, user identification, and current activity that indicate to the passable world module 38 the fixed elements 42 of one or more available fixed elements, the AR content 40 last placed on the fixed elements 42, and whether that same content should be displayed (such AR content is "persistent" content regardless of whether the user is viewing a particular passable world model).
[0093] Even in embodiments where objects are considered fixed, the passable world module 38 may be updated from time to time to account for possible changes in the physical world. Models of fixed objects may be updated at a very low frequency. Other objects in the physical world may be moving or otherwise not considered fixed. To render the AR scene with a sense of realism, the AR system may update the positions of these non-fixed objects at a much higher frequency than the frequency used to update fixed objects. To enable accurate tracking of all of the objects in the physical world, the AR system may draw information from multiple sensors, including one or more image sensors.
[0094] FIG. 5B is a schematic diagram of the viewing optics assembly 48 and associated components. In some embodiments, two eye tracking cameras 50, directed at the user's eye 49, detect metrics of the user's eye 49, such as eye shape, eyelid occlusion, pupil direction, and phosphenes on the user's eye 49. In some embodiments, one of the sensors may be a depth sensor 51, such as a time-of-flight sensor, that emits signals into the world and detects reflections of those signals from nearby objects to determine the distance to a given object. The depth sensor may, for example, quickly determine whether objects are entering the user's field of view, either as a result of the objects' motion or a change in the user's posture. However, information about the location of objects in the user's field of view may alternatively or additionally be collected using other sensors. Depth information may be obtained, for example, from a stereoscopic image sensor or a plenoptic sensor.
[0095] In some embodiments, the world camera 52 records a view beyond the peripheral vision, maps the environment 32, and detects inputs that may affect the AR content. In some embodiments, the world camera 52 and / or the camera 53 may be grayscale and / or color image sensors that may output grayscale and / or color image frames at fixed time intervals. The camera 53 may also capture a physical world image within the user's field of view at a specific time. The pixels of a frame-based image sensor may be repeatedly sampled even if their values are invariant. The world camera 52, the camera 53, and the depth sensor 51 each have a separate field of view 54, 55, and 56, respectively, and collect and record data from a physical world scene, such as the physical world environment 32 depicted in FIG. 5A.
[0096] The inertial measurement unit 57 may determine the movement and orientation of the viewing optics assembly 48. In some embodiments, each component is operably coupled to at least one other component. For example, the depth sensor 51 is operably coupled to the eye tracking camera 50 as a check of accommodation measured against the actual distance the user's eyes 49 are looking at.
[0097] It should be understood that the viewing optics assembly 48 may include some of the components illustrated in FIG. 5B, or may include components instead of or in addition to the components illustrated. In some embodiments, for example, the viewing optics assembly 48 may include two world cameras 52 instead of four. Alternatively, or in addition, the cameras 52 and 53 need not capture visible light images of their full field of view. The viewing optics assembly 48 may include other types of components. In some embodiments, the viewing optics assembly 48 may include one or more dynamic visual sensors (DVS), whose pixels may respond asynchronously to relative changes in light intensity above a threshold.
[0098] In some embodiments, the viewing optics assembly 48 may not include a depth sensor 51 based on time-of-flight information. In some embodiments, for example, the viewing optics assembly 48 may include one or more plenoptic cameras, the pixels of which may capture the light intensity and angle of incident light, from which depth information can be determined. For example, the plenoptic camera may include an image sensor overlaid with a transmissive diffractive mask (TDM). Alternatively, or in addition, the plenoptic camera may include an image sensor containing angle-sensing pixels and / or phase-detection autofocus pixels (PDAF) and / or a microlens array (MLA). Such sensors may serve as a source of depth information instead of, or in addition to, the depth sensor 51.
[0099] It should also be understood that the configuration of components in FIG. 5B is illustrated as an example. Viewing optics assembly 48 may include components with any suitable configuration, which may be configured to provide the user with the maximum field of view practical for a particular set of components. For example, if viewing optics assembly 48 has one world camera 52, the world camera may be located in a central region of the viewing optics assembly instead of on the side.
[0100] Information from sensors in the viewing optics assembly 48 may be coupled to one or more of the processors in the system. The processors may generate data that may be rendered to cause the user to perceive virtual content interacting with objects in the physical world. The rendering may be implemented in any suitable manner, including generating image data that depicts both physical and virtual objects. In other embodiments, the physical and virtual content may be depicted in a scene by modulating the opacity of a display device through which the user sees the physical world. The opacity may be controlled to create the appearance of virtual objects and also block objects in the physical world that are occluded by the virtual objects from being seen by the user. In some embodiments, the image data may include only the virtual content, which may be modified (e.g., clipping the content to account for occlusion) so that when viewed through the user interface, the virtual content is perceived by the user as interacting realistically with the physical world. Regardless of how the content is presented to the user, a model of the physical world is required so that properties of the virtual objects that may be affected by the physical objects, including the shape, position, motion, and visibility of the virtual objects, may be correctly calculated. In some embodiments, the model may include a reconstruction of the physical world, e.g., reconstruction 318.
[0101] The model may be created from data collected from sensors on the user's wearable device, although in some embodiments the model may be created from data collected by multiple users, which may be aggregated in a computing device remote from all users (and may be "in the cloud").
[0102] The model may be created, at least in part, by a world reconstruction system, such as the world reconstruction component 316 of FIG. 3, which is depicted in further detail in FIG. 6. The world reconstruction component 316 may include a perception module 160, which may generate, update, and store representations for portions of the physical world. In some embodiments, the perception module 160 may represent a portion of the physical world within the reconstruction range of a sensor as a plurality of voxels. Each voxel may correspond to a 3D cube of a given volume within the physical world and may include surface information indicating whether a surface exists within the volume represented by the voxel. A voxel may be assigned a value indicating whether its corresponding volume has been determined to include a surface of a physical object, has been determined to be empty, or has not yet been measured with a sensor and therefore its value is unknown. It should be understood that the value indicates that voxels determined to be empty or unknown need not be explicitly stored, and that the value of a voxel may be stored in computer memory in any suitable manner, including not storing information regarding voxels determined to be empty or unknown.
[0103] 7A depicts an example of a 3D space 100 that is discretized into voxels 102. In some embodiments, the perception module 160 may set the volume of voxels to determine objects of interest, capture features of the objects of interest, and avoid redundant information. For example, the perception module 160 may be configured to identify larger objects and surfaces, such as walls, ceilings, floors, and large furniture. Thus, the volume of voxels may be relatively large in size, e.g., 4 cm 3 may be set to a cube.
[0104] The reconstruction of the physical world, including the voxels, may be referred to as a solid model. Information for creating the solid model may be created over time as the sensor moves about the physical world. Such motion may occur as a user of a wearable device, including the sensor, moves around. Figures 8A-F depict an example of reconstructing the physical world into a solid model. In the illustrated example, the physical world includes a portion of a surface 180, which is shown in Figure 8A. In Figure 8A, a sensor 182 at a first location may have a field of view 184 in which the portion of the surface 180 is visible.
[0105] The sensor 182 may be of any suitable type, such as a depth sensor. However, the depth data may be derived from an image sensor or in other ways. The perception module 160 may receive the data from the sensor 182 and then set values of a number of voxels 186, as shown in FIG. 8B, to represent a portion 180 of a surface visible by the sensor 182 within a field of view 184.
[0106] In Figure 8C, the sensor 182 may move to a second location and have a field of view 188. As shown in Figure 8D, an additional group of voxels becomes visible, and the values of these voxels may be set to indicate the location of the portion of the surface that has entered the field of view 188 of the sensor 182. The values of these voxels may be added to a solid model for the surface.
[0107] In FIG. 8E, the sensor 182 may further move to a third location and have a field of view 190. In the illustrated embodiment, an additional portion of the surface becomes visible within the field of view 190. As shown in FIG. 8F, an additional group of voxels may become visible and the values of these voxels may be set to indicate the location of the portion of the surface that entered the field of view 190 of the sensor 182. The values of these voxels may be added to a solid model for the surface. As shown in FIG. 6, this information may be stored as solid information 162a as part of the persisted world. Information about the surface, such as color or texture, may also be stored. Such information may be stored, for example, as solid metadata 162b.
[0108] In addition to generating information for the persisted world representation, perception module 160 may identify and output indications of changes in the area surrounding a user of the AR system. Such indications of changes may trigger updates to volumetric data stored as part of the persisted world, or trigger other functionality, such as triggering generate AR content, update AR content, component 304.
[0109] In some embodiments, the perception module 160 may identify changes based on a signed distance function (SDF) model. The perception module 160 may be configured to receive sensor data, such as, for example, a depth map 160a and a head pose 160b, and then fuse the sensor data into an SDF model 160c. The depth map 160a may provide SDF information directly, or images may be processed to become SDF information. The SDF information represents distances from sensors used to capture that information. Because those sensors may be part of the wearable unit, the SDF information may represent the physical world from the line of sight of the wearable unit, and therefore the user. The head pose 160b may enable the SDF information to be related to voxels in the physical world.
[0110] Referring back to FIG. 6, in some embodiments, perception module 160 may generate, update, and store representations for portions of the physical world within a perception range. The perception range may be determined, at least in part, based on the reconstruction range of the sensor, which may be determined, at least in part, based on the limits of the observation range of the sensor. As a specific example, an active depth sensor operating using active IR pulses may operate reliably over a range of distances, creating an observation range for the sensor, which may be a few centimeters or tens of centimeters to several meters.
[0111] FIG. 7B depicts a reconstruction range for a sensor 104 having a viewpoint 106. A reconstruction of a 3D space within the viewpoint 106 may be constructed based on data captured by the sensor 104. In the illustrated example, the sensor 104 has an observation range of 40 cm to 5 m. In some embodiments, the reconstruction range of the sensor may be determined to be smaller than the observation range of the sensor, since the sensor output closer to its observation limit may be noisier, incomplete, and inaccurate. For example, in the illustrated example of 40 cm to 5 m, the corresponding reconstruction range may be set to 1 to 3 m, and data collected with the sensor showing surfaces outside this range may not be used.
[0112] In some embodiments, the perception range may be larger than the reconstruction range of the sensor. If the component 164 that uses data about the physical world requests data about an area in the perception range outside the portion of the physical world in the current reconstruction range, that information may be provided from the persisted world 162. Thus, information about the physical world may be easily accessible by query. In some embodiments, an API may be provided to respond to such queries and provide information about the user's current perception range. Such techniques may reduce the time required to access an existing reconstruction and provide an improved user experience.
[0113] In some embodiments, the perception range may be a 3D space corresponding to a bounding box centered around the user location. As the user moves, the portion of the physical world within the perception range that may be queriable by component 164 may also move with the user. FIG. 7C depicts a bounding box 110 centered around location 112. It should be understood that the size of the bounding box 110 may be set to enclose the observation range of the sensor with a reasonable extension since a user may not move at an unreasonable speed. In the illustrated example, the sensor worn by the user has an observation limit of 5 m. The bounding box 110 is centered around a ... 3 It is set as a cube of .
[0114] 6, the world reconstruction component 316 may include additional modules that may interact with the perception module 160. In some embodiments, the persisted world module 162 may receive a representation for the physical world based on data obtained by the perception module 160. The persisted world module 162 may also include various formats of the representation of the physical world. For example, volumetric metadata 162b, such as voxels, may be stored along with the meshes 162c and planes 162d. In some embodiments, other information, such as depth maps, may also be saved.
[0115] In some embodiments, the perception module 160 may include modules that generate representations for the physical world in various formats, including, for example, meshes 160d, planes, and semantics 160e. These modules may generate the representations based on data within the perception range of one or more sensors at the time the representations are generated and data captured at previous times and information within the persisted world 162. In some embodiments, these components may operate on depth information captured using a depth sensor. However, the AR system may also include a vision sensor and generate such representations by analyzing monocular or binocular visual information.
[0116] In some embodiments, these modules may operate on regions of the physical world. They may be triggered to update a subregion of the physical world when perception module 160 detects a change in the physical world in that subregion. Such a change may be detected by other criteria, such as, for example, detecting a new surface in SDF model 160c, or by a change in value of a sufficient number of voxels representing the subregion.
[0117] The world reconstruction components 316 may include components 164 that may receive a representation of the physical world from the perception module 160. Information about the physical world may be pulled by these components, for example, according to usage requests from applications. In some embodiments, information may be pushed to the usage components, such as via indications of changes in pre-identified areas or changes in the physical world representation within a perception range. The components 164 may include, for example, game programs and other components that implement processing for visual occlusion, physics-based interactions, and environmental inference.
[0118] In response to a query from component 164, perception module 160 may transmit a representation for the physical world in one or more formats. For example, when component 164 indicates that the use is for visual occlusion or physics-based interaction, perception module 160 may transmit a representation of a surface. When component 164 indicates that the use is for environmental inference, perception module 160 may transmit meshes, planes, and semantics of the physical world.
[0119] In some embodiments, perception module 160 may include a component that formats information and provides it to component 164. An example of such a component may be ray casting component 160f. A usage component (e.g., component 164) may, for example, query information about the physical world from a particular viewpoint. Ray casting component 160f may select from one or more representations of the physical world data within a field of view from that viewpoint.
[0120] As should be understood from the foregoing description, the perception module 160 or another component of the AR system may process data and create a 3D representation of a portion of the physical world. The data to be processed may be reduced, at least in part, by thinning portions of the 3D reconstruction volume based on the camera frustum and / or depth image, extracting and persisting planar data, capturing, persisting, and updating the 3D reconstruction data on a block-by-block basis to enable local updates while maintaining neighborhood consistency, providing occlusion data to an application, generating such scenes in which the occlusion data is derived from a combination of one or more depth data sources, and / or performing multi-stage mesh simplification.
[0121] The world reconstruction system may integrate sensor data from multiple viewpoints of the physical world over time. The pose (e.g., position and orientation) of the sensor may be tracked as the device containing the sensor is moved. As the frame pose of the sensor and how it relates to other poses are understood, each of these multiple viewpoints of the physical world may be fused together into a single combined reconstruction. The reconstruction may be more complete and less noisy than the original sensor data by using spatial and temporal averaging (i.e., averaging data from multiple viewpoints over time).
[0122] The reconstruction may contain data of different levels of sophistication, including, for example, raw data such as live depth data, fused volumetric data such as voxels, and calculated data such as meshes.
[0123] In some embodiments, the AR and MR systems represent 3D scenes with a regular voxel grid, where each voxel may contain a signed distance field (SDF) value. The SDF value describes whether the voxel is inside or outside a surface in the scene to be reconstructed, and the distance from the voxel to the surface. Computing 3D reconstruction data representing the desired volume of the scene requires large amounts of memory and processing power. These requirements increase for scenes representing larger spaces, since the number of variables required for 3D reconstruction grows cube-wise with the number of depth images to be processed.
[0124] Described herein are efficient methods of reducing processing. According to some embodiments, a scene may be represented by one or more bricks. Each brick may include multiple voxels. The bricks processed to generate a 3D reconstruction of the scene may be selected by thinning out the set of bricks representing the scene based on a frustum derived from the field of view (FOV) of an image sensor and / or a depth image (or "depth map") of the scene created using a depth sensor.
[0125] The depth image may have one or more pixels, each representing a distance to a surface in the scene. These distances may be related to a position relative to the image sensor so that data output from the image sensor may be selectively processed. Image data may be processed for those bricks that represent a portion of the 3D scene that contains a surface that would be visible from the viewpoint (or "viewpoint") of the image sensor. Processing of some or all of the remaining bricks may be omitted. Using such an approach, selected bricks may be those that are more likely to contain new information, which may be achieved by thinning out bricks around which the output of the image sensor is less likely to provide useful information. Data output from the image sensor is less likely to provide useful information for bricks that are either closer to or farther from the image sensor than the surface indicated by the depth map, because those bricks are either in void or behind a surface and therefore not depicted in the image from the image sensor.
[0126] 9 shows a cross-sectional view of a scene 400 along a plane parallel to the y- and z-coordinates. The XR system may represent the scene 400 by a grid of voxels 504. A conventional XR system may update each voxel of the grid of voxels based on every new depth image captured by a sensor 406, which may be an image sensor or a depth sensor, so that a 3D reconstruction generated from the grid of voxels may reflect changes in the scene. Updating in this manner may consume significant computational resources and may also introduce artifacts into the output of the XR system, for example due to latency caused by heavy computation.
[0127] Described herein are techniques for providing accurate 3D reconstruction data with low usage of computational resources, for example, by thinning out a portion of a grid of voxels 504 based, at least in part, on the camera frustum 404 of an image sensor 406 and / or a depth image captured by the image sensor.
[0128] In the illustrated example, the image sensor 406 captures a depth image (not shown) that includes the surface 402 of the scene 300. The depth image may be stored in computer memory in any convenient manner that captures the distance between a reference point and the surface in the scene 400. In some embodiments, the depth image may be represented as values in a plane parallel to the x- and y-axes, as illustrated in FIG. 9, where the reference point is the origin of the coordinate system. Locations in the XY plane may correspond to directions relative to the reference point, and values at those pixel locations may indicate the distance from the reference point to the nearest surface in the direction indicated by the coordinates in the plane. Such a depth image may include a grid of pixels (not shown) in a plane parallel to the x- and y-axes. Each pixel may indicate the distance in a particular direction from the image sensor 406 to the surface 402. In some embodiments, the depth sensor may be unable to measure the distance to the surface in a particular direction. Such a condition may occur, for example, when the surface is out of range of the image sensor 406. In some embodiments, the depth sensor may be an active depth sensor that measures distance based on reflected energy, but a surface may not reflect enough energy for an accurate measurement, and thus in some embodiments the depth image may have "holes" - there are pixels for which no value is assigned.
[0129] In some embodiments, the reference point of the depth image may vary. Such a configuration allows the depth image to represent surfaces throughout the entire 3D scene and may not be limited to portions having a predetermined and limited range of angles relative to a particular reference point. In such embodiments, the depth image may indicate the distance to the surface as the image sensor 406 moves through six degrees of freedom (6DOF). In these embodiments, the depth image may include a set of pixels for each of a number of reference points. In these embodiments, the portion of the depth image may be selected based on a "camera pose," which represents the direction and / or orientation in which the image sensor 406 is facing at the time the image data is captured.
[0130] The image sensor 406 may have a field of view (FOV), which may be represented by a camera frustum 404. In some embodiments, the infinite camera frustum depicted may be reduced to a finite 3D trapezoidal prism 408 by assuming a maximum depth 410 that the image sensor 406 can provide and / or a minimum depth 412 that the image sensor 406 can provide. The 3D trapezoidal prism 408 may be a convex polyhedron bounded by six planes.
[0131] In some embodiments, one or more voxels 504 may be grouped into bricks 502. Figure 10A illustrates a portion 500 of a scene 400 that includes eight bricks 502. Figure 10B illustrates a portion 500 of a scene 400 that includes eight bricks 502. 3 Illustrated is an example brick 502 that includes voxels 504. Referring back to Figure 9, the scene 400 may include one or more bricks, 16 of which are illustrated in the diagram depicted in Figure 4. Each brick may be identifiable by a brick identification, for example,
[0000] -
[0015] .
[0132] Geometric Shape Extraction System
[0133] In some embodiments, the geometry extraction system may extract the geometry while scanning the scene with cameras and / or sensors, which allows for fast efficient extraction and can adapt to dynamic environmental changes. In some embodiments, the geometry extraction system may persist the extracted geometry in local and / or remote memory. The persisted geometry may be accompanied by a unique identification, for example, so that different queries at different timestamps and / or from different applications may share the persisted geometry. In some embodiments, the geometry extraction system may support different representations of the geometry according to the individual queries. A plane is used as an example geometry in the following description of Figures 11-19. It should be understood that instead of or in addition to a plane, the geometry extraction system may detect other geometries, including semantics such as, for example, cylinders, cubes, lines, corners, or glass surfaces or holes, and use them in subsequent processing. In some embodiments, the principles described herein with respect to geometry extraction may be applicable to object extraction and the like.
[0134] 11 illustrates a plane extraction system 1300 according to some embodiments. The plane extraction system 1300 may include a depth fusion 1304, which may receive multiple depth maps 1302. The multiple depth maps 1302 may be created by one or more users wearing depth sensors and / or downloaded from local / remote memory. The multiple depth maps 1302 may represent multiple viewpoints of the same surface. Differences may exist between the multiple depth maps, which may be resolved by the depth fusion 1304.
[0135] In some embodiments, depth fusion 1304 may generate SDF 1306. Mesh bricks 1308 may be extracted from SDF 1306, for example, by applying a marching cubes algorithm over the corresponding bricks (e.g., bricks
[0000] -
[0015] in FIG. 13). Plane extraction 1310 may detect planar surfaces in mesh bricks 1308 and extract planes based, at least in part, on mesh bricks 1308. Plane extraction 1310 may also extract surfels, for each brick, based, at least in part, on the corresponding mesh bricks. Surfels may include vertices in a mesh, but not edges that connect to neighboring vertices, so that storing surfels consumes less memory space than meshes. Plane data store 1312 may persist the extracted planes and surfels.
[0136] In some embodiments, an XR application or other component 164 of the XR system may request and obtain a plane from the plane data store 1312 by a plane query 1314, which may be sent by an application programming interface (API). For example, an application may send information about its location to the plane extraction system 1300 and ask about all planes in its vicinity (e.g., within a 5 meter radius). The plane extraction system 1300 may then search its plane data store 1312 and send the selected plane to the application. The plane query 1314 may include information such as where the application needs the plane, the type of plane the application needs, and / or how the plane should look (e.g., whether horizontal or vertical or angled, which may be determined by checking the primitive normals of the plane in the plane data store).
[0137] 12 shows a portion 1400 of a plane extraction system 1300 illustrating details regarding plane extraction 1310, according to some embodiments. Plane extraction 1310 may include dividing each of the mesh bricks 1308 into sub-bricks 1402. Plane detection 1404 may be performed for each sub-brick 1402. For example, plane detection 1404 may compare primitive normals of each mesh triangle within a sub-brick, merge those mesh triangles with primitive normal difference less than a predetermined threshold into one mesh triangle, and identify mesh triangles with area greater than a predetermined area value as planes.
[0138] 13 is a schematic diagram illustrating a scene 1500, represented by bricks 0000-0015, including voxels, and example plane data, including a brick plane 1502, a global plane 1504, and surfels 1506 in the scene, according to some embodiments. FIG. 13 illustrates a brick 0011, which is divided into four sub-bricks 1508. It should be understood that a mesh brick may be divided into any suitable number of sub-bricks. The granularity of the planes detected by plane detection 1404 may be determined by the size of the sub-bricks, while the size of the bricks may be determined by the granularity of the local / remote memory that stores the volumetric 3D reconstruction data.
[0139] 12, plane detection 1404 may determine a brick plane (e.g., brick plane 1502) for each mesh brick based, at least in part, on the planes detected for each sub-brick within the mesh brick. Plane detection 1404 may also determine a global plane (e.g., global plane 1504) that extends across more than one brick.
[0140] In some embodiments, plane extraction 1310 may include plane updating 1406, which may update existing brick planes and / or global planes stored in plane data store 1312 based at least in part on planes detected by plane detection 1404. Plane updating 1406 may include adding additional brick planes, removing some of the existing brick planes, and / or replacing some of the existing brick planes with brick planes detected by plane detection 1404 and corresponding to the same brick, such that real-time changes in the scene are persisted in plane data store 1312. Plane updating 1406 may also include aggregating brick planes detected by plane detection 1404 into the existing global plane, for example, when a brick plane is detected adjacent to an existing global plane.
[0141] In some embodiments, plane extraction 1310 may further include plane merging and splitting 1408. Plane merging may merge multiple global planes into one larger global plane, for example, when a brick plane is added to connect two global planes. Plane splitting may split one global plane into multiple global planes, for example, when a brick plane in the middle of a global plane is removed.
[0142] FIG. 14 illustrates a data structure in the plane data store 1312, according to some embodiments. A global plane 1614, indexed by plane ID 1612, may be at the highest level of the data structure. While one brick plane may be persisted per brick, each global plane 1614 may contain multiple brick planes and surfels of bricks adjacent to the corresponding global plane, so that the global plane may be rendered correctly when an edge of the global plane does not qualify as a brick plane for the corresponding brick. In some embodiments, surfels of bricks adjacent to the global plane are persisted instead of surfels of all bricks in the scene, since these will be sufficient to render the global plane correctly. For example, as illustrated in FIG. 13, a global plane 1504 extends across bricks
[0008] -
[0010] and
[0006] . Brick
[0006] has a brick plane 1502 that is not part of the global plane 1504. Using the data structures in the plane data store 1312, when a plane query requests the global plane 1504, surfels for bricks
[0006] and
[0012] are checked to determine whether the global plane 1504 extends into bricks
[0006] and
[0012] . In the illustrated example, surfel 1506 indicates that the global plane 1504 extends into brick
[0006] .
[0143] 14 , the global plane 1614 may be bidirectionally associated with the corresponding brick plane 1610. The bricks may be identifiable by a brick ID 1602. The bricks may be divided into planar bricks 1604, which contain at least one plane, and non-planar bricks 1606, which do not contain a plane. Surfels for both planar and non-planar bricks may be persisted depending on whether the brick is adjacent to the global plane, not whether the brick contains a plane. It should be understood that the planes may be persisted continuously in the plane data store 1312 while the XR system observes the scene, regardless of whether a plane query 1314 is present.
[0144] 15 illustrates a plane geometry extraction 1702 that may extract planes for use by an application when the application sends a plane query 1314 to the plane data store 1312, according to some embodiments. The plane geometry extraction 1702 may be implemented as an API. The plane query 1314 may indicate a requested planar geometry representation, for example, an outer rectangular plane, an inner rectangular plane, or a polygonal plane. In accordance with the plane query 1314, the plane search 1704 may search and retrieve plane data in the plane data store 1312.
[0145] In some embodiments, rasterization from the planar cover points 1706 may generate planar cover points. An example is illustrated in FIG. 16A. There are four bricks, 0000-0003, each with a brick plane 1802. The planar cover points 1806 (or "rasterized points") are generated by projecting the boundary points of the brick planes onto a global plane 1804.
[0146] 15, rasterization from the planar cover points 1706 may also generate a rasterized planar mask from the planar cover points. According to the planar geometry representation requested by the plane query 1314, an inner rectangle planar representation, an outer rectangle planar representation, and a polygon planar representation may be extracted by inner rectangle extraction 1708, outer rectangle extraction 1710, and polygon extraction 1712, respectively. In some embodiments, the application may receive the requested planar geometry representation within milliseconds of sending the plane query.
[0147] An exemplary rasterized planar mask 1814 is illustrated in FIG. 16B. From the rasterized planar mask, various planar geometric shape representations can be generated. In the illustrated example, a polygon 1812 is generated by connecting some of the planar coverage points of the rasterized planar mask such that none of the planar coverage points in the mask are outside the polygon. An outer rectangle 1808 is generated such that the outer rectangle 1808 is the smallest rectangle that encloses the rasterized planar mask 1814. The inner rectangle 1810 is generated by determining groups of bricks that will be marked as "1" and aligned within lines parallel to the edges of the bricks (e.g., bricks
[0001] ,
[0005] ,
[0009] , and
[0013] as a group, bricks
[0013] -
[0015] as a group), forming a rasterization grid by assigning a "1" to bricks with two planar coverage points and a "0" to bricks without two planar coverage points, such that the inner rectangle is the smallest rectangle that encloses each individual group, and generating one inner rectangle for each determined group.
[0148] Figure 17 shows a mesh for a scene 1900, according to some embodiments. Figures 18A-C show a scene 1900 represented by an outer rectangular plane, an inner rectangular plane, and a polygonal plane, respectively, according to some embodiments.
[0149] FIG. 19 illustrates a less noisy 3D representation of a scene 1900, which is obtained by flattening the mesh shown in FIG. 17 based on extracted plane data, e.g., the planes illustrated in FIGS. 18A-C.
[0150] environmental reconstruction
[0151] In some embodiments, a portion of an environment, such as an indoor environment, may be represented by a set of corner points, with or without metadata about those points or the surfaces they bound. Techniques for simply representing a portion of an environment as described herein may be implemented by perception module 160 (FIG. 6) or any other suitable component. Such information describing that representation may be stored as part of the persisted world model 162 instead of, or in addition to, a dense mesh or other representation as described above. Alternatively, or in addition, those corner points may be converted into a format that mimics a representation computed using other techniques as described above. As a specific example, the representation of the environment as a set of corner points may be converted into a simple mesh and stored as mesh 162c. Alternatively, or in addition, each identified wall may be stored as a plane 162d.
[0152] When a component 164 requests information about a portion of the physical world for which such a representation is stored, that component 164 may obtain that representation using a call to perception module 160, or access persisted world model 162 in any other suitable manner. In some embodiments, that representation may be provided each time information about that portion of the physical world is requested. In some embodiments, a component 164 requesting information may specify that a simplified representation is preferred or required. An application may call persisted world model 162 with a parameter indicating, for example, that a simplified representation of the physical world is preferred or required.
[0153] Corner points may be determined from surface planes that represent surfaces such as walls, floors, and / or ceilings in the environment. The surface planes may be derived from data collected with sensors on a wearable or other components in the XR system. The data may represent surface plots, which may correspond to portions of walls or other surfaces detected from processing image, distance, or other sensor data, as described above.
[0154] In some embodiments, an environment, such as an indoor environment, may be reconstructed by identifying a surface plane of the environment based on a surface segment. In some embodiments, a surface segment may be represented by three or more points that bound a planar surface. A surface segment normal may be calculated for the surface segment. As a specific example, four points may be used to define a quadrilateral in space that fits within or encloses the surface segment. The surface segment normal may indicate the orientation of the surface segment. The surface segment normal may be associated with a value that indicates the area of the surface segment.
[0155] In some embodiments, the surface partition may be obtained from stored data, e.g., persisted world 162. Alternatively, or in addition, functionality provided by a software development kit (SDK) provided to the wearable device may process the sensor data and generate the surface partition. In some embodiments, the surface partition may be obtained by scanning a portion of the environment with the AR device, which may serve as an "initial scan." In some embodiments, the length of the initial scan may be predetermined, e.g., minutes or seconds, such that sufficient surface partitions are obtained to reconstruct the environment. In some embodiments, the length of the initial scan may be dynamic and terminated once sufficient surface partitions are obtained to reconstruct the environment.
[0156] In some embodiments, a surface segment may be derived from one or more brick planes. In some embodiments, the shape of a surface segment may be random, depending on the depth and / or image information captured by the AR device in a given time. In some embodiments, the shape of a surface segment may or may not be the same as another surface segment.
[0157] In some embodiments, the AR system may be configured to obtain a number of surface partitions sufficient to identify all surface planes of the environment. In some embodiments, the number of surface partitions may correspond to the number of surface planes of the environment. For example, for a room with a ceiling, a floor, and four walls, four surface partitions, each corresponding to the four walls, may be sufficient to reconstruct the room when the distance between the ceiling and the floor is known. In this exemplary scenario, each surface partition may be set as a surface plane by the AR system.
[0158] In some embodiments, the initial scan may last minutes or seconds. In some embodiments, the number of surface segments acquired may be greater than the number of planar surfaces of the environment. A surface plane filter may be configured to process the surface segments acquired for the surface plane of the environment, for example, by filtering out unnecessary surface segments and combining multiple surface segments into one. In some embodiments, the surface segments may be processed to form groups of surface segments that are likely to represent different portions of the same surface. A surface plane, which may be modeled as a surface of infinite extent, may be derived from each group and used to determine intersections of surfaces that bound the environment so that corner points may then be identified. In some embodiments, the surface plane may be represented by three or more points that bound the group of surface segments from which the surface plane is derived. A surface plane normal may be calculated from the points that represent the surface plane. The surface plane normal may indicate the orientation of the plane in which the surface plane extends.
[0159] In some embodiments, corner points of the environment may be inferred by treating a first and second adjacent surface plane of the environment as extending to infinity and identifying a boundary line where the planes intersect. The boundary line may then be intersected with a third surface plane and, in some embodiments, a fourth surface plane to identify the end points of the boundary line. The first and second surface planes may be selected as adjacent based on one or more criteria, such as whether the planes intersect without passing through other surface planes, whether the planes intersect at a distance from the user of the wearable device that corresponds to an estimated maximum size of the room, or the proximity of the centroids of the surface segments used to identify each of the surface planes. The first and second surface planes may be selected from those planes that have a generally vertical orientation such that they represent walls that bound a portion of the environment. A criterion, such as a normal that is within a threshold angle of 0 degrees, may be used to select the vertical plane. The third and fourth surface planes may be selected from planes that have a horizontal orientation, such as a normal that is within a threshold angle of 90 degrees. In some embodiments, the threshold angle may be different for horizontal and vertical planes. For example, the threshold angle may be greater with respect to a horizontal plane, e.g., to identify a plane representing a sloped ceiling. In some embodiments, the SDK provided to the wearable device may provide the surface planes according to, e.g., a user request, indicating a desired type of surface plane, including, e.g., a ceiling plane, a floor plane, and a wall plane.
[0160] Regardless of the manner in which surface planes are selected for processing, combinations of adjacent vertical planes may be processed to identify other boundaries, which may then be further intersected with one or more horizontal planes to identify corner points. The AR system may repeat the process until a complete set of corner points of the environment is inferred / determined. The complete set may be determined when the identified corner points define an enclosed space. If the information acquired during the initial scan is insufficient to form an occlusion, additional scans may be performed.
[0161] 20 illustrates an example method 2000 of operating an AR system to generate a 3D reconstruction of an environment, according to some embodiments. The methods described in connection with FIGS. 20-29 may be implemented within one or more processors of an XR system. Method 2000 may begin by extracting a surface partition of the environment (act 2002).
[0162] The steps of extracting surface partitions are illustrated in FIG. 24, which depicts an example environment 2500. In this example, the environment 2500 is a room 2502 in a museum. The room 2502 may be bounded by a ceiling 2504, a floor 2506, and a wall 2508. The wall 2508 may be used to display one or more artworks, such as a painting 2510 with a flat surface and a workpiece 2512 with a curved surface. It should be understood that the method 2000 is not limited to reconstructing rooms such as the room 2502, but may be applied to reconstruct any kind of environment, including, but not limited to, rooms with multiple ceilings, multiple floors, or vaulted ceilings.
[0163] Users 2516A-2516C in the environment 2500 may wear individual AR devices 2514A-2514C. The AR devices 2514A-2514C may have corresponding fields of view 2518A-2518C. Within the corresponding fields of view, the AR devices may acquire surface segments 2520 during an initial scan. In some embodiments, the AR devices may extract the surface segment from depth and / or image and / or other information captured by sensors in the AR devices. The AR devices may represent the surface segment with information that defines the location, orientation, and area encompassed by the surface segment. As an example, the surface segment may be represented by three or more points that bound an area that has a substantially similar depth relative to the user or that have otherwise been identified as a flat surface. In some embodiments, each point may be represented by its location in a coordinate system. In some embodiments, the coordinate system may be fixed, for example, using a reference in the environment as an origin, making it easier to share between users. In some embodiments, the coordinate system may be dynamic, for example using the user's location as the origin, which simplifies the data and reduces the calculations required to display the environment to the user.
[0164] For each facet segment, a facet segment normal 2522 may be calculated. In some embodiments, the facet segment normal may be in the format of a vector. The facet segment normal may indicate the orientation of an individual facet segment. The facet segment normal may also have a value that indicates the size of the area covered by the facet segment.
[0165] Referring back to FIG. 20, the method 2000 may include identifying one or more surface planes based, at least in part, on the acquired surface partitions (act 2004). In some embodiments, the surface planes may be identified ad-hoc by a user. In the example illustrated in FIG. 24, the extracted surface partitions within the FOV 2518B may be displayed on the AR device 2514B and visible to the user 2516B. The user may indicate to the AR device 2514B that the surface partition normal 2524 should be set as the dominant surface normal for the wall, for example, by pointing to the surface partition displayed on the AR device 2514B.
[0166] In some embodiments, the surface planes may be identified by a method, automatically or semi-automatically, without any user input, or with partial user input. Figure 21 depicts an example method 2100 for act 2004, according to some embodiments. Method 2100 may begin by separating the obtained surface segments into different groups (act 2102) based on one or more criteria.
[0167] In some embodiments, the surface partitions may be grouped using user input. In the example illustrated in FIG. 24, the user 2516A may indicate to the AR device 2514A that one of the four surface partitions displayed within the FOV 2518A should be set as a first group. The AR device may be configured to interpret this user input as an indication that the remaining surface partitions within the FOV 2518A should be set as a second group different from the first group, so that the user can point to one surface partition and then quickly move on to scanning a different space of the environment. In some circumstances, partial user input may accelerate the performance of the method 2100.
[0168] In the illustrated embodiment, at least one such criterion is based on individual facet normals. In some embodiments, facets having facet normals within a certain error range may be grouped together. In some embodiments, the error range may be pre-determined, e.g., below 30 degrees, below 20 degrees, or below 10 degrees. In other embodiments, the group boundaries may be dynamically determined, such as by using a clustering algorithm. As a further example, facets may be grouped based on the distance between the facets. The distance between two facets may be measured, for example, at the centroid of the first facet, parallel to the normal of that facet. The distance may be measured from the centroid to the intersection with the plane containing the second facet.
[0169] Alternatively or additionally, one or more criteria may be used to select or exclude surface segments from the group. For example, only surface segments above a threshold size may be processed. Alternatively or additionally, surface segments that are too large may be excluded, such that they are likely to be larger than the dimensions of the room. The sorting step may be based on other criteria, such as the orientation of the surface segments, so that only wall segments that are horizontal or vertical, or have an orientation that may otherwise represent a wall, floor, or ceiling, may be processed. Other characteristics, such as the color or texture of the wall segments, may also be used, alternatively or additionally. Similarly, distance from the user or other reference points may be used to assign surface segments to groups. Distance may be measured, for example, parallel to the normal of the surface segment, or using other criteria, such as grouping segments of the same surface together.
[0170] Regardless of how the facets are selected and grouped, the groups may then be processed such that a surface plane is derived from the facets in each group. In act 2104, for each group, it may be determined whether a dominant facets normal exists among the facets normals. In some embodiments, the dominant facets normal may be determined by comparing the size of the facets associated with the facets normal, which may be indicated by a value representing the area of the facets associated with the facets normal. If a facets normal is associated with a facets that is significantly larger than the other facets, the facets normal associated with the significantly larger facets may be selected as the dominant facets normal.
[0171] A statistical distribution of the sizes of the facets may be used to determine whether a dominant surface normal exists. For example, if the largest facet exceeds the average size of the other facets in the group by more than one standard deviation, it may be selected as the dominant surfacetip normal. Regardless of how the dominant surfacetip normal is determined, in act 2106, the dominant surfacetip normal may be set as the surface plane normal, which may then be used to define a surface plane that represents the surface.
[0172] If a dominant facet normal is not detected as a result of processing in act 2104, then in act 2108, a surface plane normal may be derived from the facet normals of the facets in the group. Figure 21 illustrates, for example, that a weighted average of the selected facet normals of the group may be set as the surface normal. The weighting step may be proportional to the size of the facet associated with the facet normal, such that the results may be influenced by surface areas for which the same or similar orientations were measured.
[0173] The selected facet parcel normals may include all facet parcel normals in the group, or a portion of all facet parcel normals in the group, selected, for example, by removing facet parcel normals associated with facet parcels that are less than a threshold value (e.g., number of brick planes) and / or have an orientation outside the threshold. This selection may be performed at any suitable time, for example, as part of act 2108, or alternatively or additionally, as part of the step of separating the facet parcels into groups in act 2102.
[0174] At act 2110, the method 2000 may derive a surface plane based on the surface plane normal. When a dominant surface partition normal is detected, the surface partition corresponding to the dominant surface partition may be saved as the surface plane. When a dominant surface partition normal is not detected, the surface plane may be derived by act 2108. Regardless of how the surface partition normal is determined, the surface plane may be represented by three or more points, which may be taken to represent an infinite plane perpendicular to the surface partition normal (e.g., surface plane 2616 as shown). In some embodiments, the surface plane may include metadata, including, for example, where a group of surface partitions are centered or the amount of surface area detected within the group of surface partitions. In some embodiments, the surface plane may be a partition of the surface of the environment (e.g., surface plane 2614 as shown), which may have the same format as the surface partition.
[0175] Referring to FIG. 25, which depicts a simplified schematic diagram 2600 of an environment 2500, according to some embodiments, the schematic diagram 2600 may include surface planes 2602-2620, which may be identified based on the extracted surface segments 2520 in FIG. 24. In the illustration of FIG. 25, the surface planes are shown cut off as they may be illustrated, but it should be understood that the surface planes may not have an area associated with them, such that they may be treated as if they are infinite. As an example, the surface plane 2610 may be identified, at least in part, based on surface segments captured by an AR device 2514B worn by a user 2516B (FIG. 24). In the illustrated example, a painting 2510 with a flat surface and a workpiece 2512 with a curved surface are within the field of view 2518B. The surface segments extracted from the workpiece may be removed before calculating the surface plane, since the surface normals for the curved surfaces may be outside the error range. The surface segments extracted from the painting may be removed before calculating the surface planes because the surface normal values for the painting may be significantly smaller than the surface segments extracted from the wall behind it. As another example, the surface planes 2614 and 2616 may be identified based at least in part on the surface segments extracted by the AR device 2514A worn by the user 2516A. The extracted surface segments may be separated into two groups to calculate the surface planes 2614 and 2616, respectively.
[0176] Referring back to FIG. 20, method 2000 may include inferring one or more corner points of the environment based at least in part on the surface planes (act 2006). FIG. 22 depicts method 2300 for act 2006, according to some embodiments. Method 2300 may begin by extending two wall planes (e.g., surface planes 2602 and 2606) to infinity (act 2302). In some embodiments, the wall planes may be selected from those planes that have a generally perpendicular orientation such that they represent walls that bound a portion of the environment. In some embodiments, method 2300 may include tracing a path from an intersecting surface plane to another intersecting surface plane, for example, in a direction defined by the wall planes. If the path forms a loop, method 2300 may determine that an occlusion is formed. If the path encounters an identified surface plane that intersects one plane but not a second plane, indicating a break in the path, method 2300 may determine that no occlusion exists. In some embodiments, the center-to-center distance between the wall planes (e.g., d in FIG. 26) may be calculated. The method 2300 may start with the two wall planes that have the smallest center-to-center distance.
[0177] The method 2300 may include obtaining a boundary line (act 2304) that intersects with both of the two wall planes. The line may be obtained by computation, which operates on a computed representation of the geometric structure as described herein. For example, as illustrated in FIG. 26, boundary line 2702 intersects with both surface planes 2602 and 2606. In act 2306, one or more first corner points may be inferred by intersecting the boundary line with a respective floor plane. For example, as illustrated in FIG. 27, first corner point 2802 is inferred by intersecting boundary line 2702 with floor plane 2622. In act 2308, one or more second corner points may be inferred by intersecting boundary line with a respective ceiling plane. As illustrated in FIG. 27, second corner point 2804 is inferred by intersecting boundary line 2702 with ceiling plane 2620. While the illustrated room 2500 has one ceiling and one floor, it should be understood that some rooms may have multiple ceilings or floors. For example, a boundary line at the transition of two floor planes may result in two first corner points. Similarly, a boundary line at the transition of two ceiling planes may result in two second corner points.
[0178] Referring back to FIG. 20, method 2000 may include a step of determining whether the inferred corner points bound an enclosed space (act 2008) such that the set of points may be confirmed as an accurate representation of a room or interior environment. In some embodiments, the determining step indicates that an occlusion is formed if boundaries joining the corner points can be connected to define a surface that joins and bounds the enclosed volume. In some embodiments, the determining step indicates that an occlusion is formed if wall planes bounded by the corner points form a loop.
[0179] In some embodiments, when the calculation indicates that an occlusion will be formed, in act 2010 the corner points may be saved, i.e., they may be stored, for example, in a local memory and / or communicated via a computer network to be stored in a remote memory. When the calculated results indicate that an occlusion has not yet been formed, some of acts 2002-2006 may be repeated a number of times until an occlusion is formed or an error is detected in the data. At each iteration, for example, additional data may be gathered or accessed such that more surface segments are used in act 2002 to increase the chance that an occlusion will be formed. In some embodiments, an error may mean that an inferred corner point is not within a space that is correctable to a simple representation. In some embodiments, in response to an error, the system may present a user interface and offer the user the option to intervene, for example, by indicating that a surface plane exists where the sensor did not detect a surface segment, or that no surface plane exists where the system misgrouped some extracted surface segments.
[0180] In the illustrated example, in act 2012, the AR system determines whether a new surface segment is required. When it is determined that a new surface segment is required, method 2000 may perform act 2002 and capture additional surface segments. When it is determined that a new surface segment is not required, but instead that the captured surface segments should be regrouped, for example, method 2000 may perform act 2004 and obtain additional surface planes and / or replace existing surface planes.
[0181] FIG. 23 depicts a simplified schematic diagram illustrating a system 2400 configured to perform the method 2000 according to some embodiments. The system 2400 may include a cloud memory 2402 and AR devices 2514A, 2514B, and 2514C configured to communicate with the cloud memory 2402 and other AR devices. The first AR device 2514A may include a first local memory that stores a first corner point inferred from the surface plot extracted by the first AR device. The second AR device 2514B may include a second local memory that stores a second corner point inferred from the surface plot extracted by the second AR device. The third AR device 2514C may include a third local memory that stores a third corner point inferred from the surface plot extracted by the third AR device.
[0182] In some embodiments, when an application running on the first AR device requests a 3D representation of the environment 2500, the first AR device may retrieve the second corner point and the third corner point from the cloud memory and build a 3D representation of the room 2500, for example, the mesh model 2900 illustrated in FIG. 28. The mesh model may be useful in various ways. For example, the mesh model 2900 may be used by a house construction application running on the AR device to calculate the amount of paint needed to cover the room 2500. Compared to using a traditional model obtained by scanning the entire room, the mesh model 2900 can be achieved by scanning the room partially, giving accurate and fast results.
[0183] In some embodiments, in a multi-user experience, the AR devices may scan the environment together, communicate the identified salient points to each other, and thus identify all of the salient points of the environment in less time than a single user would.
[0184] conclusion
[0185] While several aspects of several embodiments have been described above, it will be appreciated that various alterations, modifications, and improvements will readily occur to those skilled in the art.
[0186] As an example, the embodiments are described in relation to an augmented (AR) environment, it being understood that some or all of the techniques described herein may be applied in MR environments, or more generally, in other XR and VR environments.
[0187] As another example, embodiments are described in connection with devices, such as wearable devices. It should be understood that some or all of the techniques described herein may be implemented via a network (such as the cloud), a discrete application, and / or any suitable combination of devices, networks, and discrete applications.
[0188] Such alterations, modifications, and improvements are intended to be part of this disclosure and are intended to be within the spirit and scope of this disclosure. Additionally, advantages of the disclosure are set forth, but it should be understood that not all embodiments of the disclosure include all described advantages. Some embodiments may not implement any feature described herein as advantageous, and in some instances. Thus, the foregoing description and drawings are by way of example only.
[0189] The foregoing embodiments of the present disclosure can be implemented in any of a number of ways. For example, the embodiments may be implemented using hardware, software, or a combination thereof. When implemented in software, the software code can be executed on any suitable processor or collection of processors, whether provided in a single computer or distributed among multiple computers. Such a processor may be implemented as an integrated circuit, with one or more processors in an integrated circuit component, including commercially available integrated circuit components known in the art, such as a CPU chip, a GPU chip, a microprocessor, a microcontroller, or a coprocessor, to name a few. In some embodiments, the processor may be implemented in a custom circuit, such as an ASIC, or in a semi-custom circuit resulting from configuring a programmable logic device. As a further alternative, the processor may be part of a larger circuit or semiconductor device, whether commercially available, semi-custom, or custom. As a specific example, some commercially available microprocessors have multiple cores, such that one or a subset of those cores may constitute a processor. However, the processor may be implemented using a circuit in any suitable format.
[0190] Further, it should be understood that a computer may be embodied in any of a number of forms, such as a rack-mounted computer, a desktop computer, a laptop computer, or a tablet computer, etc. In addition, a computer may be embodied in devices not generally considered computers but with suitable processing capabilities, including a personal digital assistant (PDA), a smart phone, or any suitable portable or fixed electronic device.
[0191] A computer may also have one or more input and output devices. These devices can be used, among other things, to present a user interface. Examples of output devices that may be used to provide a user interface include a printer or display screen for visual presentation of output, or a speaker or other sound generating device for audible presentation of output. Examples of input devices that may be used for a user interface include keyboards and pointing devices such as mice, touchpads, and digitizing tablets. As another example, a computer may receive input information through speech recognition or in other audible formats. In the illustrated embodiment, the input / output devices are illustrated as physically separate from the computing device. However, in some embodiments, the input and / or output devices may be physically integrated into the same unit as the processor or other elements of the computing device. For example, the keyboard may be implemented as a soft keyboard on a touch screen. In some embodiments, the input / output devices may be completely disconnected from the computing device and functionally integrated through a wireless connection.
[0192] Such computers may be interconnected by one or more networks in any suitable form, including as a local area network or a wide area network, such as an enterprise network or the Internet. Such networks may be based on any suitable technology and operate according to any suitable protocol, and may include wireless networks, wired networks, or fiber optic networks.
[0193] Also, the various methods and processes outlined herein may be coded as software that is executable on one or more processors employing any one of a variety of operating systems or platforms. In addition, such software may be written using any of a number of suitable programming languages and / or programming or scripting tools, and may be compiled as executable machine language code or intermediate code that runs on a framework or virtual machine.
[0194] In this aspect, the present disclosure may be embodied as a computer-readable storage medium (or multiple computer-readable media) (e.g., a computer memory, one or more floppy disks, compact disks (CDs), optical disks, digital video disks (DVDs), magnetic tapes, flash memories, circuitry in field programmable gate arrays or other semiconductor devices, or other tangible computer storage media) encoded with one or more programs that, when executed on one or more computers or other processors, perform methods implementing various embodiments of the present disclosure discussed above. As is evident from the foregoing examples, a computer-readable storage medium may retain information for a sufficient time to provide computer-executable instructions in a non-transitory form. Such a computer-readable storage medium or media may be transportable such that one or more programs stored thereon may be loaded onto one or more different computers or other processors to implement various aspects of the present disclosure, as described above. As used herein, the term "computer-readable storage medium" encompasses only computer-readable media that may be considered a manufacture (i.e., an article of manufacture) or machine. In some embodiments, the present disclosure may be embodied as a computer-readable medium other than a computer-readable storage medium, such as a propagated signal.
[0195] The term "program" or "software" is used herein in a general sense to refer to any type of computer code or set of computer executable instructions that can be employed to program a computer or other processor to implement various aspects of the present disclosure, as described above. In addition, according to one aspect of the present embodiment, it should be understood that one or more computer programs that, when executed, perform the methods of the present disclosure need not reside on a single computer or processor, but can be distributed in a modular manner among several different computers or processors to implement various aspects of the present disclosure.
[0196] Computer-executable instructions may be in many forms, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Typically the functionality of the program modules may be combined or distributed as desired in various embodiments.
[0197] Also, the data structures may be stored in the computer-readable medium in any suitable form. For ease of illustration, the data structures may be shown to have fields that are related through locations within the data structure. Such relationships may be achieved by allocating storage for the fields with locations in the computer-readable medium that similarly convey the relationship between the fields. However, any suitable mechanism may be used to establish relationships between information in the fields of the data structures, including through the use of pointers, tags, or other mechanisms that establish relationships between data elements.
[0198] Various aspects of the disclosure may be used alone, in combination, or in various arrangements not specifically discussed in the foregoing embodiments, and therefore, its application is not limited to the details and arrangements of components set forth in the foregoing description or illustrated in the drawings. For example, aspects described in one embodiment may be combined in any manner with aspects described in other embodiments.
[0199] The present disclosure may also be embodied as a method, examples of which are provided. The acts performed as part of the method may be ordered in any suitable manner. Thus, while the illustrative embodiments are shown as sequential acts, embodiments may be constructed in which acts are performed in an order different from that shown, which may include performing some acts simultaneously.
[0200] The use of ordinal terms such as "first," "second," "third," etc. in the claims to modify claim elements does not, by itself, imply any priority, precedence, or ordering of one claim element relative to another element, or the temporal order in which acts of a method are performed, but rather the ordinal terms are used solely as markers to distinguish one claim element having a certain name from another element having the same name (due to the use of the ordinal terms) to distinguish between claim elements.
[0201] Also, the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. The use of "including," "comprising," "having," "containing," "with," and variations thereof herein is meant to encompass the items listed thereafter and equivalents and additional items.
Claims
1. 1. A portable electronic system comprising: A sensor configured to capture information about the physical world; a processor configured to execute computer-executable instructions for calculating a three-dimensional (3D) representation of a portion of the physical world based at least in part on the captured information about the physical world, the computer-executable instructions comprising: extracting a plurality of surface partitions from the captured information about the physical world; identifying a plurality of surface planes based at least in part on the plurality of surface segments; inferring a plurality of corner points of the portion of the physical world based at least in part on the plurality of surface planes; a processor comprising instructions for: Equipped with Identifying the plurality of surface planes comprises: determining whether a dominant facet normal is present among a group of facet normals of the plurality of facets; when said determining indicates a dominant surface partition normal of said group, setting said dominant surface partition normal as a surface normal; calculating the surface normal from at least a portion of the surface plot normals of the group when the determining does not indicate a dominant surface plot normal of the group.
2. A portable electronic system comprising:
2. The portable electronic system of claim 1 , wherein the computer-executable instructions further comprise instructions for constructing a mesh model of the portion of the physical world using the corner points.
3. The portable electronic system of claim 1 , wherein the plurality of surface planes are identified based at least in part on input from a user wearing at least a portion of the portable electronic system.
4. 10. The portable electronic system of claim 1, comprising a transceiver configured for communication over a computer network with a device providing a remote memory.
5. The portable electronic system of claim 1 , wherein the processor implements a service configured to provide the 3D representation of the portion of the physical world to an application.
6. The portable electronic system of claim 5 , wherein the service stores the salient points in a local memory or transfers the salient points to a cloud memory as the three-dimensional (3D) representation of the portion of the physical world.
7. A portable electronic system comprising: A sensor configured to capture information about the physical world; a processor configured to execute computer-executable instructions for calculating a three-dimensional (3D) representation of a portion of the physical world based at least in part on the captured information about the physical world, the computer-executable instructions comprising: extracting a plurality of surface partitions from the captured information about the physical world; identifying a plurality of surface planes based at least in part on the plurality of surface segments; inferring a plurality of corner points of the portion of the physical world based at least in part on the plurality of surface planes; determining whether the first plurality of corner points form a closure; a processor comprising instructions for: A portable electronic system comprising:
8. The portable electronic system of claim 1 , wherein calculating the surface plane normal comprises calculating a weighted average of the at least a portion of the group of surface section normals.
9. Inferring the plurality of corner points of the portion of the physical world includes: extending a first and a second of the plurality of surface planes to infinity; obtaining a boundary line that intersects the first and second surface planes; A portable electronic system according to any preceding claim, comprising:
10. 10. The portable electronic system of claim 9, wherein inferring the plurality of corner points of the portion of the physical world further comprises inferring one of the plurality of corner points by intersecting the perimeter with a third surface plane.
11. At least one non-transitory computer-readable medium encoded with a plurality of computer-executable instructions that, when executed by at least one processor, performs a method for providing a three-dimensional (3D) representation of a portion of a physical world, the portion of the physical world being represented using a plurality of corner points, the method comprising: Capturing information about a portion of the physical world that is within a user's field of view (FOV); extracting a plurality of surface segments from the captured information; identifying a plurality of surface planes from the plurality of surface segments; calculating a plurality of corner points representing the portion of the physical world based on surface plane intersections of the plurality of identified surface planes; Including, Identifying the plurality of surface planes comprises: determining whether a dominant facet normal is present among a group of facet normals of the plurality of facets; when said determining indicates a dominant surface partition normal of said group, setting said dominant surface partition normal as a surface normal; calculating the surface normal from at least a portion of the surface plot normals of the group when the determining does not indicate a dominant surface plot normal of the group. At least one non-transitory computer readable medium comprising:
12. At least one non-transitory computer-readable medium encoded with a plurality of computer-executable instructions that, when executed by at least one processor, perform a method for providing a three-dimensional (3D) representation of a portion of a physical world, the portion of the physical world being represented using a plurality of corner points, the method comprising: Capturing information about a portion of the physical world that is within a user's field of view (FOV); extracting a plurality of surface segments from the captured information; identifying a plurality of surface planes from the plurality of surface segments; calculating a number of corner points representing the portion of the physical world based on surface plane intersections of the number of identified surface planes; determining whether the first plurality of corner points form a closure; At least one non-transitory computer readable medium comprising:
13. 13. The at least one non-transitory computer readable medium of claim 12, wherein calculating whether an occlusion is formed comprises determining whether boundaries joining the first plurality of corner points can be connected to define a surface that joins and bounds an enclosed volume.
14. 8. The portable electronic system of claim 1 or claim 7, wherein the plurality of surface segments are associated with an orientation of the surface that each surface segment represents.
15. 13. At least one non-transitory computer-readable medium according to claim 11 or claim 12, wherein the plurality of surface segments are associated with an orientation of the surface that each surface segment represents.
16. the portion of the physical world is a first portion of the physical world; the user is a first user, the plurality of corner points is a first plurality of corner points; The method comprises: receiving a second plurality of corner points of a second portion of the physical world from a second user; providing the 3D representation of the physical world based at least in part on the first and second plurality of salient points; At least one non-transitory computer readable medium according to any of claims 11 to 13 and 15, further comprising:
17. the user is a first user, The method comprises: communicating, via a computer network, the corner points calculated from the captured information about the portion of the physical world that is within the FOV of the first user; receiving the communicated corner point at an XR device used by a second user; Rendering, to the second user with the XR device, information about the portion of the physical world based on the received corner points. At least one non-transitory computer readable medium according to any of claims 11 to 13 and 15, further comprising:
18. At least one non-transitory computer readable medium according to any of claims 11 to 13 and 15, wherein the method includes calculating metadata for the salient points, the metadata indicating location relationships between the salient points.
19. 20. The at least one non-transitory computer readable medium of claim 18, wherein the method includes storing the salient points including respective metadata such that the salient points are readable by multiple users, including the user.
20. 1. A method of operating a cross reality system for reconstructing an environment, the cross reality system comprising a processor configured to process image information in communication with a sensor worn by a user generating depth information relating to distinct regions within a field of view of the sensor, the method comprising: extracting a plurality of surface partitions from the depth information; displaying the extracted surface partition to the user; receiving user input indicating a number of surface planes, each of which represents a surface bounding the environment; calculating a plurality of corner points of the environment based at least in part on the plurality of surface planes; determining whether the plurality of corner points form a closure; and A method comprising:
21. The method of claim 20 , wherein the plurality of surface segments are associated with an orientation of the surface that each surface segment represents.
22. A method of operating a cross reality system for reconstructing an environment, the cross reality system comprising a processor configured to process image information in communication with a sensor worn by a user that generates depth information relating to discrete areas within a field of view of the sensor, the method comprising: extracting a plurality of surface partitions from the depth information; identifying a plurality of surface planes based at least in part on the plurality of surface segments; inferring a plurality of corner points of a portion of a physical world based at least in part on the plurality of surface planes; Including, Identifying the plurality of surface planes comprises: determining whether a dominant facet normal is present among a group of facet normals of the plurality of facets; when said determining indicates a dominant surface partition normal of said group, setting said dominant surface partition normal as a surface normal; calculating the surface normal from at least a portion of the surface plot normals of the group when the determining does not indicate a dominant surface plot normal of the group. A method comprising:
23. 22. The method of claim 20 or claim 21, further comprising storing the corner point once it is determined that the occlusion is formed.
24. A method according to any of claims 20 to 23, wherein the method comprises calculating metadata relating to the salient points, the metadata indicating location relationships between the salient points.
Citation Information
Patent Citations
Modeling device, three-dimensional model generating device, modeling method, and program
WO2016084389A1
Multi-stage block mesh simplification
WO2019126653A1