Project Description CSE 788.14: Physically Based Instructor: Huamin Wang

1 Policies

The goal of this project is to put what you learned from the classroom into practice, and hopefully you will find these techniques useful in your future research. Specifically, you will implement a simulation technique described by one or a few papers. The project will contribute to 60 percent of your final grade and it is due on December 5th to 8th. It can be either an individual project, or a group of two. If you plan to work on a group project, the total load should be twice as the individual project and each of you should list your tasks in the final project report. You will give three short presentations on your project (8 mins each): • Proposal presentation (Mid October). This presentation should include the following con- tents: (1) a short video clip showing the real natural phenomena that you plan to animate; (2) several clips showing state-of-the-art animation results in this topic; (3) briefly description on papers or techniques you plan to use; (4) any technical difficulties; (5) the timeline. • Midterm presentation (early November). It should cover: (1) papers you have read and progress you have made; (2) any technical difficulties and you plan to solve them; (3) any early results you have achieved so far. • Final presentation (the end of the quarter). This presentation will summarize what you did for the project. It should contain (1) a summary on the problem you have solved; (2) your results and a comparison between your results and the results from the paper; (3) what improvements could be made to this work in the future. In addition, you should submit the source code, animation results, and a final project report to me by email after the final presentation. The project can be done together with any existing research project you are currently working on, as long as you can demonstrate sufficient additional work in simulation. You are free to discuss the project with others, however, if you are using others’ code, you must notify it in presentations and the project report.

2 Requirements and Tips

Depending on your project topic, the project result can either be a real-time simulation demo, or an offline simulated video. If it is a real-time demo, you may use either OpenGL or GPU shader

1 to do real-time rendering, and you must also provide some basic user interactions in simulation. Please check course demos as references1. If you decide to do offline simulation, you can output your simulation data from your simulator into a file sequence, and then load them into any rendering program for offline rendering, such as Maya, POV-Ray, or even your own renderer. Finally, you can use video software (such as virtualdub and Adobe Premiere) to make rendered images into a video.

3 Examples

A few possible individual projects are listed below for you to choose from. You are also free to choose other projects that are not provided in this list, with the equivalent amount of work.

3.1 Rigid Body collisions

When hundreds of rigid bodies fall at the same place, they will collide and stack upon each other (shown in Figure 1a). Rigid body simulation is not difficult, however, simulating their collisions and contacts needs some work. This project needs to implement: • Both vertex-face and edge-edge collision detection; • Collision Impulses when two bodies collide; • Resting contact, in order to avoid oscillation artifacts; • Bonus: At least one acceleration to speed up the simulation; Suggested papers: [2, 9]

3.2 Mass-Spring Cloth Simulator

Cloth can be animated by using a mass-spring system (Figure 1b). In this system, particles are connected by springs with some resting lengths and the simulation is an extension of the single particle case we discussed in class. Depending on your cloth mesh resolution, the simulation can either be real-time (typically less than 1K particles), or off-line. You will need to: • Use the implicit Euler method to formulate a linear system; • Solve the system using a matrix solver (such as the conjugate gradient method); • Detect collisions between cloth and rigid objects, and handle them as constraints; • Bonus: Detect and handle cloth-cloth collisions as well using the continuous approach [3] Suggested papers: [5, 3, 17]

1http://www.cse.ohio-state.edu/ whmin/courses/cse788-2011-fall/cse788-2011-fall.html

2 3.3 Elastic Body

By removing the rotational component out of the strain tensor, The co-rotational FEM method makes the Cauchy strain and the resulting implicit system more accurate. It is an efficient way to simulate elastic bodies. Figure 1c shows that a tube is bent using the co-rotational method. This project can also be made off-line if you will use high-resolution tetrahedral meshes. To implement this method, you need to: • Calculate strain and stress tensors over a tetrahedral mesh using the finite element method; • Remove the rotationa matrix, then formulate a linear system using the implicit method; • Solve the system using a matrix solver (such as the conjugate gradient method); • Bonus: User interactions and collisions Suggested papers: [13, 15] for basic FEM/FVM, [12, 8] for the co-rotational FEM.

3.4 2D Smoke

2D smoke animation can be simulated by solving the Navier-Stokes equations using the finite dif- ferencing method, as Figure 1d shows. In order to demonstrate the smoke effect, the grid resolution is suggested to be at least 100-by-100 and the simulation can be done offline. The following steps are required in order to implement such a simulator: • Calculate a set of velocity updates according to the Navier-Stokes equations; • Solve a matrix system to make the velocity field divergence free • Evolve the smoke density field over time • Bonus: Make it in 3D. Suggested papers: [14, 7]. For those who plan to work on 3D water simulation as a group project, you will need to implement the level set method, the marching cube method that maintains the signed distance function, and the marching cube method to obtain a surface mesh representation. Refer to [6] and their online course notes [4] for more details.

