Interactive Boolean Operations on Surfel-Bounded Solids Bart AdamsPhilip Dutré Katholieke...

44
Interactive Boolean Interactive Boolean Operations on Operations on Surfel-Bounded Solids Surfel-Bounded Solids Bart Adams Philip Dutré Katholieke Universiteit Leuven

Transcript of Interactive Boolean Operations on Surfel-Bounded Solids Bart AdamsPhilip Dutré Katholieke...

Interactive Boolean Interactive Boolean Operations on Operations on

Surfel-Bounded SolidsSurfel-Bounded Solids

Interactive Boolean Interactive Boolean Operations on Operations on

Surfel-Bounded SolidsSurfel-Bounded SolidsBart Adams Philip Dutré

Katholieke Universiteit LeuvenBart Adams Philip Dutré

Katholieke Universiteit Leuven

Goal: CSG on free-form solidsGoal: CSG on free-form solidsGoal: CSG on free-form solidsGoal: CSG on free-form solids

A-BA-B AABB AABB

AA BB

• union, difference and union, difference and intersectionintersection

• on free-form solidson free-form solids• at interactive ratesat interactive rates

““Bond of Bond of Union”Union”““Bond of Bond of Union”Union”

90k surfels90k surfels 94k surfels94k surfels 8FPS8FPS

Related workRelated workRelated workRelated work

Kristjansson et al.Kristjansson et al. [2001] [2001] subdivision surfacessubdivision surfaces

Museth et al.Museth et al. [2002] [2002] level set frameworklevel set framework

Pauly et al.Pauly et al. [2003] [2003] points and moving least points and moving least

squares surfacesquares surfaceACM SIGGRAPHACM SIGGRAPH

Surfels are considered as Surfels are considered as small diskssmall disksSurfels are considered as Surfels are considered as small diskssmall disks

nn

• position position xx• normal normal nn• radius radius rr

• position position xx• normal normal nn• radius radius rr

xx

rr

surfels shown at half sizesurfels shown at half size

Three categories of surfelsThree categories of surfelsThree categories of surfelsThree categories of surfels

head surfels that liehead surfels that liecompletely completely helix helix

helix surfels that liehelix surfels that liecompletely completely head head

surfels surfels with with the other solid’s surfacethe other solid’s surface

Algorithm overviewAlgorithm overviewAlgorithm overviewAlgorithm overview

inside-outside inside-outside partitioningpartitioninginside-outside inside-outside partitioningpartitioning

classification classification of surfelsof surfelsclassification classification of surfelsof surfels

resamplingresamplingoperatoroperatorresamplingresamplingoperatoroperator

keep appropriate keep appropriate set of surfelsset of surfelskeep appropriate keep appropriate set of surfelsset of surfels

Interactive Interactive looploop

PreprocessPreprocess

Algorithm overviewAlgorithm overviewAlgorithm overviewAlgorithm overview

inside-outside inside-outside partitioningpartitioninginside-outside inside-outside partitioningpartitioning

classification classification of surfelsof surfelsclassification classification of surfelsof surfels

resamplingresamplingoperatoroperatorresamplingresamplingoperatoroperator

keep appropriate keep appropriate set of surfelsset of surfelskeep appropriate keep appropriate set of surfelsset of surfels

Interactive Interactive looploop

PreprocessPreprocess

For each solid an octree is For each solid an octree is constructedconstructedFor each solid an octree is For each solid an octree is constructedconstructed

depth = 1depth = 1depth = 1depth = 1 depth = 2depth = 2depth = 2depth = 2 depth = 3depth = 3depth = 3depth = 3

Classification of empty leaf Classification of empty leaf cell as interiorcell as interiorClassification of empty leaf Classification of empty leaf cell as interiorcell as interior

nnss

ss

nnss points away from points away from the empty cell the empty cell

nnss points away from points away from the empty cell the empty cell

Classification of empty leaf Classification of empty leaf cell as exteriorcell as exteriorClassification of empty leaf Classification of empty leaf cell as exteriorcell as exterior

nnss

ss

nnss points towards points towards the empty cell the empty cell nnss points towards points towards the empty cell the empty cell

Three types of leaf cells in Three types of leaf cells in the resulting octreethe resulting octreeThree types of leaf cells in Three types of leaf cells in the resulting octreethe resulting octree

InteriorInterior BoundaryBoundary ExteriorExterior

Partitioning of boundary Partitioning of boundary cells using parallel planescells using parallel planesPartitioning of boundary Partitioning of boundary cells using parallel planescells using parallel planes

