{"Affiliation":[{"label":"Affiliation","value":"Science, Faculty of","attrs":{"lang":"en","ns":"http:\/\/vivoweb.org\/ontology\/core#departmentOrSchool","classmap":"vivo:EducationalProcess","property":"vivo:departmentOrSchool"},"iri":"http:\/\/vivoweb.org\/ontology\/core#departmentOrSchool","explain":"VIVO-ISF Ontology V1.6 Property; The department or school name within institution; Not intended to be an institution name."},{"label":"Affiliation","value":"Computer Science, Department of","attrs":{"lang":"en","ns":"http:\/\/vivoweb.org\/ontology\/core#departmentOrSchool","classmap":"vivo:EducationalProcess","property":"vivo:departmentOrSchool"},"iri":"http:\/\/vivoweb.org\/ontology\/core#departmentOrSchool","explain":"VIVO-ISF Ontology V1.6 Property; The department or school name within institution; Not intended to be an institution name."}],"AggregatedSourceRepository":[{"label":"AggregatedSourceRepository","value":"DSpace","attrs":{"lang":"en","ns":"http:\/\/www.europeana.eu\/schemas\/edm\/dataProvider","classmap":"ore:Aggregation","property":"edm:dataProvider"},"iri":"http:\/\/www.europeana.eu\/schemas\/edm\/dataProvider","explain":"A Europeana Data Model Property; The name or identifier of the organization who contributes data indirectly to an aggregation service (e.g. Europeana)"}],"Campus":[{"label":"Campus","value":"UBCV","attrs":{"lang":"en","ns":"https:\/\/open.library.ubc.ca\/terms#degreeCampus","classmap":"oc:ThesisDescription","property":"oc:degreeCampus"},"iri":"https:\/\/open.library.ubc.ca\/terms#degreeCampus","explain":"UBC Open Collections Metadata Components; Local Field; Identifies the name of the campus from which the graduate completed their degree."}],"Creator":[{"label":"Creator","value":"Williams, Brent Warren","attrs":{"lang":"en","ns":"http:\/\/purl.org\/dc\/terms\/creator","classmap":"dpla:SourceResource","property":"dcterms:creator"},"iri":"http:\/\/purl.org\/dc\/terms\/creator","explain":"A Dublin Core Terms Property; An entity primarily responsible for making the resource.; Examples of a Contributor include a person, an organization, or a service."}],"DateAvailable":[{"label":"DateAvailable","value":"2008-06-16T21:16:35Z","attrs":{"lang":"en","ns":"http:\/\/purl.org\/dc\/terms\/issued","classmap":"edm:WebResource","property":"dcterms:issued"},"iri":"http:\/\/purl.org\/dc\/terms\/issued","explain":"A Dublin Core Terms Property; Date of formal issuance (e.g., publication) of the resource."}],"DateIssued":[{"label":"DateIssued","value":"2008","attrs":{"lang":"en","ns":"http:\/\/purl.org\/dc\/terms\/issued","classmap":"oc:SourceResource","property":"dcterms:issued"},"iri":"http:\/\/purl.org\/dc\/terms\/issued","explain":"A Dublin Core Terms Property; Date of formal issuance (e.g., publication) of the resource."}],"Degree":[{"label":"Degree","value":"Master of Science - MSc","attrs":{"lang":"en","ns":"http:\/\/vivoweb.org\/ontology\/core#relatedDegree","classmap":"vivo:ThesisDegree","property":"vivo:relatedDegree"},"iri":"http:\/\/vivoweb.org\/ontology\/core#relatedDegree","explain":"VIVO-ISF Ontology V1.6 Property; The thesis degree; Extended Property specified by UBC, as per https:\/\/wiki.duraspace.org\/display\/VIVO\/Ontology+Editor%27s+Guide"}],"DegreeGrantor":[{"label":"DegreeGrantor","value":"University of British Columbia","attrs":{"lang":"en","ns":"https:\/\/open.library.ubc.ca\/terms#degreeGrantor","classmap":"oc:ThesisDescription","property":"oc:degreeGrantor"},"iri":"https:\/\/open.library.ubc.ca\/terms#degreeGrantor","explain":"UBC Open Collections Metadata Components; Local Field; Indicates the institution where thesis was granted."}],"Description":[{"label":"Description","value":"Outlined is a new approach to the problem of surfacing particle-based fluid simulations. The key idea is to construct a surface that is as smooth as possible while remaining faithful to the particle locations. We describe a mesh-based algorithm that expresses the surface in terms of a constrained optimization problem. Our algorithm incorporates a secondary contribution in Marching Tiles, a generalization of the Marching Cubes isosurfacing algorithm. Marching Tiles provides guarantees on the minimum vertex valence, making the surface mesh more amenable to numerical operators such as the Bilaplacian.","attrs":{"lang":"en","ns":"http:\/\/purl.org\/dc\/terms\/description","classmap":"dpla:SourceResource","property":"dcterms:description"},"iri":"http:\/\/purl.org\/dc\/terms\/description","explain":"A Dublin Core Terms Property; An account of the resource.; Description may include but is not limited to: an abstract, a table of contents, a graphical representation, or a free-text account of the resource."}],"DigitalResourceOriginalRecord":[{"label":"DigitalResourceOriginalRecord","value":"https:\/\/circle.library.ubc.ca\/rest\/handle\/2429\/906?expand=metadata","attrs":{"lang":"en","ns":"http:\/\/www.europeana.eu\/schemas\/edm\/aggregatedCHO","classmap":"ore:Aggregation","property":"edm:aggregatedCHO"},"iri":"http:\/\/www.europeana.eu\/schemas\/edm\/aggregatedCHO","explain":"A Europeana Data Model Property; The identifier of the source object, e.g. the Mona Lisa itself. This could be a full linked open date URI or an internal identifier"}],"Extent":[{"label":"Extent","value":"3916807 bytes","attrs":{"lang":"en","ns":"http:\/\/purl.org\/dc\/terms\/extent","classmap":"dpla:SourceResource","property":"dcterms:extent"},"iri":"http:\/\/purl.org\/dc\/terms\/extent","explain":"A Dublin Core Terms Property; The size or duration of the resource."}],"FileFormat":[{"label":"FileFormat","value":"application\/pdf","attrs":{"lang":"en","ns":"http:\/\/purl.org\/dc\/elements\/1.1\/format","classmap":"edm:WebResource","property":"dc:format"},"iri":"http:\/\/purl.org\/dc\/elements\/1.1\/format","explain":"A Dublin Core Elements Property; The file format, physical medium, or dimensions of the resource.; Examples of dimensions include size and duration. Recommended best practice is to use a controlled vocabulary such as the list of Internet Media Types [MIME]."}],"FullText":[{"label":"FullText","value":"Fluid Surface Reconstruction from Particles by Brent Warren Williams Hons. B.Math, The University of Waterloo, 1995 A THESIS SUBMITTED IN PARTIAL FULFILMENT OF THE REQUIREMENTS FOR THE DEGREE OF Master of Science in The Faculty of Graduate Studies (Computer Science) The University of British Columbia (Vancouver) \u00a9 Brent Warren Williams, 2008 Abstract Outlined is a new approach to the problem of surfacing particle-based fluid simulations. The key idea is to construct a surface that is as smooth as possible while remaining faithful to the particle locations. We describe a mesh-based algorithm that expresses the surface in terms of a constrained optimization problem. Our algorithm incorporates a secondary contribution in Marching Tiles, a generalization of the Marching Cubes isosurfacing algo- rithm. Marching Tiles provides guarantees on the minimum vertex valence, making the surface mesh more amenable to numerical operators such as the Bilaplacian. ii Table of Contents Abstract ^ ii Table of Contents ^ iii List of Figures ^ v Acknowledgments ^ vii 1 Introduction ^ 1 2 Fluid Simulation ^ 3 2.1 Eulerian Approaches 3 2.2 Lagrangian Approaches ^ 6 2.3 Hybrids and Alternatives 8 2.4 Previous Work ^ 8 3 Particle Surfacing ^ 11 3.1 Smoothness 11 3.2 Unweighted Graph Laplacian ^ 13 3.3 Weighted Surface Bilaplacian 13 3.4 Constraints ^ 15 iii Table of Contents 3.4.1 Particle Faithfulness ^ 15 3.4.2 Solid-Liquid-Air Intersections ^ 16 3.5 Gauss-Seidel Solver ^ 18 3.6 Barzilai-Borwein Solver 19 3.7 Radii ^ 19 3.8 Algorithm 21 3.9 Surface Erosion ^ 23 4 Marching Tiles 25 4.1 Marching Cubes ^ 25 4.2 Marching Tiles 27 5 Results ^ 30 5.1 Enright Deformation Test ^ 30 5.2 Fluid Simulations 32 6 Conclusion ^ 37 6.1 Future Work 37 Bibliography ^ 39 Appendices A Modified A15 Tile ^ 47 B Average Mesh Valence 49 iv List of Figures 2.1 Marker particle visualization in PLS ^ 5 2.2 Mass loss and voxelization in level sets 6 2.3 Glass of water with Eulerian and Lagrangian approaches . 7 2.4 Particle surfacing comparisons in 2D ^ 9 3.1 Surfacing algorithm concept illustrated in 2D ^ 12 3.2 Outline of the surface reconstruction algorithm ^ 13 3.3 Handling fluid-boundary intersections ^ 16 3.4 Surfacing with a complex boundary 17 3.5 Fluid-air-boundary surface separation for transparent fluids 18 3.6 Comparison of step lengths for various iterative solvers . . . 20 3.7 Conditions on router permitting a planar surface mesh^. . . 21 3.8 Surface erosion ^ 24 4.1 Marching Cubes cell configurations ^ 26 4.2 Valence histogram comparison 26 4.3 Modified A15 space-filling tile ^ 28 5.1 The Enright Deformation Test 31 5.2 Sequence from a test fluid simulation ^ 33 v List of Figures 5.3 A viscous oily fluid spilling from a tube ^ 34 5.4 Scenes from 10,000 B.C. ^ 35 5.5 Scenes from HELLBOY II 36 A.1 Structure of the A15 tile in the XY plane ^ 47 A.2 The A15 variant from several viewpoints 48 vi Acknowledgments First thanks to Prof. Robert Bridson for remarkable insights and patience. I could not have asked for a better advisor. Thanks as well to Prof. Ian Mitchell and Robert McGovern for many helpful comments in the preparation of this thesis. This work would have not have been possible without the generosity and good will of employers past and present, in particular I'd like to thank Greg Brill, DeBorah Johnson and Randy Pyburn. Finally I'd like to thank my close-knit but far-flung family for their support and encouragement, and those I missed and who missed me on many a long evening vii Chapter 1 Introduction In computer animations complex dynamic materials such as hair, cloth and fluid are difficult to model directly. Physically-based simulations provide an alternative by exercising the governing physical equations. We are interested here in simulations of table-top fluid mechanics such as pouring water into a glass. Fluid simulations may be divided into two broad categories, Eulerian (grid-based) and Lagrangian (particle-based). As with all physical simu- lations there are three basic steps involved \u2014 performing the simulation, extracting a renderable representation, and performing the rendering. Eulerian simulations suffer from a number of numerical difficulties in- cluding diffusion of small-scale structure, mass loss and spatial discretization complexities. However extracting a high quality surface is straightforward, a critical advantage over particle-based approaches and one of the primary reasons for the current domination of the Eulerian approach. Our primary contribution lies in the field of Lagrangian simulations, specifically extracting a renderable fluid surface from particle locations. This problem has been little addressed in the literature and is something of an Achilles heel of the Lagrangian approach. The seminal work of Enright et al. [19] advocates the Eulerian approach in part because \"Particle methods, 1 Chapter I. Introduction while quite versatile, pose difficulties when trying to reconstruct a smooth water surface from the locations of the particles alone\". Premo'2'e et al. [47] echoes the lament: \"The biggest disadvantage of using particle methods is the question of surface representation\". Our particle surfacing algorithm is described in chapter 3. One step in our surfacing algorithm calls for isosurfacing, i.e. generating a surface of constant value from a volume of scalars. The standard isosur- facing algorithm is Marching Cubes, which, along with its many derivatives, generates surfaces that contain many vertices with a valence (degree) of four. Valence four vertices represent a relatively poor sampling of the underlying surface and do not behave well when numerical procedures such as smooth- ing, normal extraction, simplification and so on are applied. We introduce a new algorithm dubbed Marching Tiles which guarantees a minimum valence of five on the generated isosurface, allowing for improvements in the quality of our fluid surfaces, with application to other areas in computer graph- ics. The theory and implementation behind Marching Tiles is described in chapter 4. Our fluid surfacing algorithm is motivated by perceived advantages in Lagrangian approaches over Eulerian approaches in fluid simulations. We begin by justifying this premise. 2 Chapter 2 Fluid Simulation 2.1 Eulerian Approaches Eulerian simulations are characterized by a generally rectangular domain within which fluid properties such as velocity and pressure are tracked at fixed points in space. The values of these properties are determined by a governing equation such as Navier-Stokes [7] which is discretized and inte- grated across time and\/or space. The properties determine the behaviour of the fluid in terms of compressibility, viscosity, elasticity and so on. It is generally necessary to model fluid throughout the entire domain, although in computer graphics we are usually only interested in the location of the fluid surface, or interface. In Eulerian simulations the interface is encoded implicitly, for example within a level set 0 : R 3 ---+ R. At each point 0 contains the signed distance to the nearest interface. By convention, locations where 0 > 0 lie outside the fluid and locations where 0 < 0 lie inside the fluid [45]. Implicitly the surface itself lies at 0 = 0. There are of course alternatives to level sets in the Eulerian framework, such as the Volume-of-Fluid (VOF) method; however, they suffer from the same sampling problem of any Eulerian method discussed below, and generally don't fare as well when extracting a quality surface for rendering. 3 Chapter 2. Fluid Simulation The use of level sets in grid-based approaches makes extracting a render- able representation straightforward. The zero-level isosurface can be gen- erated from the level set in the form of a mesh using the simple and well- established Marching Cubes algorithm ([36], see also section 4.1). It is also possible to render level sets using ray tracing, although volume primitives are not always supported natively nor do most renderers rely on ray-tracing exclusively. We will restrict our consideration to the mesh generation ap- proach usable with all rendering engines. Although extracting a mesh for use in rendering the fluid surface is straightforward, the grid-based approach introduces a number of difficul- ties in performing the simulation itself. One problem lies in the difficulty of representing small-scale features of size comparable to or smaller than the grid spacing. This can be addressed using adaptive techniques such as octrees [38] which 'zoom in' on features near the interface. Octrees may be supplemented with the particle level set method (PLS [17]) which sprinkles Lagrangian 'shepherd' particles on either side of the interface in order to correct (and be corrected by) the position of the interface within the level set (see figure 2.1). While techniques such as octrees and PLS represent an improvement over ordinary level sets, fundamentally small features cannot be represented on a grid and so are not reliably sampled. This undersampling inevitably leads to artifacts such as mass loss in the form of holes that suddenly open up in thin surfaces, and voxelization in the limits of the spatial refinement (figure 2.2). The problem of mass loss is inherent to level set approaches and is exacerbated as the surface grows in complexity [39]. The undersampling 4 Chapter 2. Fluid Simulation .^...,^.^..^\u2022, . \u2022^' \u2022^. \u25a0-\u2022\"--7',\"\"--,,,r-\u2022'\"\u2022^\u2022\u2022,,,, - \u2022^. \u2022^\u2022 ,^, \u2022 ..^\u2022^-....4 . .\u2022_,...4-\u2022^\u2022^. . ,..;_.i'..^,^\u2022^-*,,..- , 4\u2022 \u2022 ..^,,^-;:7-- \u2022 .6 . ,1*. A^''' ..r.-...\u201e.,,,,,,\u201e,^i q. T. '\u201e.\":\u201e .,\u2022.^\u201e t\u2022 \u2022 \u2022 \u2022 ,^7 \u2022 I . :^\u2022 r^,. \u202207 .1.A. . .., i\u2022-. .\u03024 -4, i .^.. -. .. , .^\u2022 \u2022 ..\u2022\u2022\u2022 ',,^if : ; 4 ..\u2022 .4,. ,.. ,^,'^...t^,,,.,. \".^'.'^' \u2022 '!'\u2022 : \u2022^\"... \u2022 \u2022..., , \u2022 ,-. -4.4 .4 .^\u2022\u2022,...\u0302 , .^\u2022^,^\u2022 \u2022 \u2022\u2022\u2022 \u2022.^, . \u2022 '.'\"'w . .. '..1 . \u2022 \u2022^''',',.^\u2022, - .^...^\u2022 , : \u2022'' '. . \u2022 . \u2022\u2022 4 .^, \u2022 \u2022^. \u2022\u2022..., ,^\u2022\u2022'' \u2022.^- \u201e....^\u2022'^\u2022\u2022r\u2022k^..\u2022 ---\u2022+- 14. '^\":!...,;.,.\u201e,^.,\u2022 \u2022 .. , \u2022 \u2022 \u2022 .^\u2022^.^, .. . ...^-4 V ..i.vi.\u201e \u2022 :, A \". 47\u2022'^; !S\u2022^.^$ ' 1. ''''^- \u2022^%. \u2022. .^. 4. ..^. . \u2022 ,-..- 1--. \" Figure 2.1: The Particle Level Set (PLS) method adds Lagrangian particles both inside (blue points) and outside (red points) the level set interface (blue line) to help reduce diffusion of small-scale structure (see [17] for details). The grid shows the resolution of the Eulerian simulation, emphasizing the number of additional samples required to implement PLS, especially for complex surfaces. Image from [57]. also makes diffusion or smearing of small-scale structures a recurrent prob- lem, somewhat mitigated but not eliminated by approaches such as PLS and vorticity confinement [20]. Further difficulties are brought about by the spatial discretization which requires complex codes such as ENO [27, 28] and WENO [32, 35] in order to reach beyond basic first order accuracy. High-order schemes are particularly necessary for Eulerian approaches as level sets cannot preserve surface fea- tures under even simple transformations such as translations and rotations. Large-kernel spatial discretizations schemes add further complexity when combined with the non-periodic boundary conditions generally desirable in computer graphics. Level sets also tend to depart from signed distance over time, requir- 5 Chapter 2. Fluid Simulation r Figure 2.2: This image from Losasso et al. [38] shows unexpected mass loss (top right) as well as undesirable voxelization at the limits of the octree (top right and bottom right). ing a reinitialization procedure every few time steps to maintain favourable numerical qualities [11]. Clearly there is a price to be paid in the simulation when selecting Eule- rian approaches for their simplicity in rendering. We will now examine the Lagrangian alternative intended for use with our surfacing algorithm. 2.2 Lagrangian Approaches Lagrangian simulations track fluid properties at points or particles that move with the fluid rather than at fixed points in space as with Eulerian sys- tems. There are many variations on the Lagrangian approach including Smoothed Particle Hydrodynamics (SPH [41]), Particle-in-Cell and FLuid- Implicit-Particle (PIC and FLIP [60]), marker particle methods [26] as well as various adaptive variations [1, 31]. See Bridson [5] for a comprehensive review of Lagrangian fluid simulations. Lagrangian approaches share a number of benefits over Eulerian ap- 6 Chapter 2. Fluid Simulation proaches in terms of simplicity and correctness. For example, SPH does not involve a discretization on a spatial grid, allowing for large or irreg- ularly shaped domains such as meandering rivers. Lagrangian approaches generally reduce or eliminate the need for complex discretizations in space such as ENO and WENO. Lagrangian approaches generally have little or no problem with mass preservation or spatial diffusion. Indeed the utility of particle systems is evidenced by their frequent employment to correct or supplement non-particle-based codes ([10, 17, 37], see also figure 2.3). Figure 2.3: (Left) An early grid-based paper [17] demonstrates reasonable quality in capturing relatively thin fluid structures. (Right) Six years later an update [37] by some of the same authors resolves finer scales only by coupling the grid-based solver with a particle-based solver. Leveraging particle systems directly in a fluid simulation requires an ap- proach to constructing a high-quality surface mesh for rendering. Although a wealth of literature considers particle-based simulations surprisingly little Chapter 2. Fluid Simulation attention has been devoted to surface reconstruction. 2.3 Hybrids and Alternatives In practice, modern approaches to fluid simulation and rendering in com- puter graphics tend to blur the line between Eulerian and Lagrangian. The approaches are combined in the hybrid FLIP codes of Zhu et al. [60], while Losasso et al. [37] bidirectionally couples independent Eulerian simulations for liquids with Lagrangian simulations for less-dense foam and spray. Dif- ferent approaches altogether include fluid-oriented Finite Element Models (FEM [2]), boundary-only element dynamics [10], wave particles [59], Lat- tice Boltzmann techniques [54] and procedural approaches [6]. Our surfacing algorithm may in general be used with any fluid simulation that expresses the final location of the fluid as a collection of discrete locations. 2.4 Previous Work One of the earliest papers on particle surface reconstruction comes from Blinn [4] which outlines an approach commonly referred to as blobbies. From the particle locations Blinn builds an additive scalar potential field which is subsequently isocontoured to produce the final surface. The method was de- signed for, and is well suited to, the task of visualizing molecular densities. However, when applied to a large number of macroscopic fluid particles, the resulting surface is quite naturally very blobby. The blobbiness high- lights the particle-oriented nature of the underlying simulation rather than masking it as desired. 8 Chapter 2. Fluid Simulation Another early approach is surface splatting [43, 61] whereby billboards (textures orthogonal to the axis of the camera) are rendered at the particle locations. While straightforward to implement the approach requires an exorbitantly high particle count to avoid the fluid visually breaking up at the edges [48]. Further, the cost of the method increases with frame resolution. More recently, Zhu et al. [60] construct a scalar field like that used with blobbies but isosurface a moving average on the field. This approach smooths out the contribution of each particle to a given surface vertex. Unfortunately, the discretization also results in the production of spurious blobs. These blobs can be eliminated through subsequent upsampling and smoothing but at the expense of small surface detail (figure 2.4). Figure 2.4: Particle surfacing comparisons in 2D. (Left) Zhu et al. [60] gen- erates spurious blobs in concave regions and relatively poor approximations of flat surfaces, both of which require unconstrained smoothing at the ex- pense of genuine features. (Middle) The refinement offered by Adams et al. [1] produces somewhat flatter surfaces but is adversely affected when particle distribution deviates from the average such as in the concentration of particles at the upper right. (Right) Our surfacing algorithm generates perfectly flat surfaces, smooth convex and concave surfaces, and is not ad- versely affected by the particle distribution. 9 Chapter 2. Fluid Simulation The approach of Zhu et al. was adapted by Adams et al. [1] to track particle-surface distance for each particle. This was necessary for their adaptively-sized particle simulations and has the nice side effect of further smoothing and improving the surface. However, as with any kernel-based approach no long-range smoothing is possible, which makes it difficult to represent truly flat surfaces. Furthermore the Zhu et al. and Adams et al. approaches both rely on a final particle-unaware smoothing step that cannot distinguish genuine small-scale structure from noise. Consequently, both approaches diffuse small-scale structure during surface extraction (just as Eulerian approaches diffuse small-scale structure during simulation). Premo'Ze et al. [47] constructs and isosurfaces a scalar field that is ad- vected by particle-driven forces. Although the approach is an order of magni- tude slower than those cited above and was illustrated using high resolution grids (larger than 200 3 ), their results show noticeable particle artifacts. The authors conclude their method \"has some inherent problems with creating sharp boundaries when the fluid is in contact with a solid object or another fluid\" and suggest they have abandoned the approach. 10 Chapter 3 Particle Surfacing We propose constructing surfaces around particles which are as smooth as possible while remaining faithful to the particle locations in a technical sense we define in section 3.4.1. We have chosen to formalize this approach as a problem of constrained nonlinear optimization. A quadratic objective function measuring surface energy is used to maximize smoothness. To keep the surface faithful to the underlying particles, we enforce a constraint during the optimization stage that restricts each surface vertex to lie outside the union of radius r\u201e,\u201e\u201e particle-centered spheres and inside the union of radius router particle-centered spheres (see figure 3.1). Our algorithm generates a compliant initial surface using Marching Tiles at router (chapter 4) and optimizes the surface using a sparse iterative Gauss-Seidel solver [29]. The algorithm is outlined in figure 3.2 and described in detail below. 3.1 Smoothness In order to pose a constrained optimization problem we require a scalar objective function measuring surface smoothness. We select here the thin- plate energy of the surface i.e. the integral of the surface Laplacian squared. Following [14] we consider a discrete approximation to the Laplacian about 11 Chapter 3. Particle Surfacing Figure 3.1: The key idea in our surface definition is constructing a surface as smooth as possible that remains outside the union of radius r,\u201e\u201e particle- centered spheres and inside the union of radius r out\u201e particle-centered spheres. The resulting surface captures all true features of the fluid without introducing spurious features in the interpretation. We enforce the con- straint on mesh vertices but not mesh edges, explaining the small violation visible above. vertex i: (v2 x ) i D (3.1) 3 where D is a diagonal normalization matrix and W a zero row-sum weighting matrix. All matrices encoding the surface graph connectivity including D and W are sparse. We will use two quadratic objective functions, xTAx and xTBx where A represents an unweighted approximation to the graph Laplacian and B a weighted approximation to the surface Bilaplacian l 'Also known as the biharmonic operator 12 Chapter 3. Particle Surfacing Surfacing Algorithm Calculate distance field 0 from particles P on a background grid. Generate initial x, by Marching Tiles for isocontour r= outer. Find unweighted graph Laplacian matrix A for xi . Run five steps of Gauss-Seidel on x, using xTAx with particle constraints. Find integrated Bilaplacian matrix B given current xi. Run 25 steps of Gauss-Seidel on x, using xTBx with particle constraints. Run five steps of Gauss-Seidel on xi using xTBx without particle constraints. Optionally 'erode' x i back along the surface normal. Figure 3.2: Outline of the surface reconstruction algorithm. 3.2 Unweighted Graph Laplacian For the unweighted Laplacian case, we set Wig equal to negative one for each 1-ring neighbour j of i, and Wii to the valence of vertex xi as in Taubin [53]. We don't use the weighting matrix D, instead forming the dis- crete quadratic objective xTAx with A = W. Although we form A explicitly, it is straightforward to apply the operator directly to structure of the mesh. Optimization with this objective is often used in mesh generation, where it is called 'mesh smoothing', as it generally leads to improved triangle shapes. In the absence of constraints, a minimizing solution would satisfy Ax 0, which can be interpreted as requiring that a vertex be at the centroid of its neighbours. 3.3 Weighted Surface Bilaplacian For the weighted Bilaplacian case, following Desbrun et al. [14] we set Wu to the sum of the cotangents of opposite angles from the pair of triangles 13 Chapter 3. Particle Surfacing incident on vertices x i and x3 . Dii is set to the sum of the area of all triangles incident on vertex x i . Our approximation to the integral of the Laplacian squared is therefore: fis II v2 x1I 2 E(D- 1 147x)?Dii xT ((D -1 W)TDD- 1W)x (3.2) xT(WTD-1W)x To make use of the Bilaplacian in our optimization problem we wish to converge on a mesh where the gradient is zero (i.e. a stable point). Taking the gradient of equation (3.2) gives 2(WTD -1W)x (3.3) and so our quadratic approximation of the Bilaplacian is B = wTD\u2014iw. Note that B is symmetric positive semi-definite which guarantees conver- gence for Gauss-Seidel, although this is not actually an issue for us as we iterate with a fixed upper bound (see section 3.8). 14 Chapter 3. Particle Surfacing 3.4 Constraints 3.4.1 Particle Faithfulness We consider a surface vertex xi to be faithful if it lies within a bounded distance of the nearest particle .P rinner < min Ilx \u2014 Pi ll < router (3.4) A faithful surface is one that lies outside the union of spheres of radius ruiner and inside the union of spheres of radius r outer (figure 3.1). Heuristically, this forces the surface to never vary much from the distribution of the particles, while allowing it enough freedom to smooth over individual particles and thus capture smooth and flat surfaces when appropriate. The surface is kept faithful to the particle locations by snapping surface vertices to within [r inner, router] of the closest particle after each iteration of the solver. We employ a simple sparse spatial hash on particle locations to accelerate the particle lookup. Enforcing constraints represents approximately 10% of the cost of the entire surfacing procedure per frame. This cost can be reduced by skipping the enforcement every second or third step or employing a more refined space-partitioning structure such as a kd-tree. The remaining costs in the surfacing algorithm are 10% for the smoothing (section 3.1) and 80% in generating the initial conforming isosurface (chapter 4). Note that we require only the surface vertices to be faithful, not the edges (figure 3.1). We investigated enforcing faithfulness on edges as well but did 15 Chapter 3. Particle Surfacing not detect an improvement in surface quality that justified the added cost. 3.4.2 Solid-Liquid-Air Intersections Under gravity, fluids tend to rest heavily and uniformly against the bottom and sides of a container, or boundary. To ensure our algorithm generates a surface that does not cross boundaries we snap surface vertices outside the boundaries to the nearest point on the boundary after each solver iteration. The result is a fluid surface that aligns precisely with the container walls (see figure 3.3). If rendering the container and an opaque liquid, one may choose to move the liquid slightly further inwards to prevent rendering artifacts such as `Z- fighting' that might be caused when two surfaces are rendered at the same location (even if the normals point in opposite directions). This simple approach may be appropriate if the camera positioning won't unduly reveal the 'gap' (as in figure 3.4), although vertex manipulation of this kind may result in non-manifold surfaces (section 3.9). Figure 3.3: Handling fluid-boundary intersections. (Left) The initial mesh may violate boundary conditions such as an enclosing square dish. (Right) By snapping each violating surface vertex to the nearest boundary after creation of the initial mesh and each smoothing step our final mesh conforms to the boundary exactly. 16 Chapter 3. Particle Surfacing Figure 3.4: Surfacing with a complex boundary. The clay dish was en- coded as a level set using geometric boolean operations on a plane, sphere and cylinder. During surfacing the level set representation provided inside- outside tests which were combined with distance-to-primitive measurements to prevent the final fluid surface from penetrating the dish. For transparent liquids, and to better support arbitrary camera posi- tions, a more accurate rendering can be achieved by explicitly identifying the surfaces representing each of the three surface pairs (fluid-air, fluid- boundary and boundary-air) and rendering each pair individually. This approach was used to render the fish tank in figure 3.5 in which the correct dielectric ratio [46] was applied to each surface pair. To isolate the surface pairs we first consider the fluid-air surface, which is easily obtained by intersecting the surface mesh with four inward-facing planes coincident with the inner sides of the tank (see (16] for the relevant triangle-plane intersection test) and accepting all fragments on the inside of all four planes. To obtain the fluid-boundary surface we intersect the mesh with each plane in turn and collect the resulting linear fragments into closed curves outlining the location of the fluid as it lies against the tank 17 Chapter 3. Particle Surfacing Figure 3.5: (Left) Isolation of fluid-air-boundary surface pairs. Through intersection and triangulation procedures the fluid-air, fluid-boundary and boundary-air surfaces were isolated, allowing interface-specific rendering pa- rameters such as dielectric ratios to be applied to each surface pair. (Right) Another rendering of a transparent fluid surfaced using our algorithm. wall. We triangulate these curves about an interior point [50] to obtain the boundary-fluid surface. We triangulate about an exterior point in a domain bounded by the inner tank wall to obtain the boundary-air surface. Identifying surface-pairs for non-planar boundaries would follow the same procedure but substitute triangulation with, for example, NURBS 2 trim- ming. 3.5 Gauss-Seidel Solver We used a sparse implementation of the Gauss-Seidel iterative solver to condition and smooth our surface mesh. The (nonlinear) constraints could not be encoded directly into the problem statement so we enforced them explicitly on the surface mesh after each step of the solver. 'Non-Uniform Rational B-Spline 18 Chapter 3. Particle Surfacing 3.6 Barzilai-Borwein Solver As a potentially faster alternative to Gauss-Seidel we investigated the inter- esting Barzilai-Borwein solver [3] and implemented several variations includ- ing Cyclic Barzilai-Borwein [13, 22], Preconditioned BB [40] and Alternating Step [12]. We found the BB variants to be at least competitive with Gauss-Seidel in generic convergence tests. However, the distinguishing characteristic of the Barzilai-Borwein family of techniques is their nonnionotonic behaviour [9, 25]. Numerical experiments by Fletcher [21] indicate the range of step lengths can vary in magnitude by as much as 10 5 , a fact noted as \"dis- concerting\" (see figure 3.6). When applied to our surfacing algorithm the occasionally large step lengths of these solvers caused our surface vertices to temporarily move close to distant particles, which then 'captured' them by virtue of the constraints and thereby destroyed the manifold property of the mesh. The highly nonlinear nature of our constraints unfortunately seems to mandate the use of a slow-and-steady iterative solver such as Gauss-Seidel. See also the discussion on damping in section 3.8. 3.7 Radii We have not described how rinner and router are actually determined rtnner is typically set to the radius used in the fluid simulation (e.g. SPH, PIC, FLIP) or the average inter-particle spacing where the simulation method does not support an explicit radii (e.g. some procedural and ad-hoc methods). router must be chosen large enough to fill air pockets in fluid, but no so large that 19 Chapter 3. Particle Surfacing 0.015 = 0 01 a) E 0 0. E 0005 5 ^ 10^15^20^25 Iteration Figure 3.6: A comparison of step lengths for Jacobi (red), Gauss-Seidel (green) and Barzilai-Borwein (blue) in a generic convergence test. Although Barzilai-Borwein is seen to converge faster, the tremendous range of observed step lengths prevented us from effectively enforcing our constraints with the BB solver. Image from [56]. it obscures surface detail. By default we strike a balance at router =-- 2 rinner. An important drawback to existing local approaches such as Zhu et al. [60] and Adams et al. [1] is the inability to generate very flat surfaces. These are especially important for still and slow-moving liquids. We point out that given any r inner and considering surfacing particles arranged on square grid of size d our algorithm will construct a planar surface if the following condition on router is met router 2^rinner 2^2d2 (3.5) This follows setting the intersection forming the 'spikes' at the outer sur- face to the inner radius, thereby allowing a planar surface to lie between each. The finding is illustrated in figure 3.7 which depicts the inner and out oo 20 Chapter 3. Particle Surfacing spheres when the difference in equation (3.5) is some small \u20ac. Similarly for a triangular grid where the distance between neighours is d we require only d22^2 3 +router >^r inner (3.6) We contrast this result with Adams et al. [1] where a perfectly flat surface is only reachable in the limit as the particle density becomes infinite. Figure 3.7: The r inner particle-centered spheres (green) are just visible at the point where the router particle-centered spheres touch all neighbouring router spheres under the condition that router =- \u2014 rtnner, when the particles are arranged in a square lattice. When router > d2 2T r inner a surface constructed with our algorithm will be planar as desired. 3.8 Algorithm We now have all the pieces in place (objective functions, constraints and solver) to describe our full algorithm. As in any optimization problem the first step is determining an initial guess that satisfies the constraints. We use Marching Tiles (chapter 4) to generate compliant surface meshes with good valences that allow for im- proved smoothing, although any isosurfacing algorithm will do. 21 Chapter 3. Particle Surfacing We select the router isosurface as our initial guess, as opposed to, for example, ruiner or 2 (Winner + router) as the final surface was often found to be closer to router than rinner. Also, the surface at ruiner frequently contains deep ingresses which demand a prohibitive amount of smoothing to work the surface up to a point where all the constraints come into effect. These cavities also create clusters of unnecessarily close vertices in the final mesh (which smooths them over). These problems cannot appear at the r outer isosurface as the surface is stretched uniformly over the r im, spheres as the smoothing progresses. Furthermore, we observe that vertices created at Touter already lie within roughly r outer \u2014 runner of their final location, so significant localized clustering does not occur. When surfacing, we select a tile size that results in an average inter- sample distance of h .8rmner\u2022 We observe that fewer samples do not allow the resulting surface to be smoothed in areas of high curvature and additional samples produce unnecessary tessellation that slows down the smoothing process. Further tessellation, if desired, is better performed later on using subdivision. We perform a preliminary normalization of triangle areas on the sam- pled mesh by running five steps of Gauss-Seidel using xTAx with constraints enabled as described in section 3.4. This ensures that each vertex has no de- generate triangles that would lead to a near-undefined B (which divides by the sum of areas of adjoining triangles in its construction, see section 3.3). We use an under-relaxation parameter of 0.5 during the normalization stage to reduce the possibility of creating degenerate triangles which would oth- erwise destroy the manifold property of the mesh. 22 Chapter 3. Particle Surfacing Next we smooth the mesh with 25 steps of Gauss-Seidel with xTBx and constraints enabled. A finishing polish is then applied through five additional iterations with xTBx without constraints. We observe that the final polish improves the smoothness of the surface normals without altering the location of the surface significantly, and is very inexpensive to perform. The iteration counts were selected, after limited experimentation, for giving consistently good results, although they may of course be tweaked for a desired quality\/cost trade-off. More sophisticated convergence criteria are unnecessary due to the selection of the router isosurface initial condition, which permits roughly the same amount of high-frequency 'noise' regardless of the particle distribution, thereby requiring roughly the same number of Gauss-Seidel iterations. Finally we provide for an optional post-smoothing surface erosion to tighten and sharpen mesh features. 3.9 Surface Erosion Just as Eulerian approaches are limited in the dimensions of the rendered features to the grid cell size, our algorithm supports flat contiguous struc- tures only to a minimum thickness of rinner. Reducing rinner to support thinner structures necessitates simulating additional particles in order to maintain surface continuity. Furthermore, if router >> rinner a considerable number of Gauss-Seidel iterations may be required for the initial surface at router to 'find' all the relevant rinner particle constraints. We therefore support surface erosion as an optional final step, which 23 Chapter 3. Particle Surfacing generates very thin structures without simulating very large numbers of particles or requiring excessive smoothing. Surface erosion is the process of stepping all the surface vertices back along the negative surface normal by 6T jnner for some small 0 < 8 << 1 (see figure 3.8). Note that while this technique is both fast and easy to implement, there is a risk of creating degenerate triangles in the final mesh which may in turn cause rendering artifacts. Furthermore, features with diameter less than 8 will actually be thickened by the erosion. These problems can be overcome by detecting tri- angle intersections across imaginary time (0, 8] and reducing 8 and iterating as required. It is interesting to contrast our surface thinning with the deliberate thick- ening stage intended to prevent mass loss of Chentznez et al. [10]. Figure 3.8: (Left) Surface mesh without erosion. (Right) Surface mesh with erosion where 8 = 2 rinner\u2022 While features are thinned and sharpened as desired the resulting mesh is in general no longer manifold without additional processing. 24 Chapter 4 Marching Tiles Isosurfacing is the process of extracting a surface of constant value from a regular scalar field. The classic approach to isosurfacing is Marching Cubes (MC [36]). 4.1 Marching Cubes Classic MC operates by considering each composite cubical volume of the field in turn and categorizing each according to whether the values at each of the eight corners are above or below (and therefore lie outside or inside) the isosurface value. There are therefore 2 8 possible configurations for each cube, reducible to 15 by taking advantage of rotational and reflective symme- tries. Each of the 15 cases is assigned a particular configuration of triangles representing the interpolating surface (figure 4.1). The triangle vertices are linearly interpolated between values at the corners. The isosurface is simply the union of all such triangles. As pointed out by Durst [15], MC can produce non-manifold surfaces due to ambiguities introduced by assigning fixed surface configurations. Conse- quently there are variations that break the cubical cells into tetrahedra [42], consider each face of the cube in turn [30], superimpose cubes in a body- 25 Chapter 4. Marching Tiles Figure 4.1: Several Marching Cubes cell configurations [36]. centered cubic (BCC) lattice [8, 33], or consider the dual of MC [44]. How- ever, an essentially cubical lattice is common to each of these approaches, and consequently each incorporate directly or indirectly composite tetra- hedra with dihedral angles greater or equal to 90\u00b0. This allows for the possibility of valences as low as four, which, as seen in figure 4.2, can be substantial in number. 2000 1000 0 4 5 6 7 8 Aff;:\u2022'^ -4\".^\u2022 S. \u2022 \u2022^\u2022 \u2022\u2022:kt; r^rt ( .^ ' 2000 1 000 0 4 5 6 7 8 Figure 4.2: Marching Tiles valence histogram comparison. (Top) The front and back of a sphere tessellated with Marching Cubes along with the asso- ciated valence histogram. Vertices with neighbor counts outside the range [5, 6, 7] are shaded lighter. (Bottom) Our solution, with the majority of the vertices having the ideal valence of six, and none below five. 26 Chapter 4. Marching Tiles For many purposes, valence four vertices represent a poor sampling of the surface at that vertex. In our surfacing algorithm, valence four nodes are seen to oscillate during smoothing with our weighted Bilaplacian from equation (3.2) and often form unwanted pockmarks in the final surface. Valence four vertices also cause smoothness problems for many subdivision schemes, and hinder convergence for FEM and related methods. 4.2 Marching Tiles Our secondary contribution is a generalization of Marching Cubes to arbi- trary space-filling tiles, and one tile in particular that ensures a minimum valence of five and is amenable to spatial hashing. The resulting isosurfacing algorithm provides a better minimum sampling of the surface than Marching Cubes, resulting in better behaved numerical operators such as smoothing. To generalize Marching Cubes we must first identify non-cubical space-filling tiles. Space-filling tiles have been investigated in the context of minimal sur- face energy configurations in physical phenomena such as foam and crys- tals [52]. For any given tile, valence four vertices occur only when the isosurface crosses an edge incident on four tetrahedra. Valence four vertices can therefore be eliminated by requiring that at least five tetrahedra are incident on every edge. This is the case when all tetrahedra have acute (less than 90\u00b0) dihedral angles, as at least five tetrahedra must therefore share every edge. OngOr [55] recently investigated tilings with acute tetrahedra. There are 27 Chapter 4. Marching Tiles at least several infinite sets of such tiles [24] including tetrahedrally close- packed (TCP) cells so-named because the surface of the Voronoi cell of each consists of only pentagonal and hexagonal faces [52]. One of the four basic TCP cells is designated A15 and happens to encode the atomic structure of Chromium Silicide (Cr 3 Si). We selected A15 for use with our Marching Tiles algorithm as it involves only integral values in its construction. How- ever as A15 is somewhat irregular we shuffled around tetrahedra to arrive at a modified roughly cubical A15 that is more amenable to (regular) spa- tial hashes and as well reduces the size of the enclosing domain (therefore requiring fewer covering tiles). The final modified tile is shown in figure 4.3. Numerical values for this tile may be found in appendix A. Figure 4.3: The modified A15 space-filling tile used with Marching Tiles to construct an initial conforming mesh for the particle surfacing algorithm. 28 Chapter 4. Marching Tiles We note that the tile designated C15 has even lower minimum dihedral angles than A15. However we did not pursue this tiling as its construction is somewhat more complicated, and further valence five vertices do not present nearly as serious difficulties to our Bilaplacian smoothing as valence four ver- tices. However a tile based on C15 or some other tile with a lower maximum dihedral angle may provide significant additional benefit in conjunction with other numerical operators. One might ask if we can eliminate valence five vertices altogether. Un- fortunately this is not possible as the average valence for any manifold mesh is six (appendix B) and it is trivial to show a perfect valence-six graph does not exist in general. Once valence four vertices have been eliminated only incremental improvements to mesh valence distributions are possible. 29 Chapter 5 Results 5.1 Enright Deformation Test A problem common to all fluid representations is maintaining a continuous surface for thin sheets formed, for example, when water splashes against a smooth surface. Enright et al. [17] considered several such reference cases including a deformation commonly known as the Enright Test. The test deforms a sphere of radius .15 centered at (.35, .35, .35) under a velocity field defined by LeVeque [34] u(x ,y , z) = 2sin2 (rx)sin (27y) sin(27 z) v (x ,y , z) = \u2014sin(27x)sin 2 (71-y)sin(27z) ^(5.1) w(x, y, z) = \u2014sin(21-x)sin(271-y)sin2 (7z) The velocity is reversed at t = .5T, so the sphere should be exactly restored at time T. The difficulty in performing the test lies in maintaining a contin- uous surface as the sphere is flattened in the Z axis. The Eulerian approach must also use a high-order spatial discretization scheme to prevent the sphere deforming during the integration. Figure 5.1 shows several published level set results alongside results obtained using our surfacing algorithm. 30 Chapter 5. Results Figure 5.1: (Top Left) On a 100 3 grid plain level sets \"fail severely\" [17]. (Top Right) The PLS technique introduced in [17] better resolves the surface but does not maintain surface continuity. The top images also demonstrate the inability of the spatial discretization to accurately restore the sphere at time T. (Bottom Left) In [18] Enright et al. first demonstrated continu- ity using level sets by leveraging the additional sampling required by PLS and adaptive octree codes. (Bottom Right) Our surfacing algorithm demon- strates continuity with only the 100 3 samples used in the plain level set test (top left) and without using any complex numerical machinery. 31 Chapter 5. Results 5.2 Fluid Simulations We applied our surfacing algorithm to particle data from a number of actual fluid simulations generated with the FLIP codes of Zhu et al. [60]. The sequence in figure 5.2 shows an early rendering demonstrating flat and smooth surfaces. The simulation required one million particles and was surfaced on a grid equivalent in size to 3333 . The sequence in figure 5.3 shows an oily jet of fluid undergoing complex topological changes and required at most 480,000 particles per frame and a 110 3 grid for surfacing. See [58] for further details on how these images were generated. Although our algorithm renders all isolated particles as identical spheres we did not find the sameness to be distracting as long as the particle res- olution was relatively high (,__, 50K particles). A physically-based drop os- cillation model similar to that used in [23] might be usefully employed to further the realism of the dynamics of fluid spray. All code was developed and run on a multi-core Intel\u00ae processor includ- ing fluid simulations and rendering. Images were created using NVIDIA\u00ae Gelato\u00ae, a Python\/C programmable GPU-accelerated off-line renderer. Surfacing was performed on up to four frames in parallel. Our fluid surfacing algorithm has been incorporated into Double Nega- tive's production fluid simulator SQUIRT and applied to shots in 10,000 B.C. (figure 5.4), HELLBOY II (figure 5.5) and other feature films currently in de- velopment. The ability to surface frames in parallel permitted a drop in turn-around time from hours to minutes compared to off-the-shelf surfacing codes. 32 Chapter 5. Results Figure 5.2: Sequence from a test fluid simulation. The top left image shows a flat initial surface unobtainable using previous approaches. Note the thin sheets of fluid generated by the initial splash and varied topologies as the liquid transitions from sheets to tendrils to droplets. 33 Chapter 5. Results Figure 5.3: A viscous oily fluid spilling from a tube. 34 Chapter 5. Results Figure 5.4: Scenes from 10,000 B.C. incorporating fluid surfaced using our algorithm. \u00a9 Warner Bros. 35 44 .\u0300'4\u25a0\u25a0i' Chapter 5. Results Figure 5.5: Scenes from HELLBOY II incorporating fluid surfaced using our algorithm. \u00a9 Universal Studios 36 Chapter 6 Conclusion A new algorithm for surfacing particle fields was presented. The surface generated is, by design, globally smooth and strictly adheres to the particle locations, properties lacking in existing approaches. Our algorithm is treats recent advances in mesh smoothing within the context of a iterative solver, permitting trade-off between processing time and final surface quality. Our fluid surfacing algorithm generates isosurfaces with Marching Tiles, which produces meshes with superior valence distributions over those of Marching Cubes and derivatives. By substituting the cubical lattice with a general space-filling tile consisting of tetrahedrons with acute dihedral angles we are able to guarantee that at least five tetrahedrons share every edge of our tile. The resulting surface vertices have a minimum valence of five which permits an improved worst-case sampling of the underlying surface, and consequently better-behaved numerical operators such as the Bilaplacian. 6.1 Future Work The problem of temporal coherence might usefully be addressed by replacing surface meshes with level sets. This could be accomplished by discretizing 37 Chapter 6. Conclusion equations (3.2) using finite differences, for example, and boosting our surface constraint equation (3.4) across 0(x, y, z) d(x, y, z) \u2014 router 5 0(x, y, z) d(x, y, z) \u2014 rinner (6.1) Level sets might also offer a way forward in obtaining a time-independent surface parameterization to better support texture-based surface detail such as foam and floating particulates [49]. Marching Tiles could be further improved by refining the tile employed. We selected A15 over other tiles with acute dihedral angle tetrahedral de- compositions primarily for the simplicity of working with only integral val- ues in its construction. However an alternative might without additional runtime cost reduce the average number of valence five vertices, thereby im- proving (if incrementally) the performance of applied numerical operators. The primary costs for our algorithm lie in initial surfacing (80%), and to a lesser extent, constraint enforcement (10%). Both costs might be re- duced using the spatial acceleration structures described in Rosenberg and Birdwell [48]. 38 Bibliography [1] Bart Adams, Mark Pauly, Richard Keiser, and Leonidas J. Guibas. Adaptively sampled particle fluids. ACM Trans. Graph., 26(3):48, 2007. [2] Adam W. Bargteil, Chris Wojtan, Jessica K. Hodgins, and Greg Turk. A finite element method for animating large viscoplastic flow. In SIG- GRAPH '07: ACM SIGGRAPH 2007 papers, page 16. ACM, 2007. [3] Jonathan Barzilai and Jonathan M. Borwein. Two-point step size gradi- ent methods. IMA Journal of Numerical Analysis, 8(1):141-448, 1988. [4] James F. Blinn. A generalization of algebraic surface drawing. ACM Trans. Graph., 1(3):235-256, 1982. [5] Robert Bridson. Fluid Simulation. AK Peters, 2008. [6] Robert Bridson, Jim Houriham, and Marcus Nordenstam. Curl-noise for procedural fluid flow. ACM Trans. Graph., 26(3):46, 2007. [7] Robert Bridson and Matthias Miiller-Fischer. Fluid simulation course notes. In ACM SIGGRAPH 2007 Courses, pages 1-81, 2007. [8] Hamish Carr, Thomas TheuI31, and Torsten M011er. Modified march- ing octahedra for optimal regular meshes. In SIGGRAPH '02: ACM 39 Bibliography SIGGRAPH 2002 conference abstracts and applications, pages 219-219. ACM, 2002. [9] R.M. Chamberlain, M.J.D. Powell, C. Lemarechal, and H.C. Peder- sen. The watchdog technique for forcing convergence in algorithms for constrained optimization. Math. Program., 24:113-116, 1982. [10] N. Chentanez, B. Feldman, F. Labelle, J. O'Brien, and J. Shewchuk. Liquid simulation on lattice-based tetrahedral meshes. In ACM SIGGRAPH\/Eurographics 2007 Symposium on Computer Animation, pages 219-228, 2007. [11] David L. Chopp. Computing minimal surfaces via level set curvature flow. J. Comput. Phys., 106(1):77-91, 1993. [12] Yu-Hong Dai. Alternate step gradient method. Optimization, 52(4- 5):395-415, 2003. [13] Yu Hong Dai, Williams W. Hager, Klaus Schittkowski, and Hongchao Zhang. The cyclic Barzilai-Borwein method for unconstrained optimiza- tion. IMA Journal of Numerical Analysis, 26(3):604-627, July 2006. [14] M. Desbrun, M. Meyer, P. Schriider, and A. Barr. Implicit fairing of irregular meshes using diffusion and curvature flow. In SIGGRAPH '99: Proceedings of the 26th annual conference on Computer graphics and interactive techniques, pages 317-324, 1999. [15] M. J. Diirst. Additional reference to \"marching cubes\" (letters). Com- put. Graph, 22(4):72-73, 1988. 40 Bibliography [16] D. Eberly. 3D Game Engine Design. Morgan Kaufmann, second edi- tion, 2007. [17] D. Enright, R. Fedkiw, J. Ferziger, and I. Mitchell. A hybrid particle level set method for improved interface capturing. J. Comp. Phys., 183:83-116, 2002. [18] D. Enright, F. Losasso, and R. Fedkiw. A fast and accurate semi- lagrangian particle level set method. Computers and Structures, 83:479- 490, 2005. [19] D. Enright, S. Marschner, and R. Fedkiw. Animation and rendering of complex water surfaces. ACM Trans. Graph. (Proc. SIGGRAPH), 21(3):736-744, 2002. [20] R. Fedkiw, J. Stam, and H. W. Jensen. Visual simulation of smoke. In Proc. ACM SIGGRAPH. Association of Computing Machinery, 2001. [21] R. Fletcher. On the Barzilai-Borwein method. Technical report, De- partment of Mathematics, University of Dundee, 2001. [22] A. Friedlander, J. M. Martinez, B. Molina, and M. Raydan. Gradient method with retards and generalizations. SIAM Journal on Numerical Analysis, 36(1):275-289, 1999. [23] Kshitiz Garg and Shree K. Nayar. Photorealistic rendering of rain streaks. ACM Trans. Graph., 25(3):996-1002, 2006. [24] M. Goldberg. Three infinite families of tetrahedral space-fillers. J. Corn- bin. Theory, 16:348-354, 1974. 41 Bibliography [25] L. Grippo, F. Lampariello, and S. Lucidi. A nonmonotone line search technique for Newton's method. SIAM Journal on Numerical Analysis, 23(4):707-716, 1986. [26] F. Harlow and J. Welch. Numerical calculation of time-dependent vis- cous incompressible flow of fluid with free surface. Phys. Fluids, 8:2182- 2189, 1965. [27] A Harten and S Osher. Uniformly high-order accurate nonoscillatory schemes. SIAM Journal on Numerical Analysis, 24(2):279-309, 1987. [28] A. Harten, S. Osher, B. Engquist, and S. R. Chakravarthy. Some results on uniformly high-order accurate essentially nonoscillatory schemes. Appl. Numer. Math., 2(3-5):347-378, 1986. [29] Michael T. Heath. Scientific Computing: An Introductory Survey. McGraw-Hill, second edition, 2002. [30] Chien-Chang Ho, Fu-Che Wu, Bing-Yu Chen, Yung-Yu Chuang, and Ming Ouhyoung. Cubical marching squares: adaptive feature preserv- ing surface extraction from volume data. In Proceedings of Eurographics 2005, volume 24, pages 537-545. Eurographics, 2005. [31] W. Hong, D. House, and J. Keyser. Adaptive particles for incompress- ible fluid simulation. Technical report, Texas A&M Computer Science, 2007. [32] Guang-Shan Jiang and Chi-Wang Shu. Efficient implementation of weighted ENO schemes. J. Comput. Phys., 126(1):202-228, 1996. 42 Bibliography [33] Thomas Theuf3l, Torsten M011er, and Meister Eduard GrOiler. Optimal regular volume sampling. In VIS '01: Proceedings of the conference on Visualization '01, pages 91-98. IEEE Computer Society, 2001. [34] R. LeVeque. High-resolution conservative algorithms for advection in incompressible flow. SIAM J. Num. Anal., 33:627-665, 1996. [35] S. Liu and T. Chan. Weighted essentially non-oscillatory schemes. J. Comput. Phys., 115:200-212, 1994. [36] William E. Lorensen and Harvey E. Cline. Marching cubes: a high res- olution 3D surface construction algorithm. In Proc. ACM SIGGRAPH, volume 21, pages 163-169, 1987. [37] F. Losasso, J. Talton, N. Kwatra, and R. Fedkiw. Two-way coupled SPH and particle level set fluid simulation. IEEE TVCG, 2008 (in print). [38] Frank Losasso, Frederic Gibou, and Ron Fedkiw. Simulating water and smoke with an octree data structure. In SIGGRAPH '04: ACM SIGGRAPH 2004 Papers, pages 457-462, New York, NY, USA, 2004. Association of Computing Machinery, ACM Press. [39] Frank Losasso, Tamar Shinar, Andrew Selle, and Ron Fedkiw. Multiple interacting liquids. ACM Trans. Graph., 25(3):812-819, 2006. [40] Brigida Molina and Marcos Raydan. Preconditioned Barzilai-Borwein method for the numerical solution of partial differential equations. Jour- nal of Numerical Algorithms, 13(1):45-60, 1996. 43 Bibliography [41] J. J. Monaghan. Smoothed particle hydrodynamics. Annu. Rev. Astron. Astrophys., 30:543-574, 1992. [42] Heinrich Miiller and Michael Wehle. Visualization of implicit surfaces using adaptive tetrahedrizations. In DAGSTUHL '97: Proceedings of the Conference on Scientific Visualization, page 243. IEEE, IEEE Com- puter Society, 1997. [43] Matthias Muller, David Charypar, and Markus Gross. Particle- based fluid simulation for interactive applications. In Proc. ACM SIGGRAPH\/Eurographics Symposium on Computer Animation, pages 154-159, 2003. [44] Gregory M. Nielson. Dual marching cubes. In VIS '04: Proceedings of the conference on Visualization '04, pages 489-496. IEEE Visualization, 2004. [45] Stanley Osher and Ron Fedkiw. Level Set Methods and Dynamic Im- plicit Surfaces. Springer, 2003. [46] Matt Pharr and Greg Humphreys. Physically Based Rendering. Else- vier, 2004. [47] S. PremoZ\"e, T. Tasdizen, J. Bigler, A. Lefohn, and R. Whitaker. Par- ticle based simulation of fluids. Computer Graphics Forum, 22(3):401- 410, 2003. 44 Bibliography [48] Ilya D. Rosenberg and Ken Birdwell. Real-time particle isosurface ex- traction. In SI3D '08: Proceedings of the 2008 symposium on Interactive 3D graphics and games, pages 35-43. ACM, 2008. [49] Chen Shen and Apurva Shah. Extracting and parametrizing temporally coherent surfaces from particles. In ACM SIGGRAPH '07 Sketches, page 66, 2007. [50] Jonathan Richard Shewchuk. Triangle: Engineering a 2D Quality Mesh Generator and Delaunay Triangulator. In Ming C. Lin and Dinesh Manocha, editors, Applied Computational Geometry: Towards Geo- metric Engineering, volume 1148 of Lecture Notes in Computer Sci- ence, pages 203-222. Springer-Verlag, May 1996. From the First ACM Workshop on Applied Computational Geometry. [51] H. Si. TetGen, a quality tetrahedral mesh generator and three- dimensional delaunay triangulator, v1.3, user's manual. Technical Re- port 9, Weierstrass Institute for Applied Analysis and Stochastics, 2004. [52] J. M. Sullivan. The geometry of bubbles and foams. In Proc. NATO Advanced Study Institute on Foams, Emulsions and Cellular Materials, pages 379-402. Kluwer Academic Publishers, 1998. [53] Gabriel Taubin. A signal processing approach to fair surface design. In Proc. ACM SIGGRAPH, pages 351-358, 1995. [54] Nils Thiirey and Ulrich Rude. Optimized free surface fluids on adaptive grids with the Lattice Boltzmann method. In SIGGRAPH '05: ACM SIGGRAPH 2005 Posters, page 112. ACM, 2005. 45 Bibliography [55] Alper tingOr. Tiling 3D euclidean space with acute tetrahedra. In Proc. 13th Canadian Conference on Computational Geometry (CCCG'01), pages 169-172, 2001. [56] B. Williams The CBB method for unconstrained optimization. Tech- nical report, Univ. of British Columbia Dept. of Comp. Sci., 2007. [57] B. Williams Particle level set method: implementation and results. Technical report, Univ. of British Columbia Dept. of Comp. Sci., 2007. [58] B. Williams, R. Bridson, and M. Nordenstam. Smooth surface re- construction from particles. In Proceedings of SIGGRAPH '08: ACM SIGGRAPH 2008 Papers. Association of Computing Machinery, ACM Press, 2008. To appear. [59] Cem Yuksel, Donald H. House, and John Keyser. Wave particles. ACM Trans. Graph., 26(3):99, 2007. [60] Yongning Zhu and Robert Bridson. Animating sand as a fluid. ACM Trans. Graph. (Proc. SIGGRAPH), 24(3):965-972, 2005. [61] M. Zwicker, H. Pfister, J. van Baar, and M. Gross. Surface splatting. In Proc. ACM SIGGRAPH, pages 371-378, 2001. 46 Appendix A Modified A15 Tile Following Ungi5r [55] we construct tile A15 by first covering the XY plane with a 4x4 grid as shown in figure A.1. Figure A.1: Structure of the A15 tile in the XY plane We define additional red vertices along the Z axis every 2k \u2014 1 units, additional blue vertices every 4k \u2014 1 units and additional green vertices every 4k +1 units for all k E Z. Next perform a Delaunay triangulation [51] on the point-set and identify and extract the resulting repeated tile. As shown in figure A.2 we shuffle the tetrahedra so the final tile is roughly cubical. The modified A15 tile contains 27 vertices: 47 Appendix A. Modified A15 Tile Figure A.2: The A15 variant from several viewpoints 0: (1,0,0) 7: (0,2,1) 14: (2,5,2) 21: (0,0,2) 1: (2,2,0) 8: (0,2,3) 15: (4,2,1) 22: (5,0,4) 2: (1,4,0) 9: (2,2,4) 16: (4,2,3) 23: (4,0,2) 3: (3,4,0) 10: (1,4,4) 17: (5,4,4) 24: (3,0,0) 4: (1,0,4) 11: (3,4,4) 18: (4,4,2) 25: (5,0,0) 5: (3,0,4) 12: (0,4,2) 19: (0,2,5) 26: (5,4,0) 6: (2,1,2) 13: (2,3,2) 20: (4,2,5) The vertices are connected with 46 tetrahedra: 0: (2,3,14,13) 12: (8,6,4,21) 24: (8,13,6,7) 36: (13,8,6,9) 1: (2,14,12,13) 13: (7,6,8,21) 25: (8,13,10,9) 37: (10,8,9,19) 2: (5,20,16,9) 14: (13,11,16,18) 26: (1,7,0,6) 38: (6,8,4,9) 3: (5,16,22,23) 15: (11,20,9,16) 27: (13,7,1,6) 39: (16,5,22,20) 4: (11,13,16,9) 16: (13,8,12,7) 28: (11,14,18,13) 40: (5,6,4,9) 5: (0,24,1,6) 17: (7,2,13,1) 29: (18,26,15,3) 41: (14,11,10,13) 6: (20,11,17,16) 18: (13,16,15,18) 30: (16,11,17,18) 42: (15,13,1,6) 7: (3,13,15,18) 19: (16,13,6,9) 31: (13,8,10,12) 43: (6,16,23,15) 8: (3,14,13,18) 20: (15,6,24,23) 32: (13,11,10,9) 44: (25,23,15,24) 9: (13,15,1,3) 21: (16,5,6,23) 33: (2,7,13,12) 45: (13,15,16,6) 10: (0,6,7,21) 22: (10,14,13,12) 34: (5,16,6,9) 11: (6,15,24,1) 23: (3,2,1,13) 35: (4,8,19,9) 48 Appendix B Average Mesh Valence The average valence in a mesh can be shown to be six using the Euler- Poincar6 formula: v+ f \u2014 e = 2(c \u2014 g) \u2014 b where v = #vertices f = #faces e = #edges c = #connected components g = genus b = #boundaries In a closed manifold mesh f = 2e\/3 49 Appendix B. Average Mesh Valence Therefore from which we can isolate The required value is v + 2e\/3 \u2014 e = 2 \u2014 2g e = 3(v \u2014 2 + 2g) f = 2(v \u2014 2 + 2g) average(degree) = 2e\/v 6(v \u2014 2 + 2g)_ ^ v where 6(v \u2014 2 + 2g) lim^= 6 V-400 V 50","attrs":{"lang":"en","ns":"http:\/\/www.w3.org\/2009\/08\/skos-reference\/skos.html#note","classmap":"oc:AnnotationContainer"},"iri":"http:\/\/www.w3.org\/2009\/08\/skos-reference\/skos.html#note","explain":"Simple Knowledge Organisation System; Notes are used to provide information relating to SKOS concepts. There is no restriction on the nature of this information, e.g., it could be plain text, hypertext, or an image; it could be a definition, information about the scope of a concept, editorial information, or any other type of information."}],"Genre":[{"label":"Genre","value":"Thesis\/Dissertation","attrs":{"lang":"en","ns":"http:\/\/www.europeana.eu\/schemas\/edm\/hasType","classmap":"dpla:SourceResource","property":"edm:hasType"},"iri":"http:\/\/www.europeana.eu\/schemas\/edm\/hasType","explain":"A Europeana Data Model Property; This property relates a resource with the concepts it belongs to in a suitable type system such as MIME or any thesaurus that captures categories of objects in a given field. It does NOT capture aboutness"}],"GraduationDate":[{"label":"GraduationDate","value":"2008-05","attrs":{"lang":"en","ns":"http:\/\/vivoweb.org\/ontology\/core#dateIssued","classmap":"vivo:DateTimeValue","property":"vivo:dateIssued"},"iri":"http:\/\/vivoweb.org\/ontology\/core#dateIssued","explain":"VIVO-ISF Ontology V1.6 Property; Date Optional Time Value, DateTime+Timezone Preferred "}],"IsShownAt":[{"label":"IsShownAt","value":"10.14288\/1.0051410","attrs":{"lang":"en","ns":"http:\/\/www.europeana.eu\/schemas\/edm\/isShownAt","classmap":"edm:WebResource","property":"edm:isShownAt"},"iri":"http:\/\/www.europeana.eu\/schemas\/edm\/isShownAt","explain":"A Europeana Data Model Property; An unambiguous URL reference to the digital object on the provider\u2019s website in its full information context."}],"Language":[{"label":"Language","value":"eng","attrs":{"lang":"en","ns":"http:\/\/purl.org\/dc\/terms\/language","classmap":"dpla:SourceResource","property":"dcterms:language"},"iri":"http:\/\/purl.org\/dc\/terms\/language","explain":"A Dublin Core Terms Property; A language of the resource.; Recommended best practice is to use a controlled vocabulary such as RFC 4646 [RFC4646]."}],"Program":[{"label":"Program","value":"Computer Science","attrs":{"lang":"en","ns":"https:\/\/open.library.ubc.ca\/terms#degreeDiscipline","classmap":"oc:ThesisDescription","property":"oc:degreeDiscipline"},"iri":"https:\/\/open.library.ubc.ca\/terms#degreeDiscipline","explain":"UBC Open Collections Metadata Components; Local Field; Indicates the program for which the degree was granted."}],"Provider":[{"label":"Provider","value":"Vancouver : University of British Columbia Library","attrs":{"lang":"en","ns":"http:\/\/www.europeana.eu\/schemas\/edm\/provider","classmap":"ore:Aggregation","property":"edm:provider"},"iri":"http:\/\/www.europeana.eu\/schemas\/edm\/provider","explain":"A Europeana Data Model Property; The name or identifier of the organization who delivers data directly to an aggregation service (e.g. Europeana)"}],"Publisher":[{"label":"Publisher","value":"University of British Columbia","attrs":{"lang":"en","ns":"http:\/\/purl.org\/dc\/terms\/publisher","classmap":"dpla:SourceResource","property":"dcterms:publisher"},"iri":"http:\/\/purl.org\/dc\/terms\/publisher","explain":"A Dublin Core Terms Property; An entity responsible for making the resource available.; Examples of a Publisher include a person, an organization, or a service."}],"Rights":[{"label":"Rights","value":"Attribution-NonCommercial-NoDerivatives 4.0 International","attrs":{"lang":"en","ns":"http:\/\/purl.org\/dc\/terms\/rights","classmap":"edm:WebResource","property":"dcterms:rights"},"iri":"http:\/\/purl.org\/dc\/terms\/rights","explain":"A Dublin Core Terms Property; Information about rights held in and over the resource.; Typically, rights information includes a statement about various property rights associated with the resource, including intellectual property rights."}],"RightsURI":[{"label":"RightsURI","value":"http:\/\/creativecommons.org\/licenses\/by-nc-nd\/4.0\/","attrs":{"lang":"en","ns":"https:\/\/open.library.ubc.ca\/terms#rightsURI","classmap":"oc:PublicationDescription","property":"oc:rightsURI"},"iri":"https:\/\/open.library.ubc.ca\/terms#rightsURI","explain":"UBC Open Collections Metadata Components; Local Field; Indicates the Creative Commons license url."}],"ScholarlyLevel":[{"label":"ScholarlyLevel","value":"Graduate","attrs":{"lang":"en","ns":"https:\/\/open.library.ubc.ca\/terms#scholarLevel","classmap":"oc:PublicationDescription","property":"oc:scholarLevel"},"iri":"https:\/\/open.library.ubc.ca\/terms#scholarLevel","explain":"UBC Open Collections Metadata Components; Local Field; Identifies the scholarly level of the author(s)\/creator(s)."}],"Subject":[{"label":"Subject","value":"Fluid","attrs":{"lang":"en","ns":"http:\/\/purl.org\/dc\/terms\/subject","classmap":"dpla:SourceResource","property":"dcterms:subject"},"iri":"http:\/\/purl.org\/dc\/terms\/subject","explain":"A Dublin Core Terms Property; The topic of the resource.; Typically, the subject will be represented using keywords, key phrases, or classification codes. Recommended best practice is to use a controlled vocabulary."},{"label":"Subject","value":"Physically-based animation","attrs":{"lang":"en","ns":"http:\/\/purl.org\/dc\/terms\/subject","classmap":"dpla:SourceResource","property":"dcterms:subject"},"iri":"http:\/\/purl.org\/dc\/terms\/subject","explain":"A Dublin Core Terms Property; The topic of the resource.; Typically, the subject will be represented using keywords, key phrases, or classification codes. Recommended best practice is to use a controlled vocabulary."},{"label":"Subject","value":"Volume rendering","attrs":{"lang":"en","ns":"http:\/\/purl.org\/dc\/terms\/subject","classmap":"dpla:SourceResource","property":"dcterms:subject"},"iri":"http:\/\/purl.org\/dc\/terms\/subject","explain":"A Dublin Core Terms Property; The topic of the resource.; Typically, the subject will be represented using keywords, key phrases, or classification codes. Recommended best practice is to use a controlled vocabulary."}],"Title":[{"label":"Title","value":"Fluid surface reconstruction from particles","attrs":{"lang":"en","ns":"http:\/\/purl.org\/dc\/terms\/title","classmap":"dpla:SourceResource","property":"dcterms:title"},"iri":"http:\/\/purl.org\/dc\/terms\/title","explain":"A Dublin Core Terms Property; The name given to the resource."}],"Type":[{"label":"Type","value":"Text","attrs":{"lang":"en","ns":"http:\/\/purl.org\/dc\/terms\/type","classmap":"dpla:SourceResource","property":"dcterms:type"},"iri":"http:\/\/purl.org\/dc\/terms\/type","explain":"A Dublin Core Terms Property; The nature or genre of the resource.; Recommended best practice is to use a controlled vocabulary such as the DCMI Type Vocabulary [DCMITYPE]. To describe the file format, physical medium, or dimensions of the resource, use the Format element."}],"URI":[{"label":"URI","value":"http:\/\/hdl.handle.net\/2429\/906","attrs":{"lang":"en","ns":"https:\/\/open.library.ubc.ca\/terms#identifierURI","classmap":"oc:PublicationDescription","property":"oc:identifierURI"},"iri":"https:\/\/open.library.ubc.ca\/terms#identifierURI","explain":"UBC Open Collections Metadata Components; Local Field; Indicates the handle for item record."}],"SortDate":[{"label":"Sort Date","value":"2008-12-31 AD","attrs":{"lang":"en","ns":"http:\/\/purl.org\/dc\/terms\/date","classmap":"oc:InternalResource","property":"dcterms:date"},"iri":"http:\/\/purl.org\/dc\/terms\/date","explain":"A Dublin Core Elements Property; A point or period of time associated with an event in the lifecycle of the resource.; Date may be used to express temporal information at any level of granularity. Recommended best practice is to use an encoding scheme, such as the W3CDTF profile of ISO 8601 [W3CDTF].; A point or period of time associated with an event in the lifecycle of the resource.; Date may be used to express temporal information at any level of granularity. Recommended best practice is to use an encoding scheme, such as the W3CDTF profile of ISO 8601 [W3CDTF]."}]}