U.S. patent application number 14/088408 was filed with the patent office on 2014-10-16 for adaptive material deposition in three-dimensional fabrication.
This patent application is currently assigned to Microsoft Corporation. The applicant listed for this patent is Microsoft Corporation. Invention is credited to Gheorghe Marius Gheorghescu, Yulin Jin, Emmett W. Lalish, John B. Socha-Leialoha.
Application Number | 20140309764 14/088408 |
Document ID | / |
Family ID | 51686521 |
Filed Date | 2014-10-16 |
United States Patent
Application |
20140309764 |
Kind Code |
A1 |
Socha-Leialoha; John B. ; et
al. |
October 16, 2014 |
ADAPTIVE MATERIAL DEPOSITION IN THREE-DIMENSIONAL FABRICATION
Abstract
The subject disclosure is directed towards adapting a
three-dimensional model to surface geometry when fabricating a
three-dimensional object. While partitioning model data into planar
regions and non-planar regions of the three-dimensional object, the
model data associated with the non-planar regions is modified to
more accurately generate a path that follows the object's curved
surface geometry. This path is transformed into an instruction set,
which when executed by a device, causes movement along the path
while depositing material on the three-dimensional object.
Inventors: |
Socha-Leialoha; John B.;
(Bellevue, WA) ; Jin; Yulin; (Redmond, WA)
; Gheorghescu; Gheorghe Marius; (Sammamish, WA) ;
Lalish; Emmett W.; (Seattle, WA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Microsoft Corporation |
Redmond |
WA |
US |
|
|
Assignee: |
Microsoft Corporation
Redmond
WA
|
Family ID: |
51686521 |
Appl. No.: |
14/088408 |
Filed: |
November 24, 2013 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
61812232 |
Apr 15, 2013 |
|
|
|
Current U.S.
Class: |
700/119 |
Current CPC
Class: |
G06F 12/02 20130101;
G06F 3/0683 20130101; G06F 9/3004 20130101; G06F 12/00 20130101;
G06K 9/00201 20130101; G06K 9/0063 20130101; G06F 11/3024 20130101;
G06F 12/0292 20130101; H04N 13/254 20180501; G06F 3/0653 20130101;
G06F 3/0659 20130101; H04N 5/332 20130101; G06F 12/0207 20130101;
B29C 64/386 20170801; G01B 11/25 20130101; G02B 27/4205 20130101;
H04N 2013/0081 20130101; G01B 11/22 20130101; G01B 11/2545
20130101; H04N 17/002 20130101; H04N 5/2256 20130101; G06K 9/00536
20130101; H04N 9/04517 20180801; H04N 13/25 20180501; G02B 27/44
20130101; G06K 9/62 20130101; G06T 7/00 20130101; G01B 11/2513
20130101; G02B 27/4233 20130101; G06F 9/30043 20130101; H04N 5/33
20130101; H04N 9/045 20130101; G01B 11/2527 20130101; G06T 1/60
20130101; G06T 7/586 20170101; G06F 9/30127 20130101; A63F 13/213
20140902; B29C 64/00 20170801; G02B 5/1895 20130101; H04N 13/128
20180501; H04N 13/239 20180501; H04N 13/271 20180501; G06T
2207/30244 20130101 |
Class at
Publication: |
700/119 |
International
Class: |
B29C 67/00 20060101
B29C067/00 |
Claims
1. In a computing environment, a method performed at least in part
on at least one processor, comprising, adapting a three-dimensional
model to surface geometry when fabricating a three-dimensional
object, including, processing model data defining planar regions
and non-planar regions of the three-dimensional object, generating
an instruction set that comprises instructions corresponding to the
non-planar regions, and generating other instructions for the
instruction set that correspond to the planar regions.
2. The method of claim 1, wherein generating the instruction set
further comprises generating instructions corresponding to
three-dimensional movement of an extruder nozzle.
3. The method of claim 1 further comprising modifying the model
data associated with the non-planar regions.
4. The method of claim 3, wherein modifying the model data further
comprises modifying a layer height based upon a curvature of the
non-planar regions.
5. The method of claim 3, wherein modifying the model data further
comprises modifying a layer height for a portion of a layer.
6. The method of claim 1, wherein generating the instruction set
further comprises modifying at least one of a width, a thickness or
a length of deposited material.
7. The method of claim 1, wherein generating the instruction set
further comprises varying material width to produce texture on a
surface.
8. The method of claim 1, wherein generating the instruction set
further comprises modifying a material height along tool paths
outlining the three-dimensional object.
9. The method of claim 1, wherein modifying the model data further
comprises rotating the model data of the non-planar regions along
an axis, generating three-dimensional paths for the non-planar
regions, and rotating the model data back along the axis.
10. In a computing environment, a system, comprising, a fabrication
device configured to deposit material for producing a
three-dimensional object, and a fabrication manager configured to
identify a portion of curved surface geometry associated with the
three-dimensional object, modify instructions for depositing
material along at least one dimension on the portion of the curved
surface geometry, and instruct the fabrication device to fabricate
the three-dimensional object.
11. The system of claim 10, wherein the fabrication manager is
further configured to modify a material width along tool paths
between an interior and exterior outline.
12. The system of claim 10, wherein the fabrication manager is
further configured to modify model data corresponding to the
portion of the curved surface geometry, and to generate an
instruction set that when executed, modulates material deposition
on the portion of the curved surface geometry.
13. The system of claim 10, wherein the fabrication manager is
further configured to define a three-dimensional path for
depositing material on the portion of the curved surface geometry,
and to generate instructions corresponding to the three-dimensional
path, and wherein the fabrication device comprises a controller
configured to execute the instructions, causing three-dimensional
movement of at least one of a tool head or a movable platform.
14. The system of claim 13, wherein the fabrication device
comprises a robot configured to actuate an extruder nozzle along
the three-dimensional path.
15. The system of claim 10, wherein the fabrication manager is
further configured to partition the curved surface geometry into
cross-sections along at least one of an x-axis or a y-axis.
16. The system of claim 15, wherein the fabrication manager is
further configured to rotate a cross-section along at least one of
an x-dimension, a y-dimension, or a z-dimension, and generate
instructions for depositing material on a non-planar region of the
cross-section.
17. The system of claim 11, wherein the fabrication manager is
further configured to remove non-planar regions of the curved
surface geometry from the model data, to generate a set of
instructions for fabricating other regions of the three-dimensional
object, and to generate another set of instructions for fabricating
the non-planar regions.
18. One or more computer-readable media having computer-executable
instructions, which when executed perform steps, comprising:
partitioning model data corresponding to a three-dimensional object
into layers along a dimension in which at least one layer defines a
surface geometry; mapping at least one texture pattern to the
surface geometry; and modifying material deposition based upon the
mapping of the at least one texture pattern to the surface
geometry.
19. The one or more computer-readable media of claim 18 having
further computer-executable instructions, which when executed
perform steps, comprising: modifying at least one of a material
thickness or a material width when depositing material on a surface
of the three-dimensional object.
20. The one or more computer-readable media of claim 18 having
further computer-executable instructions, which when executed
perform steps, comprising: determining an extrusion speed and an
extrusion feed rate based upon the model data.
Description
BACKGROUND
[0001] A variety of three-dimensional fabrication techniques have
been devised to support rapid prototyping from computer models.
There are a number of devices capable of fabricating a
three-dimensional (3D) solid object of virtually any shape from a
digital model. These devices may be referred to as
three-dimensional (3D) manufacturing or fabrication devices, such
as three-dimensional (3D) printers, Computer Numerical Control
(CNC) milling machines, and/or the like.
[0002] Conventional fabrication technologies, such as Fused
Filament Fabrication and Fused Deposition Modeling, build models
one layer at a time, which can result in visible errors. One
example error may be referred to as "stair-stepping" or visible
striping for surfaces that are close to flat and for walls closer
to vertical. In order to mitigate this and other errors, these
technologies employ thinner layers. Using thinner layers, however,
significantly increases model build time. Another solution, which
only works for a limited number of materials, involves
post-processing with chemical vapors (e.g., Acetone) to melt and
smooth the visible surface.
SUMMARY
[0003] This Summary is provided to introduce a selection of
representative concepts in a simplified form that are further
described below in the Detailed Description. This Summary is not
intended to identify key features or essential features of the
claimed subject matter, nor is it intended to be used in any way
that would limit the scope of the claimed subject matter.
[0004] Briefly, various aspects of the subject matter described
herein are directed towards adaptive material deposition approaches
to improving surface quality during three-dimensional object
fabrication. These approaches may be implemented in a fabrication
manager, which is configured to generate instructions for
fabricating the object in layers. The fabrication manager detects
surface geometries that define at least some curvature (e.g.,
non-planar in the horizontal direction and/or in the vertical
direction). The fabrication manager computes a three-dimensional
path for finishing such curved surface geometries in addition to
the two-dimensional layer fabrication of the object's interior.
According to one aspect, removing non-planar regions under the
surface of the layer provides enough space for an accurate
finishing pass of material. Three-dimensional tool head movements
are computed such that material is deposited before a higher layer
is built.
[0005] In one aspect, the object's model data is modified before
being prepared for such fabrication. Prior to being portioned into
layers alone a z-dimension, non-planar regions are removed from the
model data. Those regions are partitioned into layers along another
dimension. Instructions for the fabrication device are generated
for the non-planar regions and combined with instructions with
other regions of the model data. In another aspect, the object's
model data is partitioned into layers along any direction in
addition to or instead of the z-dimension. Instructions for
depositing material along these layers may follow a
three-dimensional path.
[0006] Other advantages may become apparent from the following
detailed description when taken in conjunction with the
drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
[0007] The present invention is illustrated by way of example and
not limited in the accompanying figures in which like reference
numerals indicate similar elements and in which:
[0008] FIG. 1 is a block diagram illustrating an example system for
adapting a model to a surface geometry according to at least one
example implementation.
[0009] FIG. 2 is a flow diagram illustrating example steps for
adapting a model to a surface geometry according to at least one
example implementation.
[0010] FIG. 3 is a flow diagram illustrating example steps for
modulating a layer height when fabricating a three-dimensional
object according to at least one example implementation.
[0011] FIG. 4 is a flow diagram illustrating example steps for
applying texture to an object surface according to at least one
example implementation.
[0012] FIG. 5 is a flow diagram illustrating example steps for
modifying a three-dimensional model to generate three-dimensional
instructions for non-planar regions according to at least one
example implementation.
[0013] FIG. 6A and FIG. 6B represent example three-dimensional
objects in which tool paths are generated across an x-direction and
a y-direction, respectively, according to at least one example
implementation.
[0014] FIG. 7 illustrates an example cross-section of a
three-dimensional model that comprises non-planar regions and
planar regions according to at least one example
implementation.
[0015] FIG. 8 illustrates an example cross-section of a
three-dimensional model in which non-planar regions are removed
according to at least one example implementation.
[0016] FIG. 9 illustrates a portion of an example cross-section of
a three-dimensional model in which non-planar regions are rotated
according to at least one example implementation.
[0017] FIG. 10 illustrates an adaptive layer height approach for an
example three-dimensional model comprising non-planar regions
according to at least one example implementation.
[0018] FIG. 11A and FIG. 11B illustrate example layers undergoing
extrusion modulation according to at least one example
implementation.
[0019] FIG. 12 illustrates example texture for a surface geometry
according to at least one example implementation.
[0020] FIG. 13 illustrates an adaptive material width approach on a
three-dimensional object according to at least one example
implementation.
[0021] FIG. 14 illustrates another example adaptive material width
approach on a three-dimensional object according to at least one
example implementation.
[0022] FIG. 15 is a block diagram representing example non-limiting
networked environments in which various embodiments described
herein can be implemented.
[0023] FIG. 16 is a block diagram representing an example
non-limiting computing system or operating environment in which one
or more aspects of various embodiments described herein can be
implemented.
DETAILED DESCRIPTION
[0024] Various aspects of the technology described herein are
generally directed towards configuring a fabrication device with
adaptive material deposition mechanisms. Employing at least some of
these mechanisms may result in improved surface quality and/or
reduced/eliminated visible errors (e.g., stair-stepping errors).
According to one example implementation, the fabrication device
includes an extruder apparatus that extrudes plastic filament
material while moving in any direction. One or more components of
the fabrication device may generate instructions directing the
extruder apparatus along a path corresponding to a surface
curvature of a three-dimensional object. Hence, the extruder
apparatus may be configured to deposit the material along a curve
in the x, y and/or z dimensions. Adapting the extruder apparatus to
enable movement along the curve may involve adjusting one or more
layer characteristics.
[0025] Each layer having at least a portion of the curve may be
transformed into a layer along another dimension such that the set
of paths generated for the non-planar region more accurately follow
the curved surface geometry of the object. The fabrication device
may modify a layer height for some layers such that thinner layers
are used for curved surface geometry. In some example
implementations, the fabrication device may modify a layer height
for one or more sub-layers within a layer. These sub-layers may
partition the layer along an x-dimension or a y-dimension. The
fabrication device may generate instructions, which when executed,
cause the extruder apparatus to modulate plastic material extrusion
to create texture patterns on the object's surface.
[0026] It should be understood that any of the examples herein are
non-limiting. As such, the present invention is not limited to any
particular embodiments, aspects, concepts, structures,
functionalities or examples described herein. Rather, any of the
embodiments, aspects, concepts, structures, functionalities or
examples described herein are non-limiting, and the present
invention may be used various ways that provide benefits and
advantages in computing and fabrication technologies in
general.
[0027] FIG. 1 is a block diagram illustrating an example system for
adapting a model to a surface geometry according to at least one
example implementation. The following description refers to
components that may be implemented in the example apparatus
depicted in FIG. 1. Embodiments of these components may be
considered hardware, software and/or mechanical in nature. It is
appreciated that the example apparatus may be referred to as a
fabrication device 102.
[0028] One example component of the fabrication device 102 includes
a control unit or controller 104 coupled to one or more robotic
mechanisms, such as a robot 106, and configured to execute
instructions for the robot 106 and a printing mechanism 108. Some
fabrication devices translate geometric figures/polygons in the
model into machine instructions (e.g., GCode) configured to
generate an actual output for each layer. The printing mechanism
108 may include one or more tools for depositing material. A
chamber 110 constructed within the printing mechanism 108 allows
source material(s) to be prepared (e.g., heated) and/or blended
when fabricating an object 112. For example, the chamber 110
enables melting, mixing, and extruding of one or more filaments,
including color filaments.
[0029] The robot 106, such as a gantry, may include an assembly of
various mechanical and/or electro-mechanical components. By
executing at least some instructions within an instruction set 114,
the robot 106 may actuate these components into performing at least
some physical movement. When actuated, for example, these
components may move horizontally, vertically, diagonally,
rotationally and so forth. One example implementation of the robot
106 moves a printing tool head across an x, y and/or z-axis in
order to deposit material at a specific position on the object 112
being fabricated. That position may correspond to a portion of
surface geometry (e.g., a perimeter region, a curved bottom
geometry, a top surface geometry), interior or in-fill area, a
support structure and/or the like. An alternative implementation of
the robot 106 rotates the printing tool head along one or more
additional degrees of freedom to augment the movement along the x,
y and/or z-axis.
[0030] The printing mechanism 108 may include to one or more
printing tool heads. Although the printing mechanism 108 may
resemble an extruder configuration (e.g., a single extruder head
configuration), it is appreciated that the printing mechanism 108
represents any compatible technology, including legacy printing
tool heads. Furthermore, the printing mechanism 108 may include
printing tool heads configured to deposit other materials in
addition to colored materials and/or transparent materials. As
such, the printing mechanism 108 may include a second chamber and a
second nozzle that provides another material (e.g., a polymer) when
printing certain structures during fabrication, such as support
structures, purge structures and/or the like. Purge structures may
refer to areas of the object's model where unusable material is
deposited. As one example, leftover material in the chamber 110 may
be deposited in the purge structure.
[0031] Adapting material deposition to the surface geometry of the
object 112 involves a fabrication manager 116 configured to modify
model data 118 based upon that surface geometry's curvature
according to one or more example implementations. The fabrication
manager 116 may be configured to generate instructions, which when
executed by the controller 104, causes the deposition of material
along sets of paths corresponding to the surface geometry. Each set
of paths may be defined along different dimensions or directions.
For example, one set of paths may be in the y-dimension or parallel
to a y-axis; alternatively, another set of paths may be in the
x-dimension or parallel to an x-axis. Each path represents a
movement (e.g., three-dimensional movement) for the printing
mechanism 108 to perform while depositing material.
[0032] In one example implementation, the fabrication manager 116
partitions the model data 118 such that the object model is
separated into layers in which each layer represents a
three-dimensional space along an axis, such as a z-axis. Based upon
the model data 118 corresponding to at least one layer, the
partition manager 116 examines the surface geometry of the object
112 based upon curvature and identifies one or more portions of
curved surface geometry. One example of curved surface geometry
includes an example region of the object 112 where the surface
geometry is nearly flat or non-planar. It is appreciated that the
present description may refer to the example region as a non-planar
region and other regions of the object 112 that are not associated
with the curved surface geometry may be referred to as planar
regions. The fabrication manager 116 may identify a set of paths
for each non-planar region in which each path corresponds to
three-dimensional positions within the non-planar region for
depositing material. The example implementation described above
involves the z-axis to illustrate object model modification in
retrofitted embodiments, such as those employing conventional
three-dimensional fabrication components. It is appreciated that
the object model may be partitioned along a different dimension,
such as a y-axis or an x-axis, in other example implementations.
Regardless of the dimension, the fabrication manager 116 determines
paths corresponding to the non-planar regions along at least two
dimensions.
[0033] The deposition process described herein may be modulated in
a number of ways. In one example implementation, the fabrication
manager 116 modifies layer height when fabricating one or more
layers of the model data 118. Each layer having at least a portion
of a non-planar region may be transformed into a layer of reduced
height such that the set of paths generated for the non-planar
region more accurately follow the curved surface geometry of the
object 112. Some layers may be transformed into layers of different
heights to account for steeper angles of inclinations or
declinations in the non-planar region's curvature.
[0034] Alternatively, only a portion of the layer actually
including the non-planar region may be reduced in layer height;
remaining portions of the layer retain an original layer height.
According to another implementation, the fabrication manager 116
modifies extrusion material thickness in order to deposit different
amounts of material in different locations. According to yet
another example implementation, the fabrication manager 116
modifies extrusion material width and/or height in order to produce
texture on the curved surface geometry. Texture information 120 may
store extrusion material thickness values that enable the
fabrication manager to compute a material height and/or a material
width for extruding material on the object surface perimeter or
top, which may be used to produce rough and/or smooth surface
textures.
[0035] One example implementation of an adaptive material thickness
approach uses a lower layer height for at least a portion of a
layer and a full layer height in other portions. According to this
implementation, the fabrication device extrudes lines of material
at a variable thickness. Under this approach, vertical outside
walls may be extruded at a full layer height (e.g., as 0.3 mm) such
that thinner layers may be used for non-planar surface perimeters,
a non-planar surface top, or, alternately, a curved exterior and/or
a curved bottom.
[0036] Another example implementation of an adaptive layer height
approach modifies a layer height for an entire layer. For example,
if a layer (or a sub-layer) appears to be a substantially vertical
wall, material is extruded for that layer at a full layer height.
When a layer intersects a section of the model with more gradual
slopes, the layer height may be progressively reduced for one or
more higher layers to improve surface quality.
[0037] One example implementation of an extrusion modulation
approach extrudes lines of material at a variable width. For
example, while a standard extruded line of plastic material may be
0.4 mm in width and 0.2 mm in height, this approach modulates the
width of this line in order to produce visible texture patterns on
the outer surfaces of the printed model. An alternative approach
may modulate the material height by moving an extruder apparatus
vertically while extruding material.
[0038] The fabrication manager 116 may employ a number of
approaches to locate regions of a surface perimeter having at least
a certain degree of curvature. According to one example
implementation, the fabrication manager 116 processes a polygon
mesh model and identifies polygons that are on the top of the
finished object and have a slope below a defined threshold (e.g.,
less than thirty (30) degrees from being flat). The fabrication
manager reduces such a polygon by a thickness of the finishing
non-planar material deposition passes (e.g., 2-3 layers) and adds
this polygon to the list of polygons that will undergo non-planar
passes. Hence, the new modified model with these reduced polygons
may be used by the fabrication manager 116 for creating the normal
planar layers. Afterwards, the fabrication manager 116 inserts the
non-planer passes between planar layers based on the maximum height
of the original polygons in the non-planar region.
[0039] FIG. 2 is a flow diagram illustrating example steps for
adapting a model to a surface geometry according to at least one
example implementation. One or more hardware/software components
(e.g., a fabrication manager 116 of FIG. 1) may be configured to
perform the example steps. Step 202 commences the example steps and
proceeds to step 204 where model data for a three-dimensional
object is partitioned into non-planar regions and planar regions
based upon the surface geometry. The non-planar regions may form a
curved surface perimeter for the three-dimensional object.
[0040] Step 206 is directed towards modifying the model data that
corresponds to the non-planar regions. This may be accomplished by
translating a surface geometry, including the non-planar regions,
into a desired perspective in three-dimensional space prior to
generating instructions for the non-planar regions. Step 208 refers
to generating instructions for the non-planar regions. As an
alternative mechanism, step 206 may involve translating the
instructions for the non-planar regions into the desired
perspective by modulating material deposition by changing layer
height and/or material width. Adjusting an extrusion feed rate
and/or speed may result in variations of the material width.
Changing the layer height may effectuated by modifying an extrusion
material thickness for entire layer or a portion thereof. Some
example material deposition modulation implementations produce
texture on the three-dimensional object surface.
[0041] According to one example implementation, a path forming a
curved surface geometry around one or more non-planar regions
represents three-dimensional movement for an extruder apparatus.
When executed, the above mentioned instructions may cause actuation
of an extruder nozzle to a particular coordinate position in
three-dimensional space and further cause application of (e.g.,
filament) material at that position and other positions along the
path. The path may be partitioned into layers along the z-dimension
and for each layer, instructions may be generated causing the
extruder apparatus to deposit material along one or more portions
(e.g., sub-layers) of that layer. The layer's height may be adapted
locally and/or for the entire layer based upon a curvature of the
non-planar regions.
[0042] Step 210 refers to generating instructions for the planar
regions. Because the planar regions include interior in-fill areas,
any path generated for these regions may include two-dimensional
movement within a layer and at a full layer height. Step 212 is
directed towards combining the instructions for the non-planar
regions and the instructions for the planar regions into an
instruction set configured to fabricate the three-dimensional
object. Step 214 terminates the example steps of FIG. 2.
[0043] FIG. 3 is a flow diagram illustrating example steps for
modulating material extrusion when fabricating a three-dimensional
object according to at least one example implementation. One or
more hardware/software components (e.g., a fabrication manager 116
of FIG. 1) of a device (e.g., a fabrication device, such as the
fabrication device 102 of FIG. 1) may be configured to perform the
example steps. Step 302 commences the example steps and proceeds to
step 304 where a layer of model data for the three-dimensional
object is selected. As described herein, the model data defines
regions (e.g., geometric polygons) of the three-dimensional object
to facilitate manufacturing of that object. Step 304 also is
directed to generating instructions for fabricating the layer,
which when executed on the device, cause components of the device
to deposit material along contours and interior areas of the
layer.
[0044] Step 306 begins or continues a material deposition process
on the three-dimensional object. As described herein, one example
material deposition process involves plastic material extrusion
through a nozzle one layer at a time. Although the following
description refers an example layer as a horizontal layer across x
and y dimensions, as an alternative, an example layer may be a
vertical layer across the x and z dimensions or the y and z
dimensions.
[0045] Step 308 determines whether adapting the material deposition
process results in improved surface quality of the
three-dimensional object. If step 308 decides to adapt the material
deposition process based upon a surface geometry, step 308 returns
to step 306 with one or more modified material deposition
parameters, such as a modified layer height, a modified sub-layer
height, or a modified material width. If, at step 308, it is
determined that adapting the material deposition most likely will
not improve surface quality, step 308 proceeds to step 310. Step
310 is directed to stopping fabrication of the layer when the layer
is fully fabricated. Step 312 determines whether there are more
layers in the three-dimensional model to fabricate. If there are
additional layers in the model, step 312 returns to step 304 in
order to generate instructions for fabricating a next layer based
upon the modified material deposition parameters. Accordingly, step
306 proceeds to deposit the material as directed by the above
mentioned instructions. If not, step 312 proceeds to step 314,
which terminates the example steps of FIG. 3.
[0046] FIG. 4 is a flow diagram illustrating example steps for
applying texture to an object surface according to at least one
example implementation. One or more hardware/software components of
a device (e.g., a fabrication device, such as the fabrication
device 102 of FIG. 1) may be configured to perform the example
steps. Step 402 commences the example steps and proceeds to step
404 where texture information is accessed. Step 406 refers to
access model data associated with a surface geometry. As described
herein, the model data defines regions of a three-dimensional
object, including planar and/or non-planar regions corresponding to
the surface geometry. The model data may be modified according to
any texture pattern, including coarse and/or smooth textures, wood
grain textures, concrete textures, characters/words and/or the
like. Hence, texture can be produced on the surface geometry that
is either curved, flat or a combination of both, curved and flat.
This may be accomplished using an extruder apparatus configured to
deposit heated plastic material on the three-dimensional
object.
[0047] The texture information defines data corresponding to at
least one texture pattern, which is a pattern for depositing
material on the three-dimensional object surface. Step 408 is
directed to mapping a texture pattern to the surface geometry. One
example texture pattern is illustrated by FIG. 12. Step 410
determines whether to modify the model data based upon the mapping
between the texture pattern and the surface geometry. If the model
data is to be modified, such as by modifying material width, step
410 proceeds to step 412 where extrusion line widths and/or heights
are determined. These values may be proportional to each other such
that a change in extrusion line width may affect the extrusion line
height or thickness and vice versa. If, for instance, the extrusion
line width increases from a minimum extrusion width beyond a
certain threshold, the extrusion line height also increases
proportionally. If the model data is not to be modified, step 412
proceeds to step 414. If no texture is to be applied to the surface
geometry, step 410 proceeds directly to step 420.
[0048] Step 414 and step 416 compute extrusion speeds, feed rates,
and lengths based upon corresponding extrusion line widths and/or
heights. Extrusion speed refers to a rate at which an extruder
nozzle moves down the extrusion line. Extrusion feed rate refers to
an amount of material (e.g., in terms of thickness and/or width)
that is expelled from the nozzle per unit of time. Changes to the
extrusion line widths may affect the extrusion feed rate by
increasing or decreasing an amount of material being deposited,
which also causes a change to the extrusion line height. Step 414
determines an appropriate extrusion feed rate for depositing
sufficient material for the extrusion line width and/or height.
Extrusion length refers to a length of the extrusion line. Using
these extrusion characteristics, step 418 generates instructions
for producing texture on the surface geometry. As described herein,
these instructions may include to GCode, which when executed,
causes two-dimensional and/or three-dimensional movement along a
path while depositing plastic material in a layer of the
three-dimensional object's model. Step 420 terminates the example
steps of FIG. 4.
[0049] FIG. 5 is a flow diagram illustrating example steps for
modifying a three-dimensional model to generate three-dimensional
instructions for non-planar regions according to at least one
example implementation. One or more hardware/software components of
a device (e.g., a fabrication device, such as the fabrication
device 102 of FIG. 1) may be configured to perform the example
steps. Step 502 commences the example steps and proceeds to step
504 where at least one layer in z-dimension is processed. Each
layer may include non-planar regions and planar regions of the
object along the z-dimension. As described herein, the
three-dimensional model may define a three-dimensional object
comprised of layers to facilitate manufacturing of that object. It
is appreciated that some embodiments may process the model into
sets of layers in which each set of layer partitions the object
along a different dimension. Hence, these embodiments may process
at least one layer in an x-dimension or a y-dimension at step
504.
[0050] Step 506 represents a determination as to whether there any
non-planar regions in the at least one layer. In one example
implementation, a fabrication manager of the device is configured
to identify at least a portion of the three-dimensional object
having the curved surface geometry and further partition that
portion into sets of layers in which each set of layers corresponds
to at least one dimension (e.g., x-dimension or z-dimension). One
example set of layers partitions a volumetric cross-section into
vertical or horizontal lines indicating positions where material is
to be deposited. As described herein, each line may be associated
with at least one length, at least one width and at least one
height defining material thickness at different positions along the
line. Step 508 determines whether to modulate the material
deposition process when fabricating the at least one layer. If
material deposition modulation is to be performed on the at least
one layer, step 508 proceeds to step 510; otherwise, step 508
proceeds to step 512. Step 510 modifies one or more fabrication
settings, such as a layer height (e.g., a material height) or a
material width.
[0051] Step 512 to step 516 refer to modifying the
three-dimensional model based upon the non-planar regions, which
define the curved surface geometry. Step 512 partitions the
non-planar regions into at least one set of layers in which each
set of layers corresponds to a different axis. For the purposes of
describing at least some representative embodiments of step 512 to
step 516, it may be assumed that step 512 partitions the non-planar
regions into a set of layers along the z-dimension. Step 514
rotates the set of layers of the three-dimensional model along an
axis, such as an x-axis, in order to generate paths for the set of
layers. Step 516 rotates another set of layers of the
three-dimensional model along another axis, such as a y-axis, in
order to generate paths for that set of layers. By rotating the
model, the curved surface geometry may be examined in another
perspective. Step 518 generates executable instructions
corresponding to both sets of paths and combines those instructions
with instructions for fabricating the planar regions to produce an
instruction set. Step 520 terminates the example steps of FIG.
5.
[0052] FIG. 6A and FIG. 6B represent an example three-dimensional
object in which tool paths are generated across a y-direction and
an x-direction, respectively, according to at least one example
implementation. The three-dimensional object being depicted in
FIGS. 6A and 6B may be referred to as a wedge. These tools paths
may be used for configuring finishing passes on the
three-dimensional object's surface geometry. FIG. 6A depicts the
object's surface geometry having cross-sections 602 along an
x-axis. Each of the cross-sections 602 represents model data for a
portion of the object having at least a minimum extrusion width and
located within that cross-section's y and z dimensions. FIG. 6B
depicts the object's surface geometry having cross-sections 604
across a y-axis in which each cross-section occupies x and z
dimensions.
[0053] A tool path may be generated for each curved or non-planar
region of a particular cross-section. The tool paths may augment
other tool paths determined by conventional model slicing solutions
(e.g., in a retrofitted device). Such a solution is configured to
generate instructions for building up a single layer (e.g., along a
z-dimension). In order to adapt that solution to performing
finishing passes on the surface geometry along a y-dimension and/or
an x-dimension, the model is rotated along the y-axis for one
finishing pass and/or along the x-axis for another finishing pass.
After being rotated along the y-axis such that the cross-section is
parallel to an xy-plane, the rotated model is partitioned into
layers on the x-dimension. Then, the rotated model is reverted back
along the negative y-axis back to an original perspective. For the
other finishing pass, after rotating the model along the y-axis,
the rotated model is partitioned into layers on the y-dimension.
Then, the rotated model is rotated back along the negative y-axis
to an original perspective.
[0054] FIG. 7 illustrates an example cross-section of a
three-dimensional model according to at least one example
implementation. The example cross-section represents a
three-dimensional volume along an x-z plane with a fixed or
variable width (e.g., along a y-axis). According to one example
implementation, the example cross-section, such as a cross-section
702, is partitioned into layers 704.sub.1 . . . N that correspond
to a material deposition finishing pass along the x and
z-dimensions. After identifying planar regions 706 and non-planar
regions 708 of the three-dimensional object, the non-planar regions
706 are prepared for material deposition by three-dimensional or
three-dimensional movement. In one example implementation, the
three-dimensional model is modified, in memory, before applying
normal planer slicing by lowering a top surface in the
cross-section 702 by the thickness of the non-planar regions 708
(e.g., a minimum extrusion thickness).
[0055] FIG. 8 illustrates an example cross-section of a
three-dimensional model in which non-planar regions are removed
according to at least one example implementation. The example
cross-section, such as a cross-section 802, may represent the
cross-section 702 of FIG. 7 after the non-planar regions 708 are
removed. A set of layers 804.sub.1 . . . N, similar to the layers
704.sub.1 . . . N, correspond to a z-dimension. After generating
instructions for material deposition on the non-planar regions 708,
as depicted by FIG. 9, instructions for planar regions 806 are
generated across a z-dimension and combined with the instructions
for the non-planar regions 708. In one example implementation,
GCode is produced for depositing material along each of the set of
layers 804.sub.1 . . . N for the non-planar regions 708 and
combined with GCode for depositing material across the planar
regions 806.
[0056] FIG. 9 illustrates a portion of an example cross-section of
a three-dimensional model in which non-planar regions are rotated
according to at least one example implementation. The example
cross-section, representing a curved surface geometry 902, may
comprise a portion of the cross-section 702 of FIG. 7 where the
planar regions 706 are removed and only the non-planar regions 708
remain. A set of layers 904.sub.1 . . . 12 corresponding to a
y-dimension may partition the curved surface geometry 902 in which
each layer corresponds to model data that was rotated from the x
and z dimensions onto an xy-plane. The model data for the set of
layers 904.sub.1 . . . 12 may be transformed into coordinates
(e.g., two-dimensional and/or three-dimensional coordinates)
defining one or more non-planar geometries, such as a non-planar
line 906 and a non-planar line 908, on the curved surface geometry
902. Based upon these coordinates, a fabrication device (e.g., the
fabrication device 102 of FIG. 1) may determine printing tool head
paths for depositing material on the non-planar line 906 and the
non-planar line 908 along the x and y dimensions. After rotating
the model data back onto an xz-plane, the fabrication device
converts the coordinates for the tool head paths into coordinates
along the x and z dimensions. Hence, each tool head path defines
movement along the z-axis in addition to movement along the x-axis
and/or y-axis.
[0057] To illustrate at least one example implementation, a tool
head path defines one or more extrusion rates corresponding to one
or more amounts of material being deposited at a particular
three-dimensional coordinate along, for example, the non-planar
line 906. When depositing material along the tool head path, the
fabrication device may dynamically adjust an extruder nozzle
position along a z-axis coordinate and/or an x-coordinate within
the non-planar line 906, resulting in diagonal and/or curved
movement of the extruder nozzle. If the tool path head defines a
minimum extrusion width for the example cross-section, the
non-planar line 906 may be fabricated in one three-dimensional
pass. As an alternative mechanism, instructions for the tool head
path may set the z-axis coordinate to that layer's height such that
the tool head does not move vertically when depositing material
except for when moving to a next layer.
[0058] After generating instructions for material deposition on the
curved surface geometry 902, the example cross-section is rotated
along a negative x-axis and these instructions are transformed into
compatible instructions for layers along a z-dimension. Such a
material deposition process may be referred to as a non-planar
finishing pass. In one example implementation, GCode is produced
for depositing material along each of the set of layers 904.sub.1 .
. . 12 for the one or more non-planar geometries and combined with
GCode for depositing material on remaining geometries of the
three-dimensional model.
[0059] FIG. 10 illustrates an adaptive layer height approach for an
example three-dimensional model comprising non-planar regions
according to at least one example implementation. The example
three-dimensional model refers to a cross-section 1002 of an object
being fabricated along x and z-dimensions. The adaptive layer
height approach (e.g., as implemented by one or more
hardware/software components, such as the fabrication manager 116
of FIG. 1, of a fabrication device, such as the fabrication device
102 of FIG. 1) may reduce a layer's height if there are regions in
the layer that satisfy certain characteristics, such as those
regions having curvature. In FIG. 10, layers are closer together
where the slope is below a certain angle and when the slope returns
to the certain angle (e.g., steeper), the upper layers revert back
to a full layer height.
[0060] Computing the layer height might be performed as follows.
First, a maximum height (e.g., maxHeight) and a minimum height
(e.g., minHeight) are established. The minimum height may be based
on a minimum layer height supported by a specific fabrication
device's technology. The maximum height may be based on a quality
standard selected by a user. As an example, a minimum height may be
0.05 mm for certain fabrication devices and maximum height may be
0.3 mm. One example equation for determining the layer height may
be as follows:
layer height=min(max(stepWidth.times.tan
.theta.,minHeight),maxHeight)
[0061] A stepWidth parameter represents a maximum horizontal
distance between surface perimeter lines on adjacent layers. In
some embodiments, the horizontal distance refers to an extrusion
width setting for plastic filament material. .theta. represents an
angle of inclination between two adjacent layers. The layer height
may be computed by reducing the stepWidth by a tangent of angle
.theta., which represents a ratio between the layer height and the
extrusion width given the angle .theta.. For example, if the
extrusion width is 0.4 mm, the extrusion width may be modified to
0.6 mm in order to maintain a particular horizontal distance
between perimeter lines to be between one (1) to a half (0.5) of
the stepWidth. If the layer height exceeds the maximum height
parameter, one or more additional layers may be inserted between
the two adjacent layers and incorporated into the model data. For
example, a layer 1004.sub.4 is inserted above layer 1004.sub.3
because the horizontal distance (e.g., extrusion width) between the
layer 1004.sub.3 and a next adjacent layer at a full layer height
exceeded the stepWidth parameter. As illustrated, the layer
1004.sub.4 has a layer height that is a quarter of the layer
1004.sub.3 to maintain the extrusion width under the stepWidth
parameter. For each next layer until layer 1004.sub.15, the layer
height is substantially maintained because the angle of inclination
remained substantially the same as well. After the layer
1004.sub.15, the angle of inclination becomes steeper and the
extrusion width may fall below the minimum extrusion width, causing
the layer height to double to a value used by each next layer until
a layer 1004.sub.21. Similarly, after the layer 1004.sub.21, the
angle of inclination becomes even steeper, causing the layer height
to double again to a value used by each next layer until a layer
1004.sub.N.
[0062] Additional layers also may be inserted, lowering the layer
height, when a curvature of the cross-section 1002 falls below a
pre-defined angle of inclination. Similarly, the layer height may
be increased when the curvature of the cross-section 1002 exceeds
the pre-defined angle of inclination. Of course, the layer height
may not fall below the minimum height parameter (minHeight). If an
angle of inclination or declination is steeper, the layer height
may be reduced in proportion to the angle change.
[0063] FIG. 11A and FIG. 11B illustrate example layers undergoing
extrusion modulation according to at least one example
implementation. Each example layer may represent at least a portion
of a three-dimensional object's top surface geometry. While each
example layer may be illustrated as a horizontal layer partitioned
into sub-layers, it is appreciated that in other embodiments, each
example layer may represent a portion of the top surface geometry
along any plane in three-dimensional space. Therefore, material may
be deposited along a three-dimensional path on the object's
surface. Each layer below the example layers may include planar
regions comprising in-fill regions and non-planar regions
comprising a surface perimeter. Each example layer represents a
three-dimensional portion of the object upon which material is
deposited in sub-layers.
[0064] FIG. 11A depicts a layer 1102 in which layer height is
modified at different sub-layers when depositing material. Each
sub-layer refers to a portion of the layer 1102 upon which a line
of material is deposited. Each rectangular box represents a minimum
extrusion unit of material capable of being deposited at a given
time (e.g., 0.1 millimeters (mm) in height and 0.4 millimeters (mm)
in width). FIG. 11A illustrates an extrusion modulation process in
which at least a portion the layer 1102 is built using the minimum
extrusion unit. As illustrated, an extrusion line of material is
deposited in order to build a perimeter for a sub-layer up to a
first layer height 1104. Then, two extrusion lines are deposited in
order to build a perimeter for a next sub-layer up to a second
layer height 1106 (e.g., 0.2 millimeters (mm) in height and 0.4
millimeters (mm) in width). The second layer height 1106 is raised
to a third layer height 1108 such that three material extrusions
are deposited at locations corresponding to a next sub-layer. By
reducing the amount of material being deposited for the first two
sub-layers, a more precise object surface curvature may be
achieved.
[0065] FIG. 11B illustrates an extrusion modulation process in
which a layer height may be modified for different sub-layers of a
layer 1110 being fabricated. Hence, the process of FIG. 11B does
not use the minimum extrusion unit and instead, modulates extrusion
height by modifying an amount of material being extruded at certain
sub-layers. This may be accomplished by changing an extrusion feed
rate and/or speed. In some example embodiments, changing an
extrusion material width also modifies the extrusion height and
vice versa. For example, the extrusion height may be set to a value
no greater than eighty percent of the extrusion material width. The
first material deposition of FIG. 11B represents perimeter line
extrusions at a layer height 1112 that is a third of a full layer
height. A next material deposition represents an additional
perimeter extrusion line at a higher layer height 1114. A last
material deposition of FIG. 11B represents a normal in-fill
extrusion at a normal layer height 1116.
[0066] FIG. 12 illustrates example texture for a surface geometry
according to at least one example implementation. The example
texture may be produced on an object's top surface or a surface
perimeter. The example texture's resolution may be set as low as a
minimum extrusion width, which may refer to a minimum amount of
material an extruder nozzle may deposit at a given time. Therefore,
the example texture's pattern 1202 may present fine-grained detail
on the surface geometry.
[0067] The texture pattern 1202 is produced by varying extrusion
material width between little or no material and at least half of a
full extrusion material width. This may be achieved by starting and
stopping/slowing down a material extrusion process, as described
herein, in accordance with the texture pattern 1202. For example,
the fabrication device may delay material deposition for a specific
length and/or decrease an extruder feed rate. The fabrication
device also may speed up the movement of the extruder nozzle until
a next position in order to reduce the extrusion width. In order to
increase the extrusion width, the fabrication device deposit more
materials by increases the extruder feed rate or slowing down the
extruder speed.
[0068] To illustrate one example, consider the texture pattern 1202
illustrated in FIG. 12. For a bottom ten (10) rows, the fabrication
device may deposit material in two millimeter (2 mm) line segments
by extruding no material for two (2) mm followed by 2 mm of
extrusion at a full material width. For a next ten (10) rows, the
fabrication device may extrude a four (4) mm line segment of
material following by a one (1) mm line segment. To produce
extruder lines of different widths, the fabrication device may
delay material extrusion for a specific length and/or speed up the
movement of the extruder nozzle until a next position. Furthermore,
the fabrication device may, at any time, modify the instructions to
extrude lines of material without varying the extrusion width. As
demonstrated between the seventh and fifteenth rows of the texture
pattern 1202, a rectangle is superimposed on the object surface
with no variation in the extruded layers. Similarly, the
fabrication device may revert back to varying the extrusion width
at any time during the material extrusion process.
[0069] FIG. 13 illustrates an example adaptive material width
approach on a three-dimensional object according to at least one
example implementation. A layer 1302 of the three-dimensional
object is partitioned into regions, some of which may be referred
to as outline regions, including an exterior/perimeter outline
1304, an inner-most outline 1306, and three intermediary outline
regions, including an outline 1308. The outline 1306 is an inner
perimeter for an interior hole 1310. The following description is
directed towards achieving a complete filling of the layer 1302 by
varying an extrusion width for at least some outline regions.
[0070] According to at least one example embodiment, a fabrication
device (e.g., the fabrication device 102 of FIG. 1) determines a
tool path for each outline region. As an example, a curved surface
geometry corresponding to the outline 1308 is transformed into a
corresponding tool path along the x and y dimensions. Based upon
the corresponding tool path, instructions are generated for
depositing material on positions along the outline 1308. These
instructions may vary an extrusion material width for different
portions of the outline region such that certain areas may be
prescribed a larger extrusion material width than other areas.
While instructions for the outline 1304 may deposit material at a
constant width, instructions for each intermediary outline region
may define a progressively larger extrusion material width and
instructions for the outline 1306 may define a largest extrusion
material.
[0071] FIG. 14 illustrates another example adaptive material width
approach on a three-dimensional object according to at least one
example implementation. A tapered object 1402 (e.g., depicted as a
single layer cross-section) can be accurately reproduced by
dynamically adjusting an extrusion width to match that object's
shape. In FIG. 13, each dashed line represents a tool path for
depositing material while solid lines denote edges of the deposited
material. The solid lines narrow as an extrusion feed rate
decreases. By reducing the number of tool paths when the object
1402 becomes too narrow, an extrusion feed rate range also may be
reduced by a factor of two (2) in order to reproduce a line of
material of any width greater than or equal to a minimum extrusion
width.
Example Networked and Distributed Environments
[0072] One of ordinary skill in the art can appreciate that the
various embodiments and methods described herein can be implemented
in connection with any computer or other client or server device,
which can be deployed as part of a computer network or in a
distributed computing environment, and can be connected to any kind
of data store or stores. In this regard, the various embodiments
described herein can be implemented in any computer system or
environment having any number of memory or storage units, and any
number of applications and processes occurring across any number of
storage units. This includes, but is not limited to, an environment
with server computers and client computers deployed in a network
environment or a distributed computing environment, having remote
or local storage.
[0073] Distributed computing provides sharing of computer resources
and services by communicative exchange among computing devices and
systems. These resources and services include the exchange of
information, cache storage and disk storage for objects, such as
files. These resources and services also include the sharing of
processing power across multiple processing units for load
balancing, expansion of resources, specialization of processing,
and the like. Distributed computing takes advantage of network
connectivity, allowing clients to leverage their collective power
to benefit the entire enterprise. In this regard, a variety of
devices may have applications, objects or resources that may
participate in the resource management mechanisms as described for
various embodiments of the subject disclosure.
[0074] FIG. 15 provides a schematic diagram of an example networked
or distributed computing environment. The distributed computing
environment comprises computing objects 1510, 1512, etc., and
computing objects or devices 1520, 1522, 1524, 1526, 1528, etc.,
which may include programs, methods, data stores, programmable
logic, etc. as represented by example applications 1530, 1532,
1534, 1536, 1538. It can be appreciated that computing objects
1510, 1512, etc. and computing objects or devices 1520, 1522, 1524,
1526, 1528, etc. may comprise different devices, such as personal
digital assistants (PDAs), audio/video devices, mobile phones, MP3
players, personal computers, laptops, etc.
[0075] Each computing object 1510, 1512, etc. and computing objects
or devices 1520, 1522, 1524, 1526, 1528, etc. can communicate with
one or more other computing objects 1510, 1512, etc. and computing
objects or devices 1520, 1522, 1524, 1526, 1528, etc. by way of the
communications network 1540, either directly or indirectly. Even
though illustrated as a single element in FIG. 15, communications
network 1540 may comprise other computing objects and computing
devices that provide services to the system of FIG. 15, and/or may
represent multiple interconnected networks, which are not shown.
Each computing object 1510, 1512, etc. or computing object or
device 1520, 1522, 1524, 1526, 1528, etc. can also contain an
application, such as applications 1530, 1532, 1534, 1536, 1538,
that might make use of an API, or other object, software, firmware
and/or hardware, suitable for communication with or implementation
of the application provided in accordance with various embodiments
of the subject disclosure.
[0076] There are a variety of systems, components, and network
configurations that support distributed computing environments. For
example, computing systems can be connected together by wired or
wireless systems, by local networks or widely distributed networks.
Currently, many networks are coupled to the Internet, which
provides an infrastructure for widely distributed computing and
encompasses many different networks, though any network
infrastructure can be used for example communications made incident
to the systems as described in various embodiments.
[0077] Thus, a host of network topologies and network
infrastructures, such as client/server, peer-to-peer, or hybrid
architectures, can be utilized. The "client" is a member of a class
or group that uses the services of another class or group to which
it is not related. A client can be a process, e.g., roughly a set
of instructions or tasks, that requests a service provided by
another program or process. The client process utilizes the
requested service without having to "know" any working details
about the other program or the service itself.
[0078] In a client/server architecture, particularly a networked
system, a client is usually a computer that accesses shared network
resources provided by another computer, e.g., a server. In the
illustration of FIG. 15, as a non-limiting example, computing
objects or devices 1520, 1522, 1524, 1526, 1528, etc. can be
thought of as clients and computing objects 1510, 1512, etc. can be
thought of as servers where computing objects 1510, 1512, etc.,
acting as servers provide data services, such as receiving data
from client computing objects or devices 1520, 1522, 1524, 1526,
1528, etc., storing of data, processing of data, transmitting data
to client computing objects or devices 1520, 1522, 1524, 1526,
1528, etc., although any computer can be considered a client, a
server, or both, depending on the circumstances. Computing object
1512, for example, acting as a server provides client computing
objects or devices 1520, 1522, 1524, 1526, 1528, etc. with access
to storage resources within data store(s) 1550.
[0079] A server is typically a remote computer system accessible
over a remote or local network, such as the Internet or wireless
network infrastructures. The client process may be active in a
first computer system, and the server process may be active in a
second computer system, communicating with one another over a
communications medium, thus providing distributed functionality and
allowing multiple clients to take advantage of the
information-gathering capabilities of the server.
[0080] In a network environment in which the communications network
1540 or bus is the Internet, for example, the computing objects
1510, 1512, etc. can be Web servers with which other computing
objects or devices 1520, 1522, 1524, 1526, 1528, etc. communicate
via any of a number of known protocols, such as the hypertext
transfer protocol (HTTP). Computing objects 1510, 1512, etc. acting
as servers may also serve as clients, e.g., computing objects or
devices 1520, 1522, 1524, 1526, 1528, etc., as may be
characteristic of a distributed computing environment.
Example Computing Device
[0081] As mentioned, advantageously, the techniques described
herein can be applied to any device. It can be understood,
therefore, that handheld, portable and other computing devices and
computing objects of all kinds are contemplated for use in
connection with the various embodiments. Accordingly, the below
general purpose remote computer described below in FIG. 16 is but
one example of a computing device.
[0082] Embodiments can partly be implemented via an operating
system, for use by a developer of services for a device or object,
and/or included within application software that operates to
perform one or more functional aspects of the various embodiments
described herein. Software may be described in the general context
of computer executable instructions, such as program modules, being
executed by one or more computers, such as client workstations,
servers or other devices. Those skilled in the art will appreciate
that computer systems have a variety of configurations and
protocols that can be used to communicate data, and thus, no
particular configuration or protocol is considered limiting.
[0083] FIG. 16 thus illustrates an example of a suitable computing
system environment 1600 in which one or aspects of the embodiments
described herein can be implemented, although as made clear above,
the computing system environment 1600 is only one example of a
suitable computing environment and is not intended to suggest any
limitation as to scope of use or functionality. In addition, the
computing system environment 1600 is not intended to be interpreted
as having any dependency relating to any one or combination of
components illustrated in the example computing system environment
1600.
[0084] With reference to FIG. 16, an example remote device for
implementing one or more embodiments includes a general purpose
computing device in the form of a computer 1610. Components of
computer 1610 may include, but are not limited to, a processing
unit 1620, a system memory 1630, and a system bus 1622 that couples
various system components including the system memory to the
processing unit 1620.
[0085] Computer 1610 typically includes a variety of computer
readable media and can be any available media that can be accessed
by computer 1610. The system memory 1630 may include computer
storage media in the form of volatile and/or nonvolatile memory
such as read only memory (ROM) and/or random access memory (RAM).
By way of example, and not limitation, system memory 1630 may also
include an operating system, application programs, other program
modules, and program data.
[0086] A user can enter commands and information into the computer
1610 through input devices 1640. A monitor or other type of display
device is also connected to the system bus 1622 via an interface,
such as output interface 1650. In addition to a monitor, computers
can also include other peripheral output devices such as speakers
and a printer, which may be connected through output interface
1650.
[0087] The computer 1610 may operate in a networked or distributed
environment using logical connections to one or more other remote
computers, such as remote computer 1670. The remote computer 1670
may be a personal computer, a server, a router, a network PC, a
peer device or other common network node, or any other remote media
consumption or transmission device, and may include any or all of
the elements described above relative to the computer 1610. The
logical connections depicted in FIG. 16 include a network 1672,
such local area network (LAN) or a wide area network (WAN), but may
also include other networks/buses. Such networking environments are
commonplace in homes, offices, enterprise-wide computer networks,
intranets and the Internet.
[0088] As mentioned above, while example embodiments have been
described in connection with various computing devices and network
architectures, the underlying concepts may be applied to any
network system and any computing device or system in which it is
desirable to improve efficiency of resource usage.
[0089] Also, there are multiple ways to implement the same or
similar functionality, e.g., an appropriate API, tool kit, driver
code, operating system, control, standalone or downloadable
software object, etc. which enables applications and services to
take advantage of the techniques provided herein. Thus, embodiments
herein are contemplated from the standpoint of an API (or other
software object), as well as from a software or hardware object
that implements one or more embodiments as described herein. Thus,
various embodiments described herein can have aspects that are
wholly in hardware, partly in hardware and partly in software, as
well as in software.
[0090] The word "exemplary" is used herein to mean serving as an
example, instance, or illustration. For the avoidance of doubt, the
subject matter disclosed herein is not limited by such examples. In
addition, any aspect or design described herein as "exemplary" is
not necessarily to be construed as preferred or advantageous over
other aspects or designs, nor is it meant to preclude equivalent
exemplary structures and techniques known to those of ordinary
skill in the art. Furthermore, to the extent that the terms
"includes," "has," "contains," and other similar words are used,
for the avoidance of doubt, such terms are intended to be inclusive
in a manner similar to the term "comprising" as an open transition
word without precluding any additional or other elements when
employed in a claim.
[0091] As mentioned, the various techniques described herein may be
implemented in connection with hardware or software or, where
appropriate, with a combination of both. As used herein, the terms
"component," "module," "system" and the like are likewise intended
to refer to a computer-related entity, either hardware, a
combination of hardware and software, software, or software in
execution. For example, a component may be, but is not limited to
being, a process running on a processor, a processor, an object, an
executable, a thread of execution, a program, and/or a computer. By
way of illustration, both an application running on computer and
the computer can be a component. One or more components may reside
within a process and/or thread of execution and a component may be
localized on one computer and/or distributed between two or more
computers.
[0092] The aforementioned systems have been described with respect
to interaction between several components. It can be appreciated
that such systems and components can include those components or
specified sub-components, some of the specified components or
sub-components, and/or additional components, and according to
various permutations and combinations of the foregoing.
Sub-components can also be implemented as components
communicatively coupled to other components rather than included
within parent components (hierarchical). Additionally, it can be
noted that one or more components may be combined into a single
component providing aggregate functionality or divided into several
separate sub-components, and that any one or more middle layers,
such as a management layer, may be provided to communicatively
couple to such sub-components in order to provide integrated
functionality. Any components described herein may also interact
with one or more other components not specifically described herein
but generally known by those of skill in the art.
[0093] In view of the example systems described herein,
methodologies that may be implemented in accordance with the
described subject matter can also be appreciated with reference to
the flowcharts of the various figures. While for purposes of
simplicity of explanation, the methodologies are shown and
described as a series of blocks, it is to be understood and
appreciated that the various embodiments are not limited by the
order of the blocks, as some blocks may occur in different orders
and/or concurrently with other blocks from what is depicted and
described herein. Where non-sequential, or branched, flow is
illustrated via flowchart, it can be appreciated that various other
branches, flow paths, and orders of the blocks, may be implemented
which achieve the same or a similar result. Moreover, some
illustrated blocks are optional in implementing the methodologies
described hereinafter.
CONCLUSION
[0094] While the invention is susceptible to various modifications
and alternative constructions, certain illustrated embodiments
thereof are shown in the drawings and have been described above in
detail. It should be understood, however, that there is no
intention to limit the invention to the specific forms disclosed,
but on the contrary, the intention is to cover all modifications,
alternative constructions, and equivalents falling within the
spirit and scope of the invention.
[0095] In addition to the various embodiments described herein, it
is to be understood that other similar embodiments can be used or
modifications and additions can be made to the described
embodiment(s) for performing the same or equivalent function of the
corresponding embodiment(s) without deviating therefrom. Still
further, multiple processing chips or multiple devices can share
the performance of one or more functions described herein, and
similarly, storage can be effected across a plurality of devices.
Accordingly, the invention is not to be limited to any single
embodiment, but rather is to be construed in breadth, spirit and
scope in accordance with the appended claims.
* * * * *