3.5 3D Smoothed Particle Hydrodynamics (SPH)

Water can also be simulated as particles in 3D. An example is shown in 1c (although you don’t have to implement an adaptive SPH algorithm). To implement the standard SPH technique, you need to: • build an acceleration scheme to efficiently find neighboring particles; • formulate particle dynamics based on SPH; • handle particle interactions with solid boundaries; • Bonus: Make it fast. Suggested papers: [11, 4].

3 References

[1] Bart Adams, Mark Pauly, Richard Keiser, and Leonidas J. Guibas. Adaptively sampled particle fluids. ACM Transactions on Graphics (SIGGRAPH 2007), 26, July 2007. [2] David Baraff. Physically based modeling: Siggraph 2001 course notes. In ACM SIGGRAPH 2001 Courses, SIGGRAPH 2001, 2001. [3] R. Bridson, S. Marino, and R. Fedkiw. Simulation of clothing with folds and wrinkles. In Proc. of the ACM SIGGRAPH/Eurographics symposium on Computer animation, pages 28–36, 2003. [4] Robert Bridson, Ronald Fedkiw, and Matthias Muller-Fischer. Fluid simulation: Siggraph 2006 course notes. In ACM SIGGRAPH 2006 Courses, SIGGRAPH 2006, pages 1–87, 2006. [5] Kwang-Jin Choi and Hyeong-Seok Ko. Stable but responsive cloth. ACM Transactions on Graphics (SIGGRAPH 2002), 21:604–611, July 2002. [6] Douglas Enright, Stephen Marschner, and Ronald Fedkiw. Animation and rendering of complex water surfaces. ACM Transactions on Graphics (SIGGRAPH 2002), 21:736–744, July 2002. [7] Ronald Fedkiw, Jos Stam, and Henrik Wann Jensen. Visual simulation of smoke. In Pro- ceedings of the 28th annual conference on and interactive techniques, ACM Transactions on Graphics (SIGGRAPH 2001), pages 15–22, 2001. [8] Joachim Georgii and Rdiger Westermann. Corotated finite elements made fast and stable. In VRIPHYS’08, pages 11–19, 2008. [9] Eran Guendelman, Robert Bridson, and Ronald Fedkiw. Nonconvex rigid bodies with stacking. ACM Transactions on Graphics (SIGGRAPH 2003), 22:871–878, July 2003. [10] Shu-Wei Hsu and John Keyser. Piles of objects. ACM Transactions on Graphics (SIGGRAPH Asia 2010), 29:155:1–155:6, December 2010. [11] Matthias M¨uller,David Charypar, and Markus Gross. Particle-based fluid simulation for interactive applications. In Proceedings of SCA 2003, SCA ’03, pages 154–159, 2003. [12] Matthias M¨uller,Julie Dorsey, Leonard McMillan, Robert Jagnow, and Barbara Cutler. Stable real-time deformations. In Proceedings of SCA 2002, SCA ’02, pages 49–54, 2002. [13] James F. O’Brien and Jessica K. Hodgins. Graphical modeling and animation of brittle fracture. In Proc. of SIGGRAPH 99, pages 137–146, 1999. [14] Jos Stam. Stable fluids. In Proceedings of the 26th annual conference on Computer graphics and interactive techniques, SIGGRAPH ’99, pages 121–128, 1999. [15] J. Teran, S. Blemker, V. Ng Thow Hing, and R. Fedkiw. Finite volume methods for the simulation of skeletal muscle. In Proc. of SCA 2003, pages 68–74, 2003. [16] Huamin Wang, James O’Brien, and Ravi Ramamoorthi. Multi-resolution isotropic strain lim- iting. ACM Transactions on Graphics (SIGGRAPH 98), 29(6):156:1–156:10, December 2010. [17] Chris Wojtan, Peter J. Mucha, and Greg Turk. Keyframe control of complex particle systems using the adjoint method. In Proc. of SCA 2006, pages 15–23, 2006.

4 (a) A pile of rigid bunnies, from [10].

(b) A square cloth falling onto a rigid sphere, (c) A tube bent under user-applied forces (real-time), from [16]. from [12].

(d) A 2D smoke simulation example (e) An adaptive SPH result, from [1]

Figure 1: Image examples from previous work.

5