Many computing systems include at least one display and at least one input device, such as a mouse, a keyboard, a touchpad, or the like. Many computing systems are also connected to local or global networks such as the Internet, allowing users to communicate and collaborate on design, development, and other types of projects.
The following detailed description references the drawings, wherein:
Examples described herein may allow users of computing systems communicatively connected through a network to collaborate on projects such as projects involving designing an image to be applied to a three-dimensional object.
Examples described herein may include a computing system that may include a movable surface and a model acquisition engine to acquire three-dimensional model data representing a first object disposed on the movable surface. The computing system may also include a communication engine to send the model data to another computing system and to receive from the other computing system manipulation data associated with the model data. The computing system may further include a movement and projection engine to move the movable surface in accordance with the received manipulation data.
Referring now to the drawings,
Computing device 150 may comprise any suitable computing device complying with the principles disclosed herein. As used herein, a “computing device” may comprise an electronic display device, a smartphone, a tablet, a chip set, an all-in-one computer (e.g., a device comprising a display device that also houses processing resource(s) of the computer), a desktop computer, a notebook computer, workstation, server, any other processing device or equipment, or a combination thereof. In this example, device 150 is an all-in-one computer having a central axis or center line 155, first or top side 150A, a second or bottom side 150B axially opposite the top side 150A, a front side 150C extending axially between sides 150A and 150B, a rear side 150D also extending axially between sides 150A and 150B and generally radially opposite front side 150C. A display 152 is disposed along front side 150C and defines a viewing surface of computing system 100 to display images for viewing by a user of system 100. In examples described herein, a display may include components of any technology suitable for displaying images, video, or the like.
In some examples, display 152 may be a touch-sensitive display. In examples described herein, a touch-sensitive display may include, for example, any suitable technology (e.g., components) for displaying images, video, or the like, and may include any suitable technology (e.g., components) for detecting physical contact (e.g., touch input), such as, for example, a resistive, capacitive, surface acoustic wave, infrared (IR), strain gauge, optical imaging, acoustic pulse recognition, dispersive signal sensing, or in-cell system, or the like. In examples described herein, display 152 may be referred to as a touch-sensitive display 152. Device 150 may further include a camera 154, which may be a web camera, for example. In some examples, camera 154 may capture images of a user positioned in front of display 152. In some examples, device 150 may also include a microphone or other device to receive sound input (e.g., voice input from a user).
In the example of
Upright member 140 includes a first or upper end 140A, a second or lower end 140B opposite the upper end 140A, a first or front, side 140C extending between the ends 140A and 140B, and a second or rear side 140D opposite the front side 140C and also extending between the ends 140A and 140B. Lower end 140B of member 140 is coupled to rear end 120E of base 120, such that member 140 extends substantially upward from support surface 15.
Top 160 includes a first or proximate end 160A, a second or distal end 160B opposite the proximate end 160A, a top surface 160C extending between ends 160A and 160B, and a bottom surface 160D opposite the top surface 160C and also extending between ends 160A and 160B. Proximate end 160A of top 160 is coupled to upper end 140A of upright member 140 such that distal end 160B extends outward from upper end 140A of upright member 140. As such, in the example shown in
Surface 200 may include a central axis or centerline 205, a first or front side 200A, and a second or rear side 200B axially opposite the front side 200A. In some examples, surface 200 may be a touch-sensitive surface and may comprise any suitable technology for detecting physical contact with surface 200 as touch input. For example, surface 200 may comprise any suitable technology for detecting (and in some examples tracking) one or multiple touch inputs by a user to enable the user to interact, via such touch input, with software being executed by device 150 or another computing device, in examples described herein, surface 200 may be any suitable touch-sensitive planar (or substantially planar) object, such as a touch-sensitive mat, tabletop, sheet, etc. In some examples, surface 200 may be disposed horizontally (or approximately or substantially horizontally). For example, surface 200 may be disposed on support surface 15, which may be horizontal (or approximately or substantially horizontal).
As described above, surface 200 may be aligned with base 120 of structure 110 to assist with proper alignment of surface 200 (e.g., at least during operation of system 100). In the example of
In some examples, surface 200 and device 150 may be communicatively connected (e.g., electrically coupled) to one another such that user inputs received by surface 200 may be communicated to device 150. Surface 200 and device 150 may communicate with one another via any suitable wired or wireless communication technology or mechanism, such as, for example, BLUETOOTH, ultrasonic technology, electrical cables, electrical leads, electrical conductors, electrical spring-loaded pogo pins with magnetic holding force, or the like, or a combination thereof. In the example of
Movable surface 210 may be any type of a surface that can move (e.g., rotate, pivot, shift, and the like) in response to electrical or wireless signals. For example, in some implementations, movable surface 210 may be a turntable that may be rotatable around a central axis of rotation clockwise and/or counterclockwise. For example, as shown in
As mentioned above, movable surface 210 and computing device 150 may be communicatively connected and movable surface 210 may receive signals from computing device 150. In some examples, movable surface 210 may connected to and receive signals from computing device 150 through a cable. In other examples, movable surface 210 may include a wireless receiver or transceiver to wirelessly communicate with and receive signals from computing device 150 using, for example, WI-FI, BLUETOOTH, infrared, or any other suitable technology. In some examples, movable surface 210 may include a motor (not shown for brevity) which may be controlled by computing device 150. For example, movable surface 210 may be configured to receive from computing device 150 a signal and, based on the signal, rotate clockwise or counterclockwise by a fixed angle or degree. In some examples, as discussed below, an object 40 may be placed or disposed on movable surface 210, in which case object 40 may be moved (e.g., rotated) together with movable surface 210 (e.g., together with movable top portion 210A). Thus, in some examples, computing device 150 may cause the movement (e.g., rotation) of object 40 by sending a corresponding signal to movable surface 210 and causing movable surface to move (e.g., rotate). Object 40 may be, for example, a mug, a smartphone, a book, a document, a photo, or any other physical object.
As shown in
Referring to
Referring to
Referring again to
Referring still to
Sensor bundle 164 includes at least one sensor (e.g., camera, or other type of sensor) to detect, measure, or otherwise acquire data based on the state of (e.g., activities occurring in) a region between sensor bundle 164 and movable surface 210. The state of the region between sensor bundle 164 and movable surface 210 may include object(s) on and/or over movable surface 210, or activities occurring on and/or near movable surface 210. In the example of
In some examples, RGB camera 164A may be a camera to capture color images (e.g., at least one of still images and video). In some examples, RGB camera 164A may be a camera to capture images according to the RGB color model, which may be referred to herein as “RGB images”. It is appreciated, however, that in other examples, RGB camera 164A may be a camera to capture image according to other color models, such as YUV, YCbCr, RAW, and so forth. In some examples, RGB camera 164A may capture images with relatively high resolution, such as a resolution on the order of multiple megapixels (MPs), for example. As an example, RGB camera 164A may capture color (e.g., RGB) images with a resolution of 14 MPs. In other examples, RBG camera 164A may capture images with a different resolution. In some examples, RGB camera 164A may be pointed toward movable surface 210 and may capture image(s) of movable surface 210, object(s) disposed on movable surface 210, or a combination thereof.
IR camera 164B may be a camera to detect intensity of IR light at a plurality of points in the field of view of the camera 164B. In examples described herein. IR camera 164B may operate in conjunction with an IR light projector 166 (see
Depth camera 164C may be a camera (sensor(s), etc) to detect the respective distance(s) (or depth(s)) of portions of object(s) in the field of view of depth camera 164C. As used herein, the data detected by a depth camera may be referred to herein as “distance” or “depth” data, in examples described herein, depth camera 164C may capture a multi-pixel depth image (e.g., a depth map), wherein the data of each pixel represents the distance or depth (measured from camera 164C) of a portion of an object at a point represented by the pixel. Depth camera 164C may be implemented using any suitable technology, such as stereovision camera(s), a single IR camera sensor with a uniform flood of IR light, a dual IR camera sensor with a uniform flood of IR light, structured light depth sensor technology, time-of-flight (TOF) depth sensor technology, or a combination thereof. In some examples, depth sensor 164C may indicate when an object (e.g., a three-dimensional object) is on movable surface 210. In some examples, depth sensor 164C may detect at least one of the presence, shape, contours, motion, and the respective distance(s) of an object (or portions thereof) placed on movable surface 210.
Ambient light sensor 164D may be arranged to measure the intensity of light in the environment surrounding system 100, in some examples, system 100 may use the measurements of sensor 164D to adjust other components of system 100, such as, for example, exposure settings of sensors or cameras of system 100 (e.g., cameras 164A-164C), the intensity of the light emitted from light sources of system 100 (e.g., projector assembly 184, display 152, etc.), or the like.
In some examples, sensor bundle 164 may omit at least one of sensors 164A-164C. In other examples, sensor bundle 164 may comprise other camera(s), sensor(s), or the like in addition to sensors 164A-164C, or in lieu of at least one of sensors 164A-164D. For example, sensor bundle 164 may include a user interface sensor comprising any suitable device(s) (e.g., sensor(s), camera(s)) for tracking a user input device such as, for example, a hand, stylus, pointing device, etc. In some examples, the user interface sensor may include a pair of cameras which are arranged to stereoscopically track the location of a user input device (e.g., a stylus) or an object placed on movable surface 210. In other examples, the user interface sensor may additionally or alternatively include IR camera(s) or sensor(s) arranged to detect infrared light that is either emitted or reflected by a user input device. In some examples, sensor bundle 164 may include a gesture camera to detect the performance of predefined gestures by object(s) (e.g., hands, etc.). In some examples, the gesture camera may comprise a depth camera and additional functionality to detect, track, etc., different types of motion over time.
In examples described herein, each of sensors 164A-164C of bundle 164 is communicatively connected (e.g., coupled) to device 150 such that data generated within bundle 164 (e.g., images captured by the cameras) may be provided to device 150, and device 150 may provide commands to the sensor(s) and camera(s) of sensor bundle 164. Sensors 164A-164D of bundle 164 may be communicatively connected to device 150 via any suitable wired or wireless communication technology or mechanism, examples of which are described above. In the example of
Referring to
In some examples, cameras of sensor bundle 164 (e.g., cameras 164A-164C) are arranged within system 100 such that the field of view of each of the cameras includes a space 168 of surface 200 that may overlap with some or all of display space 188, or may be coterminous with display space 188. In examples described herein, the field of view of the cameras of sensor bundle 164 (e.g., cameras 164A-164C) may be said to include space 168, though at times surface 200 may be at least partially occluded by object(s) on or over surface 200 or movable surface 210, such as object 40. In such examples, the object(s) on or over surface 200 or movable surface 210 may be in the field of view of at least one of cameras 164A-164C. In such examples, sensors of sensor bundle 164 may acquire data based on the state of (e.g., activities occurring in, object(s) disposed in) a region between sensor bundle 164 and space 168 of surface 200. In some examples, both space 188 and space 168 coincide or correspond with movable surface 210 such that functionalities of movable surface 210, projector assembly 184, and sensor bundle 164 are all performed in relation to the same defined area. In some examples, each of the cameras of sensor bundle 164 (e.g., cameras 164A-164C) may have a slightly different field of view.
Referring now to
Computing device 150 (or any other computing device implementing engines 170, 172, and 174) may include at least one processing resource. In examples described herein, a processing resource may include, for example, one processor or multiple processors included in a single computing device or distributed across multiple computing devices. As used herein, a “processor” may be at least one of a central processing unit (CPU), a semiconductor-based microprocessor, a graphics processing unit (GPU), a field-programmable gate array (FPGA) configured to retrieve and execute instructions, other electronic circuitry suitable for the retrieval and execution instructions stored on a machine-readable storage medium, or a combination thereof.
In examples described herein, any engine(s) of computing device 150 (e.g., engines 170, 172, 174, etc.) may be any combination of hardware and programming to implement the functionalities of the respective engine. Such combinations of hardware and programming may be implemented in a number of different ways. For example, the programming may be processor executable instructions stored on a non-transitory machine-readable storage medium and the hardware may include a processing resource to execute those instructions In such examples, the machine-readable storage medium may store instructions that, when executed by the processing resource, implement the engines. The machine-readable storage medium storing the instructions may be integrated in the same computing device (e.g., device 150) as the processing resource to execute the instructions, or the machine-readable storage medium may be separate from but accessible to the computing device and the processing resource. The processing resource may comprise one processor or multiple processors included in a single computing device or distributed across multiple computing devices.
In some examples, the instructions can be part of an installation package that, when installed, can be executed by the processing resource to implement the engines of system 100. In such examples, the machine-readable storage medium may be a portable medium, such as a compact disc, DVD, or flash drive, or a memory maintained by a server from which the installation package can be downloaded and installed. In other examples, the instructions may be part of an application or applications already installed on a computing device including the processing resource (e.g., device 150). In such examples, the machine-readable storage medium may include memory such as a hard drive, solid state drive, or the like.
As used herein, a “machine-readable storage medium” may be any electronic, magnetic, optical, or other physical storage apparatus to contain or store information such as executable instructions, data, and the like. For example, any machine-readable storage medium described herein may be any of a storage drive (e.g., a hard drive), flash memory, Random Access Memory (RAM), any type of storage disc (e.g., a compact disc, a DVD, etc.), and the like, or a combination thereof. Further, any machine-readable storage medium described herein may be non transitory.
Model acquisition engine 170 may acquire three-dimensional model data (hereinafter, “model data”) representing a physical object (e.g., object 40) disposed on movable surface 210. In some examples, engine 170 may acquire the model data by generating the model data based on the physical object disposed on movable surface 210. For example, engine 170 may control or configure one or more cameras from sensor bundle 164 to obtain one or more images of the physical object and to send the one or more images to engine 170. Upon receiving the one or more images, engine 170 may generate the model data based on the image(s). For example, engine 170 may generate the model data based on a plurality of (e.g., two or more) images received from a plurality of two or more) different cameras of sensor bundle 164. In some examples, the plurality of cameras may be located at a predetermined fixed distance from each other, in which case the plurality of images obtained by the cameras may be stereo images, that is, images of the same physical object taken from different angles. Based at least on the plurality of images (e.g., stereo images) and based on the predetermined fixed distance, engine 170 may generate the three-dimensional model data representing the physical object. In some examples, engine 170 may also determine the distance from the sensor bundle 164 to the physical object (e.g., using depth camera 164C), in which case the generation of the three-dimensional model data may be based also on the determined distance.
In some examples, model acquisition engine 170 may also control or configure movement and projection engine 174 to move (e.g., rotate) movable surface 210 and the physical object placed thereupon, as discussed below, and to obtain, using one or more cameras of sensor bundle 164, a plurality of images of the physical object at different positions and/or orientations. Engine 170 may then generate the three-dimensional model data based on the plurality of images, where different images may represent the physical object in a different position and/or orientation. In some examples, after generating the model data, engine 170 may store the model data, for example, on the machine-readable storage medium.
In some examples, instead or in addition to generating the model data in real time, engine 170 may acquire a previously stored model data, for example, from the machine-readable storage medium, which, as described above, nay be integrated in computing device 150 or may be separate from but accessible to computing device 150 (e.g., via network 240). In some examples, the previously stored model data may have been previously generated by computing device 150, as described above. In other examples, the previously stored model data may have been previously generated by another device, using any suitable method, for generating a three-dimensional model.
Referring now to
In some examples, the model data sent to computing device 350 may include an object orientation data indicating the current orientation of object 40 disposed on movable surface 210. In such cases, computing device 350 may use the object orientation data to display the received model data on display 352 with a perspective view that corresponds to the current orientation of object 40. For example, as illustrated in
In some example, computing system and may receive, from its user, user input to manipulate the model data. In some examples, the user may manipulate the model data by moving, resizing, rotating, or otherwise changing the orientation of the model data, as presented on display 352. This may be achieved, for example, by clicking and dragging or touching and swiping) the presented model data, by engaging graphical user interface (GUI) widgets such as widgets 390a and 390b with an input device 330, which may be a mouse, a touch-sensitive surface, a finger, a stylus, and the like, or by using any other suitable means.
In some examples, when the user of computing device 350 changes the orientation of the model data as described above, computing device 350 may send to computing system 100 (e.g., through network 240) orientation data based on which computing system 100 may determine the current orientation of the model data as presented on display 352. In some examples, orientation data may describe the current orientation of the model data either in absolute values, or in values relative to the previous orientation. For example, the absolute values may be expressed in terms of angle(s) relative to a fixed axis, and relative values may be expressed in terms of angle(s) by which the user last rotated the model data around its central axis.
Referring now to
In some examples, when the user of computing device 350 makes any change to the imagery applied to the model data, computing device 350 may send to computing device 150 (e.g., through network 240) applied image data representing the imagery that has been applied to the model data, including the location(s) on the model data where the imagery is applied. In some examples, applied image data may describe only the differences between the previous applied imagery and the current applied imagery, and may also include the exact location(s) of the differences on the model data.
While in some examples described above, computing device 350 sends to computing device 150 orientation data any time when the orientation of the model data on display 352 changes, in other examples, computing device 350 may send to computing device 150 orientation data and applied image data only when the applied imagery changes. That is, if the orientation of the model changes but the applied imagery remains unchanged, computing device 350 may not send the updated orientation data to computing device 150.
Referring now back to
if orientation data is included, engine 174 may move (e.g., rotate) movable surface 210 to cause movable surface 210 and the object disposed thereupon to he oriented in accordance with the orientation data. For example, engine 174 may move movable surface 210 such that the objects orientation (as seen, for example, from a location perpendicular to and at the center of display 152) becomes the same or substantially the same as the orientation of the model data presented on display 352. In some examples, orientation data may specify angle(s) by which movable surface 210 needs to be moved, in which case engine 174 may move movable surface 210 by the specified angle(s). In some examples, orientation data may also specify direction (e.g., clockwise or counterclockwise) by which movable surface 210 needs to be moved, in which case engine 174 may move movable surface 210 by the specified angle(s) in the specified direction.
In some examples, engine 174 may further receive tracking information (e.g. from camera(s) of sensor bundle 164 or from camera 154) identifying the location of the user of computing device 150 (e g., the user's face). In such cases, engine 174 may move movable surface 210 such that the object's orientation, as seen from the identified user location, becomes the same or substantially the same as the orientation of the model data presented on display 352. In some examples, engine 174 may move movable surface 210 to make the objects orientation (as seen from a location perpendicular and central to display 152 or as seen from the identified user location) be at a predetermined angle (e.g., 30°, 45°, 90°, 180°, 270°, etc.) relative to the orientation of the model data presented on display 352.
In other examples, it the manipulation data does not include orientation data but includes applied image data applied image data, engine 174 may move movable surface 210 based on the applied image data For example, engine 174 may move movable surface 210 such that the applied image data could be projected by projector assembly 184 to the appropriate portion of the object. For example, in some implementations, due to geometrical constraints, projector assembly 184 may only project on one side of the object (e.g., the side facing or closer to projector assembly 184 or fold mirror 162) and may not he able to project on the other side. In such cases, engine 174 may move movable surface 210 such that the side of the object onto which the applied image data needs to be applied can be projected upon by projector assembly 184.
In some examples, if the received manipulation data includes applied image data, engine 174 may control or configure projector assembly 164 to project the applied image data on the object such that the projected applied image data (e.g., projected applied image data 195), as presented on the object, corresponds to the imagery presented on display 352 (e.g., imagery 395) in terms of location and visual characteristics. In some examples, engine 174 may further control or configure projector assembly 184 to adjust or calibrate the projected applied image data based on the distance and position of the object relative to projector assembly 184, such that the image data as presented on the object is not geometrically distorted.
In some examples, the projection of applied image data may occur after or in parallel to the movement of movable surface 210. As described above, engine 174 may move movable surface 210 based on received orientation data or based on the applied image data, for example, when orientation data is not included in the received manipulation data.
In some examples, computing system may also display, on display 152, the model data as it appears on display 352, to show to the user of computing device 150 how the user of computing device 350 sees and manipulates the model data. In some examples, when engine 174 receives the manipulation data, in addition to moving movable surface 210 and/or projecting imagery onto object 40, as described above, engine 174 may also update the model data appearing on display 152 in accordance with the manipulation data. In other examples, display 152 may not show the model data, and may instead show, for example, a live video of the user of computing device 350 as captured, for example, by a camera included in computing device 350 (e.g., camera 354 illustrated in
In some examples, as illustrated in
In some examples, communication engine 172 may receive from computing device 350 user image data, which may be, for example, a still image or a real-time video stream captured, for example, by camera 354 facing the user of computing device 350. Accordingly, the received user image data may include image data representing the user of computing device 350. Communication engine 172 may send the received image data to movement and projection engine 174. Engine 174 may then project the image data (e.g., image data 196) onto object 195. In some examples, engine 174 or any other engine(s) of computing device 150 may first determine the location of object 195 within project display space 188 and/or the location of a surface of object 195 that is facing away or approximately away from display 152. Engine 174 may then use that information to project the image data onto the determined location of the object and the surface. Projecting image data representing the other user onto an object positioned in dose proximity and at approximately the same height as object 40 allows the user of computing device to simultaneously observe object 40, the applied image data projected onto object 40, and the face of the user performing the model data manipulations, without having to move the gaze up toward monitor 152.
Similarly, in some examples, as also illustrated in
In some examples, computing device 350 may also receive from computing device 150 (e.g., from its communication engine 172) user image data, which may be, for example, a still image or a real-time video stream captured, for example, by camera 154 facing the user of computing device 150. Accordingly, the received user image data may include image data representing the user of computing device 150. Computing device 350 may then configure a projector that may be Include in computing system 300 to project the image data (e.g., image data 396) onto object 395. In some examples, computing device 350 may first determine the location of object 395 within project display space 388 and/or the location of a surface of object 395 that is facing away or approximately away from display 352. Computing device 350 may then use that information to configure the projector to project the image data onto the determined location of the object and the surface.
In the example of
In some examples, as part of the three-dimensional model data, instructions 322 may receive object orientation data describing the orientation of the object (e.g., object 40) disposed on the movable surface of the other computing system (e.g., computing system 100). In these examples, instructions 323 may display the three-dimensional model data with a perspective view that corresponds to the ostentation of the object. It is appreciated that in some examples, additional instructions may be inducted to implement additional functionality of computing device 350 discussed above.
At block 405, method 400 may acquire model data representing an object (e.g., object 40) disposed on a movable surface (e.g., movable surface 210), as described above. For example, the method may obtain at least a first image (e.g., via at least one camera of sensor bundle 164) representing the object in a first orientation and generate the model data based at least on the first image. The method may also move the movable surface to put the object in another orientation, to obtain at least a second image (e.g., via at least one camera of sensor bundle 164) representing the object in the other orientation, and to generate the model data based at least on the first arid the second images.
At block 410, the method may receive (e.g., by computing system 100 from computing system 300) manipulation data that includes at least applied image data associated with at least one surface of the model data. As described above, the user of computing system 300 may apply imagery to any surface, face, or side of the model data. At block 415, the method may determine a surface of the object (e.g., object 40) that corresponds to the surface of the model data associated with the applied image data. That is, the method may determine which side of the object the applied image data should be applied to. The method may determine this, for example, by capturing one or more images of the object (e.g., via one or more cameras of sensor bundle 164) and determining, based on the image(s), which surface of the object corresponds to the surface of the model data to which applied image data has been applied.
At block 420, the method may move the movable surface based on the location of the surface of the object determined at block 415. For example, the method may move the movable surface such as to cause the determined surface of the object face a user and/or face away from a display (e.g., display 152), as described above. As described above, after or in parallel to moving the movable surface, the method may project the applied image data onto the surface of the object determined at block 415.
Although the flowchart at
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2014/049310 | 7/31/2014 | WO | 00 |