The present disclosure relates to systems and methods for providing, to users, user interfaces for environments that includes virtual objects.
Virtual environments that include virtual objects are known, e.g. as used in Virtual Reality (VR) technology and Augmented Reality (AR) technology.
One aspect of the present disclosure relates to a system configured for providing, to a user, a user interface for an environment that includes virtual objects. The system may include one or more hardware processors configured by machine-readable instructions. The processor(s) may be configured to obtain, from electronic storage, information regarding virtual objects in a virtual three-dimensional space. The virtual three-dimensional space may have a virtual three-dimensional volume. The virtual objects may include a first virtual object. The virtual three-dimensional space may include a set of voxels. Individual voxels may correspond to individual virtual three-dimensional volumes within the virtual three-dimensional space such that the virtual three-dimensional space is divided as the three-dimensional volumes of the set of voxels. Individual voxels may be associated with individual distance values. The individual distance values may represent distances from the individual voxels to real or virtual surfaces, e.g., within the virtual three-dimensional space. The processor(s) may be configured to determine a subset of voxels from the set of voxels such that the subset of voxels encompasses a three-dimensional volume that includes at least part of a first external surface of the first virtual object. The processor(s) may be configured to determine proximity information for the first virtual object. Determination of the proximity information may be based on aggregating a set of distance values for the determined subset of voxels. A reduction in magnitude of the proximity information may correspond to a reduction in one or more distances between the first virtual object and one or more real or virtual surfaces, e.g., within the virtual three-dimensional space. The processor(s) may be configured to determine a manipulation granularity. The manipulation granularity may correlate an input magnitude of user input to an output magnitude of one or more manipulations of the first virtual object within the virtual three-dimensional space. The one or more manipulations may include one or more of translation, rotation, transformation, and/or other manipulations. The processor(s) may be configured to adjust the manipulation granularity based on the proximity information. Adjustment of the manipulation granularity may be performed such that the reduction in magnitude of the proximity information corresponds to an increase in the manipulation granularity. The processor(s) may be configured to receive particular user input from the user having a particular input magnitude. The particular user input may represent a request to manipulate the first virtual object within the virtual three-dimensional space. The processor(s) may be configured to manipulate the first virtual object within the virtual three-dimensional space in accordance with the received particular user input. A particular output magnitude of the manipulation of the first virtual object as requested may be based on the particular input magnitude and the adjusted manipulation granularity. The processor(s) may be configured to effectuate presentation of the user interface to the user through a client computing platform. The user interface may depict the manipulation of the first virtual object within the virtual three-dimensional space.
Another aspect of the present disclosure relates to a method for providing, to a user, a user interface for an environment that includes virtual objects. The method may include obtaining, from electronic storage, information regarding virtual objects in a virtual three-dimensional space. The virtual three-dimensional space may have a virtual three-dimensional volume. The virtual objects may include a first virtual object. The virtual three-dimensional space may include a set of voxels. Individual voxels may correspond to individual virtual three-dimensional volumes within the virtual three-dimensional space such that the virtual three-dimensional space is divided as the three-dimensional volumes of the set of voxels. Individual voxels may be associated with individual distance values. The individual distance values may represent distances from the individual voxels to real or virtual surfaces, e.g., within the virtual three-dimensional space. The method may include determining a subset of voxels from the set of voxels such that the subset of voxels encompasses a three-dimensional volume that includes at least part of a first external surface of the first virtual object. The method may include determining proximity information for the first virtual object. Determination of the proximity information may be based on aggregating a set of distance values for the determined subset of voxels. A reduction in magnitude of the proximity information may correspond to a reduction in one or more distances between the first virtual object and one or more real or virtual surfaces, e.g., within the virtual three-dimensional space. The method may include determining a manipulation granularity. The manipulation granularity may correlate an input magnitude of user input received from the user to an output magnitude of one or more manipulations of the first virtual object within the virtual three-dimensional space. The one or more manipulations may include one or more of translation, rotation, transformation, and/or other manipulations. The method may include adjusting the manipulation granularity based on the proximity information. Adjustment of the manipulation granularity may be performed such that the reduction in magnitude of the proximity information corresponds to an increase in the manipulation granularity. The method may include receiving particular user input from the user having a particular input magnitude. The particular user input may represent a request to manipulate the first virtual object within the virtual three-dimensional space. The method may include manipulating the first virtual object within the virtual three-dimensional space in accordance with the received particular user input. A particular output magnitude of the manipulation of the first virtual object as requested may be based on the particular input magnitude and the adjusted manipulation granularity. The method may include effectuating presentation of the user interface to the user through a client computing platform. The user interface may depict the manipulation of the first virtual object within the virtual three-dimensional space.
As used herein, any association (or relation, or reflection, or indication, or correspondency) involving servers, processors, client computing platforms, virtual objects, virtual volumes, determinations, selections, voxels, distances, values, surfaces, proximities, granularities, magnitudes, sensitivities, adjustments, manipulations, and/or another entity or object that interacts with any part of the system and/or plays a part in the operation of the system, may be a one-to-one association, a one-to-many association, a many-to-one association, and/or a many-to-many association or N-to-M association (note that N and M may be different numbers greater than 1).
As used herein, the term “obtain” (and derivatives thereof) may include active and/or passive retrieval, determination, derivation, transfer, upload, download, submission, and/or exchange of information, and/or any combination thereof. As used herein, the term “effectuate” (and derivatives thereof) may include active and/or passive causation of any effect. As used herein, the term “determine” (and derivatives thereof) may include measure, calculate, compute, estimate, approximate, generate, and/or otherwise derive, and/or any combination thereof.
These and other features, and characteristics of the present technology, as well as the methods of operation and functions of the related elements of structure and the combination of parts and economies of manufacture, will become more apparent upon consideration of the following description and the appended claims with reference to the accompanying drawings, all of which form a part of this specification, wherein like reference numerals designate corresponding parts in the various figures. It is to be expressly understood, however, that the drawings are for the purpose of illustration and description only and are not intended as a definition of the limits of the invention. As used in the specification and in the claims, the singular form of “a”, “an”, and “the” include plural referents unless the context clearly dictates otherwise.
In some implementations, system 100 may include one or more servers 102, one or more hardware processor(s) 128, electronic storage 126, and/or other components. Server(s) 102 may be configured to communicate with one or more client computing platforms 104 according to a client/server architecture and/or other architectures. Client computing platform(s) 104 may be configured to communicate with other client computing platforms via server(s) 102 and/or according to a peer-to-peer architecture and/or other architectures. Users may access system 100 via client computing platform(s) 104. In some implementations, system 100 may include an augmented reality device 130 that includes a display 132.
Server(s) 102 and/or hardware processor(s) 128 may be configured by machine-readable instructions 106. Machine-readable instructions 106 may include one or more instruction components. The instruction components may include computer program components. The instruction components may include one or more of virtual information component 108, voxel determination component 110, proximity component 112, manipulation granularity component 114, granularity adjustment component 116, user input component 118, object manipulation component 120, presentation component 122, and/or other instruction components.
Virtual information component 108 may be configured to determine and/or obtain information regarding virtual objects in a virtual three-dimensional space. In some implementations, the virtual three-dimensional space may have a virtual three-dimensional volume. In some implementations, virtual information component 108 may be configured to obtain information regarding virtual objects from electronic storage 126. In some implementations, positions of one or more of the virtual objects may be related to positions of one or more objects in the real world. For example, a real-world three-dimensional volume may be scanned and constructed (or reconstructed) in a simulation or model, using a virtual three-dimensional space having a virtual three-dimensional volume that corresponds to (at least part of) the real-world three-dimensional volume. The virtual objects may include a first virtual object, a second virtual object, a third virtual object, and so forth. By way of non-limiting example,
The virtual three-dimensional space may include a set of voxels. Individual voxels may correspond to individual virtual three-dimensional volumes within a virtual three-dimensional space (e.g., within the same virtual three-dimensional space that includes the virtual objects described in relation to virtual information component 108). In some implementations, individual voxels may correspond to individual virtual three-dimensional volumes such that the virtual three-dimensional space is divided as the three-dimensional volumes of the set of voxels. In some implementations, the set of voxels may be a grid of voxels that form at least part of the virtual three-dimensional volume of the virtual three-dimensional space. By way of non-limiting example,
Individual voxels may be associated with individual distance values. The individual distance values may represent distances from the individual voxels to real or virtual surfaces, e.g., within the virtual three-dimensional space. In some implementations, an individual distance value associated with an individual voxel may represent the shortest distance from the individual voxel to any surface within the virtual three-dimensional space. In some implementations, an individual distance value associated with an individual voxel may represent the shortest distance from the individual voxel to any surface within the virtual three-dimensional space of a subset of virtual objects. For example, subsequent to a user selecting a particular virtual object, an individual distance value associated with an individual voxel may represent the shortest distance from the individual voxel to any surface within the virtual three-dimensional space of the subset of virtual objects that excludes the selected particular virtual object. By way of non-limiting example, in
Referring to
Proximity component 112 may be configured to determine proximity information for virtual objects, including but not limited to user-selected virtual objects. In some implementations, the particular proximity information for a particular virtual object in a virtual three-dimensional space may be the distance to the closest surface and/or object within the virtual three-dimensional space that is not (a surface of) the particular virtual object. Determination of the proximity information may be based on aggregating a set of distance values for a particular set of voxels, such as the subset of voxels determined by subset determination component 110. Determining the proximity information for a particular virtual object may include determining a minimum absolute distance in the set of distance values for the particular set of voxels, such as the subset of voxels determined by subset determination component 110. For example, as the particular virtual object is moved closer to the nearest other object, the (magnitude of) proximity information for the particular virtual object may become smaller. In some implementations, a reduction in magnitude of the proximity information may correspond to a reduction in one or more distances between the first virtual object and one or more surfaces within the virtual three-dimensional space. By way of non-limiting example, in
Referring to
Referring to
User input may be received through a keyboard, buttons, touchscreen, mouse, voice commands, body movement, hand and/or finger gestures, and/or other ways to convey user input to system 100. Individual types of user input may correspond to an input magnitude, such that user input received at different times may be distinguished and have different effects by virtue of the input magnitude. For example, a first mouse movement may be a few mm or a small distance, whereas a second mouse movement may be a few inches or a larger distance. For example, a first hand gesture may involve moving hands or fingers by an inch, whereas a second hand gesture may involve moving hands or fingers by 6-12 inches. For example, a first body movement may involve rotating the head or body by 10 degrees, whereas a second body movement may involve rotating the head or body by 60 degrees. The first mouse movement may have a smaller magnitude than the second mouse movement, the first hand gesture may have a smaller magnitude than the second hand gesture, and the first body movement may have a smaller magnitude than the second body movement.
Individual types of manipulations of virtual objects may correspond to an output magnitude, such that manipulations performed at different times may be distinguished and have different effects by virtue of the output magnitude. For example, a first object displacement may be a few mm or a small number of pixels/voxels, whereas a second object displacement be a few inches or a larger number of pixels/voxels. For example, a first rotational movement may involve rotating the selected virtual object by 10 degrees, whereas a second rotational movement may involve rotating the selected virtual object by 60 degrees. The first object displacement may have a smaller magnitude than the second object displacement, and the first rotational movement may have a smaller magnitude than the second rotational movement.
In some implementations, the manipulation granularity may be represented by a ratio defined by the input magnitude of user input received from the user divided by the output magnitude of the one or more manipulations of the selected virtual object within the virtual three-dimensional space. Other arithmetic and/or mathematical operations involving the input magnitude and the output magnitude are envisioned within the scope of this disclosure to derive the manipulation granularity and/or the manipulation sensitivity. In some implementations, the input magnitude and the output magnitude may be correlated.
Object manipulation component 120 may be configured to manipulate a (selected) virtual object within the virtual three-dimensional space by a (selected) type of manipulation, and in accordance with received user input. In some implementations, manipulation of a particular selected virtual object may be based on a correlation of a particular input magnitude of received user input to a particular output magnitude of one or more particular (selected) manipulations. For example, at a relatively low or coarse level of manipulation granularity a received user input having a small input magnitude may result in manipulation (e.g., movement of the selected virtual object) having a relatively large output magnitude. For example, a small mouse movement of 1 inch may result in moving the selected virtual object fast and/or far within user interface 134. Conversely, at a relatively high or fine level of manipulation granularity a received user input having a larger input magnitude may result in manipulation (e.g., movement of the selected virtual object) having a relatively small output magnitude. For example, a relatively larger mouse movement of 6-12 inches may result in moving the selected virtual object slowly and/or a short distance within user interface 134. A user may prefer a coarse manipulation granularity when speed is more important than accuracy, but a fine manipulation granularity when accuracy is more important than speed.
Granularity adjustment component 116 may be configured to adjust the manipulation granularity and/or the manipulation sensitivity based on one or more determinations by proximity component 112. For example, granularity adjustment component 116 may be configured to adjust the manipulation granularity based on the determined proximity information. Adjustment of the manipulation granularity may be performed such that the reduction in magnitude of the proximity information corresponds to an increase in the manipulation granularity. For example, prior to a particular adjustment of the manipulation granularity, the manipulation granularity may be relatively coarse, thus allowing rapid but not particularly accurate manipulations of a selected virtual object as long as the selected object is relatively far from other virtual objects. As one or move virtual objects move, the distance between the selected virtual object as the nearest other object (or the nearest surface of another object) may decrease. In other words, the magnitude of the proximity information of the selected object is reduced due to movement of virtual objects. Granularity adjustment component 116 may increase the manipulation granularity (e.g., from coarse to fine), thus allowing accurate but relatively slow manipulations of the selected virtual object. Adjustments in the manipulation granularity and/or manipulation sensitivity are not limited to two levels (e.g., coarse and fine), but may, in some implementations, have 3, 4, 5, 10, or more different levels. In some implementations, adjustments in the manipulation granularity and/or manipulation sensitivity may be gradual. For example, the adjustments may be smooth such that users experience a gradual transition between levels rather than discrete steps in different levels. In some implementations, the correlation between the input magnitude and the output magnitude may change due to adjustment by granularity adjustment component 116. For example, a first correlation may change to a second correlation that is different from the first correlation due to the adjustment
Object manipulation component 120 may be configured to manipulate virtual objects within the virtual three-dimensional space. In some implementations, object manipulation component 120 may manipulate virtual objects in accordance with received particular user input. A particular output magnitude of a manipulation of a selected virtual object as requested may be based on the particular input magnitude and the current and/or adjusted manipulation granularity. For example, a 1-inch mouse movement as the received user input may effectuate a relatively large movement of a selected virtual object within user interface 134 responsive to the manipulation granularity being coarse and/or low. Once the selected virtual object approaches another virtual object and the manipulation granularity is adjusted to a fine level or relatively higher level, the same 1-inch mouse movement may effectuate a relatively small movement of the selected virtual object (compared to the previous movement of the same object).
Presentation component 122 may be configured to effectuate presentation of user interface 134 to the user. In some implementations, a user interface the same as or similar to user interface 134 may be presented through client computing platform 104. In some implementations, user interface 134 may be presented through display 132 of augmented reality device 130. The presentation of user interface 134 to the user may be accomplished by presenting views of user interface 134 superimposed over views of the real world such that both views are presented to the user simultaneously. User interface 134 may depict the manipulation of a user-selected virtual object within the virtual three-dimensional space. In some implementations, user interface 134 may be presented such that changes in color information are based on the proximity information.
In some implementations, server(s) 102, client computing platform(s) 104, and/or external resources 124 may be operatively linked via one or more electronic communication links. For example, such electronic communication links may be established, at least in part, via one or more networks 13 such as the Internet and/or other networks. It will be appreciated that this is not intended to be limiting, and that the scope of this disclosure includes implementations in which server(s) 102, client computing platform(s) 104, and/or external resources 124 may be operatively linked via some other communication media.
A given client computing platform 104 may include one or more processors configured to execute computer program components. The computer program components may be configured to enable an expert or user associated with the given client computing platform 104 to interface with system 100 and/or external resources 124, and/or provide other functionality attributed herein to client computing platform(s) 104. By way of non-limiting example, the given client computing platform 104 may include one or more of a desktop computer, a laptop computer, a handheld computer, a tablet computing platform, a NetBook, a Smartphone, a gaming console, and/or other computing platforms.
External resources 124 may include sources of information outside of system 100, external entities participating with system 100, and/or other resources. In some implementations, some or all of the functionality attributed herein to external resources 124 may be provided by resources included in system 100.
Server(s) 102 may include electronic storage 126, one or more processors 128, and/or other components. Server(s) 102 may include communication lines, or ports to enable the exchange of information with a network and/or other computing platforms. Illustration of server(s) 102 in
Electronic storage 126 may comprise non-transitory storage media that electronically stores information. The electronic storage media of electronic storage 126 may include one or both of system storage that is provided integrally (i.e., substantially non-removable) with server(s) 102 and/or removable storage that is removably connectable to server(s) 102 via, for example, a port (e.g., a USB port, a firewire port, etc.) or a drive (e.g., a disk drive, etc.). Electronic storage 126 may include one or more of optically readable storage media (e.g., optical disks, etc.), magnetically readable storage media (e.g., magnetic tape, magnetic hard drive, floppy drive, etc.), electrical charge-based storage media (e.g., EEPROM, RAM, etc.), solid-state storage media (e.g., flash drive, etc.), and/or other electronically readable storage media. Electronic storage 126 may include one or more virtual storage resources (e.g., cloud storage, a virtual private network, and/or other virtual storage resources). Electronic storage 126 may store software algorithms, information determined by processor(s) 128, information received from server(s) 102, information received from client computing platform(s) 104, and/or other information that enables server(s) 102 to Function as described herein.
Processor(s) 128 may be configured to provide information processing capabilities in server(s) 102. As such, processor(s) 128 may include one or more of a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and/or other mechanisms for electronically processing information. Although processor(s) 128 is shown in
It should be appreciated that although components 108, 110, 112, 114, 116, 118, 120, and/or 122 are illustrated in
In some implementations, method 200 may be implemented in one or more processing devices (e.g., a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and/or other mechanisms for electronically processing information). The one or more processing devices may include one or more devices executing some or all of the operations of method 200 in response to instructions stored electronically on an electronic storage medium. The one or more processing devices may include one or more devices configured through hardware, firmware, and/or software to be specifically designed for execution of one or more of the operations of method 200.
An operation 202 may include obtaining, from electronic storage, information regarding virtual objects in a virtual three-dimensional space that has a virtual three-dimensional volume. The virtual objects may include a first virtual object. The virtual three-dimensional space may include a set of voxels. Individual voxels correspond to individual virtual three-dimensional volumes within the virtual three-dimensional space. Individual voxels may be associated with individual distance values. The individual distance values may represent distances from the individual voxels to surfaces within the virtual three-dimensional space. Operation 202 may be performed by one or more hardware processors configured by machine-readable instructions including a component that is the same as or similar to virtual information component 108, in accordance with one or more implementations.
An operation 204 may include determining a subset of voxels from the set of voxels such that the subset of voxels encompasses a three-dimensional volume that includes at least part of a first external surface of the first virtual object. Operation 204 may be performed by one or more hardware processors configured by machine-readable instructions including a component that is the same as or similar to voxel determination component 110, in accordance with one or more implementations.
An operation 206 may include determining proximity information for the first virtual object. Determination of the proximity information may be based on aggregating a set of distance values for the determined subset of voxels. A reduction in magnitude of the proximity information may correspond to a reduction in one or more distances between the first virtual object and one or more surfaces within the virtual three-dimensional space. Operation 206 may be performed by one or more hardware processors configured by machine-readable instructions including a component that is the same as or similar to proximity component 112, in accordance with one or more implementations.
An operation 208 may include determining a manipulation granularity. The manipulation granularity may correlate an input magnitude of user input received from the user to an output magnitude of one or more manipulations of the first virtual object within the virtual three-dimensional space. The one or more manipulations may include one or more of translation, rotation, transformation, and/or other manipulations. Operation 208 may be performed by one or more hardware processors configured by machine-readable instructions including a component that is the same as or similar to manipulation granularity component 114, in accordance with one or more implementations.
An operation 210 may include adjusting the manipulation granularity based on the proximity information. Adjustment of the manipulation granularity may be performed such that the reduction in magnitude of the proximity information corresponds to an increase in the manipulation granularity. Operation 210 may be performed by one or more hardware processors configured by machine-readable instructions including a component that is the same as or similar to granularity adjustment component 116, in accordance with one or more implementations.
An operation 212 may include receiving particular user input from the user having a particular input magnitude. The particular user input may represent a request to manipulate the first virtual object within the virtual three-dimensional space. Operation 212 may be performed by one or more hardware processors configured by machine-readable instructions including a component that is the same as or similar to user input component 118, in accordance with one or more implementations.
An operation 214 may include manipulating the first virtual object within the virtual three-dimensional space in accordance with the received particular user input. A particular output magnitude of the manipulation of the first virtual object as requested may be based on the particular input magnitude and the adjusted manipulation granularity. Operation 214 may be performed by one or more hardware processors configured by machine-readable instructions including a component that is the same as or similar to object manipulation component 120, in accordance with one or more implementations.
An operation 216 may include effectuating presentation of the user interface to the user through a client computing platform. The user interface may depict the manipulation of the first virtual object within the virtual three-dimensional space. Operation 216 may be performed by one or more hardware processors configured by machine-readable instructions including a component that is the same as or similar to presentation component 122, in accordance with one or more implementations.
Although the present technology has been described in detail for the purpose of illustration based on what is currently considered to be the most practical and preferred implementations, it is to be understood that such detail is solely for that purpose and that the technology is not limited to the disclosed implementations, but, on the contrary, is intended to cover modifications and equivalent arrangements that are within the spirit and scope of the appended claims. For example, it is to be understood that the present technology contemplates that, to the extent possible, one or more features of any implementation can be combined with one or more features of any other implementation.
Number | Name | Date | Kind |
---|---|---|---|
2020007 | Wagman | Nov 1935 | A |
10698562 | Zhou | Jun 2020 | B1 |
20020113787 | Ray | Aug 2002 | A1 |
20050151734 | Gubkin | Jul 2005 | A1 |
20060164410 | Li | Jul 2006 | A1 |
20070018973 | Shih | Jan 2007 | A1 |
20170031502 | Rosenberg | Feb 2017 | A1 |
20170323471 | Chien | Nov 2017 | A1 |
20180322701 | Pahud | Nov 2018 | A1 |
20190385355 | Xu | Dec 2019 | A1 |
20200043214 | Velevski | Feb 2020 | A1 |
20200043240 | Abe | Feb 2020 | A1 |
Entry |
---|
Marchesin, Stéphane, Catherine Mongenet, and Jean-Michel Dischler. “Multi-GPU sort-last volume visualization.” EGPGV 8 (2008): 1-8. |
“U.S. Appl. No. 16/399,376, Notice of Allowance dated Apr. 30, 2020”, 8 pgs. |
Gobbetti, Enrico, et al., “Far Voxels: A Multiresolution Framework for Interactive Rendering of Huge Complex 3d Models on Commodity Graphics Platforms”, ACM Siggraph 2005 Papers, (2005), 878-885. |
Number | Date | Country | |
---|---|---|---|
20200348820 A1 | Nov 2020 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 16399376 | Apr 2019 | US |
Child | 16915703 | US |