PP11 PP22

All surfels between All surfels between PP11 and and PP22 All surfels between All surfels between PP11 and and PP22

PP11 PP22

ss

nnss

The empty half-space of The empty half-space of PP11 is interioris interiorThe empty half-space of The empty half-space of PP11 is interioris interior

nnss points away from the points away from the empty space empty space

nnss points away from the points away from the empty space empty space

PP11 PP22

ss

nnss

The empty half-space of The empty half-space of PP22 is exterioris exteriorThe empty half-space of The empty half-space of PP22 is exterioris exterior

nnss points towards points towards the empty space the empty space nnss points towards points towards

the empty space the empty space

In 3D, the boundary cell is In 3D, the boundary cell is partitioned in three volumespartitioned in three volumesIn 3D, the boundary cell is In 3D, the boundary cell is partitioned in three volumespartitioned in three volumes

InteriorInterior BoundaryBoundary ExteriorExterior

Algorithm overviewAlgorithm overviewAlgorithm overviewAlgorithm overview

inside-outside inside-outside partitioningpartitioninginside-outside inside-outside partitioningpartitioning

classification classification of surfelsof surfelsclassification classification of surfelsof surfels

resamplingresamplingoperatoroperatorresamplingresamplingoperatoroperator

keep appropriate keep appropriate set of surfelsset of surfelskeep appropriate keep appropriate set of surfelsset of surfels

Interactive Interactive looploop

PreprocessPreprocess

Classification of Classification of surfelssurfelsClassification of Classification of surfelssurfels

• ss11 outside octree outside octree

outsideoutside

• ss22 in exterior cell in exterior cell

outsideoutside

• ss33 in interior cell in interior cell

insideinside

ss11

ss22

ss33

ss55 ss44

Classification of Classification of surfelssurfelsClassification of Classification of surfelssurfels

boundary cellboundary cell

• surfels ssurfels s44 and s and s55 in in empty half-spaces:empty half-spaces: ss44 outsideoutside

ss55 insideinsidess55

ss44

Classification of Classification of surfelssurfelsClassification of Classification of surfelssurfels

sstt

– search for search for nearest nearest neighborneighbor surfel t surfel t

– test disks of s and t test disks of s and t for intersectionfor intersection

• surfel s between surfel s between parallel planes:parallel planes:

boundary cellboundary cell

Use octree as acceleration Use octree as acceleration structurestructureUse octree as acceleration Use octree as acceleration structurestructure

root node intersects root node intersects with boundary cellswith boundary cells

test childrentest children

solid Asolid A

solid Bsolid B

Use octree as acceleration Use octree as acceleration structurestructureUse octree as acceleration Use octree as acceleration structurestructure

child node only child node only intersects with intersects with exterior cellsexterior cells

all surfels all surfels outsideoutside

solid Asolid A

solid Bsolid B

Use octree as acceleration Use octree as acceleration structurestructureUse octree as acceleration Use octree as acceleration structurestructure

child node intersects child node intersects with boundary cellswith boundary cells

test childrentest children

solid Asolid A

solid Bsolid B

Use octree as acceleration Use octree as acceleration structurestructureUse octree as acceleration Use octree as acceleration structurestructure

leaf node only leaf node only intersects with intersects with exterior cellsexterior cells

all surfels all surfels outsideoutside

solid Asolid A

solid Bsolid B

Use octree as acceleration Use octree as acceleration structurestructureUse octree as acceleration Use octree as acceleration structurestructure

leaf node still leaf node still intersects with intersects with boundary cellsboundary cells

test surfels test surfels individuallyindividually

solid Asolid A

solid Bsolid B

Inside-outside classificationInside-outside classificationInside-outside classificationInside-outside classification

surfels classified in group 47%

individual surfels not in boundary cells 26%

surfels in empty space of boundary cells 22%

surfels between parallel planes 5%

200k surfels200k surfels

Inside-outside classificationInside-outside classificationInside-outside classificationInside-outside classification

surfels classified in group 47%

individual surfels not in boundary cells 26%

surfels in empty space of boundary cells 22%

surfels between parallel planes 5%

NN search for only 5%,NN search for only 5%,

80% of this 5% is intersecting80% of this 5% is intersecting200k surfels200k surfels

Algorithm overviewAlgorithm overviewAlgorithm overviewAlgorithm overview

keep appropriate keep appropriate set of surfelsset of surfelskeep appropriate keep appropriate set of surfelsset of surfels

