Lab 3: Physically based animation – GameObject creation and collision system
Physical代写 ESCRIPTION: The purpose of this lab is to learn more about physically based animation by implementing algorithms
Due: Friday 2/15, 11:59pm
The purpose of this lab is to learn more about physically based animation by implementing algorithms such as numerical integration, collision handling, and collision response. To do so, you will be implementing a scene similar to a particle system (as defined in the lectures, not the unity component) using geometric objects. Note: you do not have to duplicate the animation above, it is there to illustrate some of the features (ground plane collision, ageing particles, and constrained random initial velocities). You are free to use your object/particle system implementation to model something generic (geometric primitives flying around) or some specific phenomena (fire, explosions, smoke, water, sparks, leaves, clouds, fog, snow, stars, or dust). A more game-like option is shooting projectiles out of a player character or the camera.
IMPLEMENTATION – GRADING, RESTRICTIONS, AND TASKS: This lab is graded out of 10 points. The implementation details for this lab are very open ended, but you MAY NOT use Unity’s rigidbody objects or colliders. These can be handy tools (when you take the time to learn how they work and are willing to accept their limitations), but the purpose of this lab is to demonstrate that you can implement the underlying physics and collision logic closer to the systems layer, as opposed to using an existing implementation on the application layer.Physical代写
Your finished work will be graded on meeting the requirements below. You are responsible for coming up with the software design for your system. Some suggestions follow the point breakdown. Points will be allocated based on whether the scene displays the following features:
Physically based movement of an object [2 points] Object management [2 points] Object emitter variation [1 point] Collision detection [2 points] Collision response [2 points] Documentation and lab submission process [1 point]
since some implementation details are harder than others, here are some details on gradations for the tasks.Physical代写
- Physically based object movement – 2 points possible
- Each object moves based on a constant velocity – 1/2 points
- Objects update their position and velocity using acceleration – 2/2 points
- Object management – 2 points possible ; split between two categories, requirement must be met to earn the corresponding point
- Scene can spawn new objects/particles and run indefinitely by culling or reinitializing objects/particles past their maxAge – 1 point/1 point
- Objects somehow change over time (ex: color, shape, or transparency) – 1 point/1 point
Object emitter variation – 1 point possible Physical代写
- Object emitter is parameterized (user input can somehow change properties of how objects/particles are spawned ; ex: spawn from a fixed area or volume instead of a fixed point, change range of initial velocities, change average maxAge, etc.) – 1 point/1 point
- Collision detection – 2 points possible
- Objects collide with axis aligned plane(s) – 1 point/2 points
- Objects collide with non-axis aligned plane(s) OR with other objects – 2 points/2 points
- Note: in both cases, you may (and are encouraged to) use bounding volumes rather than mesh triangles.
- Collision response – 2 points possible
- Objects respond to collisions by stopping or being deleted – 1 point/2 points
- Objects respond to collisions in a physically correct or interesting way – 2 point/2 points
for objects/plane collision,
EITHER use law of reflection
OR – use the penalty method
for object/object collision,
EITHER solve for momentum change of each object in an elastic collision
OR – total the momentum of the objects colliding for an inelastic collision and have the two objects combine or stick together
OR – set each object’s new velocity as the average of two object velocities
OR – apply a force on each object in the direction away from the center of the other object
Documentation and lab submission process – 1 point possible
- Turn in a readme file describing user input controls and listing which portions of the grading rubric you believe have been completed.
- If you submission is unable to be ran by the grader, you may resubmit the assignment or meet with the grader to demo your work and verify file contents were not changed after the assignment deadline or the date of your submission if turned in late.Physical代写
- Failure to include a readme or turning in an implementation that could not be ran will result in receiving 0 points for this grading category (and in the case of a submission that cannot be ran your grade for the lab will likely be a zero until resubmitted or demo’d).
Additional work ideas (each can earn back 1 lost point or raise a score to 11): Physical代写
Should you complete this assignment early, you could create an additional scene that:
- Use spring forces on mesh vertices to create a deformable model (you’ll probably want to simplify your collision detection for this).
- Animates a grid of points connected by springs to simulate cloth or a trampoline.
- Compares motion from Euler integration with a different type of numerical integration (ex: Runge-Kutta).
- Compares different types of collision response techniques.
- Is a 3D version of the game asteroids.
- Increases performance by replacing 3D geometry with billboards.
Going above and beyond the expectations of the requirements listed in the point breakdown may earn 1 point of extra credit (total, not per additional feature).
For object movement, if you Rotate an object, make sure you specify Translation in world space or explicitly set the position of the GameObject’s transform.
A general design guideline you could follow:
First, create a class that represents a single object/particle. It should have a position, velocity, age, maxAge, mass, and appearance (upon creation, instantiate a Unity GameObject for its appearance). Either store acceleration/force in each object or include a method that applies acceleration/force on the object for the current frame. Write methods to handle collision detection (more on this below).Physical代写
Second, create a class that represents a object/particle emitter. It should have a data structure to store multiple objects and random but constrained parameters to set the properties of each new object it spawns.
Lastly, create a scene that uses your object/particle emitter. Use simple physics (i.e. gravity, wind, viscosity, and/or friction, etc.) to alter the motion of the objects/particles.
Submitting your work Physical代写
You may work with a partner for this assignment. If you do so, only one of you should turn in the assignment. Submit your work on Carmen as a Unity package. Include your name (or both of your names if you worked with a partner) in the filename of the package. Make sure the package includes all scripts and scenes (and images/textures and models if applicable) in it. Also send a plaintext readme file with a brief description of which tasks you completed, which tasks you attempted but were unable to finish, and any user input controls. As in previous labs, you can test to determine if your package can be graded by making a new Unity project, importing the package, opening the scene file, and running the animation. You must submit work that runs in order to receive credit.