U.S. patent application number 15/631846 was filed with the patent office on 2017-10-05 for methods and systems for generating polycubes and all-hexahedral meshes of an object.
The applicant listed for this patent is Oregon State University, The University of British Columbia. Invention is credited to James GREGSON, Alla SHEFFER, Eugene ZHANG.
Application Number | 20170287231 15/631846 |
Document ID | / |
Family ID | 49994426 |
Filed Date | 2017-10-05 |
United States Patent
Application |
20170287231 |
Kind Code |
A1 |
GREGSON; James ; et
al. |
October 5, 2017 |
METHODS AND SYSTEMS FOR GENERATING POLYCUBES AND ALL-HEXAHEDRAL
MESHES OF AN OBJECT
Abstract
A method for generating a polycube representation of an input
object comprises: receiving an input volumetric representation of
the input object; deforming the input volumetric representation to
provide a deformed object representation; and extracting, by the
processor, a polycube representation of the object from the
deformed object representation. Deforming the input volumetric
representation to provide the deformed object representation
comprises effecting a tradeoff between competing objectives of:
deforming the input volumetric representation in a manner which
provides surfaces having normal vectors closely aligned with one of
the six directions aligned with the set of global Cartesian axes;
and deforming the input volumetric representation in a manner which
provides low-distortion deformations. Deforming the input
volumetric representation to provide the deformed object may be
performed iteratively.
Inventors: |
GREGSON; James; (Vancouver,
CA) ; SHEFFER; Alla; (Vancouver, CA) ; ZHANG;
Eugene; (Corvallis, OR) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
The University of British Columbia
Oregon State University |
Vancouver
Corvallis |
OR |
CA
US |
|
|
Family ID: |
49994426 |
Appl. No.: |
15/631846 |
Filed: |
June 23, 2017 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
13948016 |
Jul 22, 2013 |
|
|
|
15631846 |
|
|
|
|
61673884 |
Jul 20, 2012 |
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06T 15/08 20130101;
G06T 2219/004 20130101; G06T 19/20 20130101; G06T 2219/2021
20130101; G06T 2210/44 20130101; G06T 17/20 20130101; G06T 2210/12
20130101 |
International
Class: |
G06T 19/20 20060101
G06T019/20; G06T 15/08 20060101 G06T015/08; G06T 17/20 20060101
G06T017/20 |
Claims
1. A method for generating a polycube representation of an input
object, the method comprising: receiving, at a processor, an input
volumetric representation of the input object; deforming, by the
processor, the input volumetric representation to provide a
deformed object representation; extracting, by the processor, a
polycube representation of the object from the deformed object
representation, the polycube representation comprising a solid
figure made of cubes joined face to face, the solid figure
comprising axis-aligned surface planes which having normal vectors
that align with one of six directions (.+-.X, .+-.Y, .+-.Z) aligned
with a set of global Cartesian axes; wherein deforming, by the
processor, the input volumetric representation to provide the
deformed object representation comprises effecting, by the
processor, a tradeoff between competing objectives of: deforming
the input volumetric representation in a manner which provides
surfaces having normal vectors closely aligned with one of the six
directions aligned with the set of global Cartesian axes; and
deforming the input volumetric representation in a manner which
provides low-distortion deformations.
2. A method according to claim 1 wherein the low-distortion
deformations comprise spatially smooth deformations which have
computationally optimally low spatial rates of deformation
change.
3. A method according to claim 1 wherein the low-distortion
deformations comprise deformations which are computationally
optimally minimized when compared to the input volumetric
representation.
4. A method according to claim 1 wherein effecting, by the
processor, the tradeoff between the competing objectives comprises
effecting, by the processor, a computationally optimized balance
between the competing objectives of: deforming the input volumetric
representation in a manner which provides surfaces having normal
vectors closely aligned with one of the six directions aligned with
the set of global Cartesian axes; and deforming the input
volumetric representation in a manner which provides low-distortion
deformations.
5. A method according to claim 1 wherein deforming, by the
processor, the input volumetric representation to provide the
deformed object representation comprises starting with the input
volumetric representation as a current model and then iteratively
deforming the current model, wherein each iteration comprises
effecting, by the processor, a tradeoff between competing
objectives of: deforming the current model in a manner which
provides surfaces having normal vectors closely aligned with one of
the six directions aligned with the set of global Cartesian axes;
and deforming the current model in a manner which provides
low-distortion deformations to the current model in each
iteration.
6. A method according to claim 5 wherein, in each iteration,
effecting, by the processor, the tradeoff between the competing
objectives comprises effecting, by the processor, a computationally
optimized balance between the competing objectives of: deforming
the current model in a manner which provides surfaces having normal
vectors closely aligned with one of the six directions aligned with
the set of global Cartesian axes; and deforming the current model
in a manner which provides low-distortion deformations to the
current model in each iteration.
7. A method according to claim 5 wherein the input volumetric
representation comprises a polyhedral-mesh representation of the
input object, the polyhedral-mesh representation comprising a
plurality of notional polyhedrons, each notional polyhedron
comprising a corresponding plurality of vertices, a plurality of
linear edges that extend between corresponding pairs of vertices
and a plurality of polygonal faces defined by corresponding
pluralities of edges.
8. A method according to claim 1 wherein the input volumetric
representation comprises a polyhedral-mesh representation of the
input object, the polyhedral-mesh representation comprising a
plurality of notional polyhedrons, each notional polyhedron
comprising a corresponding plurality of vertices, a plurality of
linear edges that extend between corresponding pairs of vertices
and a plurality of polygonal faces defined by corresponding
pluralities of edges.
9. A method according to claim 8 wherein extracting, by the
processor, the polycube representation from the deformed object
representation comprises: labeling, by the processor, each surface
face of the deformed object representation with a corresponding one
of the six directions aligned with the set of global Cartesian
axes; segmenting, by the processor, the surface faces of the
deformed object into charts, each chart comprising a contiguous
patch of surface faces having the same label; and warping, by the
processor, the deformed object representation to output a polycube
representation that complies with polycube constraints, wherein
warping the deformed object representation comprises adjusting the
positions of the vertices of the deformed object representation to
obtain updated vertex positions for the polycube representation,
such that, for each chart, the updated vertex positions of the
surface vertices associated with the chart are constrained to a
corresponding plane, the corresponding plane having a normal vector
aligned with the one of the six directions aligned with the set of
global Cartesian axes corresponding to the chart label.
10. A method according to claim 9 wherein labeling, by the
processor, each surface face comprises, for each surface face,
assigning, by the processor, the surface face a label with a
corresponding one of the six directions that is most closely
aligned with a surface normal vector of the surface face.
11. A method according to claim 9 wherein segmenting, by the
processor, the surface faces of the deformed object into charts
comprises determining if one or more of the charts meets relabeling
criteria and, if so, relabeling the one or more of the charts.
12. A method according to claim 9 wherein segmenting, by the
processor, the surface faces of the deformed object into charts
comprises, determining if a particular surface face of the deformed
object on a chart boundary has two or more immediately neighboring
surface faces which share a common label different from the label
of the particular surface face and, if so, relabeling the
particular surface face to share the common label of its
neighbors.
13. A method according to claim 9 wherein warping, by the
processor, the deformed object representation to output the
polycube representation that complies with polycube constraints
comprises performing, by the processor, a computational constrained
optimization which determines the updated vertex positions for the
polycube representation wherein, for each chart, a constraint is
that the updated vertex positions of the surface vertices
associated with the chart are constrained to the corresponding
plane.
14. A method according to claim 9 comprising: further adjusting the
updated vertex positions of the polycube representation by
quantizing the surface vertices of the polycube representation,
such that for each chart, the surface vertices associated with the
chart and the corresponding plane have common integer chart
coordinates along one of the global Cartesian axes aligned with the
chart label; and further adjusting the updated vertex positions of
the polycube representation to accommodate the quantized surface
vertices while, for each chart, maintaining the common integer
chart coordinates for the surface vertices associated with the
chart.
15. A method according to claim 7 wherein iteratively deforming the
current model comprises, in each iteration: for each surface vertex
of the current model, determining, by the processor, a surface
vertex anchor rotation that would align a normal vector associated
with the surface vertex with a corresponding one of the six
directions aligned with the set of global Cartesian axes;
performing, by the processor, a computational optimization which
determines interior rotations for each of the interior vertices of
the current model and which modifies the surface vertex anchor
rotations to provide updated surface rotations for each of the
surface vertices of the current model; applying, by the processor,
the interior rotations to the interior vertices and the updated
surface rotations to the surface vertices to determine an iteration
output model with new vertex positions; and setting the iteration
output model to be the current model for the next iteration.
16. A method for generating a hex-mesh representation of an input
object, the method comprising: generating, by the processor, a
polycube representation of the input object in accordance with the
method of claim 1; and determining, by the processor, a hex-mesh
representation of the input object based on the polycube
representation of the input object.
17. A method according to claim 16 wherein using the generated
polycube representation to determine a hex-mesh representation of
the input object comprises: generating, by the processor,
parameterizations of points on a hexahedral grid corresponding to
the polycube representation in a polycube domain; and applying the
parameterizations to the input volumetric representation in an
input model domain to form the hex-mesh representation.
18. A method according to claim 17 wherein the points on the
hexahedral grid corresponding to the polycube representation in the
polycube domain comprise the vertices of hexahedrons in a hex-mesh
in the polycube domain and wherein applying the parameterizations
to the input volumetric representation in the input model domain
generates corresponding vertices of hexahedrons in the input model
domain.
19. A system for generating a polycube representation of an input
object, the system comprising a processor configured to perform the
method of claim 1.
20. A non-transitory computer-readable medium comprising
instructions which when executed by a processor cause the processor
to perform the method of claim 1.
Description
RELATED APPLICATIONS
[0001] This application is a continuation of U.S. application Ser.
No. 13/948,016 filed 22 Jul. 2013, which in turn claims the benefit
of the priority from U.S. application No. 61/673,884 filed 20 Jul.
2012. All of the applications in this paragraph are hereby
incorporated herein by reference.
TECHNICAL FIELD
[0002] This invention relates generally to digital (e.g. computer)
representations of objects. Particular embodiments provide methods
and systems for generating polycube representations of input
objects. Particular embodiments provide methods and systems for
using polycube representations to generate hexahedral-meshes of
input objects.
BACKGROUND
[0003] Three-dimensional models of input objects may be digitally
modeled (e.g. on a computer system and/or other suitable
processor(s)) in volumetric representations known as
tetrahedral-meshes or "tet-meshes". There are techniques known in
the art for obtaining tet-mesh representations of objects. For
example, isotropic volumetric tet-meshes can be generated from
isotropic surface meshes using known software, such as Tetgen.TM..
Non-isotropic surface meshes can be re-meshed using known software
such as Graphite.TM. and the re-meshed surface meshes may then be
used to generate suitable volumetric tet-meshes.
[0004] Due to their numerical properties, volumetric
hexahedral-meshes ("hex-meshes") of objects may be preferred
volumetric representations (over tet-meshes) for a variety of
applications. Non-limiting examples of applications where
hex-meshes are preferred over tet-meshes include numerical
simulations used in engineering applications. However,
automatically generating volumetric hex-meshes from the tet-meshes
of arbitrary input objects where the hex-meshes exhibit suitably
high quality (e.g. element shape quality and connectivity) remains
an open problem. Consequently, industrial practitioners still
largely rely on a variety of semi-manual hex-meshing approaches
which require considerable user interaction, and can involve days
or even weeks to generate hex-meshes of complex shapes.
[0005] One known approach for all-hexahedral (or "all-hex")
meshing, referred to as mapping or sub-mapping, is based on a
volumetric mapping between the input model of an object (typically,
but not necessarily, modeled as a tetrahedral-mesh typically
referred to as a "tet-mesh") and a so-called "polycube"
representation of the input object. A polycube is a solid formed by
joining several cubes face-to-face. A polycube has a trivial hex
mesh. Sub-mapping methods relate the trivial hex-mesh of the
polycube to the input object model using the volumetric mapping to
provide an output hex-mesh corresponding to the input object.
Typically, these methods require that the polycube representation
of the input object and the mapping between the input object model
and the polycube representation be generated manually by the user
or with significant user input. For these sub-mapping techniques,
the quality of the output hex-mesh depends significantly on
distortion associated with the mapping between the input object
model and the polycube. There is accordingly a general desire to
provide methods for automatically generating low-distortion
mappings between input objects (e.g. having general shapes) and
corresponding polycube representations.
[0006] There is a general desire to generate hex-meshes having
reasonable quality in terms of quality metrics referred to as
element shape quality and connectivity. Element shape quality is
often defined as the deviation of hex-mesh elements from a perfect
cube. When a hex-mesh is used for particular applications (e.g.
engineering simulations and/or the like), the element shape quality
of the hex-mesh can impact the accuracy and/or robustness of
simulations. Simulation results depend not only on average element
shape quality, but also on minimum element shape quality with even
a single "inverted" (negative Jacobian) element rendering a
hex-mesh unusable for simulation. Connectivity of a hex-mesh
representation also impacts the ability to use the hex-mesh for
particular applications. For example, when a hex-mesh is used for
engineering simulations, connectivity of the hex-mesh can impact
hex-mesh processing time, the ability to use distributed processing
(parallelization) to implement the simulation and/or the like.
[0007] Known hex-meshing techniques used in industry tend to fall
into two categories: hex-dominant and grid-based. Hex-dominant
methods tend to create meshes which include a significant
percentage of non-hex elements (e.g. often more than 20%). When
using the resulting mesh for subsequent applications (e.g.
engineering simulations and/or the like), non-hex elements require
specialized numerics and may not suit some applications. Grid-based
methods (also known as octree methods) intersect the input model
with a Cartesian grid defining the mesh interior. This grid is then
connected to the surface using a variety of techniques. Grid-based
methods often need excessively fine local element sizes on off-axis
or concave features and tend to form low shape quality elements
with irregular connectivity in regions corresponding to such
features.
[0008] There is a general desire to provide techniques to generate
hex-mesh volumetric representations of objects which overcome or
ameliorate some of the issues with prior art techniques.
[0009] The foregoing examples of the related art and limitations
related thereto are intended to be illustrative and not exclusive.
Other limitations of the related art will become apparent to those
of skill in the art upon a reading of the specification and a study
of the drawings.
SUMMARY
[0010] The following embodiments and aspects thereof are described
and illustrated in conjunction with systems, tools and methods
which are meant to be exemplary and illustrative, not limiting in
scope. In various embodiments, one or more of the above-described
problems have been reduced or eliminated, while other embodiments
are directed to other improvements.
[0011] One aspect of the invention provides a method for generating
a polycube representation of an input object, the method
comprising: receiving, at a processor, an input volumetric
representation of the input object; deforming, by the processor,
the input volumetric representation to provide a deformed object
representation; and extracting, by the processor, a polycube
representation of the object from the deformed object
representation, the polycube representation comprising a solid
figure made of cubes joined face to face, the solid figure
comprising axis-aligned surface planes which having normal vectors
that align with one of six directions (.+-.X, .+-.Y, .+-.Z) aligned
with a set of global Cartesian axes. Deforming, by the processor,
the input volumetric representation to provide the deformed object
representation comprises effecting, by the processor, a tradeoff
between competing objectives of: deforming the input volumetric
representation in a manner which provides surfaces having normal
vectors closely aligned with one of the six directions aligned with
the set of global Cartesian axes; and deforming the input
volumetric representation in a manner which provides low-distortion
deformations.
[0012] In some embodiments, effecting, by the processor, the
tradeoff between the competing objectives comprises effecting, by
the processor, a computationally optimized balance between the
competing objectives of: deforming the input volumetric
representation in a manner which provides surfaces having normal
vectors closely aligned with one of the six directions aligned with
the set of global Cartesian axes; and deforming the input
volumetric representation in a manner which provides low-distortion
deformations. In some embodiments, deforming, by the processor, the
input volumetric representation to provide the deformed object
representation comprises starting with the input volumetric
representation as a current model and then iteratively deforming
the current model, wherein each iteration comprises effecting, by
the processor, a tradeoff between competing objectives of:
deforming the current model in a manner which provides surfaces
having normal vectors closely aligned with one of the six
directions aligned with the set of global Cartesian axes; and
deforming the current model in a manner which provides
low-distortion deformations to the current model in each
iteration.
[0013] In some embodiments, iteratively deforming the current model
comprises, in each iteration: for each surface vertex of the
current model, determining, by the processor, a surface vertex
anchor rotation that would align a normal vector associated with
the surface vertex with a corresponding one of the six directions
aligned with the set of global Cartesian axes; performing, by the
processor, a computational optimization which determines interior
rotations for each of the interior vertices of the current model
and which is permitted to modify the surface vertex anchor
rotations to provide updated surface rotations for each of the
surface vertices of the current model; applying, by the processor,
the interior rotations to the interior vertices and the updated
surface rotations to the surface vertices to determine an iteration
output model with new positions for the vertices; and setting the
iteration output model to be the current model for the next
iteration.
[0014] In some embodiments, the input volumetric representation
comprises a polyhedral-mesh representation of the input object, the
polyhedral-mesh representation comprising a plurality of notional
polyhedrons, each notional polyhedron comprising a corresponding
plurality of vertices, a plurality of linear edges that extend
between corresponding pairs of vertices and a plurality of
polygonal faces defined by corresponding pluralities of edges.
[0015] In some embodiments, extracting, by the processor, the
polycube representation from the deformed object representation
comprises: labeling, by the processor, each surface face of the
deformed object representation with a corresponding one of the six
directions aligned with the set of global Cartesian axes;
segmenting, by the processor, the surface faces of the deformed
object into charts, each chart comprising a contiguous patch of
surface faces having the same label; and warping, by the processor,
the deformed object representation to output a polycube
representation that complies with polycube constraints, wherein
warping the deformed object representation comprises adjusting the
positions of the vertices of the deformed object representation to
obtain updated vertex positions for the polycube representation,
such that, for each chart, the updated vertex positions of the
surface vertices associated with the chart are constrained to a
corresponding plane, the corresponding plane having a normal vector
aligned with the one of the six directions aligned with the set of
global Cartesian axes corresponding to the chart label.
[0016] In some embodiments, warping, by the processor, the deformed
object representation to output the polycube representation that
complies with polycube constraints comprises performing, by the
processor, a computational constrained optimization which
determines the updated vertex positions for the polycube
representation wherein, for each chart, a constraint is that the
updated vertex positions of the surface vertices associated with
the chart are constrained to the corresponding plane. In some
embodiments, performing, by the processor, the computational
constrained optimization comprises minimizing a warping objective
function, the warping objective function comprising a first cost
function that assigns cost that is positively correlated with
changes between the positions of the vertices of the deformed
object representation and the updated vertex positions of the
polycube representation. In some embodiments, the warping objective
function comprises a second cost function that assigns cost to
changing a distance between one or more pairs of charts labeled
with either the positive or negative direction of the same global
Cartesian axis.
[0017] The methods for generating a polycube representation of an
input object may subsequently be used to generate a hex-mesh
representation of the input object.
[0018] According to another aspect of the invention, there is
provided a computer-implemented method for generating a hexahedral
mesh of an input object, comprising: receiving a computer-readable
volumetric representation of the input object having a plurality of
surface and interior points; computationally deforming the
volumetric representation into a deformed object; computationally
extracting a polycube from the deformed object; and generating a
computer-readable hexahedral mesh of the input object. The
following steps are performed to computationally deform the
volumetric representation into a deformed object: (i) for each
surface point of the volumetric representation, determine a
preferred rotation value that aligns a surface normal at the
surface point with a selected Cartesian axis; (ii) determine a
rotation field comprising a rotation value for each point of the
volumetric representation as a function of providing a selected
trade-off between minimal variability of rotation values of
selected nearby points (e.g. low-distortion deformations) and
satisfying the preferred rotation values determined for the
plurality of surface points; and (iii) apply rotation values
coherently throughout the volumetric representation by applying
Poisson integration of the determined rotation fields thereby
computing new positions of the points and creating the deformed
object. The following steps are performed to computationally
extract a polycube from the deformed object: (i) associate each
surface face of the deformed object with a Cartesian axis to form
contiguous surface patches which correspond to surface faces of the
polycube, then (ii) warp the deformed object using positional
constraints to align each contiguous surface patch with the
associated Cartesian axis and to enforce planarity. The
computer-readable hexahedral mesh of the input object is generated
by generating a hexahedral grid of the polycube then warping the
grid to the input object by using an explicit correspondence
between the polycube and the volumetric representation.
[0019] According to another aspect of the invention, the methods
described herein are encoded on computer readable media and which
contain instructions executable by a processor to cause the
processor to perform one or more of the methods described
herein.
[0020] According to another aspect of the invention, systems are
provided for generating a polycube representation of an input
object. The systems comprise processors which are configured to
perform the methods for generating a polycube representation of an
input object as described herein. Another aspect of the invention
provides system for generating a hexahedral mesh of an input
object. The systems comprise processors which are configured to
perform the methods for generating a hexahedral mesh of an input
object as described herein.
[0021] In addition to the exemplary aspects and embodiments
described above, further aspects and embodiments will become
apparent by reference to the drawings and by study of the following
detailed descriptions.
BRIEF DESCRIPTION OF THE DRAWINGS
[0022] Exemplary embodiments are illustrated in referenced figures
of the drawings. It is intended that the embodiments and figures
disclosed herein are to be considered illustrative rather than
restrictive.
[0023] FIG. 1 is a schematic representation of a method for
generating a polycube representation of an input object according
to a particular embodiment of the invention and an optional method
for using the polycube representation to generate a hex-mesh
representation of the input object.
[0024] FIG. 1A shows a non-limiting example an input object which
is used throughout this disclosure for the purposes of
explanation.
[0025] FIG. 1B depicts a number of the procedures of the FIG. 1
method applied to the FIG. 1A object and the various outputs of
same.
[0026] FIG. 2 is a schematic depiction of a method for deforming
the input model to provide a deformed object representation that
may be used in the FIG. 1 method according to a particular
embodiment.
[0027] FIG. 2A shows several iterations of the application of the
FIG. 2 method to the FIG. 1A example input object.
[0028] FIG. 3 depicts a method for using the deformed object
representation to generate polycube which may be used in the FIG. 1
method according to a particular embodiment.
[0029] FIGS. 4A-4C (collectively, FIG. 4) show an example of how a
segmentation may be modified by splitting to deal with
multi-orientation charts.
[0030] FIGS. 5A-5C (collectively, FIG. 5) show an example of how a
segmentation may be modified by splitting to deal with highly
non-planar charts.
[0031] FIG. 6 is a schematic depiction of one exemplary hexahedron
in a hexahedral grid that may be generated in a polycube domain as
a part of the FIG. 1 method.
[0032] FIG. 7 schematically illustrates one method warping a
hexahedral grid from the polycube domain to an input model domain
which may be used in the FIG. 1 method according to a particular
embodiment.
[0033] FIG. 8 is a schematic representation of a system according
to a particular embodiment which may be used to implement a number
of the methods described herein.
DESCRIPTION
[0034] Throughout the following description specific details are
set forth in order to provide a more thorough understanding to
persons skilled in the art. However, well known elements may not
have been shown or described in detail to avoid unnecessarily
obscuring the disclosure. Accordingly, the description and drawings
are to be regarded in an illustrative, rather than a restrictive,
sense.
[0035] Aspects of the invention provide methods, systems and
computer-readable media for generating polycube representations of
input objects. In particular embodiments, such methods comprise:
receiving, at a processor, an input volumetric representation of an
input object; deforming, by the processor, the input volumetric
representation to provide a deformed object representation; and
extracting, by the processor, a polycube representation from the
deformed object representation. Deforming the input volumetric
representation to provide the deformed object representation may
comprise effecting, by the processor, a tradeoff (e.g. a
computationally optimized balance) between competing objectives of:
deforming the input volumetric representation in a manner which
provides surfaces having normal vectors closely aligned with one of
six directions (.+-.X, .+-.Y, .+-.Z) aligned with a set of global
Cartesian axes; and deforming the input volumetric representation
in a manner which provides low-distortion deformations to the input
volumetric representation. Such low-distortion deformations may
comprise deformations that tend to minimize changes to the
underlying volumetric representation and/or spatially smooth
deformations that are not discontinuous and/or do not otherwise
exhibit overly high spatial rates of deformation change. Deforming
the input volumetric representation to provide the deformed object
representation may comprise starting with the input volumetric
representation as a current model and then iteratively deforming
the current model, wherein each iteration comprises effecting, by
the processor, a tradeoff (e.g. computationally optimized balance)
between competing objectives of: deforming the current model in a
manner which provides surfaces having normal vectors closely
aligned with one of the six directions (.+-.X, .+-.Y, .+-.Z)
aligned with the set of global Cartesian axes; and deforming the
current model in a manner which provides low-distortion
deformations to the input volumetric representation. Such
low-distortion deformations may comprise: deformations that tend to
minimize changes to the underlying volumetric representation (e.g.
as compared to the input volumetric representation and/or as
compared to the current model) and/or spatially smooth deformations
(e.g. deformations that are not discontinuous and/or do not
otherwise exhibit overly high spatial rates of deformation change).
Systems according to particular embodiments may comprise a
processor configured to perform such polycube generation methods.
Non-transitory computer-readable media may be provided with
instructions, which (when executed by a suitably configured
processor, cause the processor to perform such polycube generation
methods.
[0036] Aspects of the invention provide methods, systems and
computer-readable media for generating a hex-mesh representation of
an input object using a polycube representations generated from the
input object. In particular embodiments, such methods comprise:
generating, by the processor, parameterizations of points on a
hexahedral grid corresponding to the polycube representation in a
polycube domain; and applying the parameterizations to the input
volumetric representation in an input model domain to form the
hex-mesh representation.
[0037] Aspects of the invention provide computer-implemented
methods, systems and computer readable media for generating digital
polycube representations (e.g. on a computer system and/or other
suitable processor(s)) of input objects. Polycubes in their most
general form comprise solid figures formed by joining equal cubes
face to face. In practice, where polycube representations are used
by suitably configured computers, polycubes are typically defined
in a Cartesian coordinate system and are defined to be volumes
bounded by axis-aligned planes--i.e. planes that align with the
orthogonal X, Y and Z-axes of the coordinate system.
[0038] Throughout the disclosure where a processor, computer or
computer readable medium is referenced such a reference may include
one or more processors, computers or computer readable media in
communication with each other through one or more networks or
communication mediums. The one or more processors and/or computers
may comprise any suitable processing device known in the art, such
as, for example, application specific circuits, programmable logic
controllers, field programmable gate arrays, microcontrollers,
microprocessors, computers, virtual machines and/or electronic
circuits. The one or more computer readable media may comprise any
suitable memory devices known in the art, such as, for example,
random access memory, flash memory, read only memory, hard disc
drives, optical drives and optical drive media, or flash drives.
Further, where a communication to a device or a direction of a
device is referenced it may be communicated over any suitable
electronic communication medium and in any suitable format known to
in the art, such as, for example, wired or wireless mediums,
compressed or uncompressed formats, encrypted or unencrypted
formats.
[0039] FIG. 1 is a schematic representation of a
computer-implemented method 10 for generating a polycube
representation of a three-dimensional input object according to a
particular embodiment of the invention. As explained in more detail
below, FIG. 1 also illustrates an optional method 10A which uses
the polycube output from method 10 to generate a hex-mesh
representation of the input object. Methods 10, 10A may be
performed by a suitably configured computer and/or processor.
[0040] Method 10 commences in block 12 which involves receiving a
volumetric input model 14 of an input object. Volumetric input
model 14 may comprise a digital representation (e.g. implemented on
a computer system and/or other suitable processor(s)) which models
the characteristics of the three-dimensional input object and may
comprise a plurality of surface points (i.e. points intended to be
on a surface of the input object) and a plurality of interior
points (i.e. points intended to be in an interior of the input
object). The input object corresponding to input model 14 itself
can generally be arbitrary. FIG. 1A shows a non-limiting example
input object 50 which is used throughout this disclosure for the
purposes of explanation. Input model 14 may model input object 50.
It will be appreciated, however, that input model 14 may generally
model any three-dimensional object.
[0041] In particular embodiments, input model 14 may comprise an
isotropic volumetric tetrahedral-mesh (tet-mesh) representation of
input object 50. In such a tet-mesh representation, input model 14
comprises a plurality of notional tetrahedrons which model input
object 50. A typical input model 14 may comprise on the order of
10.sup.5 or 2.times.10.sup.5 notional tetrahedrons. The surface
points and interior points of input model 14 may comprise the
vertices of the notional tetrahedrons. Each notional tetrahedron
may also comprise a plurality of linear edges that extend between
corresponding pairs of vertices and a plurality of triangular faces
defined by corresponding triplets of edges. As discussed above,
isotropic volumetric tet-meshes can be generated from surface
meshes or otherwise generated using known techniques.
[0042] In some embodiments, input model 14 may comprise other forms
of volumetric polyhedral-mesh representations of input object 50.
Such polyhedral mesh representations may comprise notional
polyhedrons with each notional polyhedron comprising a
corresponding plurality of vertices, a plurality of linear edges
that extend between corresponding pairs of vertices and a plurality
of faces defined by corresponding pluralities of edges. To ease the
burden of explanation, it is assumed throughout the remainder of
this disclosure (without the loss of generalization and unless the
context dictates otherwise) that the surface points and interior
points of input model 14 comprise the vertices of a tet-mesh
representation and that the tet-mesh input model 14 also comprises
corresponding edges and faces.
[0043] Method 10 then proceeds to block 16 which involves deforming
input model 14 into a deformed object representation 18 (or, for
brevity, deformed object 18). Deformed object 18 may have a
polycube-like shape, but in general is not required to be a
polycube in a strict sense. The block 16 deformation and resultant
deformed object 18 may comprise effecting or otherwise balancing a
tradeoff (e.g. a computationally optimized balance) between the
competing objectives of: deforming input model 14 to provide
surfaces having normal vectors closely aligned with one of six
directions (.+-.X, .+-.Y, .+-.Z) aligned with a set of global
Cartesian axes which will be used to define polycube 22; and
deforming input model 14 to provide relatively low-distortion
deformations to input model 14. Such low-distortion deformations
may comprise deformations that tend to minimize changes (e.g. as
compared to input model 14 and its underlying volumetric
representation) and/or spatially smooth deformations (e.g.
deformations that are not discontinuous and/or do not otherwise
exhibit overly high spatial rates of deformation change). In some
embodiments, the block 16 deformation is performed iteratively,
with each iteration balancing this tradeoff Deformed object 18 may
be output by method 10. This is not necessary; in some embodiments,
deformed object 18 may comprise an internal representation to
method 10.
[0044] As explained in more detail below, the block 16 deformation
of input model 14 may comprise determination of, and application
of, suitable rotation-driven deformation to input model 14. In some
embodiments, the block 16 deformation may comprise an iterative
process which involves starting with input model 14 as a current
model and then repeatedly: determining a suitable three-dimensional
rotation value (also referred to as a deformation gradient or, for
brevity, a rotation) for each surface vertex in the current model;
smoothly propagating the rotations for the surface vertices to
interior vertices to determine a suitable rotation field comprising
a suitable rotation for each (surface and interior) vertex of the
current model, where the suitable rotation for each vertex involves
effecting the aforementioned tradeoff (e.g. a computationally
optimized balance) between alignment of surface normal vectors and
providing low-distortion deformations to the underlying volumetric
representation (e.g. deformations that tend to minimize changes to
the underlying volumetric representation and/or to the current
model and/or spatially smooth deformations that are not
discontinuous and/or do not otherwise exhibit overly high spatial
rates of deformation change); application of the rotations to each
vertex of the current model to obtain an iteration output model;
and using the iteration output model as the current model for the
next iteration. This iterative process may be repeated until
suitable loop-exit criteria are satisfied. The output of the block
16 rotation-driven deformation comprises a deformed object 18 which
has a shape that is more polycube-like (than input object 14), but
(because of the aforementioned tradeoff) is not required to be a
polycube in a strict sense. Deformed object 18 also has the same
general format as input model 14 (e.g. if input model 14 is a
tet-mesh, then deformed object 18 output from block 16 will also
comprise a tet-mesh). Particular exemplary embodiments for
implementing block 16 are described in more detail below.
[0045] Method 10 then proceeds to block 20 which involves using
deformed object 18 to generate a polycube representation 22 (or for
brevity a polycube 22) corresponding to input object 14. Block 20
may comprise grouping surface faces of deformed object 18 (e.g.
surface triangles in the case of a tet-mesh) into contiguous
surface patches, where each face in a group corresponding to a
contiguous surface patch is relatively more closely aligned with a
corresponding one of the six global Cartesian axes (.+-.X, .+-.Y,
.+-.Z). Such contiguous surface patches may be referred to herein
as charts. A surface face of deformed object 18 may be said to be
relatively more closely aligned with a particular Cartesian axis
when the surface normal of the surface face is relatively more
closely aligned with the particular Cartesian axis than any other
one of the Cartesian axes (e.g. the dot product of the surface
normal and the particular Cartesian axis is greater than the dot
product of the surface normal with any other Cartesian axis). After
determining initial charts using deformed object 18, block 20 may
then comprise further warping (i.e. modifying the positions of) the
vertices of deformed object 18 so that the surface faces
corresponding to each chart are constrained to be rigidly aligned
with a particular Cartesian axis and such that the vertices of the
faces of each chart are located on the same plane. A surface face
may be said to be rigidly aligned with a particular Cartesian axis
when the dot product of its surface normal and the particular
Cartesian axis is exactly unity or within some threshold value E
close to unity. The output of this block 20 warping is a polycube
representation 22 of the input object whose surface faces are
rigidly aligned with the six Cartesian axes (.+-.X, .+-.Y, .+-.Z).
Particular exemplary embodiments for implementing block 20 are
described in more detail below.
[0046] Polycube 22 is the output of method 10. Polycube 22 may be
used for a variety of applications. By way of non-limiting example,
polycube 22 may be used to generate a hex-mesh 30 of the
three-dimensional input object corresponding to input model 14 (as
described in more detail below with reference to optional method
10A). Other non-limiting examples of applications for polycube 22
include: storage of texture mapping for the surfaces of input
model, storage of volume data relating to the input object,
volumetric texturing, spline fitting, volumetric data compression,
volume rendering for the input object, function interpolation,
multi-resolution meshing, texture mapping, quadrilateral surface
meshing, other geometry processing tasks corresponding to the input
object and/or the like.
[0047] FIG. 1 also shows an optional method 10A which uses polycube
22 generated by method 10 as a basis for generating a hex-mesh
representation 30 (or for brevity hex-mesh 30) of the
three-dimensional input object corresponding to input model 14.
Optional method 10A proceeds from block 20 of method 10 to block 24
which involves generating a hexahedral grid 26 corresponding to
polycube 22 in the polycube space (polycube domain). The block 24
generation of hexahedral grid 26 in the polycube space may involve
designating points in the polycube space having integer coordinates
to represent the vertices of the hexahedrons of hexahedral grid
26.
[0048] Optional method 10A then proceeds to block 28 which involves
generating hex-mesh 30 of the three-dimensional input object
corresponding to input model 14 by warping hexahedral grid 26 to
create a corresponding hex-mesh representation 30 in the space of
input model 14 (input model domain). The block 28 generation of
hex-mesh 30 may comprise, looping through the tetrahedrons of
polycube 22 and for each such tetrahedron: parameterizing any
polycube domain hex grid vertices in hexahedral grid 26 that are
enclosed by the current polycube domain tetrahedron in terms of the
vertices of the current polycube domain tetrahedron (e.g. in terms
of barycentric coordinates (also referred to as barycentric
parameters) and/or other suitable parameterizations of the vertices
of the current polycube domain tetrahedron); applying the same
parameters (e.g. barycentric parameters) to the vertices of the
corresponding tetrahedron of input model 14 in the input model
domain to thereby obtain a corresponding hex vertex in the input
model domain; and optionally performing one or more validity checks
on the input model domain hex vertex. The hex vertices in the input
model domain corresponding to the polycube domain hex grid vertices
may be output as hex-mesh 30. [0049] determining which tetrahedrons
of polycube 22 enclose the hexahedron vertices of hexahedral grid
26; parameterizing the hexahedron vertices of hexagonal grid 26
(e.g. in terms of barycentric coordinates (also referred to as
barycentric parameters) and/or other suitable parameterizations) of
the vertices of the corresponding tetrahedrons in the polycube
domain; and applying the parameters (e.g. barycentric parameters)
to the vertices of the corresponding tetrahedron of input model 14
in the input model domain to thereby obtain a corresponding
hexahedron vertex in the input model domain.
[0050] Method 10A may also optionally comprise a number of
post-processing procedures which may be applied to hex-mesh 30 in
block 32 to obtain post-processed hex-mesh 34.
[0051] FIG. 1B depicts a number of the method 10, 10A procedures
applied to the FIG. 1A object 50 and the various outputs of same.
Methods 10, 10A begin with input model 14 of object 50 and, in
block 16 apply rotation-driven deformation to input model 14 to
obtain a deformed object 18 which has a more polycube-like shape
but which is not strictly a polycube. Methods 10, 10A then proceed
to block 20 which applies position-driven deformation (with rigid
constraints) to deformed object 18 to obtain polycube 22. Polycube
22 may then optionally be converted into a hex-mesh 30 using the
optional procedures of blocks 24 and 28 of method 10A. FIG. 1B also
shows detail of hex-mesh 30 including interior detail 30A, detail
in face region 30B and detail in neck region 30C.
[0052] Individual blocks of methods 10, 10A (according to
particular embodiments) are now described in more detail.
[0053] FIG. 2 is a schematic depiction of a method 100 for
implementing block 16 of method 10 (i.e. using input model 14 to
generate deformed object 18) according to a particular embodiment.
Method 100 commences in block 102 which involves initializing a
current model corresponding to the input object. In the illustrated
FIG. 2 embodiment, block 102 involves initializing the current
model to be input model 14 received in block 12 (see FIG. 1). In
the illustrated FIG. 2 embodiment, block 102 involves initializing
the current model of an iterative process described in more detail
below. In some embodiments, block 102 may optionally involve
selecting and/or receiving a global Cartesian coordinate system
(i.e. global (.+-.X, .+-.Y, .+-.Z) axes) which will be used for the
polycube representation of the input object. The block 102
selection of the global Cartesian coordinate system may be provided
by a user, may be automatically assigned or may be part of input
object model 14. This block 102 selection of global Cartesian
coordinate system may be based on the shape of the input object as
represented by input model 14. For example, if the input model 14
can be interpreted to have one or more flat (i.e. planar) surfaces,
then the block 102 coordinate system selection may be made such
that such planar surfaces correspond to particular axes of the
global coordinate system. In some embodiments, other criteria
relating to the shape of input model 14 may be used to select the
global Cartesian coordinate system. Selection of a global Cartesian
coordinate system is not necessary. In some embodiments, the block
102 global Cartesian coordinate system may be received (e.g. as
part of input model 14 or otherwise) or arbitrarily assigned.
[0054] Method 100 of the illustrated embodiment, then proceeds to a
loop 103 which begins in block 104. Block 104 involves determining
a suitable three-dimensional rotation for each surface point (e.g.
each surface vertex) in the current model. In the first iteration
of loop 103, the current model is the block 102 initialized model
(e.g. input model 14). As explained in more detail below in
subsequent iterations of loop 103, the current model used in block
104 will be the iteration output model 110 of the previous
iteration. In some embodiments, for each surface vertex in the
current model, block 104 involves determining a rotation (also
referred to as a deformation gradient or a rotation value) which
comprises a minimum three-dimensional rotation which will rotate a
normal vector corresponding to the surface vertex normal such that
the surface vertex normal aligns with a closest one of the six
directions corresponding to the global Cartesian axes (.+-.X,
.+-.Y, .+-.Z). For each surface vertex, selecting the global
Cartesian axis to be the closest axis to the surface vertex normal
may ensure that the corresponding block 104 rotation comprises a
minimum rotation for each surface vertex. The block 104 rotations
corresponding to the surface vertices may be referred to as anchor
rotations to distinguish them from rotations at interior vertices
described in more detail below.
[0055] There are a variety of techniques which may be used to
determine an initial normal vector corresponding to a surface
vertex. Particular embodiments of the invention may use any
suitable technique for determining initial normal vectors
corresponding to surface vertices. In particular embodiments, the
initial normal to a surface vertex may comprise a function of the
normal vectors of the surface faces adjacent to the surface vertex.
In some embodiments, this function may comprise an average of the
normal vectors of the surface faces adjacent to the surface vertex.
In one particular exemplary and non-limiting embodiment, this
function may comprise a weighted average of the normal vectors of
the surface faces adjacent to the surface vertex, wherein the
weights may be prescribed by any suitable metric such as the size
of the surface faces and/or the like. Any such technique may be
used to define the initial surface normal vectors used for the
surface vertices in block 104.
[0056] In some embodiments, for one or more surface vertices in the
current model, the corresponding block 104 rotation may
additionally or alternatively be based on other suitable criteria.
By way of non-limiting example, for a particular surface vertex,
such additional or alternative criteria may comprise: the block 104
rotations for one or more neighboring vertices; the block 104
rotations for one or more other vertices which, in the context of
the input object and/or the current model, have other
characteristics related to those of the particular surface vertex;
the proximities of one or more neighboring vertices; the
proximities of one or more other vertices which, in the context of
the input object and/or the current model, have other
characteristics related to those of the particular surface vertex;
consistency of the rotation with validity characteristics (e.g.
whether a rotation will meet necessary or desirable conditions for
a valid polycube); other characteristics of the input object and/or
the current model; and/or the like. In some non-limiting example
embodiments, the block 104 rotations for a particular vertex or a
particular group of neighboring vertices may additionally or
alternatively be based, in part, on the rotations for a
corresponding vertex or group of corresponding vertices having
similar shapes in the input object. In this context and in some
embodiments, vertices determined to be neighboring vertices of a
particular surface vertex may be determined by any suitable
criteria or metric (e.g. a Euclidian distance threshold, a path
length distance threshold, a threshold corresponding to a number of
edges and/or the like).
[0057] It is not necessary that block 104 determine a rotation for
every surface vertex. Surface vertices for which a rotation is not
determined in block 104 may be treated like interior vertices
described in more detail below. In some embodiments, block 104
expressly omits surface vertices consider to represent sharp
features. There are a variety of techniques which may be used to
determine whether a particular surface vertex corresponds to a
sharp feature. In one particular and non-limiting embodiment, a
particular surface vertex may be determined to correspond to a
sharp feature (and thus omitted from block 104) when the dihedral
angle across an edge which includes the particular vertex (i.e. the
angle between the surface normals of faces on either side of the
edge) is greater than suitable threshold (which may be
user-configurable). In some embodiments, other criteria may be used
to define when a vertex corresponds to a sharp feature and is
omitted from block 104. In some embodiments, one or more other
surface vertices (i.e. other than those corresponding to sharp
features) may be omitted from block 104. Surface vertices for which
a rotation is not determined in block 104 may be treated as
interior vertices for the remainder of the current iteration of
loop 103.
[0058] After determining the anchor rotations for the surface
vertices in block 104, method 100 proceeds to block 106 which
involves smoothly propagating the block 104 rotations to interior
points (e.g. interior vertices) of the current model to thereby
define a volumetric rotation field--i.e. a volumetric field having
a rotation associated with each point (e.g. each vertex) in the
field. During block 106, the block 104 surface vertex anchor
rotations are permitted to change to balance the desirability of
providing a low-distortion rotation field in block 106 (e.g. a
rotation field that introduces relatively low-distortion as
compared to input model 14 and/or as compared to the current
iteration; and/or a smoothly varying rotation field that is not
discontinuous and/or does not otherwise exhibit overly high spatial
rates of change). This tradeoff between permitting the block 104
surface vertex rotations to vary and achieving a low-distortion
rotation field in block 106 may be configured as an optimization
problem which balances these competing objectives.
[0059] In particular embodiments, the block 106 optimization
problem can be configured as a least squares problem as discussed
in more detail below. The inputs to the block 106 optimization
problem may comprise the current model and the block 104 surface
vertex anchor rotations. The desired outputs of the block 106
optimization problem may comprise three-dimensional rotations for
each vertex (interior vertices and surface vertices) in the current
model. The objective function for the block 106 optimization
problem may comprise: a first term or function that assigns cost to
changing the block 104 surface vertex anchor rotations (e.g. a sum
of the squared amount of the change for each surface vertex); a
term or function that assigns relatively high cost to situations
where adjacent vertices are to be assigned relatively different
rotations and relatively low cost to situations where adjacent
vertices are to be assigned relatively similar (i.e. smooth)
rotations (e.g. a cost that is positively correlated with the
amount of change between adjacent vertices); a term or function
that assigns relatively high cost to relatively high magnitude
rotations and relatively low cost to low magnitude rotations (e.g.
a cost that is positively correlated with the magnitude of the
rotation); and/or the like. The individual cost terms or functions
of the block 106 objective function may be assigned different
relative weights--e.g. to prescribe a relative preference for the
objective of low-distortion deformations over the objective of
minimizing changes to the block 104 surface vertex anchor rotations
or vice-versa. Such weights may be user-configurable. In particular
embodiments, the low-distortion objective may be assigned a
relatively high weight which may be used to force alignment of
deformed object 18 (FIG. 2) to the global Cartesian axes over
several iterations of loop 103.
[0060] In some embodiments, the objective function of the block 106
optimization problem may include additional or alternative cost
terms or functions, which may also be assigned relative weights. By
way of non-limiting example, such additional or alternative cost
terms or functions may include: cost terms or functions that assign
costs to rotations that would not conform to a valid polycube; cost
terms or functions that assign costs for changing rotations that
are initially relatively low-deformation into high-deformation
rotations; cost terms or functions that assign costs for changing
rotations that are initially smoothly varying (i.e. where there are
relatively small rotations between adjacent vertices) into
non-smoothly varying rotations (i.e. where there are relatively
large rotations between adjacent vertices); cost terms or functions
that assign costs based on the similarity of rotations as between
vertices (e.g. similarity of rotations applied to neighboring
vertex normals or to the normals of vertices known to exhibit
similar local shapes, etc.); and/or the like.
[0061] In some embodiments, the block 106 optimization problem may
consider vertices to be adjacent to one another if they share a
common edge. In other embodiments, other suitable metrics of
adjacency could be used in the block 106 optimization problem. By
way of non-limiting example, vertices could be considered to be
adjacent based on positional proximity, having fewer than a
threshold number (e.g. 2 or 3) of edges between them, and/or the
like. In general, block 106 may use any suitable measure of
adjacency between vertices.
[0062] In some embodiments, the block 104 and block 106 rotations
may be represented by quaternions of the form q=[q.sub.x; q.sub.y;
q.sub.z; q.sub.w].sup.T; ||q||=1. Such quaternions may be operated
on using normalized linear interpolation with positive, convex
weights. These choices allow standard linear solvers to be used on
each quaternion component (i.e. q.sub.x, q.sub.y, q.sub.z, q.sub.w)
independently when propagating the block 104 surface vertex anchor
rotations into the interior vertices of the object volume as part
of block 106. Quaternion representations may be ambiguous in the
sense that q and -q represent the same rotation. This ambiguity
admits the possibility of generating zero-norm (or degenerate)
quaternions when using linear interpolation. Degenerate quaternions
may cause undesirable singular features within the block 106
rotation field, since degenerate quaternions represent the only
places where the otherwise smoothly varying orthogonal bases
represented by the quaternion field break down.
[0063] Some embodiments may suppress this ambiguity by
coherently-orienting the block 104 surface vertex anchor rotations
used in constructing the block 104 quaternions. When constructing
such a quaternion from a rotation matrix R, particular embodiments
of block 104 may comprise first reordering and reflecting the
columns of R to maximize its trace. This process guarantees that
the scalar components q.sub.w of the quaternions are strictly
positive in all cases, which ensures that |q|>0 and thus the
quaternion is non-degenerate. The use of positive, convex weights
then ensures that no quaternion obtained via interpolation (either
within a tetrahedron or while propagating gradients in block 106)
is degenerate. These optional steps can help to ensure that the
resulting block 106 rotation field is singularity free.
Coherently-orienting the quaternions also keeps the block 106
rotations close to one another, reducing the approximation error
introduced by using linear interpolation in block 106 rather than
more complex, non-linear methods.
[0064] In some embodiments, block 106 comprises propagating the
block 104 surface vertex anchor rotations to interior vertices by
solving a Laplace equation for each quaternion component (i.e.
q.sub.x, q.sub.y, q.sub.z, q.sub.w). In particular embodiments,
block 106 comprises solving the system of equations for each
quaternion component in a least squares sense. By way of
non-limiting example, in block 106 an objective function may be
constructed for each quaternion component based on: weighted least
squares differences between the block 104 surface vertex rotations
and the output surface vertex rotations; and weighted least squares
differences between the output vertex rotations of adjacent
vertices. As discussed above, the weights of these objective
function terms may be user configurable and, in some embodiments,
the weights assigned to the cost of changing the block 104 surface
vertex anchor rotations may be made relatively low to force
alignment of deformed object 18 (FIG. 2) to the global Cartesian
axes over several iterations of loop 103. Uniform weights may be
used to discretize the Laplacian operator since input model 14 may
typically comprise a fairly uniform tet-mesh. This is not
necessary, however, and in some embodiments non-uniform weights
could be used to discretize the Laplacian operator.
[0065] The output of block 106 is a smoothly varying volumetric
rotation field--i.e. a volumetric field having a rotation
(deformation gradient) associated with each point (e.g. each
vertex) in the field, where the rotations are not discontinuous
and/or do not otherwise exhibit overly high spatial rates of
change. The block 106 vertex rotations may be represented as
quaternions and may be normalized. The block 106 rotation field may
be free of singular features because of the above-discussed
coherent orientation of the block 104 surface vertex anchor
rotations.
[0066] Method 100 then proceeds to block 108 which involves
application of the block 106 rotations to determine new positions
for the vertices of the current model and to output these new
vertex positions as iteration output model 110. Block 108 may
comprise integrating the block 106 deformation gradients
(rotations) to obtain new vertex locations. For each edge (i, j)
between vertices having original coordinates {tilde over (v)}.sub.i
and {tilde over (v)}.sub.j, the new edge vector v.sub.i-v.sub.j can
be expressed as
v i - v j = 1 2 ( V i _ + V _ j ) ( v ~ i - v ~ j )
##EQU00001##
where .gradient..sub.i and .gradient..sub.j are the rotation
matrices corresponding to the block 106 rotations for the i.sup.th
and j.sup.th vertices. Using this formulation for all edges in the
current model results in a Poisson equation, which, for the
i.sup.th vertex, has the form:
v i - 1 N j = 1 N v j = 1 N j = 1 N .gradient. i + .gradient. j 2 (
v ~ i - v ~ j ) . ( 1 ) ##EQU00002##
where the index j runs over the N immediate neighbors of the vertex
i (i.e. neighbors of the vertex i connected by a single edge). In
some embodiments, equation (1) is expressly solved in block 108 to
yield the new vertex positions v.sub.i for each vertex of the
current model. Fixing one vertex is sufficient to make equation (1)
non-singular. Typically, this is done by selecting one vertex to be
the origin of the global Cartesian coordinate system. In some
embodiments, the equation (1) system of equations corresponding to
each of the Cartesian axes (i.e. x, y, z) may be solved
independently.
[0067] In some embodiments, block 108 comprises attempting to
orient each edge of the current model with its new preferred
direction (i.e. with the block 106 rotations) while maintaining the
length of the edges. Using the same notation as equation (1) above
(i.e. original vertex coordinates {tilde over (v)}.sub.i and {tilde
over (v)}.sub.j, new vertex coordinates v.sub.i and v.sub.j, and
rotation matrices .gradient..sub.i and .gradient..sub.j), such
embodiments may (in block 108) solve for new vertex coordinates
v.sub.i and v.sub.j by minimizing:
i , j ( ( v i - v j ) - ( .gradient. i + .gradient. j 2 ) ( v ~ i -
v ~ j ) ) 2 ( 2 ) ##EQU00003##
over all mesh edges (i, j).
[0068] The output of block 108 is an iteration output model 110
having new vertex positions v.sub.i determined by solving equation
(1) (in some embodiments) or equation (2) (in some embodiments).
Iteration output model 110 is deformed from the current model in
the sense that iteration output model 110 has greater surface
alignment with the global Cartesian axes, but iteration output
model 110 is not perfectly axis aligned because of the block 106
tradeoff between permitting the block 104 surface vertex rotations
to vary (from the block 104 rotations which would provide axial
alignment) and achieving a low-distortion rotation field in block
106.
[0069] After determining iteration output model 110 in block 108,
method 100 proceeds to block 112 which involves an inquiry into
whether suitable loop exit criteria are met. Any suitable loop exit
criteria may be used in block 112. By way of non-limiting example,
suitable loop exit criteria may comprise: a threshold number of
iterations of loop 103; differences between the current model and
iteration output model 110 being below a threshold; differences
between iteration output model 110 and a valid polycube being below
a threshold; a suitable temporal threshold; a user-initiated loop
exit; and/or the like. Typically, the block 112 inquiry will be
negative for the first number of iterations through loop 103 and
method 100 will loop back to block 104 via block 114 where
iteration output model 110 is set to be the current model for the
next iteration of loop 103. Blocks 104, 106 and 108 are then
repeated with the new current model. In some embodiments, the
various loop 103 iterations may be performed efficiently by
factorizing and storing the various systems of equations.
[0070] After a number of iterations, the block 112 loop exit
criteria will be satisfied and the block 112 inquiry will be
positive such that method 100 will proceed to block 116 where the
latest iteration output model 110 is set to be deformed object 18
(see deformed object 18 as the output of block 16 in FIG. 1). It is
not strictly necessary that method 100 comprise a plurality of
iterations. In some embodiments and/or in some particular
applications, method 100 can be performed in one iteration
involving the procedures of blocks 104, 106 and 108 where the block
108 iteration output model 110 is set to be deformed object 18
after the single iteration.
[0071] FIG. 2A shows several iterations of the application of
method 100 to the example input object 50 of FIG. 1A. Each
iteration of loop 103 produces an iteration output model 110 which
more closely resembles a polycube, but which balances the competing
objectives of providing an iteration output model 110 whose
surfaces have normal vectors closely aligned with one of the global
Cartesian axes (.+-.X, .+-.Y, .+-.Z); and providing relatively
low-distortion variations to the model in each iteration. It can be
seen from FIG. 2A, that each successive iteration output model 110
is relatively more axis-aligned and that the iteration output
models 110 begin to converge after a number of iterations.
[0072] FIG. 3 depicts a method 200 for implementing block 20 of
method 10 (i.e. using deformed object 18 to generate polycube 22)
according to a particular embodiment. Method 200 starts in block
202 which involves determining the closest axial alignment for each
surface face of deformed object 18. In the case where input model
14 and deformed object 18 are represented by tet-meshes, the
surface faces of deformed object 18 are triangles. Block 202 may
then involve, for each surface face of deformed object 18, looking
at the normal vector corresponding to the surface face and
determining which one of the six directions corresponding to the
global Cartesian axes (.+-.X, .+-.Y, .+-.Z) is most closely aligned
with the normal vector. Block 202 may be said to comprise labeling
the surface faces of deformed object 18, where the direction
corresponding to the global Cartesian axis most closely aligned
with the normal vector of a particular surface face may be
understood to be the label for that particular surface face.
[0073] Method 200 then proceeds to block 204 which involves
grouping (also referred to as segmenting) various surface faces
into contiguous surface patches (also referred to as charts), such
that the block 202 labels are the same for each member of a block
204 chart. Block 204 may be implemented, for example, by starting
with a particular surface face and looking at the block 202 labels
for the neighboring surface faces (e.g. surface faces that share a
corresponding edge or vertex with the particular surface face). If
a neighboring surface face has the same block 202 label as the
particular surface face, then the two surface faces may be assigned
to the same chart. If not, then the two faces may be assigned to
different charts. This process may be continued until all of the
surface faces of deformed object 18 are assigned to a chart. As
explained in more detail below, the block 204 charts may correspond
with polycube faces and boundaries between the block 204 charts may
corresponding to polycube edges and vertices.
[0074] In some embodiments, a number of optional steps may be
performed in block 204 which may simplify further processing and/or
otherwise improve the performance of methods 10, 10A, 200. In some
embodiments, jaggedness of the block 204 segmentation may be
reduced using one or more optional procedures which may be
performed in block 204. For example, in some embodiments, the
jaggedness of the block 204 segmentation may be reduced by
relabeling surface faces along chart boundaries, if these chart
boundary surface faces meet suitable relabeling criteria. In
particular embodiments, if a particular chart boundary surface face
has two (or more) immediately neighboring faces with a common label
that is different from that of the particular chart boundary
surface face, then the particular chart boundary surface face may
be relabeled to share the common label of its neighbors. As another
example, in some embodiments, charts that are sufficiently small
may also be relabeled as part of block 204, if these charts meet
suitable smallness criteria. In particular embodiments, suitable
smallness criteria used to determine small charts that may be
relabeled in block 204 include, by way of non-limiting example: a
chart that is bounded by two or fewer edges, a chart that has an
area that is less than a suitable threshold, a chart that has one
or more linear dimensions less than suitable threshold(s) and/or
the like. Charts determined to be small charts can be relabeled by
flood filing the faces of the small charts with the labels of
neighboring charts.
[0075] Method 200 may comprise optional further modification of the
block 204 segmentation in optional block 206 which is described in
more detail below. In some embodiments and/or in some particular
applications further segmentation modification (in block 206) is
not required and method 200 proceeds to block 208 which involves
warping deformed object 18 (e.g. the positions of the vertices of
deformed object 18) to enforce polycube constraints. Block 208 may
be referred to as position-driven deformation. The block 208
polycube constraints may require that after being deformed in block
208, each chart is constrained to a plane (i.e. such that all the
vertices of the faces in the chart are located on the plane) and
that the plane have a normal vector aligned with one of the six
directions of the global Cartesian axes (.+-.X, .+-.Y, .+-.Z).
[0076] In some embodiments, block 208 may be configured as an
optimization problem. The inputs to the block 208 optimization
problem may comprise deformed object 18 and the charts of the block
204 segmentation (including the corresponding labels for each
chart). The desired output of the block 208 optimization problem is
to deform the positions of the vertices of deformed object 18
obtain new vertex positions 212 that will meet the polycube
constraints. These polycube constraints may impose constraints on
the block 208 optimization problem. Such constraints may require
that the new vertex positions 212 for the faces corresponding to a
particular chart be constrained to a plane and that the plane must
have a normal vector aligned with one of the six global Cartesian
axes. The objective function of the block 208 optimization problem
may comprise a first term or function which assigns cost to moving
vertices (e.g. where movement of a relatively greater number of
vertices is assigned a relatively greater cost and/or where
movement of a vertex by a relatively greater distance is assigned a
relatively greater cost). In some embodiments, the block 208
warping may be implemented by introducing a new variable for each
chart (referred to as a chart coordinate) into the Poisson equation
formulation of equation (1) and/or into the formulation of equation
(2). All vertices on a particular chart can be constrained to have
the same chart coordinate. For example, for a chart constrained to
be oriented in the +X axial direction, the chart coordinate may be
x=.alpha. for all vertices on the chart which corresponds to a
chart being in a plane parallel to the Y-Z plane.
[0077] In some embodiments and/or applications, the objective
function of the block 208 optimization problem may additionally or
alternatively comprise a second term or function which assigns cost
to changing the ordering and/or distance(s) between nearby charts
aligned to the same global Cartesian axis (e.g. nearby charts
aligned to the X-axis (i.e. +X and/or -X), nearby charts aligned to
the Y-axis (i.e. +Y and/or -Y) and/or nearby charts aligned to the
Z-axis (i.e. +Z and/or -Z). This cost term or function may be
referred to as a distance preservation cost term or a distance
preservation constraint and can mitigate self-intersections which
may occur if surfaces which are relatively close to one another are
axially aligned. In the context of the distance preservation cost
term or function, the concept of "nearby" can be determined by any
suitable metric. By way of non-limiting example, whether two
axially aligned charts are considered "nearby" may be determined by
positional proximity (path length proximity and/or Euclidian
proximity), by the number (e.g. a threshold number, such as 2 or 3)
of edges between them, and/or the like. In some embodiments, a
metric associated with the "nearness" of any two axially aligned
charts may be used as a weighting factor within this distance
preservation cost term or function.
[0078] Where the cost function of the block 208 optimization
problem involves multiple cost terms or functions then these
multiple cost terms or functions may be assigned different weights.
In some embodiments, some such weights may be
user-configurable.
[0079] As discussed above, distance preservation costs or
constraints may be used in some embodiments of block 208 to
preserve the ordering and distance between nearby charts aligned to
the same Cartesian axis. In some embodiments, distance may be
measured using a per-vertex approximate Voronoi diagram of charts
which may be built within the object volume that stores at the
vertices the closest vertex on the closest chart. Edges connecting
Voronoi regions of two similarly labeled charts (i.e. where
similarly labeled charts refer to charts aligned with the X-axis
(+X and/or -X), charts aligned with the Y-axis (+Y and/or -Y)
and/or charts aligned with the Z-axis (+Z and/or -Z)) may indicate
distance preservation constraints between the charts, with distance
equal to the distance along the chart axis between the closest
points. These distances may be averaged over all edges having a
vertex in each Voronoi region of a pair of charts, and used in the
formulation of the distance preservation cost or constraint
associated with the pair of similarly labeled charts. In some
embodiments, the weight of each distance preservation cost or
constraint may be based on a Gaussian function of the distance
between the pair of charts
e - max ( d i - min d , 0 ) 2 .sigma. 2 , ##EQU00004##
where: max(.alpha.,.beta.) is a maximum operator which returns the
maximum of its inputs .alpha. and .beta.; d.sub.i is the distance
between i.sup.th pair of similarly labeled charts; and min.sub.d
and .sigma. are parameters (which may be user-configurable) and
which may be used to set the sharpness of the falloff of the
Gaussian weighting function. These parameters may be set relative
to the unit mesh length of the desired hex-mesh output.
[0080] The output of block 208 is a set of new vertex positions
wherein the new surface vertex positions 212 satisfy the
aforementioned polycube constraints. In some embodiments, for each
particular chart, new surface vertex positions 212 may comprise a
chart coordinate that is shared for all of the surface vertices
corresponding to the particular chart. Method 200 may then proceed
to block 210 which may involve quantizing or otherwise rounding off
the surface vertex positions 212 for each chart. In some
embodiment, block 210 may involve obtaining a set of chart
coordinates (i.e. a chart coordinate for each chart and for the
surface vertices belonging to each chart). In some embodiments, a
set of chart coordinates may be obtained as a part of block 208.
Whether such chart coordinates are obtained in block 208 or block
210, block 210 may involve rounding such chart coordinates to the
nearest integer (in the polycube domain). The output of block 210
is a set of quantized surface vertex positions 214, where each
surface vertex position comprises at least one integer coordinate
corresponding to the at least one chart to which the surface vertex
belongs.
[0081] Method 200 then proceeds to block 216 which involves
determining the final positions of the surface vertices and the
final positions of the interior vertices in polycube 22. Block 216
may comprise determining these vertex positions using a Laplace
equation. The known quantized (e.g. integer) chart coordinates may
be used as constraints for surface vertices on each chart. The
Laplace equation used in block 216 may be weighted or otherwise
discretized in a manner which tends to minimize the deformation of
the mesh and/or to neighboring vertices of the mesh. In particular
embodiments, mean value coordinates in 2D (surface vertices) and 3D
(interior vertices) may be used to weight or otherwise discretize
the Laplace operator. The output of block 216 (e.g. from solving
the Laplace equation) is polycube representation 22. Polycube
representation 22 may comprise a tet-mesh having the same
connectivity as input model 14. This similar connectivity between
polycube 22 and input model 14 may facilitate mapping between input
model 14 and polycube 22 as discussed in more detail below.
[0082] As discussed above, method 200 comprises optional block 206
which can be used to modify the block 204 segmentation in some
circumstances. Segmentation modification in block 206 may be used
to obtain a segmentation that admits a polycube deformation (e.g. a
block 208 deformation which meets the polycube constraints) in
circumstances where the required properties of orthogonal polyhedra
may not be fully known. In some embodiments, the block 206
segmentation modification may involve the application of a "greedy"
heuristic (i.e. a heuristic that does not admit tradeoffs or
balancing with other considerations) based on the observation that
polycube edges are constrained to be axis aligned and straight.
Deformed object 18 output from block 16 (rotation-driven
deformation method 100) is usually close to satisfying this
requirement in the sense that deformed object 18 comprises nearly
planar charts with nearly straight edges; however, the block 206
segmentation modification may account for circumstances where
deformed object 18 does not exhibit these properties.
[0083] A first circumstance where the block 206 segmentation
modification may be applied in is in the case where a single chart
should map simultaneously to opposite sides of the final polycube.
This is the case in the example object 300 of FIG. 4A, where chart
302 should map to the top (e.g. +Z direction) and bottom (e.g. -Z
direction) of the polycube. This circumstance may be referred to a
multi-orientation chart. Multi-orientation charts have two U-shaped
edges which violate the edge-straightness heuristic which forms a
basis of the block 206 segmentation modification. To handle this
multi-orientation charts, block 206 may involve modifying the
segmentation by introducing a new chart to split the
multi-orientation chart into two separated charts, with each having
a single orientation. This is shown in FIG. 4B, where a chart 304
is introduced in boundary location 306 (i.e. the location where the
orientation of chart 302 changes), and in FIG. 4C, where separating
chart 304 splits chart 302 into single orientation chart 302A
(having a +Z orientation) and single orientation chart 302B (having
a -Z orientation).
[0084] In some embodiments, multi-orientation charts are detected
by introducing orientation labels for each surface face to indicate
whether its normal vector points in the positive or negative
direction of the axis to which it maps. Multiple-orientation charts
may then be split along the boundary where the orientation labels
change--e.g. along boundary 306 of FIG. 4B. A separating chart
(e.g. chart 304) may be introduced along the splitting boundary to
separate the two resulting charts (e.g. charts 302A, 30B of FIG.
4C). The width of the separating chart may be set equal to a unit
edge-length parameter for the desired output mesh, which may be
user-configurable. The axis-assignment of the separating chart may
found by considering its four neighboring charts. If a first pair
of neighboring charts have assignments on a single axis (e.g.
.+-.Z) and a second pair of neighboring charts have assignments on
a different single axis (e.g. .+-.Y), then the separating chart is
assigned an orientation on the remaining axis (e.g. .+-.X).
Otherwise, the separating chart may be assigned an orientation
along an axis from one of the unmatched neighboring charts--i.e. a
neighboring chart that does not have another chart oriented in the
opposing direction along the same axis. Once detected,
multi-orientation charts may be split immediately.
[0085] A second circumstance where the block 206 segmentation
modification may be applied in is in the case where charts are
highly non-planar. An example of a highly non-planar chart is shown
in object 310 of FIG. 5A where chart 312 has an S-shaped edge.
Highly non-planar charts may or may not allow topologically valid
polycubes to be formed, but can introduce considerable distortion
when planarity constraints are enforced (e.g. in block 208 of
method 200 (FIG. 2)). In some embodiments, block 206 may involve
splitting highly non-planar charts to reduce distortion once
planarity constraints are enforced.
[0086] In some embodiments, highly non-planar charts may be
detected by examining the chart edges and looking for
"extrema"--e.g. a point where a chart boundary doubles back on
itself and/or a point where the orientation of a chart boundary
changes abruptly with respect to one of the global Cartesian axes
(e.g. with respect to its label axis). An example of such an
extremum is shown at 314 of FIG. 5A. This search may be performed
on smoothed copies of the chart edges (which may be subsequently
discarded). Such edge smoothing (which may be implemented by any
suitable smoothing process) may help to avoid detecting spurious
extrema introduced by edge jaggedness. Extrema indicative of highly
non-planar charts typically occur at the end of what is referred to
as "wedges" (see wedge 316 in FIG. 5A). Wedges may vary in size
depending on how non-planar the adjacent charts are. The severity
of an extremum may be characterized by the area of its
corresponding wedge, which in turn may be approximated by the
triangle formed by the extremum itself and its immediately adjacent
extrema on either side (or the chart-edge endpoint if there is not
one on either side). Directly enforcing planarity constraints on
charts adjacent to wedges may tend to flatten the wedges to lines
and cause corresponding distortion. In some embodiments, wedges are
resolved by cutting (e.g. splitting) the concave chart starting at
the extremum and introducing a separating chart along the cut.
[0087] Block 206 may involve processing extrema in decreasing order
of severity. In some embodiments, candidate paths are found along
which to cut the concave chart adjacent to an extremum by searching
from the extremum through the corresponding chart for boundary
vertices of the chart (i.e. vertices along the chart edge) at which
to terminate the cut. Such chart boundary vertices may be referred
to as candidate termination vertices. A cost may be assigned to
each of the candidate termination vertices of the chart. Such a
cost may be based on one or more of: a path length between the
extremum and the candidate termination vertex; an alignment of the
proposed cut with one the global Cartesian axes; and/or the like.
In one particular non-limiting embodiment, the cost assigned to a
cut from an extremum vertex position a to a candidate termination
vertex position b is given by: C(a, b)=.alpha.L(a, b)(1.1-Align(a,
b)) where L(a,b) is the cut-path length between a and b; and
Align(a,b) is the maximum dot product of
b - a b - a ##EQU00005##
with the global Cartesian axes to favor axis-aligned cuts. The
parameter a may be set to 0.5 for cuts that connect two extrema,
and 1 otherwise to favor cuts that resolve multiple extrema
simultaneously.
[0088] Valid cuts may be selected to be those that would introduce
separation charts having four or more neighboring charts. FIG. 5B
shows possible cuts 316, 318, 320. Only cut 320 is valid, since it
is the only one of cuts 316, 318, 320 which would introduce a
separation chart having four or more neighboring charts. The
candidate termination vertex having the lowest cost while also
satisfying the validity constraints may be selected to be the
termination vertex for a cut. In some embodiments, costs may also
be assigned other vertices (i.e. vertices which are not on chart
boundaries or which are otherwise not candidate termination
vertices). A cut may then be formed by working backward from the
selected termination vertex to the extremum vertex by selecting
intervening vertices with the lowest costs to define the cut from
the selected termination vertex, through the intervening vertices
and to the extremum vertex. In some embodiments, this search for
the lowest cost valid cut may comprise using a Dijkstra shortest
path algorithm, which may yield a minimum cost candidate
termination vertex without having to independently evaluate the
cost of each candidate termination vertex. The first candidate
termination vertex located by the Dijkstra shortest path algorithm
which also satisfies the validity criteria may be selected to be
the termination vertex.
[0089] FIG. 5C shows such a separating chart 322 formed by a
corresponding separation cut. The axis assignment of the separation
chart may be selected based on neighboring charts in a manner
similar to that discussed above for resolving multi-orientation
charts if first and second pairs of neighboring charts have
orientations along the same axis. Otherwise, the assignment from
the chart forming the wedge may be assigned to the separating
chart. The width of the separating chart may be set on the basis of
one or more of the characteristics of the wedge. In one particular
non-limiting embodiment, the width of the separating chart may be
set to half of the width of the wedge, defined as a two-dimensional
distance between the wedge endpoints in the plane corresponding to
the two adjacent chart axis assignments. For example, if the
extremum is on an edge between charts assigned to X and Y, the
two-dimensional distance between the endpoints in the XY plane may
be used as a basis for the width of the separation chart.
[0090] Returning to FIG. 1, polycube representation 22 (which is
the output of block 20 and method 200 (FIG. 3)) is the output of
method 10. As discussed above, polycube 22 may be used for a
variety of applications which may include, by way of non-limiting
example: storage of texture mapping for the surfaces of input
model, storage of volume data relating to the input object,
volumetric texturing, spline fitting, volumetric data compression,
volume rendering for the input object, function interpolation,
multi-resolution meshing, texture mapping, quadrilateral surface
meshing, other geometry processing tasks corresponding to the input
object and/or the like.
[0091] One particular application of polycube 22 is in the
generation of a hex-mesh 30 corresponding to input model 14. FIG. 1
schematically depicts a method 10A for using hex-mesh 30 generated
by method 10 to generate such a hex-mesh 30 according to a
particular embodiment. Block 24 of the illustrated embodiment of
method 10A involves generating a hexahedral grid 26 corresponding
to polycube 22 in the polycube space (polycube domain). The block
24 generation of hexahedral grid 26 in polycube space may involve
designating points in the polycube space having integer coordinates
to represent the vertices of the hexahedrons of hexahedral grid 26.
One example hexahedron 26A of hexahedral grid 26 in the polycube
domain and its corresponding vertices are shown in FIG. 6. The
eight vertices of exemplary hexahedron 26A include those points
having integer coordinates (0,0,0), (1,0,0), (1,1,0), (0,1,0),
(0,1,1), (0,0,1), (1,0,1) and (1,1,1). Hexahedral grid 26 generated
in block 24 comprises a plurality of hexahedrons and their
corresponding vertices in the polycube domain. In some embodiments,
hexahedral grid 26 generated in block 24 may also comprise the
centroids of the corresponding hexahedrons. These centroids may be
determined to be offset from corresponding hexahedron vertices by
[1/2,1/2,1/2].sup.T. FIG. 6 shows the centroid 26B of exemplary
hexahedron 26A at coordinates (1/2, 1/2, 1/2). The vertices and
centroids of hexahedrons in polycube domain hexahedral grid 26 may
be referred to herein as polycube domain hex grid points (or, for
brevity, hex grid points).
[0092] Method 10A then proceeds to block 28 which involves warping
hexahedral grid 26 (in the polycube domain) to provide a
corresponding hex-mesh 30 in the input model domain. FIG. 7
schematically illustrates one method 400 for implementing block 28
according to a particular embodiment. The general procedure of
method 400 comprises, looping through the tetrahedrons of polycube
22 and for each such tetrahedron: parameterizing any polycube
domain hex grid vertices in hexahedral grid 26 that are enclosed by
the current polycube domain tetrahedron in terms of the vertices of
the current polycube domain tetrahedron (e.g. in terms of
barycentric coordinates (also referred to as barycentric
parameters) and/or other suitable parameterizations of the vertices
of the current polycube domain tetrahedron); applying the same
parameters (e.g. barycentric parameters) to the vertices of the
corresponding tetrahedron of input model 14 in the input model
domain to thereby obtain a corresponding hex vertex in the input
model domain; and optionally performing one or more validity checks
on the input model domain hex vertex. The hex vertices in the input
model domain corresponding to the polycube domain hex grid vertices
are output by method 400 as hex-mesh 30.
[0093] In the illustrated embodiment of method 400 (FIG. 7), these
procedures are applied to the polycube domain tetrahedrons in a
particular order, although this is not necessary. In the
description of method 400 (FIG. 7) that follows, it is assumed
(without loss of generality) that the parameterization of polycube
domain hex grid vertices in terms of the vertices of the
corresponding polycube domain tetrahedrons involves the use of
barycentric parameters. In some embodiments, other additional or
alternative parameterizations could be used for this purpose.
[0094] Method 400 starts in block 402 which performs a loop
involving blocks 404, 406 and optional block 408 for each polycube
domain tetrahedron that corresponds to (e.g. encloses) a polycube
vertex (in hexahedral grid 26) corresponding to a chart corner. For
the current polycube domain tetrahedron of each iteration, block
404 comprises determining barycentric parameters for any polycube
domain hex grid vertices in hexahedral grid 26 that are enclosed by
the current polycube domain tetrahedron in terms of the tet
vertices of the current polycube domain tetrahedron. While not
explicitly shown in FIG. 7, block 404 may optionally comprise
checking whether a polycube domain hex grid vertex enclosed by the
current polycube domain tetrahedron is within the boundaries of the
object in the polycube domain. If the polycube domain hex grid
vertex enclosed by the current polycube domain tetrahedron is
outside of the boundaries of the object in the polycube domain,
then the polycube hex grid vertex may be discarded.
[0095] Once the block 404 barycentric parameters are obtained for
any enclosed polycube domain hex vertices, block 406 involves
applying these same barycentric parameters to the tet vertices of
the input model domain tetrahedron corresponding to the current
polycube domain tetrahedron to thereby obtain corresponding hex
vertices in the input model domain. Such input model domain hex
vertices (i.e. the result of application of the barycentric
parameters in block 406) may be hex vertices in the output hex-mesh
30 which correspond to the polycube domain hex vertices enclosed by
the current polycube domain tetrahedron. That is, block 406
involves establishing a mapping between the polycube domain
hex-grid vertices and corresponding input model domain hex-grid
vertices in hex-mesh 30.
[0096] Optional block 408 may involve application of one or more
validity checks which may be used to address potential bijectivity
issues and/or other possible artifacts with the mapping between
polycube domain and input model domain hex vertices. Optional block
408 is described in more detail below.
[0097] After completing the block 402 loop (including blocks 404,
406 and 408) for each polycube domain tetrahedron corresponding to
a chart corner, method 400 proceeds to block 410 which performs a
loop involving the procedures of block 412 for each polycube domain
tetrahedron corresponding to a chart edge. The procedures of block
412 correspond to the above-described procedures of blocks 404, 406
and 408 for the polycube domain tetrahedrons corresponding to chart
edges. Method 400 then proceeds to block 414 which performs a loop
involving the procedures of block 416 for each polycube domain
tetrahedron corresponding to a chart surface. The procedures of
block 416 correspond to the above-described procedures of blocks
404, 406 and 408 for the polycube domain tetrahedrons corresponding
to chart surfaces. Method 400 then proceeds to block 418 which
performs a loop involving the procedures of block 420 for each
polycube domain hex tetrahedron corresponding to an interior of
polycube representation 22. The procedures of block 420 correspond
to the above-described procedures of blocks 404, 406 and 408 for
the polycube domain tetrahedrons corresponding to the interior of
polycube representation 22.
[0098] The output of method 400 may come from each iteration of
block 408 (including those iterations of block 408 performed in
block 412, 416 and 420) and may comprise a set of hex-mesh vertices
30 in the input model domain. While not explicitly shown in method
400, the output of method 400 may also comprise an indication of
which hex-mesh vertices 30 correspond to each hexahedron in
hex-mesh 30. For example, method 400 may output, for each
hexahedron, a list of which hex-mesh vertices correspond to the
hexahedron.
[0099] As discussed above, optional block 408 may involve
application of one or more validity checks which may be used to
address potential bijectivity issues and/or other possible
artifacts with the mapping between polycube domain and input model
domain hex vertices. While the order of processing the polycube
domain tetrahedrons in the illustrated embodiment of method 400 is
optional, the inventors have determined that processing the
polycube domain tetrahedrons in the order shown in method 400 (i.e.
tetrahedrons corresponding to chart corner vertices, followed by
tetrahedrons corresponding to chart edge vertices, followed by
tetrahedrons corresponding to chart surface vertices, followed by
tetrahedrons corresponding to an interior of polycube 22) can also
help to overcome bijectivity issues as between polycube
representation 22 and output hex-mesh 30.
[0100] In some circumstances, more than one polycube domain
tetrahedron encloses a polycube domain point having an integer
coordinate(s). Each such polycube domain tetrahedron will generate
a corresponding polycube domain hex grid vertex and will map (via
the procedures of blocks 404 and 406) to a corresponding input
domain hex vertex. The aforementioned optional block 408 validity
checks may be used to reject or otherwise suppress input domain hex
grid vertices that are determined to invalid. In some embodiments,
a block 408 validity check may comprise, for two or more polycube
domain tetrahedrons which enclose a particular integer coordinate
polycube domain point: checking whether the corresponding two or
more input domain hex grid vertices are the same or are within
(i.e. less than) a threshold path length distance apart from one
another; and, if the corresponding two or more input domain hex
grid vertices are the same or are within (i e less than) a
threshold path length distance apart from one another, then
rejecting or suppressing the second (and/or subsequent) input
domain hex grid vertices (determined in the order of method 400)
from hex-mesh 30. If on the other hand, it is determined in block
408 that the second (and/or subsequent) input domain hex grid
vertices are separated from one another by more than the threshold
path length distance, then block 408 may comprise maintaining the
second (and/or subsequent) input domain hex grid vertices in
hex-mesh 30. This threshold path length difference may be
user-configurable.
[0101] As discussed above, in some embodiments block 404 may
comprise checking whether a polycube domain hex grid vertex
enclosed by the current polycube domain tetrahedron is within the
boundaries of the object in the polycube domain and possibly
discarding the polycube domain hex grid vertex if it is outside of
the boundaries of the object in the polycube domain. In some
embodiments, this validity check may be performed as part of block
408. In some embodiments, this block 408 validity check may also
comprise, before discarding any hex grid vertex, determining
whether the corresponding input domain hex grid vertex is within
(i.e. less than) a threshold path length distance from another
input (previously determined) domain hex grid vertex and only
discarding the vertex if the corresponding input domain hex grid
vertex is within (i.e. less than) the threshold path length
distance apart another input domain hex grid vertex.
[0102] In some embodiments, method 400 may also comprise optional
blocks 422, 424 and 426 which may be used to help determine the
correspondence between hex-mesh vertices 30 output in each
iteration of block 408 and corresponding hexahedrons. Block 422
involves performing a loop involving the procedures of blocks 424
and 426 for each polycube domain tetrahedron enclosing a polycube
domain hex grid centroid. The procedures of block 424 correspond to
the above-described procedures of blocks 404, 406 and 408, except
that the polycube domain hex grid vertices are replaced with
polycube domain hex grid centroids. In each iteration, the output
of block 424 is an input model domain hex grid centroid point
corresponding to a polycube domain hex grid centroid. After
determining the block 424 input domain centroid, method 400
proceeds to optional block 426. Optional block 426 involves
performing a search (originating from the current block 424 input
domain centroid) for the closest eight input domain hex-mesh
vertices 30 (i.e. hex mesh vertices 30 output from each iteration
of block 408 in the preceding method 400 procedures) which satisfy
the criteria of a valid hexahedron. The block 426 search may be
confined to the volume of input model 14. Block 426 may involve
assigning a correspondence between the current block 424 input
domain centroid and the eight input domain hex-mesh vertices 30
located in block 426. In this manner, optional blocks 422, 424 and
426 may help to establish the correspondence between the
hexahedrons in hex-mesh 30 and the hex-mesh vertices corresponding
to each hexahedron.
[0103] Returning to FIG. 1, hex-mesh 30 generated in block 28
(method 400) may be the output of method 10A. However, in some
embodiments, hex-mesh 30 may be further processed in block 32 using
one or more known hex-mesh post-processing techniques which may
improve the characteristics of hex-mesh 30 for particular
applications. One post processing procedure that may be applied to
hex-mesh 30 in block 32 involves the addition of a padding layer
which may be formed by extruding surface quads to form hexes. This
padding layer provides extra degrees of freedom when hexahedra from
the edges or vertices of polycube 22 map to smooth parts of input
model 14. Suitable padding procedure(s) are described, for example,
in SHEPHERD J.: Topologic and geometric constraint-based hexahedral
mesh generation. PhD thesis, University of Utah, 2007 and MARECHAL
L.: Advances in octree-based all-hexahedral mesh generation:
handling sharp features. In Proc. International Meshing Roundtable.
2009, which are hereby incorporated herein by reference.
[0104] Another post processing procedure that may be applied to
hex-mesh 30 in block 32 involves mesh optimization, which shifts
mesh vertices to improve quality, while leaving connectivity
unchanged. The vertices of hex-mesh 30 may be repositioned
individually to maximize the minimum quality of adjacent elements,
followed by shape-improvement with commercially available software,
such as Mesquite.TM.. Such mesh optimization procedures are
described, for example, in BREWER M., DIACHIN L. F., KNUPP P. M.,
LEURENT T., MELANDER D.: The mesquite mesh quality improvement
toolkit. In Proc. Intl. Meshing Roundtable (2003) which is hereby
incorporated herein by reference.
[0105] The output of the optional post-processing procedures of
block 32 is a post-processed hex-mesh 34.
[0106] FIG. 8 shows a schematic diagram of a system 500 which may
be configured to implement all or part of any of the methods
described herein according to an example embodiment. System 500
comprises a display 502, user input devices 504 and a computer
system 506 comprising a processor 508. Processor 508 may have
access to software 510 which may be used to configure processor 508
to perfume all or part of any of the methods described herein. In
some embodiments, processor 508 may be configured to perform all or
part of any of the methods described herein using a combination of
hardware and software 510. In some embodiments, processor 510 may
have access to computer-readable medium 512 which may comprise
suitable codified instructions which, when executed by processor
510, cause processor 510 to perform any all or part of the methods
described herein.
[0107] Computer system 506, processor 510 and components thereof
may comprise hardware, software, firmware or any combination
thereof. Processor 510 may comprise one or more microprocessors,
digital signal processors, graphics processors, field programmable
gate arrays, and/or the like. Components of system 500 may be
combined or subdivided, and components of system 500 may comprise
sub-components shared with other components of system 500.
Components of system 500 may be physically remote from one another.
For example, processor 510 may be instantiated in a programmed
server computer which communicates with display 502 via the
internet or another network.
[0108] Where a component is referred to above (e.g., a system,
display, processor, etc.), unless otherwise indicated, reference to
that component (including a reference to a "means") should be
interpreted as including as equivalents of that component any
component which performs the function of the described component
(i.e., that is functionally equivalent), including components which
are not structurally equivalent to the disclosed structure which
performs the function in the illustrated exemplary embodiments of
the invention.
[0109] Unless the context clearly requires otherwise, throughout
the description and the claims, the words "comprise," "comprising,"
and the like are to be construed in an inclusive sense, as opposed
to an exclusive or exhaustive sense; that is to say, in the sense
of "including, but not limited to." Where the context permits,
words in the above description using the singular or plural number
may also include the plural or singular number respectively. The
word "or," in reference to a list of two or more items, covers all
of the following interpretations of the word: any of the items in
the list, all of the items in the list, and any combination of the
items in the list.
[0110] The above detailed description of example embodiments is not
intended to be exhaustive or to limit this disclosure and claims to
the precise forms disclosed above. While specific examples of, and
examples for, embodiments are described above for illustrative
purposes, various equivalent modifications are possible within the
scope of the technology, as those skilled in the relevant art will
recognize.
[0111] These and other changes can be made to the system in light
of the above description. While the above description describes
certain examples of the technology, and describes the best mode
contemplated, no matter how detailed the above appears in text, the
technology can be practiced in many ways. As noted above,
particular terminology used when describing certain features or
aspects of the system should not be taken to imply that the
terminology is being redefined herein to be restricted to any
specific characteristics, features, or aspects of the system with
which that terminology is associated. In general, the terms used in
the following claims should not be construed to limit the system to
the specific examples disclosed in the specification, unless the
above description section explicitly and restrictively defines such
terms. Accordingly, the actual scope of the technology encompasses
not only the disclosed examples, but also all equivalent ways of
practicing or implementing the technology under the claims.
[0112] While a number of exemplary aspects and embodiments are
discussed herein, those of skill in the art will recognize certain
modifications, permutations, additions and sub-combinations
thereof. It is therefore intended that the following appended
claims and claims hereafter introduced are interpreted to include
all such modifications, permutations, additions and
sub-combinations as are within their true spirit and scope.
* * * * *