|
Advanced Topics in Graphics:
Non-Photorealistic Rendering
|
Winter 2005
|
Projects:
Students in the seminar will form groups of one, two, or three people. Each
group will do one big project that spans the semester. The scale of the
project should be roughly the scale of picking out a SIGGRAPH paper and
implementing what it describes. The goal of the project is to give you practice
at doing research and development in the topic of the course, non-photorealistic rendering. The project can be roughly broken down into the
following steps:
-
Decide on a project and turn in a one- to two-page, single-spaced written
proposal (due January 27) outlining:
-
What you propose to do (indicating clearly what are "must-finish" items and
what are desirable extensions, time-permiting)
-
How the work will be broken down into manageable, testable components
-
A tentative schedule for when these steps will be completed during the semester
-
How the work will be divided among team members (if more than one person will
be working on this project)
-
Do a literature search on previous, related work
-
Implement and test your algorithm/application
-
Give a presentation of your results in class (either Thursday April 7 or
Tuesday April 12)
-
Write up a description of your work, 8-12 pages in length, and create a web
page that summarizes your approach and showcases your results. The paper
should in the form of a conference paper, like the ones we have covered in
class. Be sure to compare your results to previous work and include
references to at least three related papers.
The final project grade will be based both on the quality and robustness of your
results and the quality of your write-up and presentation. Part of the
research process is being able to communicate your results through writing.
Therefore, projects with poor write-ups will suffer at grading time.
Below is a list of suggested projects. The more students on a team, the more
ambitious a project should be. Students are also encouraged to propose other
projects, however these must be discussed with the professor before the
official proposal deadline (Thursday, January 27). For those projects requiring
digital images, the professor has a (crappy) digital camera that can be
borrowed. For projects requiring digital video, if you don't have access to a
digital video camera, check with the professor. It is perfectly acceptable (and
even encouraged) for teams to collaborate on getting source video materials.
-
Toon Shading plus stylized silhouettes:
Take in a 3D model and interactively display the model using toonshading plus stylized silhouettes. More than one silhouette style should be available.
-
Automatic Watercolor Rendering:
Implement the Curtis et al. paper. This will be quite difficult, so you may want to just work with black ink particles instead of worrying about color or do just a brush simulation.
-
(Artistic) Image Mosaics: See
this paper
by Finkelstein and Range
-
(Artistic) Video Mosaics: See
this paper
by Klein et al.
-
Painterly Rendering of Video: Implement the Litwinowicz
paper
-
Simulating Batik: See this paper
-
Celtic Knots: See this paper and this web page and then this other web page.
-
Voronoi Stippling: Implement Secord's paper, or for something more challenging try this follow-on paper.
-
Choose Something Else: Either one of the other papers covered
in class or your own idea. You can look at Craig Reynolds survey of NPR research and resources for more ideas.
Project Reports #1 and #2:
Each team will be responsible for two progress reports during the semester
(February 15 and March 17 respectively). The progress report will consist
of two parts:
-
An 8-minute in-class presentation
-
A print out of your presentation web page (see below) that should be handed in
at the beginning of class.
The 8-minute in-class presentation: In order to keep things
moving, each team will do their presentations from a web page, and only one
member per team will present. I will bring my laptop (plus a network cable) to
class, and then each student will simply type in their project web page URL and
use that as the basis for their presentation. Your presentation should include:
-
A brief outline of what your project is
-
Your specific project goals (i.e. what you actually intend to implement over
the course of the entire
project)
-
What you intended to have implemented by now (according to the project proposal
you already handed in)
-
What your team has actually
done so far (and who has done what)
-
Any other interesting items to note. For example "Based on the paper, we
thought doing item X would be really easy, but it turns out to be quite hard
because the authors didn't say anything about floating point error issues." Or
"When I read the paper, I found section Y to be really confusing, but now that
I have implemented it, it is actually quite straight-forward."
As always, pictures are always much appreciated. Certainly a picture
representing your goal and a picture representing what you have now seem like a
good start. You can also include more images or videos if appropriate. Don't go
over 8 minutes. For your second presentation, items 1 and 2
can be covered more quickly since students will have seen them before.
A reminder: the final project grade will be based both on the quality and
robustness of your results and the quality of your write-up and
presentation. Part of the research process is being able to communicate
your results through writing. Therefore, projects with poor write-ups
or final presentations will suffer at grading time.
The Presentation:
The final presentation will be an in-class presentation. Plan on speaking for 12
minutes and allowing 3 or so minutes for questions. Just as with
our progress reports, teams will do their presentations from a
web page, and only one member per team will present. I will bring my laptop
(plus a network cable) to class, and then each student will simply type in
their project web page URL and use that as the basis for their presentation.
Just as with your progress reports, your presentation should include:
-
A brief outline of what your project is
-
What you intended to have implemented by now (according to the project proposal
you handed in)
-
What your team actually
accomplished (and who has done what)
-
Any other interesting items to note. For example "Based on the paper, we
thought doing item X would be really easy, but it turns out to be quite hard
because the authors didn't say anything about floating point error issues." Or
"When I read the paper, I found section Y to be really confusing, but now that
I have implemented it, it is actually quite straight-forward."
As always, pictures are always much appreciated. Certainly a picture
representing your goal and a picture representing what you have now seem like a
good start. You can also include more images or videos if appropriate. If you
have any large files, please ask me to download them to my
laptop before class
.
Some important details:
-
I will be asking the other students to give you feedback on your presentations
much as they did with your talks, so be sure to make sure that your project
goals and accomplishments are clear. I will be very unforgiving about this with your final
project presentations. We don't have to understand every detail of what you did,
but we have to understand "the big picture." This is particularly crucial for
students who are implementing something we did not cover as a paper in class.
-
Make sure your presentation is both interesting and informative. If
you did nothing but show us cool results for 10 minutes, we will probably be
riveted, but it is not clear what we will have learned. On the other hand, if
you do nothing but discuss all the arcane details of what you implemented, we
may learn a lot, but it won't be that exciting. A good presentation should make
us think 3 things, and maybe a 4th for those people re-implementing papers:
-
Wow, that's really cool looking!
-
At a high level, I understand what this team did, and I could give a 5-10
minute explanation to my friends over dinner tonight.
-
This was so interesting, I'd like to go talk to those people and ask them a few
questions about details.
-
The optional 4th item: they told me some helpful details that weren't covered
in the source paper.
-
In order to achieve those goals, you might want to discuss some or all (or
none) of the following in your presentation:
-
Why is this project useful? Who would use it?
-
Was this much harder or much easier than we thought it would be? Why?
-
What else did you learn by doing this project? For example "I learned how to
program pixel shaders and it wasn't too hard!" or "I think I really appreciate
artistic style X more now that I have tried to implement it." etc. etc.
-
Attendance is mandatory at these presentations.
The Paper:
The final paper is due Wednesday, April 13th at 5pm. No extensions under any
circumstances will be granted. Papers should be 8-12 pages in
length in the general form of a conference paper, like the ones we have covered
in class. Be sure to compare your results to previous work and include
references to at least three related papers. Important details:
-
Papers should be printed; do not just send me an electronic copy. You
can slip your paper under my office door if you wish to hand it in and I am not
available.
-
Provide a copy of any source code you wrote (this is okay to e-mail me.) If you
used other people's code in your project, that is okay, but be sure to cite it
appropriately in your comments or make note of this in your paper. Not doing so
is plagiarism.
-
It is okay to refer to supplementary materials (like a video of your results)
in you paper. Please make those supplementary materials available on your
project web page.
-
Some things you may want to consider when writing your paper:
-
Just as images were useful in your presentations, they are often very useful in
a paper. Recall that most (if not all) of the papers we read this semester were
filled with helpful images and figures. Don't be afraid to use images in your
paper to help you explain things.
-
Timing numbers: how long did it take you to render an image/frame/etc.?
Relevant information will be what what processor you have, what kind of
graphics acceleration hardware you have, what operating system you are running,
how big your images or models were (in pixels or polygons, respectively), etc.
If you have many sample images or models you used to test your system, putting
the actual running times in a table may be the best way to present this
information. You may also want to discuss these timing numbers. For example,
"Not surprisingly, the larger an image, the longer it takes to paint." or "It
is really the finest brush stroke size that determines how long the image will
take to be painted." or "Surprisingly, we are bounded by fill-rate, not number
of geometric primitives to be rendered."
-
If you are reimplementing a paper, please do not spend your entire write-up
simply rehashing what is in the original paper. We can read the original paper
ourselves. Instead, spend some time (maybe half? maybe two-thirds? it depends
upon the paper) rehashing the paper, and then some time discussing your own
experiences and results. Your goal is to convince me that you a) understood
the original paper b) learned something by implementing it.
-
Graftool, Denis Lebel and Felix Martineau
- Real Time NPR System with Multiple Styles, Dmytro Prykhodko and Leonid Gaiazov
- Abstracted Painterly Rendering with Importance Maps, Denis Dubé
- Real-Time Stippling, Pawel Kowalczyk
- Curved Brush Strokes of Multiple Sizes, Bill Cheung
- Computer-Generated Celtic Design, Melanie Coggan
- GeoGraftals, Michael Imbrogno and Derek Rivait
- Data Visualization in BioInformatics, Eric Blais
- Computer Generated Watercolor, Aditya Bhatia, Ran Chen, Qinghu Liao
- TechnicalQuake, Michael Batchelder and Kacper Wysocki
Thursday, April 7
- Eric Blais
- Bill Cheung
- Michael Imbrogno and Derek Rivait
- Dmytro Prykhodko and Leonid Gaiazov
- Denis Dubé
Tuesday, April 12
- Denis Lebel and Felix Martineau
- Aditya Bhatia, Ran Chen, Qinghu Liao
- Pawel Kowalczyk
- Melanie Coggan
- Michael Batchelder and Kacper Wysocki