Interactive Interactive looploop

inside-outside inside-outside partitioningpartitioninginside-outside inside-outside partitioningpartitioningPreprocessPreprocess

classification classification of surfelsof surfelsclassification classification of surfelsof surfels

resamplingresamplingoperatoroperatorresamplingresamplingoperatoroperator

Algorithm overviewAlgorithm overviewAlgorithm overviewAlgorithm overview

inside-outside inside-outside partitioningpartitioninginside-outside inside-outside partitioningpartitioning

classification classification of surfelsof surfelsclassification classification of surfelsof surfels

resamplingresamplingoperatoroperatorresamplingresamplingoperatoroperator

keep appropriate keep appropriate set of surfelsset of surfelskeep appropriate keep appropriate set of surfelsset of surfels

Interactive Interactive looploop

PreprocessPreprocess

Resampling operator: Resampling operator: motivationmotivationResampling operator: Resampling operator: motivationmotivation

Include surfelsInclude surfels Exclude surfelsExclude surfels Resample surfelsResample surfels

Intersection of two spheresIntersection of two spheres

Resample surfel by smaller Resample surfel by smaller surfelssurfelsResample surfel by smaller Resample surfel by smaller surfelssurfels

• clip surfels:clip surfels:– irregularly irregularly

shaped surfelsshaped surfels

• our method: our method: resample surfels:resample surfels:

– surfel replaced by surfel replaced by smaller surfelssmaller surfels

– only one type of only one type of primitiveprimitive

Close-up of resampled Close-up of resampled surfelssurfelsClose-up of resampled Close-up of resampled surfelssurfels

surfels shown at half sizesurfels shown at half size

Resampling results in sharp Resampling results in sharp edges and cornersedges and cornersResampling results in sharp Resampling results in sharp edges and cornersedges and corners

350k surfels350k surfels 4.4FPS4.4FPS230k surfels230k surfels 46k surfels46k surfels

Local smoothing eliminates Local smoothing eliminates sharp creasessharp creasesLocal smoothing eliminates Local smoothing eliminates sharp creasessharp creases

smoothingsmoothingno smoothingno smoothing

3.3FPS3.3FPS250k surfels250k surfels 650k surfels650k surfels340k surfels340k surfels

““Bond of Bond of Union”Union”““Bond of Bond of Union”Union”

350k surfels350k surfels 370k surfels370k surfels 2FPS2FPS

Advantages• fast classification• sharp edges and corners• only one type of primitive• octree is easy to update

Limitations• partitioning might fail in case of

incorrectly oriented surfels• choice of parallel planes is not always

optimal

DiscussionDiscussionDiscussionDiscussion

ConclusionConclusionConclusionConclusion

Contributions• fast inside-outside test• resampling operator

Future work• CSG operations on mixed

polygon-surfel models• implementation on GPU

AcknowledgementsAcknowledgementsAcknowledgementsAcknowledgements

• graphics group K.U.Leuven• the reviewers• aspirant F.W.O.-Vlaanderen

Remark: surfels are considered Remark: surfels are considered being disks, not just pointsbeing disks, not just pointsRemark: surfels are considered Remark: surfels are considered being disks, not just pointsbeing disks, not just points

enlarge bounding boxes for overlap tests

Remark: surfels are considered Remark: surfels are considered being disks, not just pointsbeing disks, not just pointsRemark: surfels are considered Remark: surfels are considered being disks, not just pointsbeing disks, not just points

translate planes in boundary cells

Choice of parallel planes is not Choice of parallel planes is not always optimalalways optimalChoice of parallel planes is not Choice of parallel planes is not always optimalalways optimal

Comparison with the technique Comparison with the technique of Pauly et al.of Pauly et al.Comparison with the technique Comparison with the technique of Pauly et al.of Pauly et al.

Pauly et al. Adams and DutréSurface

representationPoints and MLS

surfaceDisks

NN search Kd-tree Octree + TINN

Intersection curve

Points on curveDisks intersect on

curve

RenderingSurface splatting

extended with clipping

Rendering of disks(any surfel rendering

algorithm)

Surfels close to surface of Surfels close to surface of other solidother solidSurfels close to surface of Surfels close to surface of other solidother solid

InsideInside with our with our technique,technique,outsideoutside with the with the technique of Pauly et technique of Pauly et al.al.

Solutions:Solutions:denserdenser sampling samplingdifferentialdifferential points points(Kalaiah and Varshney)(Kalaiah and Varshney)