Special subjects
Special subjects require spending a lot of additional time on learning topics not covered during classes. The only reward for doing a special subject is a warm and fuzzy feeling. Oh… I will also ignore your every absence if you do this project right. Anyway, the subjects below, are subjects that were written in previous years. Any student who wants to do a special subject must think of something new with a similar difficulty level.
- Mesh optimizer (1 person)
Read a mesh from some 3D file format. Optimize the model by removing some of its vertices and polygons and possibly replacing them with other ones. Program should visualize the optimization process (if the used algorithm allows for it). In the worst case it should render the mesh before and after optimization.
- Triangle strip generation (1 person)
3D models can be drawn faster if their triangles are combined into trangle strips. A triangle strip is a sequence of triangles, where each subsequent triangles has at least one common edge with the previous triangle. Propoze the algorithm to combine triangles from any arbitrary mesh into as little triangle strips as possible.
- Impostors technique (2-3 persons)This is an optimization technique which replaces models placed far from camera with rectangles covered with appropriately drawn textures. For big scenes, with a lot of static objects, this improves the rendering time considerably with only slight decrease in image quality. If the camera gets close enough to such impostor, it must be replaced with the original model. There are multiple problem to solve here: when to draw impostor and when to draw the original model. How often, and how to refresh the impostor texture. Your task is to: implement the impostor technique and propose your own measures of scene quality which uses this technique. It is worth to read this article.
- Glass gallery (2 persons)
Using GLSL you need to create a scene with multiple glass objects. Simulate refraction and reflections + optionally chromatic dispersion.
- Simple Raytracing algorithm in a chosen (exotic) platform (2 osoby)
In this project choose some exotic execution environment: smartphone, smartwatch, browser etc. and implement a simple raytracer working in that environment. The raytracer should include ambient lighting, diffuse lighting, reflected light lighting and optionally refracted lights. Use only simple shapes (balls/planes etc.), tri-mesh is not required.
- Inverse Kinematics (2 persons)
Inverse kinematics is a method for determining spatial alignment of hierarchical 2D and 3D models based on some desired properties of that alignment
(see: http://en.wikipedia.org/wiki/Inverse_kinematics, http://cg.skeelogy.com/projects-IK.php). As a result of the project I expect a report describing the problem and used algorithm and an application which allows to animate a robots hand (forearm, arm, hand, 5 fingers) by choosing a point in 3D space where the arm must reach.