2IV00 - additional component CG 2006-2007
supervisors: Huub van de Wetering (HG 6.83, wstahw@win.tue.nl) Alex Telea (HG 6.85, alext@win.tue.nl )
introduction : wednesday 28/3/2007, Aud 14, 08h45-10h30 proposal submission by email: tuesday 2/4/2007, before 09.00h evaluation of proposals : wednesday 4/4/2007, Aud 14, 08h45-10h30 midterm deadline : wednesday 23/5/2007, Aud 14, 08h45-10h30 submission deadline : friday 31/8/2007, before 23.59h students make an appointment for final discussion.
This assignment is created for improving the skills in creating computer graphics applications. Programming language and environment are at the choice of the student. Procedure:
  1. . Students work in groups of two persons.
  2. . Each group chooses one of the assignments given below.
  3. . They write a proposal for the assignment.
    The proposal should contain: The total size of this proposal should be 6 to 8 pages.

    The proposal should be emailed to the supervisors in pdf format. The supervisors will respond to the proposal during the second meeting. They typically come up with suggestions for addition or removal of functionality.

  4. . The students start working on their assignments and can consult the supervisors after making an appointment.
  5. . At the midterm deadline students give a short, 10 minute, presentation about their project and show a running prototype illustrating the already implemented concepts. Care must be taken to state clearly the status of the project: what is already finished, what still needs to be done, etc. The supervisors will give feedback, the students can earn -1, 0, or 1 credit.
  6. . The requirements for the final product are:
  7. . The final results are demonstrated by the students to the docent.
    For this the students should make an appointment.

    Please try to give your application attractive and functional interactivity. This will not only help you to develop and test your own program but, for sure, others will not like your program, if you don't like it yourself. The supervisors will not only grade the functionality of the system but also its usability.



    Assignments 2006-2007

    - Shakespeare - HvdW
    An interactive tool for visualizing xml representations of plays. This tool should support a director, for instance to get insight in the structure of the play or plan rehearsals. The data files provide among others hierarchical information about the struture of the play (act, scene, who's on stage), textual information (who says what) and meta data (stage directions). The challenges in this project are to give a user visual insight in a large amount of structured data and offer him interactivity to easily access both low and high level information.

      Sample input: http://www.oasis-open.org/cover//bosakShakespeare200.html.
      

    - eye catcher - HvdW
    OpenCV is a collection of algorithms and sample code for various computer vision problems. Use openCV for finding eyes and mouths in a color image featuring one or more faces, apply these techniques to do face detection. Write a small application that uses eye/mouth/face detection for interaction.

      References: literature, 
                  OpenCV, 
                  demo opencv webcam + filter implementation.
      

    - Visualization program execution traces - HvdW
    Object-oriented software is designed by introducing classes and their relationships. When software is being executed, however, a programmer loses sight of the classes he created during the design and coding of the software. Tools like debuggers and profilers give some information on the dynamic behaviour of a program. This assignment is visualizing dynamic program aspects, like (number of) method calls, (number of) object allocations, thread behavious, etc. Input of the tool consists of time-stamped events, like method entry, method exit, thread start, thread death, object allocation, object deallocation, etc.

    Material:


    - a particle system - HvdW
    Build a particle system with purpose(s) of your own choice: e.g. water fountain modelling, fireworks, visual effects (fog, smoke, ...), bird flocks, graph layout, ... Possible interesting features of this system could be: behaviour modelling, collision handling, forces, visualization, solvers, gpu-based, efficiency, high number of particles, editor, ...


    - Removing logos & text from images - AT
    Make a tool for removing logos and text from 2D images. The tool should be based on the 'fast marching algorithm for level sets'. This is an algorithm that, given a contour in 2D, will shrink the contour keeping its shape similar with the original shape. A C++ (simple to understand and use) implementation thereof is available as source code. The student should extend this implementation to a fully operational program where the user should be able to load a color image, specify which are the objects to be removed (e.g. interactively by defining a polyline with the mouse). The program should then shrink the defined contour while interpolating the color information present on it.


    - Monte-Carlo radiosity renderer - AT
    Write a program that performs a Monte-Carlo radiosity rendering. The program should read some description of a 3D scene (e.g. polygonal) plus the position(s) of the light source(s). Next, the program should simulate a progressive shooting algorithm to distribute the energy of the lights in the scene. Finally, the user should be able to view the rendered result in 3D from an interactively chosen view point. The students can choose whether (and how) to mesh the 3D scene to capture the light variations (shadows) in an effective and efficient manner. Alternatively, no meshing is done, but the program models the 'hits' of the light rays on the objects as Gaussians (intensity + size), which are then rendered only in the final pass.


    - MPEG Streaming Player for mobile devices - AT
    Write a MPEG1/2 streaming player (decoder) for Java-based mobile devices. The player should be able to open an MPEG data stream (e.g. from a socket or http connection), read data packets in a loop until the stream is finished, decode the MPEG frames from the packets, and render them on the device's screen. For getting familiar with the idea and techniques of MPEG coding and decoding, have a look at FFmpeg (http://ffmpeg.sourceforge.net), which is an easy to use C library for coding and decoding many MPEG formats. You can use FFmpeg also to encode the MPEG stream you want to decode later on the mobile device. However, be aware that mobile devices will not support the standard C or Java languages and/or libraries. You have two possible solutions for implementing the MPEG decoder on the mobile device: -use J2ME (Java 2 Mobile Edition), a standard Java language subset for mobile devices. However, be aware J2ME doe not support all facilities and packages the standard Java language does on a PC. -use Symbian C++, a C++ dialect especially designed to create applications for mobile devices. Testing the application: For the project to succeed, you must deliver an application that should decode an MPEG1/2 video stream which is received live on a mobile device. The application should run on (more than) one type of modern mobile device. For example, it should run on any J2ME-enabled device, if you choose for J2ME, or on amy S60 phone, if you choose for Symbian. For demonstration purposes, you do not have to use a real mobile device (e.g. mobile phone), but one of the many software PC emulators out there. The video decoder application should run on the mobile device or emulator, get video data (at least e.g. 1..2 minutes) via some connection (e.g. http, sockets), decode, and render the frames on the fly. That is, you are not allowed to first buffer the _whole_ MPEG stream locally and _then_ decode it. Challenge: This is a real challenge. There are only very few such MPEG decoders for mobile applications publicly available in the wold nowadays. Have a look e.g. at https://player.helixcommunity.org or http://www.oplayo.com. Can you program one?


    - Design and implement a WinAmp visualization plug-in based on a provided flow simulation software. - AT
    WinAmp, the audio player tool, provides a programming interface for designing visualization plug-ins, i.e. components that are displayed in a WinAmp window and that change their graphical appearance (color, shape) in the rhythm of the played music. Two elements are needed. First, the WinAmp programming API for developing plug-ins is available at www.winamp.com/nsdn/winamp2x/dev/plugins. The visualization should be coded in OpenGL, not DirectX. Second, the flow simulation software is available at: www.nada.kth.se/~gustavt/fluids. It comes as a simple OpenGL program where the user can control a flow source with the mouse. The challenge is to define/control a number of such flow sources as function of the WinAmp audio data, and to render the flow visualization back into WinAmp. Two options are possible: control the flow as a function of the time-data or frequency-data. Investigate both options.

    source: https://www.win.tue.nl/~wstahw/2IV00