U.S. patent application number 15/298968 was filed with the patent office on 2017-05-04 for virtual conference room.
The applicant listed for this patent is Wal-Mart Stores, Inc.. Invention is credited to Donald High, Robert C. Taylor, John Paul Thompson, David Winkle.
Application Number | 20170127023 15/298968 |
Document ID | / |
Family ID | 57139928 |
Filed Date | 2017-05-04 |
United States Patent
Application |
20170127023 |
Kind Code |
A1 |
High; Donald ; et
al. |
May 4, 2017 |
VIRTUAL CONFERENCE ROOM
Abstract
A virtual conferencing system includes a 3D scanner in a local
region and a camera. A scan of the local region and images are
received and combined to make a model that is transmitted to a
remote region. A remote model from the remote region is combined
and rendered for a user in the local region. A reference point in
the local region is mapped to a reference point in the remote
region. The remote model is oriented with respect to the local
region according to the reference points. Object in the remote and
local regions may be filtered from models that are transmitted.
Interactions with virtual objects in the local region may invoke
modification virtual objects. Modifications may be transmitted to
the remote region and superimposed on real objects corresponding to
the virtual objects.
Inventors: |
High; Donald; (Noel, MO)
; Thompson; John Paul; (Bentonville, AR) ; Winkle;
David; (Bella Vista, AR) ; Taylor; Robert C.;
(Rogers, AR) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Wal-Mart Stores, Inc. |
Bentonville |
AR |
US |
|
|
Family ID: |
57139928 |
Appl. No.: |
15/298968 |
Filed: |
October 20, 2016 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
62248986 |
Oct 30, 2015 |
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06T 7/30 20170101; G06T
7/33 20170101; G06T 2207/10004 20130101; H04N 13/279 20180501; H04N
13/378 20180501; H04N 7/157 20130101; H04N 13/344 20180501; H04N
13/194 20180501; G06T 2207/10028 20130101 |
International
Class: |
H04N 7/15 20060101
H04N007/15; H04N 13/02 20060101 H04N013/02; H04N 13/04 20060101
H04N013/04; H04N 13/00 20060101 H04N013/00 |
Claims
1. A method for conferencing, the method comprising: defining, by a
computer system comprising one or more computer devices, a first
reference point in a first space and a second reference point in a
second space, the second space being remote from the first space;
receiving, by the computer system, a first three-dimensional scan
of the first space; receiving, by the computer system, a first
imaging scan of the first space; generating, by the computer
system, a first three-dimensional model of the first space using
the first three-dimensional scan and the first imaging scan;
receiving, by the computer system, a second three-dimensional scan
of the second space; receiving, by the computer system, a second
imaging scan of the second space; generating, by the computer
system, a second three-dimensional model of the second space using
the second three-dimensional scan and the second imaging scan;
transmitting, by the computer system, a first representation of the
first three-dimensional model to a second user located in the
second space, the first representation being oriented such that the
first reference point in the first three-dimensional model is
mapped to the second reference point; and transmitting, by the
computer system, a second representation of the second
three-dimensional model to a first user located in the first space,
the second representation being oriented such that the second
reference point in the second three-dimensional model is mapped to
the first reference point.
2. The method of claim 1, wherein transmitting the first
representation of the first three dimensional model comprises
transmitting a first representation of a portion of the first three
dimensional model corresponding to a section of the first
space.
3. The method of claim 1, wherein transmitting the first
representation of the first three dimensional model comprises
transmitting a filtered representation of the first
three-dimensional model, the filtered representation including only
representations of objects present in the first space.
4. The method of claim 1, wherein the filtered representation
includes representations of less than all of the objects present in
the first space.
5. The method of claim 1, further comprising: receiving, by the
computer system, interactions with a portion of the first
representation from the second user in the second space; modifying,
by the computer system, the portion of the first representation in
response to the interactions to obtain a modified portion; and
transmitting, by the computer system, the modified portion to the
first user superimposed on the second representation at a position
corresponding to the portion in the second space.
6. The method of claim 5, wherein receiving, by the computer
system, the interactions with the portion of the first
representation comprises receiving signals from a motion sensing
system, the signals representing detected movements of a hand of
the second user.
7. The method of claim 1, wherein receiving the first
three-dimensional scan of the first scan comprises receiving the
first three-dimensional scan from a first scanning device having a
first scanning time, the method further comprising: receiving, by
the computer system, subsequent to receiving the first
three-dimensional scan, partial scans from one or more second
scanning devices, the one or more scanning devices having second
scanning times that are less than the first scanning time;
updating, by the computer system, the first three-dimensional model
according to the partial scans to obtain an updated first
three-dimensional model; and transmitting, by the computer system,
a representation of the updated first three-dimensional
representation to the second user.
8. The method of claim 7, wherein the first scanning device is a
laser scanner and the one or more second scanning devices comprise
a plurality of optical scanners.
9. The method of claim 1, wherein transmitting the first
representation of the first three-dimensional model to the second
user located in the second space comprises transmitting the first
representation to a headset worn by the second user.
10. The method of claim 9, further comprising: detecting, by the
computer system, a position and orientation of the headset in the
second user space; and rendering, by the computer system, the first
representation of the first three-dimensional model from a
viewpoint indicated by the position and orientation of the
headset.
11. A system for conferencing comprising: a first scanning device
located in a first space; one or more processing devices and one or
more memory devices, the one or more memory devices storing
executable code effective to cause the one or more processing
devices to: receive a first three-dimensional scan of the first
space; receive a first imaging scan of the first space; generate a
first three-dimensional model of the first space using the first
three-dimensional scan and the first imaging scan; receive a
definition of a first reference point in the first space; receive a
second reference point for a second space remote from the first
space; transmit a first representation of the first
three-dimensional model to a second user located in the second
space, the first representation being oriented such that the first
reference point in the first three-dimensional model is mapped to
the second reference point; receive a second representation of a
second three-dimensional model; and render the second
representation to a user in the first space such that the second
representation is oriented such that the second reference point in
the second three-dimensional model is mapped to the first reference
point.
12. The system of claim 11, wherein the executable code is further
effective to cause the one or more processing devices to transmit
the first representation of the first three dimensional model by
transmitting a first representation of a portion of the first three
dimensional model corresponding to a section of the first
space.
13. The system of claim 11, wherein the executable code is further
effective to cause the one or more processing devices to transmit
the first representation of the first three dimensional model by
transmitting a filtered representation of the first
three-dimensional model, the filtered representation including only
representations of objects present in the first space.
14. The system of claim 11, wherein the filtered representation
includes representations of less than all of the objects present in
the first space.
15. The system of claim 11, wherein the executable code is further
effective to cause the one or more processing devices to: receive
interactions with a portion of the first representation from the
second user in the second space; modify the portion of the first
representation in response to the interactions to obtain a modified
representation; and transmit the modified portion to the first user
superimposed on a rendering of the second representation.
16. The system of claim 15, further comprising a motion sensing
system; wherein the executable code is further effective to cause
the one or more processing devices to receive the interactions with
the portion of the first representation by receiving signals from
the motion sensing system, the signals representing detected
movements of a hand of the second user.
17. The system of claim 11, further comprising one or more second
scanning devices, the second scanning devices having second
scanning times that are less than a first scanning time of the
first scanning device; wherein the executable code is further
effective to cause the one or more processing devices to: receive,
subsequent to receiving the first three-dimensional scan, partial
scans from the one or more second scanning devices; update the
first three-dimensional model according to the partial scans to
obtain an updated first three-dimensional model; and transmit a
representation of the updated first three-dimensional
representation to the second user.
18. The system of claim 17, wherein the first scanning device is a
laser scanner and the one or more second scanning devices comprise
a plurality of optical scanners.
19. The system of claim 11, wherein the executable code is further
effective to cause the one or more processing devices to render the
second representation to the user in the first space by
transmitting the a rendering of the second representation to a
headset worn by the first user.
20. The system of claim 19, wherein the executable code is further
effective to cause the one or more processing devices to: detect a
position and orientation of the headset in the first user space;
and render the second representation of the second
three-dimensional model from a viewpoint indicated by the position
and orientation of the headset.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of U.S. Provisional
Patent Application 62/248,986, filed Oct. 30, 2015, and titled
"Virtual Conference Room", the entire contents of which are hereby
incorporated herein by reference.
BACKGROUND
[0002] Field of the Invention
[0003] This invention relates to systems and methods for providing
virtual reality experiences.
[0004] Background of the Invention
[0005] The cost and time required by travel is avoided in many
instances by having video conferences. Video conferences may even
have multiple participants in multiple locations. Although video
conferencing provides many of the benefits of a face-to-face
meeting, it is still limited in its ability to allow the same kinds
of interactions that are permitted during an in-person
conference.
[0006] The systems and methods disclosed herein provide an improved
approach for conducting meetings among remote participants using
virtualization technologies.
BRIEF DESCRIPTION OF THE DRAWINGS
[0007] In order that the advantages of the invention will be
readily understood, a more particular description of the invention
briefly described above will be rendered by reference to specific
embodiments illustrated in the appended drawings. Understanding
that these drawings depict only typical embodiments of the
invention and are not therefore to be considered limiting of its
scope, the invention will be described and explained with
additional specificity and detail through use of the accompanying
drawings, in which:
[0008] FIG. 1 is a schematic block diagram of a network environment
suitable for implementing embodiments of the invention;
[0009] FIG. 2 is a schematic block diagram of an example computing
device suitable for implementing methods in accordance with
embodiments of the invention;
[0010] FIG. 3 is a process flow diagram of a method for scanning a
space in accordance with an embodiment of the invention;
[0011] FIG. 4 is a process flow diagram of a method for conducting
a virtual conference in accordance with an embodiment of the
present invention;
[0012] FIGS. 5A and 5B are diagrams illustrating remote spaces
conducting a virtual conference in accordance with an embodiment of
the present invention;
[0013] FIG. 6 is a process flow diagram of a method for interacting
with objects in a virtual conference in accordance with an
embodiment of the present invention; and
[0014] FIGS. 7A and 7B are diagrams illustrating representations of
an object in a virtual conference in accordance with an embodiment
of the present invention.
DETAILED DESCRIPTION
[0015] It will be readily understood that the components of the
present invention, as generally described and illustrated in the
Figures herein, could be arranged and designed in a wide variety of
different configurations. Thus, the following more detailed
description of the embodiments of the invention, as represented in
the Figures, is not intended to limit the scope of the invention,
as claimed, but is merely representative of certain examples of
presently contemplated embodiments in accordance with the
invention. The presently described embodiments will be best
understood by reference to the drawings, wherein like parts are
designated by like numerals throughout.
[0016] Embodiments in accordance with the present invention may be
embodied as an apparatus, method, or computer program product.
Accordingly, the present invention may take the form of an entirely
hardware embodiment, an entirely software embodiment (including
firmware, resident software, micro-code, etc.), or an embodiment
combining software and hardware aspects that may all generally be
referred to herein as a "module" or "system." Furthermore, the
present invention may take the form of a computer program product
embodied in any tangible medium of expression having
computer-usable program code embodied in the medium.
[0017] Any combination of one or more computer-usable or
computer-readable media may be utilized. For example, a
computer-readable medium may include one or more of a portable
computer diskette, a hard disk, a random access memory (RAM)
device, a read-only memory (ROM) device, an erasable programmable
read-only memory (EPROM or Flash memory) device, a portable compact
disc read-only memory (CDROM), an optical storage device, and a
magnetic storage device. In selected embodiments, a
computer-readable medium may comprise any non-transitory medium
that can contain, store, communicate, propagate, or transport the
program for use by or in connection with the instruction execution
system, apparatus, or device.
[0018] Computer program code for carrying out operations of the
present invention may be written in any combination of one or more
programming languages, including an object-oriented programming
language such as Java, Smalltalk, C++, or the like and conventional
procedural programming languages, such as the "C" programming
language or similar programming languages. The program code may
execute entirely on a computer system as a stand-alone software
package, on a stand-alone hardware unit, partly on a remote
computer spaced some distance from the computer, or entirely on a
remote computer or server. In the latter scenario, the remote
computer may be connected to the computer through any type of
network, including a local area network (LAN) or a wide area
network (WAN), or the connection may be made to an external
computer (for example, through the Internet using an Internet
Service Provider).
[0019] The present invention is described below with reference to
flowchart illustrations and/or block diagrams of methods, apparatus
(systems) and computer program products according to embodiments of
the invention. It will be understood that each block of the
flowchart illustrations and/or block diagrams, and combinations of
blocks in the flowchart illustrations and/or block diagrams, can be
implemented by computer program instructions or code. These
computer program instructions may be provided to a processor of a
general purpose computer, special purpose computer, or other
programmable data processing apparatus to produce a machine, such
that the instructions, which execute via the processor of the
computer or other programmable data processing apparatus, create
means for implementing the functions/acts specified in the
flowchart and/or block diagram block or blocks.
[0020] These computer program instructions may also be stored in a
non-transitory computer-readable medium that can direct a computer
or other programmable data processing apparatus to function in a
particular manner, such that the instructions stored in the
computer-readable medium produce an article of manufacture
including instruction means which implement the function/act
specified in the flowchart and/or block diagram block or
blocks.
[0021] The computer program instructions may also be loaded onto a
computer or other programmable data processing apparatus to cause a
series of operational steps to be performed on the computer or
other programmable apparatus to produce a computer implemented
process such that the instructions which execute on the computer or
other programmable apparatus provide processes for implementing the
functions/acts specified in the flowchart and/or block diagram
block or blocks.
[0022] Referring to FIG. 1, a network environment 100 may be used
to implement methods as described herein. The environment 100 may
include a server system 102 associated with one or both parties of
a virtual conference. For example, all parties of a virtual
conference as described herein may communicate with the server
system 102. Alternatively, separate server systems 102 may be
remote from one another with each party of the virtual conference
communicating through a separate server system 102, the separate
server systems 102 communicating with one another by means of a
network 104. The network 104 may be a local area network (LAN),
wide area network (WAN), the Internet, or any other type of
network.
[0023] The methods disclosed herein provide large amounts of
computing resources, accordingly the server system 102 preferably
has multiple processors and networking bandwidth sufficient to
receive, transmit, and process the virtual conferencing data
according to the methods disclosed herein.
[0024] Each space participating in a virtual conference may include
a set of virtualization devices 106 for facilitating sensing of the
each space for virtualization elsewhere and for virtualizing a
remote space in the each space. For example, the virtualization
devices 106 may include a three-dimensional (3D) scanner 108a. The
3D scanner 108a may advantageously be a laser scanner capable of
performing a 360-degree scan of a space. For example, the 3D
scanner 108a may be embodied as the FARO FOCUS 3D laser scanner or
other type of laser scanner.
[0025] The virtualization devices 106 may further include partial
scanners 108b. The partial scanners 108b may have a smaller field
of view than the 3D scanner 108a but provide faster processing
times to obtain a 3D model using captured data. For example, the
partial scanners 108b may be optical scanners. In some embodiments,
multiple partial scanners 108b are used such that the combined
fields of view of the partial scanners 108b are equal to all or
substantially all (e.g., 90%) of the field of view of the 3D
scanner. In some embodiments, the partial scanners 108b are
embodied as the FARO FREESTYLE3D SCANNER or some other optical 3D
scanner known in the art.
[0026] The virtualization devices 106 may include one or more video
cameras 108c. The video cameras 108c may be positioned and oriented
to capture images of the same local region as the 3D scanner 108a
and partial scanners 108b. The images captured by the cameras 108c
may then be mapped to three-dimensional point clouds measured using
the scanners 108a, 108b to generate a three-dimensional model of
the local region that overlays image date over the point cloud
thereby providing a visually authentic representation of the local
region. The manner in which the three-dimensional point clouds and
image data is combined may be performed according to any method
known in the art.
[0027] The virtualization devices 106 may include audio devices
108d, including a microphone for detecting sound in the local
region and speakers for playing back sounds recorded in a remote
region.
[0028] The virtualization devices 106 may include haptic devices
108e, including a haptic feedback device, such as a glove that is
capable of one or both of detecting contact of an object with the
glove and simulating contact with the glove. The haptic devices
108e may include any haptic glove or other haptic feedback device
known in the art.
[0029] The virtualization devices 106 may include gustatory devices
108f, including one or both of a device for detecting chemicals in
the local region and a device for simulating the taste of chemicals
in the local region. For example, the gustatory devices 108f may
include the DIGITAL LOLLIPOP device.
[0030] The virtualization devices 106 may include olfactory devices
108g, including one or both of a device for detecting smells in the
local region and a device for simulating smells in the local
region. The olfactory devices 108g may include any devices for
detecting or simulating smells known in the art.
[0031] A virtual reality headset 110 may also be coupled to the
server system 102. The headset 110 may include any virtual reality
headset known in the art such as the OCCULUS RIFT, MICROSOFT
HOLOLENS, ZEISS VR ONE, GOGGLE CARDBOARD, and the like. The virtual
reality headset 110 may include a locator module 112a including any
location mechanism known in the art to determine the location and
orientation of the headset 110 in the local region. For example,
the headset 110 may include a GPS receiver, compass, accelerometer,
or other device enabling the headset 110 to detect its position and
orientation and/or changes in its position and orientation. The
headset 110 may also have one or more optically-recognizable
targets affixed thereto that enable determination of the position
and orientation of the headset 110 using one or more cameras (e.g.
images captured using video cameras 108c). The position and
orientation (hereinafter "viewpoint") of the headset 110 may be
transmitted to the server system 102, which will then render images
of a model according to the user's viewpoint in the local
region.
[0032] The headset 110 may further include a display module 112b.
As known in the art, a virtual reality headset 110 presents two
images of a scene from two different viewpoints, e.g. from a left
eye and a right eye. These two images are presented simultaneously
to the right and left eye, which the brain will then interpret as
viewing of a three-dimensional scene. Accordingly, the display
module 112b may receive a stream of image pairs and display each
pair of images to the wearer of the headset 110. The image pairs
may be received from the server system 102. Alternatively, the
server system 102 may transmit a model to the headset 110, which
then determines the headset's position and orientation and renders
the two images based on the model.
[0033] The server system 102 may execute or access a virtual
conference engine 114. The virtual conference engine 114 may
include a model module 116a programmed to periodically receive
point clouds from one or both of the 3D scanner 108a and partial
scanner 108b and from the video camera 108c. The model module 116a
then combines these to generate a model of the local region that
simulates both the 3D shape of objects in the local region as well
as their visual appearance (e.g. color). As described in greater
detail below, the partial scanners 108b may provide scans more
often than the 3D scanner 108a and the outputs of the partial scans
may be used to update a model created using a point cloud from the
3D scanner 108a.
[0034] The virtual conference engine 114 may include a mapping
module 116b. The mapping module 116b maps at least one of a point
and two or more dimensions in the local region to a point and one
or more dimensions in a remote region. In particular, the model
created by the model module 116a may define a local coordinate
space. The mapping module 116b maps this local coordinate space to
a remote coordinate space of a model generated of the remote
region. The mapping may be accomplished by relating a single point
in the local coordinate space to a single point in the remote
coordinate space. The mapping may further include mapping two
dimensions (e.g. vertical and horizontal) in the local coordinate
space to corresponding dimensions in the remote coordinate space.
In this manner, each point in the local coordinate space may then
be related to or translated to a position in the remove coordinate
space and vice-versa.
[0035] The reference point may be specified by users of the system,
e.g. by placing an optically recognizable target or a target having
a recognizable 3D shape that is detected automatically in the model
of the local region. The reference point may be specified manually
by a user selection using a pointing device of a point in the model
of the local region. The reference point may be automatically
selected by analyzing the model of the region, e.g. a corner where
the floor and two walls meet may be selected automatically as the
reference point. The manner in which the reference point of the
remote region is selected may be performed in the same manner as
for the local region.
[0036] The virtual conference engine 114 may include a filtering
module 116c. In some embodiments, the model generated by the model
module 116a may be processed to remove objects that are not
relevant. For example, walls, floors, and ceilings may be removed
from the model to obtain a filtered model. The filtered model may
then be transmitted to the remote region for display, thereby
reducing the amount of data required to be transmitted. In some
embodiments, the filtering module 116c may be programmed to receive
user selection of objects and remove the selected objects from the
model.
[0037] The virtual conference engine 114 may include a viewpoint
module 116d. The viewpoint module 116d determines and current
viewpoint of the headset 110 and relates this viewpoint to the
model. Specifically, the location and orientation of the headset
110 as determined using the locator module 112a is mapped by the
viewpoint module 116d to a position and orientation within the
local coordinate space. Using the mapping module 116b, the position
and orientation of the headset 110 is also determined with respect
to the remote coordinate space.
[0038] The virtual conference engine 114 may include a rendering
module 116e. The rendering module 116e generates image pairs for
display in the headset 110. The image pairs are images of the model
viewed from the point of view determined by the viewpoint module
116e. The rendering module 116e may incorporate people and objects
from a model of one or more remote regions into the model prior to
rendering as discussed in greater detail below with respect to
FIGS. 3, 4, 5A and 5B.
[0039] The virtual conference engine 114 may include an interaction
module 116f. The interaction module 116f receives inputs from users
in the local and remote regions. The inputs may be received by
detecting movements of the user's hands, an input device (mouse,
keyboard), motion sensing system (e.g. MICROSOFT KINECT), or other
input device. In response to interactions, actions may be invoked,
such as the manipulation of virtualized real objects (objects that
are present in one of the local and remote regions but represented
as a virtual object in the another region) or purely virtual
objects that are not present in any region. The function of the
interaction module 116f is described in greater detail below with
respect to FIGS. 6, 7A, and 7B.
[0040] FIG. 2 is a block diagram illustrating an example computing
device 200. Computing device 200 may be used to perform various
procedures, such as those discussed herein. The server system 102,
virtualization devices 106, and headset 110 may have some or all of
the attributes of the computing device 200. Computing device 200
can function as a server, a client, or any other computing entity.
Computing device can perform various monitoring functions as
discussed herein, and can execute one or more application programs,
such as the application programs described herein. Computing device
200 can be any of a wide variety of computing devices, such as a
desktop computer, a notebook computer, a server computer, a
handheld computer, a tablet computer and the like. A server system
102 may include one or more computing devices 200 each including
one or more processors.
[0041] Computing device 200 includes one or more processor(s) 202,
one or more memory device(s) 204, one or more interface(s) 206, one
or more mass storage device(s) 208, one or more Input/Output (I/O)
device(s) 210, and a display device 230 all of which are coupled to
a bus 212. Processor(s) 202 include one or more processors or
controllers that execute instructions stored in memory device(s)
204 and/or mass storage device(s) 208. Processor(s) 202 may also
include various types of computer-readable media, such as cache
memory.
[0042] Memory device(s) 204 include various computer-readable
media, such as volatile memory (e.g., random access memory (RAM)
214) and/or nonvolatile memory (e.g., read-only memory (ROM) 216).
Memory device(s) 204 may also include rewritable ROM, such as Flash
memory.
[0043] Mass storage device(s) 208 include various computer readable
media, such as magnetic tapes, magnetic disks, optical disks,
solid-state memory (e.g., Flash memory), and so forth. As shown in
FIG. 2, a particular mass storage device is a hard disk drive 224.
Various drives may also be included in mass storage device(s) 208
to enable reading from and/or writing to the various computer
readable media. Mass storage device(s) 208 include removable media
226 and/or non-removable media.
[0044] I/O device(s) 210 include various devices that allow data
and/or other information to be input to or retrieved from computing
device 200. Example I/O device(s) 210 include cursor control
devices, keyboards, keypads, microphones, monitors or other display
devices, speakers, printers, network interface cards, modems,
lenses, CCDs or other image capture devices, and the like.
[0045] Display device 230 includes any type of device capable of
displaying information to one or more users of computing device
200. Examples of display device 230 include a monitor, display
terminal, video projection device, and the like.
[0046] Interface(s) 206 include various interfaces that allow
computing device 200 to interact with other systems, devices, or
computing environments. Example interface(s) 206 include any number
of different network interfaces 220, such as interfaces to local
area networks (LANs), wide area networks (WANs), wireless networks,
and the Internet. Other interface(s) include user interface 218 and
peripheral device interface 222. The interface(s) 206 may also
include one or more peripheral interfaces such as interfaces for
printers, pointing devices (mice, track pad, etc.), keyboards, and
the like.
[0047] Bus 212 allows processor(s) 202, memory device(s) 204,
interface(s) 206, mass storage device(s) 208, I/O device(s) 210,
and display device 230 to communicate with one another, as well as
other devices or components coupled to bus 212. Bus 212 represents
one or more of several types of bus structures, such as a system
bus, PCI bus, IEEE 1394 bus, USB bus, and so forth.
[0048] For purposes of illustration, programs and other executable
program components are shown herein as discrete blocks, although it
is understood that such programs and components may reside at
various times in different storage components of computing device
200, and are executed by processor(s) 202. Alternatively, the
systems and procedures described herein can be implemented in
hardware, or a combination of hardware, software, and/or firmware.
For example, one or more application specific integrated circuits
(ASICs) can be programmed to carry out one or more of the systems
and procedures described herein.
[0049] Referring to FIG. 3, the illustrated method 300 may be
executed by the server system 102. The method 300 may include
performing 302 a full 3D scan with the 3D scanner 108a. Although
the scanner 108a is referenced throughout in the singular, in some
embodiments the full 3D scan of step 302 may be performed by
multiple scanners 108a. Accordingly, references herein to the
scanner 108a may be interpreted as including one scanner 108a or
multiple scanners 108a.
[0050] Performing a full scan may include scanning a complete field
of view of the 3D scanner 108a although this may not include an
entire room or local region in which the 3D scanner 108a is
located. The result of the scan 302 may be a point cloud received
by the server system 102 from the scanner 108a, including a set of
three-dimensional coordinates measured using the scanner 108a. The
coordinates may be defined with respect to a scanner coordinate
space and may be retained in that coordinate space or transformed
to a different coordinate space.
[0051] The method 300 may further include performing an image scan
304, i.e. taking one or more images of the local region using one
or more cameras 108c. The fields of view of the one or more cameras
108c preferably overlap substantially all (e.g. 90%) of the field
of view of the scanner 108a.
[0052] The method 300 may include generating a model 306 using the
full scan of step 302 and the image scan 304. As noted above, this
may include wrapping or overlaying the images of step 304 over the
point cloud obtained from step 302 in order to obtain a model that
has both the three-dimensional attributes of the point cloud and
the visual attributes (e.g. color) of the images. The manner in
which the point cloud and images are combined may be performed
using any method known in the art.
[0053] The method 300 may further include periodically performing
308 partial scans and updating 310 the model from step 306
according to the partial scans. Performing 308 the partial scans
may include performing partial scans using the partial scanners
108b. The partial scanners 108b may be optical scanners or may
output a point cloud that can be combined with image data to create
a model. In such embodiments, performing 308 partial scans may
include taking one or more pictures of the field of view of the
partial scanners 108b and combining them to create the partial
model. The partial scans may be performed 310 periodically
according to a predetermined rate or may be performed in response
to sensing of motion in the field of view of the partial scanner
108b, such as using a motion sensor coupled to the partial scanner
108b or server system 102.
[0054] The result of the partial scan 308 is a partial model in a
partial coordinate space of the partial scanner 108b. This partial
model may be transformed to the coordinate space of the full model
and added to the full model 306. For example, a partial scanner
108b may have a volume of the local region in its field of view.
Accordingly, the full model may be updated 310 by replacing the
portion of the full model corresponding to this volume with the
partial model.
[0055] The mapping of the partial coordinate space to the scanner
coordinate space may be performed based on prior calibration of the
partial scanner 108b and 3D scanner 108a. Specifically, a target or
other object may be placed in the local region and detected using
both scanners 108a, 108b. By transforming the location of the
object in the partial coordinate space to the location of the
object in the scanner coordinate space, the transformation required
to map one coordinate space to the other may be determined.
[0056] Steps 308, 310 may be repeated periodically throughout a
virtual conference. In some embodiments, full scans using the 3D
scanner 108 may also be performed periodically but at a slower rate
than the partial scans.
[0057] Referring to FIG. 4, the illustrated method 400 may be
executed by a server system 102 to conduct a virtual conference.
The method 400 may represent the functionality with respect to one
location participating in a conference. A remote location
participating may execute the method 400 simultaneously either
using the same server system 102 or a separate server system
102.
[0058] The method 400 may include defining reference points 402.
This may include receiving or selecting a point in the local region
and receiving points from one or more remote regions. The reference
points may be defined as three-dimensional coordinates. The
reference point for the local region may be a point in the scanner
coordinate space and the reference points received from remote
regions may be coordinates in scanner coordinate spaces of scanners
located in the remote regions.
[0059] The method 400 may further include generating 404 a local
model of the local space, this may include executing the method 300
of FIG. 3 to obtain a full model or an updated full model using
partial scans. The local model may also be filtered 406. As noted
above, this may include removing walls, floors, ceilings, and other
mundane objects that are not relevant to the conference. The
objects removed from the local model may be selected manually or
identified automatically. For example, flours, walls, and ceilings
may be identified by the server system based on their flat shape
and large extent relative to the local region.
[0060] The filtered model may then be transmitted 408 to a remote
region for display to participants in the remote region. The server
system 102 may likewise receive 410 a remote model from the remote
region, the remote model being a model or filtered model generated
with respect to the remote region in the same manner as the
filtered model of steps 404 or 406. The models transmitted and
received at steps 408, 410 may be partial models, i.e. only
portions of the models that have changed relative to a previously
transmitted model. In this manner, latency may be reduced.
[0061] The method 400 may include mapping 412 the remote model to
the filtered model using the reference points. In particular using
the local reference point and remote reference point, a
transformation required to transform the remote reference point to
the local reference point is determined. This transformation is
then applied to the remote model to map 412 it to the scanner
coordinate space of the local region. The transformed remote model
and filtered model are then combined to obtain a combined
model.
[0062] The method 400 may further include detecting 414 the
viewpoint of one or more users in the local region. This may
include detecting the viewpoint of one or more headsets 110 in the
local region as discussed above. The combined remote and filtered
model from step 412 is then rendered 416 for the users in the local
region according to the viewpoints detected at step 414. In
particular, for each headset 110, the viewpoint thereof is
transformed to the scanner coordinate space and a pair of images of
the combined model from that viewpoint in scanner coordinate space
is rendered. The pair of images rendered from slightly different
viewpoints corresponding to a viewer's right and left eyes. This
pair of images is then sent to the headset 110 and displayed by the
headset 110.
[0063] The method 400 may be repeated throughout the conference.
During execution of the method 400, sounds detected in the local
region may be transmitted to the remote region and vice-versa.
[0064] FIG. 5A illustrates a local region with equipment and user's
present and FIG. 5B illustrates a remote region. As is apparent,
the scanners 108a, 108b are arranged in the room to scan some or
all of the room. Although the local region is an enclosed space in
this example, open outdoor spaces or large indoor spaces exceeding
the range if other scanners 108a, 108b may also be used.
Accordingly, the local region may simply be defined as the space
that is scanned by both types of scanners 108a, 108b.
[0065] The video camera 108c may be located in the region. As noted
above, the video camera 108c may include multiple cameras. Multiple
video cameras 108c may be arranged around the local region in order
to capture substantially all of the fields of view of the scanner
108a and scanners 108b. In the illustrated embodiment, the video
camera 108c is a 360-degree camera mounted in an elevated position
within the region.
[0066] The walls 500 and floor 502 of the local region may be in
the field of view of some or all of the scanners 108a, 108b but
removed from any model transmitted for display in the remote
region.
[0067] Users 504 are located within the local region and wear
headsets 110. Users 506 are located in one or more remote regions
and the dotted representations thereof shown in FIG. 5A indicate
the location of virtual images of the users 506 that will be
displayed in the headsets 110 of the users 504. In particular,
virtual images of the users 506 will be part of the remote model
received and combined with the filtered model.
[0068] Objects 508 may be located in the local region and be
scanned and virtual models thereof transmitted to the remote
region. Likewise, objects 510 in the remote region may be scanned
and included in the remote model. Virtual representations of the
objects 510 will therefore be rendered in the headsets 110 of the
users when located within the field of view thereof as determined
based on the viewpoint of the headsets 110.
[0069] As shown in FIG. 5B, the users 504 are represented as
virtual objects in a combined model by headsets 110 worn by users
506 in the remote region. Likewise, the object 510 is a real object
in the remote region whereas the object 508 is now represented as a
virtual object in the remote region.
[0070] Referring to FIG. 6 and FIGS. 7A and 7B, the illustrated
method 600 may be executed by the server system 102 to facilitate
interaction among remote participants in a conference. The method
600 may include scanning 602 an object in the remote region and
rendering 604 a virtual object in the local region using data
(point cloud and image data). Scanning 602 and rendering 604 may be
performed as part of executing the method 400 of FIG. 4.
[0071] The method 400 may further include receiving 606 interaction
with the virtual object. For example, motion of a user's hand in
proximity to the virtual object (e.g. using MICROSOFT KINECT
sensors), inputs to a keyboard, movement of a pointing device, or
other interactions referencing the virtual object may be detected.
In response to the received 606 interactions, the virtual object
may be modified 608. For example, an interaction may include a user
transferring a virtual representation of a part into proximity to a
machine (the virtual object). The virtual object may then be
modified by adding the part to the machine in a position and
orientation instructed by the user, i.e. according to user
movements of the virtual representation of the part.
[0072] The virtual object as modified may be transmitted 610 to the
remote region and rendered such that the modifications to the
virtual object are superimposed 612 on the real object in the
remote region, i.e. a user viewing the real object through a
headset 110 will view the modifications to the virtual object
superimposed on the real object in the images presented to the
user.
[0073] The method 600 may be used to implement the following use
case. A first person (Bob) in the local region may be viewing a
machine in the remote region and a part to the machine in the
remote region in the hand of a second person (Sue). Bob can reach
out to the holographic image of the part in Sue's hand. Bob could
invoke copying of the part and thereby create a holographic image
of the part "held" in Bob's hand and rendered in both the local and
remote regions. Bob may then invoke movement of the holographic
copy of the part to the virtual representation of the machine and
place it on the representation. Accordingly, Sue will see the real
machine in the remote region and the holographic image of the part
on the machine as well as the real part still in her hand. Sue can
now either manipulate the holographic image or the real part in her
hand, both of of which can still be seen by Bob as virtual
objects.
[0074] In addition to interactions with real objects, interactions
may be received with respect to virtual objects that are not
present in either the local or remote regions. For example, a user
may invoke display of a virtual object stored in a storage device,
where the virtual object is a result of a previous scanning of a
real object or a purely computerized model. Interaction and
modification with subsequent display of the modified object may
then be performed in the same manner as described above with
respect to the method 600 of FIG. 6.
[0075] Referring Specifically to FIGS. 7A and 7B, a real object 700
is scanned in the remote region and rendered in the local region as
virtual object 704. Interactions are received in the local region
that instruct the server system to add virtual modification 704 to
the virtual object 704. The virtual modification 704 is transmitted
to the remote region and rendered in the remote region superimposed
on the real object 700 in the same relation to the real object 700
as the virtual modification 704 has to the virtual object 702 in
the local region.
[0076] The systems and methods disclosed herein enable multiple
beneficial uses such as: [0077] Conducting product reviews of
merchandise without having to be physically present [0078] Viewing
variations of physical products (modify size, shape, color, etc.)
[0079] Collectively working on projects with objects even though
not present [0080] Conducting training to demonstrate and simulate
behaviors and actions [0081] Preventing the spread of colds or
sickness but yet be present [0082] Conducting simulations without
the risk of injury with the use of 3D animation [0083] Conducting
gaming with unreal characters
[0084] The systems and methods disclosed herein further enable the
implementation of digital holographic assistive agents (HAA) that
could interact with human participants in the conference. The HAA
could then help the conference participants bring in new human
participants or engage available technology capabilities or reports
into active conferences. The HAA could be humanoid or some other
avatar that would represent an artificially intelligent program
execution or data retrieval agent.
[0085] In some uses, an area or object of special interest in
either region could be given a centralized focus. A participant
perspective would provide the ability to "zoom in" or walk around a
scanned or virtual object. Image enhancement would allow the
resolution to be increased or decreased by changing proximity. For
example a viewer could walk around to the back, move closer, zoom
in to read a small label, examine texture or other detailed
features. Alternatively an audience perspective could move the
object on stage with viewers appearing to remain stationary, like a
car on a turnstile stage. Virtual whiteboards could be added
allowing virtual writing or drawing. Supplemental, information,
effects, objects, video, news headlines or various backdrops can be
virtually added to facilitate collaboration, enhance presentation
effectiveness or increase artistic value.
[0086] The present invention may be embodied in other specific
forms without departing from its spirit or essential
characteristics. The described embodiments are to be considered in
all respects only as illustrative, and not restrictive. The scope
of the invention is, therefore, indicated by the appended claims,
rather than by the foregoing description. All changes which come
within the meaning and range of equivalency of the claims are to be
embraced within their scope.
* * * * *