CSCI 5611 Instr.: Guy
Project 2: Physically-Based Animation with PDEs Project Due: Mon., Oct 19
Homework Check-in: Fri., Oct 9
Overview. This assignment focuses on using numerical integration to simulate physical systems that follow well-known rules. Our focus will be on phenomena which are well described by Partial Differential Equations (PDEs) such as simple, physically-based models of rope, cloth, and water.
This assignment has two parts. In the check-in assignment due next week (Oct 9), you will need to write a basic numerical integration library. For the project (Due, Oct 19), you will need to create a physically-based simulation.
You must work alone for part 1 (the homework check-in), but you may work with a partner for part 2 (the simulation project) – just one project turn-in needed per pair.
Part 1: Homework Check-in [100 points]
For the homework check-in associated with Project 2, you will need to implement a numerical integration library in Processing, some sample code will be provided to help you get started. We have implemented Eulerian integration, RK4, and Heun’s method for you, you will need to implement the midpoint method. You will also need to implement a special version of both midpoint and Eulerian integration which returns a list of all values computed in integration.
You may not use any external libraries for part 1.
Part 1 has three turn-in requirements. 1A. Complete the code
Add the integrator for the midpoint method, and the version of Euler, midpoint, which returns a list. You will only need to turn in Integrator.pde, but you will need to edit the dxdt() and actual() functions in GroundTruth.pde to test your method on .
1B. HW2 Integration Online Questions
First, use your library to answer several integration questions posted here:
https://canvas.umn.edu/courses/194320/quizzes/329800
These questions will ask you to integrate various functions and report how much error you get using a specific numerical integration technique vs the ground truth. Note, computing this answer will require you to figure out the ground truth for each of these differential equations.
1C. Graph of integration ∫sin(t) + t*cos(t)dt for various techniques
Second, consider the differential equation: dx/dt = sin(t) + t*cos(t) Using the initial condition x(0) = 0, and Δt = 1, integrate to approximate the true value from 0 to 20.
Submit an image (any common format is ok) showing a graph of the following: -The true function
-The approximation using Eulerian integration
-The approximation using midpoint integration
-The approximation using RK4 integration
You only need to make this graph for the one function given above:
dx/dt = sin(t) + t*cos(t), comparing the ground truth and the three
integration methods.
Here is an example on a different function.
dy/dt = cos(t)
1.5
1
0.5
0
0 1 2 3 4 5 6 7 8 9 10
-0. 5
-1
Euler Midpoint RK4 Actual
Submit a zip file with both your image and Integrator.pde to the canvas turn in.
Part 2: Simulation [100 points]
You will need to write a rope/cloth simulation of multiple threads interacting with their environment in a smooth and natural fashion. For additional credit, you can implement a full cloth simulation or explore continuum fluid models. Required components are indicated with a star (*).
Multiple Ropes (at least 2D)* (up to 50 points).
Extend the rope implementation shown in class to support multiple independent ropes which all hang and swing freely. The ropes need to support one-way interaction with an obstacle (e.g., a circle) by falling naturally on the obstacle. To get all of these points, your implementation must produce smooth, natural looking
swinging behavior. Getting this behavior will require tuning your simulation parameters, please save time for this step.
Cloth Simulation (up to 20 points).
Extend your rope simulation to include horizontal springs that bind ropes to each other in order to make a full cloth simulation. The cloth needs to support one-way interaction with an obstacle (e.g., a ball) by falling naturally on the obstacle. To get all of these points, your implementation must produce smooth, natural looking swinging behavior. Getting this behavior will require tuning your simulation parameters, please save time for this step. [This will also count as multiple ropes.]
Air Drag for Cloth (up to 10 points).
Include an air-drag term in your cloth simulation using the method discussed in class. Compare the results with and without drag.
3D Implementation & Rendering (up to 20 points).
Update your ropes or cloth simulation to be in 3D. To get full points here you need both smooth 3D motion and high-quality 3D rendering with a natural camera that allows the user to navigate around the scene from different angles and positions. Try to use texturing and lighting to improve the rendering.
User Interaction (up to 10 points).
These points come from user interaction direction with the simulation itself (not from controlling the camera). To get full points, the user should have a clear, smooth, and natural way to interact with the ropes/cloth. Discrete interactions such as toggling some behavior on/off will only receive a couple of points. Look for continuous interaction such as allowing the user to move an obstacle with the mouse.
Realistic Speed (up to 10 points).
Match your simulation to a reference of your choice (e.g., hold one end of a thread and time how long it takes the other end to drop). If your simulation moves as quickly as real threads, you’ll get full credit. Slower simulations will receive partial credit.
Ripping/Tearing (up to 10 points).
Rip or tear the cloth/rope when the forces get too large.
Continuum Water Simulation (up to 20 points).
Using a continuum-based method, like the Shallow Water Equation, to create a 1D or 2D water simulation.
Art Contest
If you generate a pretty image (even by accident), save it to submit to the class art contest. A pool of honorable mentions will be given 2 points, and the grand winner gets 5 points. All winners will be chosen completely subjectively.
Part 2 Project Report & Video* (10 points).
Your submission must be in the form of webpage with:
• Images of your particle systems
• A brief description of the features of your implementation and timestamp
of where they occur in your video(s).
• Code you wrote
• List of the tools/library you used
• Brief write-up explaining difficulties you encountered
• One or more videos showcasing features of your simulation
• Submission for the art contest (optional)
These 10 points for the submission itself will be based on the clarity of expression of the report, and to the degree which it quickly communicates what you tried, what worked well, and what didn’t.
Additionally, each feature you expect to get credit for must be documented in your submission videos in a way which clearly shows the resulting behavior. If you do not show a feature in your submission video(s) you will not receive credit for it.
Part 2 Grading Criteria
Simulations must animate well and look convincing to get full credit. Partially implemented features will receive partial credit. Points past those needed for full credit will count as extra credit, though at a discounted rate (see Scoring below). If you do other things you think are cool and worth credit let me know beforehand and be sure to document it in the report.
Use of other code and tools
Anything you are getting credit for must be code you wrote for this course. You must write the code for the simulation yourself! External libraries may be used for aspects that are not related to simulation (e.g., rendering, camera motion, video capture) just be sure to document that you used these.
Partners & Groups
You are strongly encouraged to work in pairs for the project. Each pair should turn in only one assignment. Both people will be given the same grade. You cannot repeat the same partner from a previous project.
Project Scoring
Partial credit will be given. Scores computed as follows (points above 100 possible): -Undergraduate: Grade is √(totalPoints * 100) [e.g., 100 points will be full credit] -Grad students: Grade is √(totalPoints * 84) [e.g., 120 points will be full credit]
*Extra credit will only be given to assignments with at least an A- on the required features.