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.
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.
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.
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.
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.
Other advantages may become apparent from the following detailed description when taken in conjunction with the drawings.
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:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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
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
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
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.
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
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.
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.
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 9041 . . . 12 for the one or more non-planar geometries and combined with GCode for depositing material on remaining geometries of the three-dimensional model.
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×tan θ,minHeight),maxHeight)
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. θ represents an angle of inclination between two adjacent layers. The layer height may be computed by reducing the stepWidth by a tangent of angle θ, which represents a ratio between the layer height and the extrusion width given the angle θ. 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 10044 is inserted above layer 10043 because the horizontal distance (e.g., extrusion width) between the layer 10043 and a next adjacent layer at a full layer height exceeded the stepWidth parameter. As illustrated, the layer 10044 has a layer height that is a quarter of the layer 10043 to maintain the extrusion width under the stepWidth parameter. For each next layer until layer 100415, the layer height is substantially maintained because the angle of inclination remained substantially the same as well. After the layer 100415, 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 100421. Similarly, after the layer 100421, 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 1004N.
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.
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.
To illustrate one example, consider the texture pattern 1202 illustrated in
According to at least one example embodiment, a fabrication device (e.g., the fabrication device 102 of
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.
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.
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
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.
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.
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
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.
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.
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
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.
With reference to
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
Number | Date | Country | |
---|---|---|---|
61812232 | Apr 2013 | US |