Description
In this assignment you
will create a simple OpenGL 2D application to create a flash animation. The
animation does not have to necessarily be what is in the video.
The basics can be
separated into two different executables (to simplify your life)
- the first uses simple geometry and
transformations to create a small animation (start with triangles, later
use Bezier)
- one level of transformation
hierarchy (e.g. flapping wings) (25%)
- one animation bezier path (e.g.
translation/rotation/scale of bat around scene) (35%)
- the second is for editing Bezier
curves (number of vertices and initial layout can be hard-coded)
- editor that allows to change
Bezier handle positions and tangents (25%)
- drawing text is not required, but
you can just load simple texture for it
Start the assignment by
animating a few simple triangles (e.g. the wing of the bat can be approximated
by triangles). Later on you can replace these with Bezier curves, polygons and
textures.
Advanced Functionality (2%-63%)
Note many operations can
either be performed on the CPU or the GPU (CPU/GPU points for the same feature
do not accumulate).
- generate content with convolutions
(see sun halo in teaser image) (1% CPU, 2% separable filter, 3% GPU, 4%
separable filters on GPU)
- rasterize the Bezier polygon into
a polygon (render the Bezier boundary to a frame buffer, then use parity
check to perform inside/outside on each scan-line) (5%)
- triangulate a Bezier polygon with
trapezoidal decomposition (5%)
- use textures with alpha-blending
(e.g. the wing is just a textured quad where some of the pixels are just
transparent) (5%)
- effcient Bezier evaluation
(recursive deCastlejau split rule) (5%)
- use tessellation shaders (OpenGL4
only) to draw Bezier curves efficiently (5%)
- anti-alias each frame of your
animation (clearly you cannot use GL_MULTISAMPLE) (4% CPU, 6% GPU)
- arc-length parameterization of
motion trajectories (2%)
- ease-in/out for the animation path
(1%)
- save your animation as a MOV/AVI *
just use some screen capture software (2%) * dump framebuffer as images
then load the image sequence as video (5%)
- let it snow!! particles, geometry
shaders and sprites (10%)
- code quality (e.g. organization,
Object Oriented programming) (5%)