Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Come and hear
Introduction to Implicit Modelling
by Brian Wyvill
With a little helpfrom his students
University of Victoria Island Graphics Lab. Project CSC 305 page 2
Overview
••Introduction to Implicit SurfacesIntroduction to Implicit Surfaces
••Blending, Warping, CSGBlending, Warping, CSG
••Some ProblemsSome Problems
••The The BlobTreeBlobTree
••BlendingBlending
••TexturingTexturing
••AnimationAnimation
••Hierarchical Implicit SurfacesHierarchical Implicit Surfaces
••Building ModelsBuilding Models
University of Victoria Island Graphics Lab. Project CSC 305 page 3
Introduction to Implicit Surfaces
Parametric Definition
x = r sin(α)y = r cos(α)0 c α c 2π
Implicit Definition
f(x,y) = x2 + y2 - r2 = 0e.g. r = 1f(0,0) = 0 + 0 - 1 < 0 insidef(0,0) = 1 + 1 - 1 > 0 outside
implies search space to find x,y to satisfy: f(x,y) = 0
iso-surface: f(x,y) - c = 0
University of Victoria Island Graphics Lab. Project CSC 305 page 4
The Geoff Function
Field Function
Proximity Blending:Add contributions fromgenerating skeletal elementsin the neighbourhood
Click Me
University of Victoria Island Graphics Lab. Project CSC 305 page 5
Blending and The Soft Train
PolygonizerInfo.
1986
University of Victoria Island Graphics Lab. Project CSC 305 page 6
University of Victoria Island Graphics Lab. Project CSC 305 page 7
B
University of Victoria Island Graphics Lab. Project CSC 305 page 8
University of Victoria Island Graphics Lab. Project CSC 305 page 9
Polygonization Algorithm
University of Victoria Island Graphics Lab. Project CSC 305 page 10
University of Victoria Island Graphics Lab. Project CSC 305 page 11
University of Victoria Island Graphics Lab. Project CSC 305 page 12
University of Victoria Island Graphics Lab. Project CSC 305 page 13
University of Victoria Island Graphics Lab. Project CSC 305 page 14
University of Victoria Island Graphics Lab. Project CSC 305 page 15
University of Victoria Island Graphics Lab. Project CSC 305 page 16
University of Victoria Island Graphics Lab. Project CSC 305 page 17
University of Victoria Island Graphics Lab. Project CSC 305 page 18
University of Victoria Island Graphics Lab. Project CSC 305 page 19
Warping
University of Victoria Island Graphics Lab. Project CSC 305 page 20
University of Victoria Island Graphics Lab. Project CSC 305 page 21
University of Victoria Island Graphics Lab. Project CSC 305 page 22
University of Victoria Island Graphics Lab. Project CSC 305 page 23
University of Victoria Island Graphics Lab. Project CSC 305 page 24
Barr Operators
University of Victoria Island Graphics Lab. Project CSC 305 page 25
Constructive Solid Geometry (CSG)
Primitives are combined using boolean set operations: Union, Intersection, Difference. Each primitive represents a half space, ie the set of points defining the half space
E.g.
Boolean expression (u= union, d= difference, i= intersection)d( sphere, cylinder) u( sphere, i( i( cylinder, plane1), plane2) )
-- +
Sphere
-- +
Cylinder-
+
Plane
The cylinder is infinite in extentit is first intersected with twohalf space planes.
University of Victoria Island Graphics Lab. Project CSC 305 page 26
CSG Tree
CSG Implementation
Boolean Expressions are usually represented as a binary tree.
University of Victoria Island Graphics Lab. Project CSC 305 page 27
CSG Intersections with Voxels
University of Victoria Island Graphics Lab. Project CSC 305 page 28
CSG Intersection Value
Boolean Operations
Union and intersection of primitives, A and B may berespectively defined as a composition of the field values, FA , FB
FA » FB = max(FA, FB)
FA … FB = min(FA, FB)
Difference use -min (FA, FB)(- in this case inverts inside and outside )
University of Victoria Island Graphics Lab. Project CSC 305 page 29
CSG - Min and Max
fB(p2)=Max(fA(p2), fB(p2))fA(p1) =Max(fA(p1), fB(p1))
fA|B(p0)=Max(fA(p0), fB(p0))Depending on position of p0
Field = 0
Object A
Object B
P1 P2P0
Union
University of Victoria Island Graphics Lab. Project CSC 305 page 30
CSG - Min
fA(p2)=Min(fA(p2), fB(p2))=0fB(p1) =Min(fA(p1), fB(p1))=0
fA|B(p0)=Min(fA(p0), fB(p0))Depending on position of p0
Field = 0
Object A
Object B
P1 P2P0
Intersection
University of Victoria Island Graphics Lab. Project CSC 305 page 31
CSG - Min
Min(fA(p1), 1 - fB(p1))=0
Min(fA(p1), 1 - fB(p1))=fA(p1)
Min(fA(p0), fB(p0)) = 1 - fA|B(p0)Depending on position of p0
Difference
Field = 0
Object A
Object B
P1 P2P0
University of Victoria Island Graphics Lab. Project CSC 305 page 32
0 = f 1(x) = f 1 (P12 + n12) = f1(P12) + (n12 , f1( P12 ))0 = f2(x) = f2 (P12 + n12) = f2(P12) + (n12, f2( P12 ))
X is the true intersection point for C1 and C2
Segment P1 P2 is far from x.
Estimate for x s. t. f 1 (x) = f2 (x) = 0
We can apply a first order Taylor expansion to the difference : n12 = x - P12
Polygonization Problems
University of Victoria Island Graphics Lab. Project CSC 305 page 33
λ1 =
so
n1 =
and similarly
n2 =
− f1
( f1, f1)
Iterating to the Surface
− f1 f1
( f1, f1)
− f2 f2
( f2, f2)
University of Victoria Island Graphics Lab. Project CSC 305 page 34
Adaptive Polygonisation
University of Victoria Island Graphics Lab. Project CSC 305 page 35
CSoftG Wheels
Csoft Wheel before and after removal of artifacts
University of Victoria Island Graphics Lab. Project CSC 305 page 36
Canmore Coffee Grinder
Ray TracedCanmoreCoffeeGrinder
by
Kees van OverveldandBrian Wyvill
University of Victoria Island Graphics Lab. Project CSC 305 page 38
Parametric Bounding Curve
Cylinders intersected with bounding plane and parametric curve
Building the Piano
University of Victoria Island Graphics Lab. Project CSC 305 page 39
Model of 9ft. Steinway Concert Grand
Plant by Dr. Prusinkiwicz
University of Victoria Island Graphics Lab. Project CSC 305 page 40
American Type 4-4-0
University of Victoria Island Graphics Lab. Project CSC 305 page 41
The BlobTree
University of Victoria Island Graphics Lab. Project CSC 305 page 42
A BlobTree Example
University of Victoria Island Graphics Lab. Project CSC 305 page 43
More BlobTree Nodes
Note the inclusionof thetexture node.
University of Victoria Island Graphics Lab. Project CSC 305 page 44
N - indicates a node in the BlobTreeL (N ) - left child R (N ) - right childfunction F returns the field value for the node N at the point M
function F(N , M)1. Primitive: F( M)2. Warp: F( L (N ) , w( M)) (warp is a unary operator)3. Blend: F( L (N ) , M)+ F( R (N ) , M))4. Union: max( F( L (N ) , M), F( R (N ) , M))5. Intersection: min( F( L (N ) , M), F( R (N ) , M))6. Difference: min( F( L (N ) , M), -F( R (N ) , M))
end
Traversing The BlobTree