$29
Overview . In this assignment you will get a hands-on introduction to procedural animation by creating your own particle system engine. A particle system is a large collection of a small number of shapes which taken together have the visual appearance of some desired phenomena. Here, you will build a simple particle system engine, and showcase its use to create a variety of visual effects.
Requirements. You will need to write real-time simulations of at least two different visual phenomena using particle systems. One simulation will be of a water, the other of fire, a magic spell, or fireworks. Together these two simulations will be part of your grade. For full credit, you must either explore additional simulations or add new features to these two simulations. Required features are marked with a star *.
Check-in*
[Your score on the check-ins will be 10% of the HW grade]
This assignment has a mandatory check-in due mid-way through the assignment. For this, you must turn in a webpage with a video of a ball bouncing on a floor (with 2D or 3D motion) in a physically realistic fashion using numerical integration.
Two Required Simulations* (30 points each).
More details on simulation requirements are given at the end of the assignment.
Water*:
Water fountain/water hose: The water must move in a parabolic arc. When the water hits the ground, it should bounce in a realistic ‘splash’.
Fire, Fireworks, or Magic Spell*:
Fire: If the fire is free standing (e.g., a torch), the fire particles should move upward and inward creating the shape typical of fire plume. If the fire is propelled (e.g., dragon’s breath), it should likely follow a cone-like shape.
Fireworks/Magic Spell: Particles involved in these effects should change color over time. If you simulate fireworks, make sure there is at least two stages (an ‘up’ stage, and an ‘explode’ stage).
Simulation Context*
For both of your required simulations, you must provide some visual context for why the simulation is happening. Your fire might be on a log or perhaps coming from the mouth of a dragon. Or maybe you can place the water stream on a fountain-like structure. Or the magic spell being cast by a fairy. Loading 3D assets from the internet here is helpful, but other approaches are possible.
Other Required Features*
(5) 3D user-controlled camera (must allow rotation and translation)
(5) Particle-obstacle interactions besides the floor (in at least one simulation)
Rendering
Textured sprites for particles
Tails on particles
Translucent particles
Performance Benchmarking (cumulative)
Measure the speed of the faster of the two required simulations. Feel free test on a fast computer such as the ones in the basement graphics lab (KH 1-254).
Benchmark-1*: 1,000 particles simulated and rendered at over 20 FPS
Benchmark-2: 5,000 particles simulated and rendered at over 30 FPS
Benchmark-3: 20,000 particles simulated and rendered at over 30 FPS
Benchmark-4: 100,000 particles simulated and rendered at over 30 FPS
Additional Features
Write your own vector library (dot & cross prod, addition, multiplication, etc.)
Continuous user interaction with the system (mouse-based for full credit)
Continuous Collision Detection (must show a visible difference)
Simulation-driven audio (only partial points for short, simple sounds)
Multiple interacting particle systems (submit a separate video)
Thread-parallel implementation (must document performance gain)
SIMD implementation (must document performance gain)
More things to simulate
Falling Snow (with Perlin noise)
Snow accumulating on models
Galaxy Simulation (particles must attract each other and look nice)
Real-time implementation of the Genesis Device effect
SPH Fluid Simulation
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.
Art Contest
If you generate a pretty image (even by accident), save it to submit to the class art contest. A large pool of honorable mentions will be given 5 points, and the grand winner gets 10 points. All winners will be chosen completely subjectively.
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! Playing with the particle system function in an existing game engine is useful, but will not count towards this assignment. Likewise, finding working code from the internet may be useful for future personal projects, but to receive a grade for this assignment you must turn in your own simulation code you wrote 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 this assignment. Each pair should turn in only one assignment. Both people will be given the same grade. You cannot repeat the same partner on a future homework assignment.
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 both of the two required simulation and with all other required features implemented.
What to turn in
You must make a submission 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)
Each feature you expect to get credit for must be documented in your submission videos. If you do not show a feature in your submission video(s) you will not receive credit for it.
If you need help creating a webpage, many online resources exist. UMN’s Google Site: https://sites.google.com/a/umn.edu it’s a great place to start, especially if you have never made a webpage before.
Simulation Grading Guide
Water Simulation
A-level (25-30 points):
Water particles flow in free smooth motion, interacting with various objects in the scene. Both the color of the particles, and the motion looks natural, and the water simulation is placed in a natural context. The simulation flows without any stuttering or unnatural gaps in the motion, and the water flows at a realistic looking speed.
B-level (20-25 points):
Water particles move in a physically accurate fashion. The particles interact with the environment leading to natural bouncing motion that looks like a splash. The colors of the water change based on heights, velocity, or bounce in a way that looks reasonable. The simulation is placed with some natural context.
C-level (15-20 points):
Water particles are correctly simulated using Eulerian integration of the gravity PDE. The particles are colored to look like water.
Extensions (various points):
Your water simulation is likely a good setting to try to hit the performance benchmarks with. Make sure you don’t make so many sacrifices trying to get good performance that it leads to bad looking simulations.
Fire Simulation
A-level (25-30 points):
The fire particles are placed in a meaning setting such as a torch or a campfire. The fire flows in a natural plume-like shape. The fire gives rise to smoke which has a natural billowing motion. The smoke that rises from the fire looks and move differently than the fire itself. All motion is smooth without any stuttering or unnatural gaps.
B-level (20-25 points):
The fire particles are colored flame-like colors, and the colors or shapes change in some natural fashion over time. Fire particles lead to a fire with a natural taper, and give rise to smoke and/or sparks. The simulation is placed in a natural setting.
C-level (15-20 points):
Fire particles move upward changing their color over time.
Extensions (various points):
Fire simulation is a natural setting to explore several of the extensions needed for full credit. Both fire and smoke simulation look best with transparent textured quads with interesting shapes as the particles.
Firework Simulation
A-level (25-30 points):
The firework consists of at least two stages (e.g., an initial upward launch animation, followed by an explosion). The fireworks particles are colorful and vibrant, and contain the natural variation of colors you would expect from fireworks. There are likely multiple fireworks simultaneously going at various stages. All motion is smooth without any stuttering or unnatural gaps.
B-level (20-25 points):
The fireworks particles explode in a typical pattern expected from fireworks. There are multiple fireworks going at once. The fireworks consistent of different vibrant colors, that may change over time.
C-level (15-20 points):
Colorful particles explode out in a circle using numerical integration.
Extensions (various points):
Fireworks are a great place to try particles with tails/trails on them. Smoke can also work very well with fireworks.
Magic Spell Simulation
A-level (25-30 points):
The magic spell particles move in an exciting, interesting pattern. The spell particles are colorful and numerous (or are colored in a dynamic way thematically appropriate for the spells effect). Spell particles likely move in multiple stages, perhaps reacting after they hit on object, or changing motion part way through their lifespan. The spells ideally interact in same way with the environment. All motion is smooth without any stuttering or unnatural gaps.
B-level (20-25 points):
The magic spell particles move in an exciting, interesting pattern. The spell particles are colorful and numerous (or are colored in a dynamic way thematically appropriate for the spells effect).
C-level (15-20 points):
Magic spell particles move in a straight line or a cone (using numerical integration), and change colors in interesting ways.
Extensions (various points):
Magic spells are a great place to add mouse-based user interaction. Let the user cast the spell, and draw the spawn point around the simulation.