heterogeneous porosity modeling craig schroeder may 13, 2004
TRANSCRIPT
Heterogeneous Porosity Modeling
Craig Schroeder
May 13, 2004
Outline
● Problem● Background● Past Work
– Representation– Booleans– Reconstruction
● Current Work● Future Work
Problem
● Given a porous object● Concise representation● Retain desired properties
(connectivity, flow, strength, etc.)● Reconstruct objects from stored
information● Reconstructed object should have
desired properties
Osteoporotic Bone, NASA
Background
● There has not been much background in computer science for representing porosity.
● Heterogeneous objects are being stored as material composition fractions, which is equivalent to density in this case.
● Storing exact internal geometry● Store by using unit cells
Background
● Storing volume fractions– Knowing the density is not always enough– Does not store important properties– Porosity information is completely gone!– Concise
Background
● Storing Exact Geometry– Do not lose property information– Stores a lot of information that we simply do not care
about– Geometric representation of porosity can be very
intricate and detailed– No two bones are exactly the same
Background
● Representation via unit cells– Requires user to set up the unit cells– Concise– Easy to compute properties– Easy to design an object with desired properties– Cannot be easily obtained from a sample object
Past Work
● Representation● Boolean operations● Reconstruction
Representation
● Use a stochastic function to measure properties of a porous object.
● A good choice should:– Be easy and efficient to compute– Tend to describe desired properties– Be suitable for reconstruction– Easy to store
Example Stochastic Functions
● Spherical contact distribution– Relatively easy to implement– Relatively efficient– Isotropic (unable to represent
directional features)– Theoretically fairly easy to
deal with– We do a variation on this
Example Stochastic Functions
● Greatest cube– Easy to implement– Relatively efficient to compute– Unable to distinguish axial directions– Theoretically difficult to deal with
● Minimum segment– Very difficult to implement– Very expensive to compute– Unable to distinguish directions
Our Stochastic Function
● Based on spherical contact distribution
● Measure distance to pore● Measure distance to material● Results in two distributions
– Storing both distributions makes Boolean inverses easy to do
– Makes the choice of pore and material virtually irrelevant.
Booleans – the Problem
● Can we do Booleans on this representation without the need to reconstruct?– Given the statistical description of A and B, what
might one expect, say, A union B to look like?– Cannot do exactly; A union B could result in vastly
different results. Eg, if A and B are checkboards
● Can we use this representation for modeling?● How good can we get? Good enough for use?
Inversion
● Because we store distributions for pore and material, inversion is simply a matter of swapping these; it is always exact.
● This is a useful operation to perform– If I have properties of an object, I can invert it so I
can reconstruct a scaffold for it– Could be performed after reconstruction instead of on
the distributions, but it does not matter.
Union, Intersection
● To do a union of A and B, you must do a union on the material distribution and an intersection on the pore distributions
● To do an intersection, unite the pore distribution and intersect the material distribution
Union Formula
= p r +rp ' x dx ƒ p ' r +r
p x dx
=V M • b o , x
V UƒV M ' • b o , x
V U
V M • b o , xV U
V M ' • b o , xV U
=+0
r
p x dx ƒ +0
r
p ' x dx +0
r
p x dx +0
r
p ' x dx
Intersection Formula∫==V M • b o , x
V U
V M ' • b o , xV U
=+0
r
p x dx +0
r
p ' x dx
Practicality
● Is doing Booleans on distributions worthwhile?● Pro
– Booleans are very cheap to compute on distributions– Does not require reconstruction
● Con– Booleans on reconstructed objects is straightforward– More accurate than on distributions– How useful might Booleans on porosity be?
Reconstruction
● How is the distribution computed in the first place?– Convert geometry into voxels– Measure the stochastic function at each voxel– Accumulate into histograms and store
● How can a distribution be updated upon a minor change?– The measure is local; only voxels near the change will
need recomputation (how near is near?)
Initialization
● Create a set of voxels in which to perform the reconstruction; we generally used 32x32x32
● Fill in voxels until the desired density is obtained– How do you choose the voxels to fill?– Structured speeds up reconstruction, but leaves
artifacts– Random seems to be the best choice, but is much
slower
Making Changes
● To make a change to the state, we want to choose two voxels and swap them– How do we choose them?– If both are pore or both are material, why swap?– If chosen randomly, convergence is too slow!– Choose first randomly, choose second by random
walk, requiring it to be beside a voxel of same type as first voxel; this speeds up convergence greatly
– Preserves density
Original Algorithm
● Initialize● Until some stopping condition
– Change state by performing a swap– Update distribution– Determine if the new state is better– If not, swap the cubes back
● The voxels are the output
Improved Algorithm
● Use simulated annealing● System starts warm and is slowly cooled.● If state is improved, keep the change● If the state is worsened, the change is accepted
based on how much worse it is and how warm the system is
● Permits the reconstruction to back up a bit● Helps to prevent getting stuck in local minima
Results
● Slow! Reconstruction on 32x32x32 takes hours● Excellent fit with simulated annealing● Output looks isotropic, which is expected
Full Cycle
Current Problem, Variation One
● Full 3D reconstruction takes hours● Can we do a simpler reconstruction onto the
surface of an object to give the appearance of what might result from the reconstruction
● Should be fast● Should look enough like the result to be useful
Approach
● Label polygons in a polyhedral representation of the surface of a model
● Randomly insert labels from the distribution, starting from the largest distances working in
● Propagate labels to enforce constraint imposed by the definition of the distributions
● Use the labels as offsets
● Offset vertices based on these offsets
Results
● Requires an error handling stage because the distribution tends not to fit quite right– Is the fit good? Probably not– Is it suitable for visualization? Probably not– Can it do anything? Yes!
PRETTY PICTURES!!
● It makes pretty pictures!
Current Variation of Problem
● Improve the surface reconstruction● Create an inverse of this surface reconstruction● Be able to go from surface to distribution and
back● Be able to go from solid to distribution to surface
for visualization● Should be fast● Visualization should look similar to 3D original
Ideas for Proceeding
● Continue with first approach– Not a faithful reconstruction– Will not be easy to create an inverse, if it is even well
defined– Still will not help the visualization problem
● Try something new– Ideas?
● Try doing 2D variation of 3D reconstruction
Reconstruction on 2D
● Do essentially a 3D reconstruction, but using the 2D world of the polygonal mesh
● A variation of this idea resulted in a close fit and rapid convergence.
● Much faster – completes in seconds on tens or hundreds of thousands of faces
● If labels are given, the distribution is measured in the same way the reconstruction measures it
Distance
● What does it mean to compute distance on the surface of a mesh?– Euclidean
● Makes more sense if you want to visualize 3D porosity● Technical complications – objects that are close can be far
apart on mesh
– Geodesic● Makes sense if you want to reconstruct a measured 2D
property● Avoids technical complications – objects that are close
together are close along mesh
Displacement Mapping
● Shift vertices along normals to create texture● How does one reverse a displacement map?● Should one try to visualize the labels by
displacement mapping?– Creates texture– Shading benefits
● Perhaps just color faces instead?– Simpler– Easier to invert
Theoretical Complications
● What does it mean to visualize a 3D distribution by reconstructing it in 2D?
● If I measure the 2D distribution from an actual 3D object, will the distributions match?– Probably not– Can I convert between them?
Future Work
● Try other functions besides the spherical contact distribution
● Try storing real properties (eg, flow)– Could replace others– Probably better to supplement another function– More inefficient to compute– Can this information be efficiently updated?– Would effectively force reconstructed object to have
desired properties
Future Work
● Distributions and modeling?● Better visualization?● Faster 3D reconstruction?
– Perhaps divide and conquer – do small reconstructions and combine into larger ones
– Perform reconstructions at increasing resolution to do rough convergence faster
Comments
● Ideas?● /* Comments? */