U.S. patent application number 16/539177 was filed with the patent office on 2019-11-28 for fabricating three-dimensional objects with overhang.
This patent application is currently assigned to Microsoft Technology Licensing, LLC. The applicant listed for this patent is Microsoft Technology Licensing, LLC. Invention is credited to Shanen J. BOETTCHER, Yulin JIN, Emmett LALISH, Jesse MCGATHA.
Application Number | 20190358906 16/539177 |
Document ID | / |
Family ID | 52686478 |
Filed Date | 2019-11-28 |
View All Diagrams
United States Patent
Application |
20190358906 |
Kind Code |
A1 |
BOETTCHER; Shanen J. ; et
al. |
November 28, 2019 |
FABRICATING THREE-DIMENSIONAL OBJECTS WITH OVERHANG
Abstract
The claimed subject matter includes a system and method to
design 3D objects for fabrication. In embodiments, the method
includes sampling coordinates of a two-dimensional object. The
method also includes generating fabrication coordinates based on
the coordinates and a plane comprising a top layer of a
three-dimensional (3D) object. Additionally, the method includes
generating a 2D triangular mesh for the top layer of an overhang
based on the sampled coordinates, an angle between the top layer
and two points in a previous top layer border less than or equal to
an overhang threshold angle.
Inventors: |
BOETTCHER; Shanen J.;
(Bellevue, WA) ; JIN; Yulin; (Redmond, WA)
; LALISH; Emmett; (Seattle, WA) ; MCGATHA;
Jesse; (Sammamish, WA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Microsoft Technology Licensing, LLC |
Redmond |
WA |
US |
|
|
Assignee: |
Microsoft Technology Licensing,
LLC
Redmond
WA
|
Family ID: |
52686478 |
Appl. No.: |
16/539177 |
Filed: |
August 13, 2019 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
15628424 |
Jun 20, 2017 |
10434717 |
|
|
16539177 |
|
|
|
|
14195174 |
Mar 3, 2014 |
|
|
|
15628424 |
|
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
B29C 64/40 20170801;
B33Y 10/00 20141201; B29C 64/386 20170801; G06T 17/10 20130101;
B33Y 30/00 20141201; G06T 11/203 20130101; B33Y 50/02 20141201 |
International
Class: |
B29C 64/386 20060101
B29C064/386; B29C 64/40 20060101 B29C064/40; G06T 17/10 20060101
G06T017/10; G06T 11/20 20060101 G06T011/20 |
Claims
1. A method for designing three-dimensional (3D) objects for
fabrication, the method comprising: sampling coordinates of a
two-dimensional object; generating fabrication coordinates based on
the coordinates and a plane comprising a top layer of a
three-dimensional (3D) object; and generating a 2D triangular mesh
for the top layer of an overhang based on: the sampled coordinates,
and an angle between the top layer and two points in a previous top
layer border being less than or equal to an overhang threshold
angle.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation of U.S. patent
application Ser. No. 15/628,424, filed Jun. 20, 2017, and entitled
"FABRICATING THREE-DIMENSIONAL OBJECTS WITH OVERHANG" which is a
continuation of U.S. patent application Ser. No. 14/195,174, filed
Mar. 3, 2014, and entitled "FABRICATING THREE-DIMENSIONAL OBJECTS
WITH OVERHANG", the application of which is incorporated herein in
its entirety by reference.
BACKGROUND
[0002] Three-dimensional (3D) objects may be fabricated in various
ways, including printing and additive manufacturing processes, such
as, fused deposition modeling. With regard to 3D printing, 3D
printers sometimes have difficulty fabricating objects with
overhangs. Overhangs are protrusions from the body of the printed
object. Such overhangs may be common with printing personalized
objects, e.g., a printed trophy customized with text identifying
the winner. The layer-by-layer construction process does not
provide enough support to material that overhangs above at such
angles. As such, the protruding material may lose its shape, or
even fall off the printed object. One approach to this challenge
involves providing external structures that support the overhangs
during printing or manufacturing. This approach also involves
manually removing the structures once the object is completed.
Thus, this manual approach is slow, tedious, and resource
intensive.
SUMMARY
[0003] The following presents a simplified summary of the
innovation in order to provide a basic understanding of some
aspects described herein. This summary is not an extensive overview
of the claimed subject matter. It is intended to neither identify
key elements of the claimed subject matter nor delineate the scope
of the claimed subject matter. Its sole purpose is to present some
concepts of the claimed subject matter in a simplified form as a
prelude to the more detailed description that is presented
later.
[0004] A system and method design 3D objects for fabrication.
Embodiments include a method that samples coordinates of a
two-dimensional object. The method also includes generating
fabrication coordinates based on the coordinates and a plane
comprising a top layer of a three-dimensional (3D) object.
Additionally, the method includes generating a 2D triangular mesh
for the top layer of an overhang based on the sampled coordinates,
an angle between the top layer and two points in a previous top
layer border less than or equal to an overhang threshold angle.
[0005] In embodiments, a system that designs 3D objects for
fabrication includes a processing unit and a system memory. The
system memory stores code configured to direct the processing unit
to sample coordinates of a two-dimensional (2D) object. Fabrication
coordinates are generated based on the coordinates and a plane
comprising a top layer of a three-dimensional (3D) object.
Coordinates of a projected curve are sampled. Coordinates of a
segment of the 2D object are sampled. A 2D triangular mesh is
generated for the top layer of an overhang based on the sampled
coordinates, an angle between the top layer and two points in a
previous top layer border less than or equal to an overhang
threshold angle. The top layer has a z1 value, where z1>z2. The
z2 layer is disposed beneath the top layer. The top layer includes
specific text in a specific font.
[0006] Embodiments include one or more computer-readable storage
memory devices for storing computer-readable instructions. The
computer-readable instructions provide a 3D object design system
when executed by one or more processing devices. The
computer-readable instructions include code configured to sample
coordinates of a two-dimensional (2D) object. Fabrication
coordinates are generated based on the coordinates and a plane
comprising a top layer of a three-dimensional (3D) object.
Coordinates of a projected curve are sampled. Coordinates of a
segment of the 2D object are sampled. A 2D triangular mesh is
generated for the top layer of an overhang based on the sampled
coordinates, an angle between the top layer and two points in a
previous top layer border less than or equal to an overhang
threshold angle. The plane includes a z1 plane where z1>z2, and
z2 is disposed a layer beneath the top layer. The top layer
includes specific text in a specific font. The 3D object is a
personalized award.
[0007] The following description and the annexed drawings set forth
in detail certain illustrative aspects of the claimed subject
matter. These aspects are indicative, however, of a few of the
various ways in which the principles of the innovation may be
employed and the claimed subject matter is intended to include all
such aspects and their equivalents. Other advantages and novel
features of the claimed subject matter will become apparent from
the following detailed description of the innovation when
considered in conjunction with the drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
[0008] FIG. 1 is a block diagram of an example fabricator for
transforming a 3D model into instructions for fabricating a 3D
object with overhang according to embodiments described herein;
[0009] FIG. 2 is a schematic showing an example 3D model that may
be used according to embodiments described herein;
[0010] FIGS. 3A-3B are block diagrams of example 3D objects
fabricated according to embodiments described herein;
[0011] FIG. 4 is a process flow of a method for designing a 3D
model of text for fabrication according to embodiments described
herein;
[0012] FIG. 5 is a block diagram showing a 3D model of an example
roof structure according to embodiments described herein;
[0013] FIGS. 6A-6D are block diagrams representing methods for
designing a 3D model of text for fabrication;
[0014] FIG. 7 is a process flow of a method for designing a 3D
model of text for fabrication, in accordance with the claimed
subject matter; and
[0015] FIG. 8 is a block diagram of an exemplary operating
environment for implementing various aspects of the claimed subject
matter.
DETAILED DESCRIPTION
[0016] As a preliminary matter, some of the Figures describe
concepts in the context of one or more structural components,
variously referred to as functionality, modules, features,
elements, or the like. The various components shown in the Figures
can be implemented in any manner, such as software, hardware,
firmware, or combinations thereof. In some embodiments, various
components reflect the use of corresponding components in an actual
implementation. In other embodiments, any single component
illustrated in the Figures may be implemented by a number of actual
components. The depiction of any two or more separate components in
the Figures may reflect different functions performed by a single
actual component. FIG. 1, discussed below, provides details
regarding one system that may be used to implement the functions
shown in the Figures.
[0017] Other Figures describe the concepts in flowchart form. In
this form, certain operations are described as constituting
distinct blocks performed in a certain order. Such implementations
are exemplary and non-limiting. Certain blocks described herein can
be grouped together and performed in a single operation, certain
blocks can be broken apart into multiple component blocks, and
certain blocks can be performed in an order that differs from that
which is illustrated herein, including a parallel manner of
performing the blocks. The blocks shown in the flowcharts can be
implemented by software, hardware, firmware, manual processing, or
the like. As used herein, hardware may include computer systems,
discrete logic components, such as application specific integrated
circuits (ASICs), or the like.
[0018] As to terminology, the phrase "configured to" encompasses
any way that any kind of functionality can be constructed to
perform an identified operation. The functionality can be
configured to perform an operation using, for instance, software,
hardware, firmware, or the like. The term, "logic" encompasses any
functionality for performing a task. For instance, each operation
illustrated in the flowcharts corresponds to logic for performing
that operation. An operation can be performed using, software,
hardware, firmware, or the like. The terms, "component," "system,"
and the like may refer to computer-related entities, hardware, and
software in execution, firmware, or combination thereof. A
component may be a process running on a processor, an object, an
executable, a program, a function, a subroutine, a computer, or a
combination of software and hardware. The term, "processor," may
refer to a hardware component, such as a processing unit of a
computer system.
[0019] Furthermore, the claimed subject matter may be implemented
as a method, apparatus, or article of manufacture using standard
programming and engineering techniques to produce software,
firmware, hardware, or any combination thereof to control a
computing device to implement the disclosed subject matter. The
term, "article of manufacture," as used herein is intended to
encompass a computer program accessible from any computer-readable
storage device or media. Computer-readable storage media can
include, but are not limited to, magnetic storage devices, e.g.,
hard disk, floppy disk, magnetic strips, optical disk, compact disk
(CD), digital versatile disk (DVD), smart cards, flash memory
devices, among others. In contrast, computer-readable media, i.e.,
not storage media, may include communication media such as
transmission media for wireless signals and the like.
[0020] The following describes example embodiments of a printing
tool configured to extrude material during three-dimensional (3D)
object fabrication. Embodiments described herein are generally
directed towards a fabrication manager configured to generate an
instruction set that causes fabrication of a 3D object. The
instruction set describes the path the fabricator follows to create
the 3D object (the tool path). The instruction set provides the (x,
y, z) positions where extrudable material is deposited, the amount
of material deposited, and associated information.
[0021] FIG. 1 is a block diagram of an example fabricator 100 for
transforming a 3D model into instructions for fabricating a 3D
object with overhang according to embodiments described herein. The
fabricator 100 may include a control unit or controller 102 coupled
to a first mechanism 104 and configured to execute instructions for
the first mechanism 104 and a second mechanism 106. A chamber 108
constructed within the second mechanism 106 allows colored
materials to be prepared, e.g., heated and blended, when
fabricating an object 110. For example, the chamber 108 is used for
melting and extruding filaments, or other compatible materials.
[0022] The first mechanism 104 may be referred to as a robotic
mechanism, e.g., a gantry robot, including various mechanical or
electro-mechanical components. By executing at least some
instructions within an instruction set 112, the first mechanism 104
may actuate these components into performing at least some physical
movement. The fabrication manager 114 may generate the instruction
set 112 by partitioning a 3D model into layers and providing
specific fabrication instructions for each layer. When actuated,
these components may move horizontally, vertically, diagonally,
rotationally, and so forth. One example implementation of the first
mechanism 104 moves a printing mechanism or tool across an x, y, or
z-axis in order to deposit material at a specific position within
the object 110 being fabricated.
[0023] The second mechanism 106 may be referred to as a printing
mechanism that includes one or more printing tool heads. The
material may be pushed or pulled into a printing tool head, and the
motors may be mounted further away in order to push the material
through a thin guide tube into the chamber 108. Although the second
mechanism 106 may resemble an extruder configuration, e.g., a
single extruder head configuration, it is appreciated that the
second mechanism 106 represents any compatible technology,
including legacy printing tool heads. Furthermore, the second
mechanism 106 may include printing tool heads configured to deposit
other materials in addition to colored materials and transparent
materials.
[0024] The instructions mentioned above, which are stored in an
instruction set 112, may be collectively referred to as coordinated
instructions because such instructions are executed, in
coordination with multiple components. For example, instructions
for different stepper motors in an extruder configuration may be
coordinated such that an appropriate extrudable material is fed
into the chamber 108. Accordingly, an instruction for one stepper
motor may be synchronized in time with an instruction for another
stepper motor such that both stepper motors can operate in
coordination with each other.
[0025] The fabrication manager 114 may include hardware and
software components operating on various embodiments of computing
devices, such as a remote computing device and an attached
computing device. One example implementation of the fabrication
manager 114 processes captured volumetric sensor data,
corresponding to an object being fabricated, in a 3D model and
partitions that information into layers in which each layer
includes at least some geometry, which may include geometric
elements corresponding to a surface mesh. The present disclosure
may use "partition", "slice", or another similar term in place of
"layer," and it is appreciated that these terms be defined as
interchangeable.
[0026] Within partition information 116, the fabrication manager
114 stores a data structure corresponding to the 3D model. Geometry
generally refers to a set of geometric elements, such as a 3D
polyhedron or other shape, which may represent an amount of
extrudable material to be deposited. One example measure represents
at least a portion of the geometry--and therefore, the amount of
extrudable material--volumetrically. The example measure may define
a portion of the geometry using standardized units in which each
unit represents a minimal amount, e.g., volume, of colored material
at a given time instance, such as by an extrusion width. Each
geographic element may include one or more standardized units.
[0027] The fabrication manager 114 is configured to generate
instructions that, when executed by the controller 102, actuate
components of the first mechanism 104, which may result in
movements of the second mechanism 106 following a surface geometry,
e.g., an exterior shell of the object 110.
[0028] Optionally, a movable platform, such as a platform 120,
functions as a mechanism for printing the object 110. The first
mechanism 104 may operate the platform 120 to guide the object 110
and the nozzle 118 to each other. The instruction set 112 may
include instructions for automatically calibrating the platform 120
such that through a series of movements in an x, y, and z direction
or in rotation across an x-y plane, the 3D object 110 is moved to a
correct position for the nozzle 118 to deposit material.
[0029] Some example embodiments of the fabricator 100 include
legacy devices that are retrofitted with at least some of the
components described herein, including the controller 102, the
fabrication manager 114, and a printing tool head, such as the
second mechanism 106. As one option, the fabricator 100 may include
an additional microprocessor to manage the set of motors and to
receive a signal from an original microprocessor when a command is
processed.
[0030] To illustrate one example, a verified manifold object,
represented in a 3D mesh model, may be partitioned into layers by
processing each polygon representing the object, and projecting
each polygon through a slicing plane. This projection generates a
point and connections to other points in a manner that eventually
creates a path. From this point, the path is reduced to units,
e.g., volumetric measures of geometric elements, representing
addressable units for a specific hardware characteristic of a
corresponding fabricator. The units may not be the same size, axis
aligned, and the same size in each dimension. One example
implementation may utilize non-cubic units of different sizes along
an x, y, or z axis, which enables different effective resolutions
per dimension. According to one example implementation, the
partition information 116 may include voxelized data such that each
addressable (voxel) unit includes a variety of information, such as
color, texture, and lighting values, for geometry within that
addressable voxel unit.
[0031] An example fabricator 100 includes an arrangement of motors
and a tool head having a mixing chamber and a nozzle. The tool head
also may include a heating element for melting extrudable material
to a prescribed temperature.
[0032] FIG. 2 is a schematic showing an example 3D model that may
be used according to embodiments described herein. The 3D model 200
is represented as a mesh including faces 202. In the embodiment
shown in FIG. 2, the faces 202 are made up of triangles. However,
the faces 202 may be made up of rectangles or other polygon
types.
[0033] When fabricating the 3D object, the fabrication manager 114
determines an approximate amount of extrudable material capable of
being deposited at a given (x, y, z) location. The fabrication
manager 114 uses the determined amount to define addressable units
on the object's shell. Each unit represents a specific geometric
element or a portion of the 3D object. Color resolution also may
increase or decrease depending on unit size. This technique may be
applied to the object's entire volume, including the outer
shell.
[0034] FIGS. 3A-3B are block diagrams of example 3D objects 300A,
300B fabricated according to embodiments described herein. The
object 300A includes a 3D text protruding from a block base 302A.
The design of the object 300 includes text fabricated with a "roof"
for each letter. The roof includes chamfers 304A and a ridge 306A.
A chamfer is a beveled edge that connects two surfaces. In FIG. 3A,
the angle of the overhang, e.g., the chamfers 304A, in relation to
the base object 302A, is 45 degrees. This angle can be supported by
the thus-far fabricated object 300A as each layer is deposited.
FIG. 3B includes the base object 302B, and chamfers 304B, creating
ridges 606B. The angles of the chamfers 304B are less than 45
degrees, which provides the appearance of a flat roof structure. It
is noted that 45 degrees is an example of an overhang threshold
angle, which may be pre-determined. The overhang threshold angle is
the angle, at or below which, the overhang maintains the structure
of the 3D object, without external support.
[0035] The addressable units may be represented herein as voxelized
data, e.g., voxelized data structure. In an example implementation,
the fabrication manager 114 determines volume in voxel units, e.g.,
volumetric pixels. The fabricator's 3D space is factored by a
minimum volume of extrudable material. Other information may
include implicit values, such as, distance to an object surface
mesh, probabilities indicating whether a voxel unit of the object
occupies the volume represented.
[0036] FIG. 4 is a process flow of a method 400 for designing a 3D
model of text for fabrication according to embodiments described
herein. One or more components of hardware or software, e.g., the
fabrication manager 114, may be configured to perform the method
400. The method 400 begins at block 402 where a 3D model may be
partitioned into layers.
[0037] At block 404, the fabrication manager 114 generates a tool
path for fabricating the 3D object. The tool path is based on 2D
polygons that serve as the structure of each layer. Geometric
elements, such as, 2D polygons are generated for each layer based
on faces, colors, textures, gradients, and the like. The
fabrication manager 114 decomposes each layer into 2D polygons, and
projects each element onto the layer's plane, forming the object's
shell. The 2D polygons may include faces, colors, textures, and
gradients.
[0038] At block 406, a procedure may be defined for depositing
extrudable material along a tool path. The procedure may involve
moving a printing tool according to a tool path. One example
implementation determines for each unit a stepper motor speed at
which extrudable materials are fed into the printing tool while
that tool follows the tool path, and moves the printing tool head
to that unit's location on the object being fabricated. At block
408, the instruction set 112 is generated for the fabricator 100.
The instruction set 112 directs the tool device to apply extrudable
material for all 2D polygons. The instruction set 112 includes
coordinated instructions for the depositing procedure and the tool
path.
[0039] After allowing the deposited material to cool or dry, the
fabrication manager 114 may determine whether to fabricate another
layer at block 410. If there are more layers in the model, the
method 400 returns to block 404. Otherwise, the method 400 proceeds
to block 412, where the coordinated instruction set 112 may be
communicated to the fabricator 100.
[0040] This process flow diagram is not intended to indicate that
the blocks of the method 400 are to be executed in any particular
order, or that all of the blocks are to be included in every case.
Further, any number of additional blocks not shown may be included
within the method 400, depending on the details of the specific
implementation.
[0041] One example implementation generates example coordinated
instructions, e.g., op codes, g-code and the like, to drive a
robotic mechanism, e.g., the first mechanism 104, and deposit
materials using the printing tool, e.g., the second mechanism 106.
The printing tool includes a head with a nozzle and a set of
motors, which can be local or remote. A controller configures a
tool-set or coordinated instruction set for each Z layer that, when
executed, causes the robotic mechanism to move the printing tool
head to an area where the printing mechanism deposits a combination
of one or more materials.
[0042] FIG. 5 is a block diagram 500A of an example roof
fabrication over text according to embodiments described herein. In
various embodiments, to represent the object's geometry, the
fabrication manager 114 partitions the object's 3D model, e.g., a
mesh model, into layers along a Z-axis. Each Z layer represents
units in an X-Y plane of the 3D object. The units represent
specific 3D spaces where extrudable material is filled.
[0043] 3D printing uses many 3D models with varying thicknesses. As
such, 3D text is generated from 2D triangular mesh by duplicating
the 2D polygons with a different "z" value. For example, z is set
to a positive delta in order to provide for a bottom layer and a
top layer. For the top layer, a roof or offset is generated with an
angle less than 45 degrees. There are two different visual effects:
One effect is to create the roof of the bottom polygons for a sharp
roof, e.g., object 400A. The other effect is to create certain
offset inside the top polygon so the top layer has a smaller flat
roof with a slope. The angles vary across implementations of the
claimed subject matter. This same technique can be used for
engraving as well as embossing.
[0044] The top layer 502A is processed to find the roof (or
offset). A Delauney triangulation is performed on the top layer
502A. A Delaunay triangulation for a set P of points in a plane is
a triangulation DT(P) such that no point in P is inside the
circumcircle of any triangle in DT(P). Delaunay triangulations
maximize the minimum angle of all the angles of the triangles in
the triangulation. The original polygons are constraints for the
outer boundaries, but there also inner constraints from the roof,
created by the straight skeleton. The fabrication mananager 114
ensures triangulation does not refine any segment of the original
outer polygon. Accordingly, the triangles from both top layer and
bottom layer are merged into one triangular mesh. in order to get
the 3D triangular text mesh to print.
[0045] Each layer includes a 3D voxelized data structure based on
the units included therein, and is represented by lines 502. Each
layer may be represented as a set of addressable units which
include at least a portion of a geometric element. Geometric
elements generally refer to polygons projected onto a plane as
paths having at least some volume. The paths may form an exterior
shell of the object being fabricated.
[0046] FIGS. 6A-6D are block diagrams representing methods for
designing a 3D model of example text 600A-600D, designed for
fabrication according to embodiments described herein. In FIG. 6A,
the fabrication manager 114 retrieves 2D geometric segments for the
3D object. Text contours may be represented by segments 602A and
geometric segments 604A for the TrueType Font.
[0047] In FIG. 6B, the geometric segments are sampled. In 3D
printing, fabricating curved surfaces is challenging. As such,
triangular mesh based geometry representation is typically used.
This approach converts curves to straight line segments by sampling
the Bezier curves 604B to get coordinates. It is noted that Bezier
curves are merely an example geometric segment being sampled. The
coordinates are used for 2D polygons that simulate the original
curves 604A.
[0048] In FIG. 6C, the fabrication manager samples 2D points of the
text 600B. This may be performed with image segmentation, or
similar 2D sampling. Logo images are frequently converted from 2D
images to 3D text objects. Likewise, text from bitmap-only fonts
may need to be converted into its geometric-segments equivalent.
Accordingly, standardized image segmentation may be used to derive
the 2D polygons 606 in text 600C of FIG. 6C directly from the 2D
images 600A. Alternatively, the fabrication manager 144 may perform
a sweep line procedure to get the intersection pixels and convert
to 2D coordinates. The 2D polygons 606 represent text 600D. Using
these techniques, the fabrication manager 114 can extract
consistent input data to be used throughout the rest of the
fabrication design.
[0049] In FIG. 6D, a 2D triangular mesh is generated using a
triangulation method. Delauney triangulation uses 2D segments 602A
and sampled coordinates of Bezier curves 604A to represent the text
600A. In the triangular mesh, the triangle orientation (i.e., the
clockwise or counter-clockwise order of declaration of the triangle
vertices), when declared consistently and accurately, indicates
whether individual polygons 606 are solid or empty. For example,
the "0" has a hole in the middle because the orientation of the
polygon is negative when using the right-hand rule 608. When using
the left-hand rule 610, the reverse is true. It is noted that this
is mathematically equal to one of the fill rules but, different
fill rules may be used in the alternative.
[0050] FIG. 7 is a process flow of diagram a method 700 for
designing a 3D model of text for fabrication, in accordance with
the claimed subject matter. The method 700 may be performed by the
fabrication manager 114. The method begins at block 702, where 2D
Bezier curves, for example, are identified for curves in a text.
Based on the Bezier curve of a letter or shape, a transformation is
determined for creating a 3D object from 2D text. The fabrication
manager 114 finds the outer edge of the shape or font using image
segmentation. A Bezier curve of the object is determined. For a
mid-point offset, for example, the shape between the edges is
determined to have a 45.degree. angle between the edge and the
center point, extruding the 2D shape to a 3D shape.
[0051] At block 704 the curves are sampled to determine polygons.
In parallel, at block 706, polygons are determined based on
sampling the straight segments in the text. Image segmentation may
be used. At block 708, the 2D triangular mesh is created from the
sampled curves and segments. At block 710, an offset is created for
the top layer of the 3D object. At block 712, the 3D text object is
created.
[0052] Advantageously, 3D text may be used for various fonts.
Additionally, the 3D text is self-supported because it never has an
angle from layer to layer of more than 45.degree., saving the cost
and time of external support structures. Further, the method 700 is
not limited to textual fabrications. Rather, the techniques
described herein may be applied to various shapes.
[0053] When the offset is equal to half of the width of the polygon
606, the straight skeleton algorithm can use this information to
design the roof of such a building. Additionally, the straight
skeleteon algorithm can draw the centerline ridge 306A. Except for
calculating the roof, the shrinking process of the straight
skeleton algorithm can provide the capability to achieve the 2nd
effect by just stopping shrinking at a specified height.
[0054] In order to provide context for implementing various aspects
of the claimed subject matter, FIG. 10 is intended to provide a
brief, general description of a computing environment in which the
various aspects of the claimed subject matter may be implemented.
For example, a method and system for fabricating 3D objects can be
implemented in such a computing environment. While the claimed
subject matter has been described above in the general context of
computer-executable instructions of a computer program that runs on
a local computer or remote computer, the claimed subject matter
also may be implemented in combination with other program modules.
Generally, program modules include routines, programs, components,
data structures, or the like that perform particular tasks or
implement particular abstract data types.
[0055] FIG. 8 is a block diagram of an exemplary operating
environment for implementing various aspects of the claimed subject
matter. The exemplary operating environment 800 includes a computer
802. The computer 802 includes a processing unit 804, a system
memory 806, and a system bus 808.
[0056] The system bus 808 couples system components including, but
not limited to, the system memory 806 to the processing unit 804.
The processing unit 804 can be any of various available processors.
Dual microprocessors and other multiprocessor architectures also
can be employed as the processing unit 804.
[0057] The system bus 808 can be any of several types of bus
structure, including the memory bus or memory controller, a
peripheral bus or external bus, and a local bus using any variety
of available bus architectures known to those of ordinary skill in
the art. The system memory 806 includes computer-readable storage
media that includes volatile memory 810 and nonvolatile memory
812.
[0058] The basic input/output system (BIOS), containing the basic
routines to transfer information between elements within the
computer 802, such as during start-up, is stored in nonvolatile
memory 812. By way of illustration, and not limitation, nonvolatile
memory 812 can include read only memory (ROM), programmable ROM
(PROM), electrically programmable ROM (EPROM), electrically
erasable programmable ROM (EEPROM), or flash memory.
[0059] Volatile memory 810 includes random access memory (RAM),
which acts as external cache memory. By way of illustration and not
limitation, RAM is available in many forms such as static RAM
(SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data
rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), SynchLink.TM. DRAM
(SLDRAM), Rambus.RTM. direct RAM (RDRAM), direct Rambus.RTM.
dynamic RAM (DRDRAM), and Rambus.RTM. dynamic RAM (RDRAM).
[0060] The computer 802 also includes other computer-readable
media, such as removable/non-removable, volatile/non-volatile
computer storage media. FIG. 8 shows, for example a disk storage
814. Disk storage 814 includes, but is not limited to, devices like
a magnetic disk drive, floppy disk drive, tape drive, Jaz drive,
Zip drive, LS-210 drive, flash memory card, or memory stick.
[0061] In addition, disk storage 814 can include storage media
separately or in combination with other storage media including,
but not limited to, an optical disk drive such as a compact disk
ROM device (CD-ROM), CD recordable drive (CD-R Drive), CD
rewritable drive (CD-RW Drive) or a digital versatile disk ROM
drive (DVD-ROM). To facilitate connection of the disk storage
devices 814 to the system bus 808, a removable or non-removable
interface is typically used such as interface 816.
[0062] It is to be appreciated that FIG. 8 describes software that
acts as an intermediary between users and the basic computer
resources described in the suitable operating environment 800. Such
software includes an operating system 818. Operating system 818,
which can be stored on disk storage 814, acts to control and
allocate resources of the computer system 802.
[0063] System applications 820 take advantage of the management of
resources by operating system 818 through program modules 822 and
program data 824 stored either in system memory 806 or on disk
storage 814. It is to be appreciated that the claimed subject
matter can be implemented with various operating systems or
combinations of operating systems.
[0064] A user enters commands or information into the computer 802
through input devices 826. Input devices 826 include, but are not
limited to, a pointing device, such as, a mouse, trackball, stylus,
and the like, a keyboard, a microphone, a joystick, a satellite
dish, a scanner, a TV tuner card, a digital camera, a digital video
camera, a web camera, and the like. The input devices 826 connect
to the processing unit 804 through the system bus 808 via interface
ports 828. Interface ports 828 include, for example, a serial port,
a parallel port, a game port, and a universal serial bus (USB).
[0065] Output devices 830 use some of the same type of ports as
input devices 826. Thus, for example, a USB port may be used to
provide input to the computer 802, and to output information from
computer 802 to an output device 830.
[0066] Output adapter 832 is provided to illustrate that there are
some output devices 830 like monitors, speakers, and printers,
among other output devices 830, which are accessible via adapters.
The output adapters 832 include, by way of illustration and not
limitation, video and sound cards that provide a means of
connection between the output device 830 and the system bus 808. It
can be noted that other devices and systems of devices provide both
input and output capabilities such as remote computers 834.
[0067] The computer 802 can be a server hosting various software
applications in a networked environment using logical connections
to one or more remote computers, such as remote computers 834. The
remote computers 834 may be client systems configured with web
browsers, PC applications, mobile phone applications, and the
like.
[0068] The remote computers 834 can be a personal computer, a
server, a router, a network PC, a workstation, a microprocessor
based appliance, a mobile phone, a peer device or other common
network node and the like, and typically includes many or all of
the elements described relative to the computer 802.
[0069] For purposes of brevity, a memory storage device 836 is
illustrated with remote computers 834. Remote computers 834 is
logically connected to the computer 802 through a network interface
838 and then connected via a wireless communication connection
840.
[0070] Network interface 838 encompasses wireless communication
networks such as local-area networks (LAN) and wide-area networks
(WAN). LAN technologies include Fiber Distributed Data Interface
(FDDI), Copper Distributed Data Interface (CDDI), Ethernet, Token
Ring and the like. WAN technologies include, but are not limited
to, point-to-point links, circuit switching networks like
Integrated Services Digital Networks (ISDN) and variations thereon,
packet switching networks, and Digital Subscriber Lines (DSL).
[0071] Communication connections 840 refers to the
hardware/software employed to connect the network interface 838 to
the bus 808. While communication connection 840 is shown for
illustrative clarity inside computer 802, it can also be external
to the computer 802. The hardware/software for connection to the
network interface 838 may include, for exemplary purposes, internal
and external technologies such as, mobile phone switches, modems
including regular telephone grade modems, cable modems and DSL
modems, ISDN adapters, and Ethernet cards.
[0072] An exemplary processing unit 804 for the server may be a
computing cluster. The disk storage 814 may comprise an enterprise
data storage system, for example, holding thousands of
impressions.
[0073] What has been described above includes examples of the
claimed subject matter. It is, of course, not possible to describe
every conceivable combination of components or methodologies for
purposes of describing the claimed subject matter, but one of
ordinary skill in the art may recognize that many further
combinations and permutations of the claimed subject matter are
possible. Accordingly, the claimed subject matter is intended to
embrace all such alterations, modifications, and variations that
fall within the spirit and scope of the appended claims.
[0074] In particular and in regard to the various functions
performed by the above described components, devices, circuits,
systems and the like, the terms (including a reference to a
"means") used to describe such components are intended to
correspond, unless otherwise indicated, to any component which
performs the specified function of the described component, e.g., a
functional equivalent, even though not structurally equivalent to
the disclosed structure, which performs the function in the herein
illustrated exemplary aspects of the claimed subject matter. In
this regard, it will also be recognized that the innovation
includes a system as well as a computer-readable storage media
having computer-executable instructions for performing the acts and
events of the various methods of the claimed subject matter.
[0075] There are multiple ways of implementing the claimed subject
matter, e.g., an appropriate API, tool kit, driver code, operating
system, control, standalone or downloadable software object, etc.,
which enables applications and services to use the techniques
described herein. The claimed subject matter contemplates the use
from the standpoint of an API (or other software object), as well
as from a software or hardware object that operates according to
the techniques set forth herein. Thus, various implementations of
the claimed subject matter described herein may have aspects that
are wholly in hardware, partly in hardware and partly in software,
as well as in software.
[0076] 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 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).
[0077] 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
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.
[0078] In addition, while a particular feature of the claimed
subject matter may have been disclosed with respect to one of
several implementations, such feature may be combined with one or
more other features of the other implementations as may be desired
and advantageous for any given or particular application.
Furthermore, to the extent that the terms "includes," "including,"
"has," "contains," variants thereof, and other similar words are
used in either the detailed description or the claims, these 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.
* * * * *