e-mail: victormatheus [at] gmail [dot] com
irc nick at #yafaray: vvdoom
My name is Victor Matheus de Araujo Oliveira, I was born and raised in Brazil, and I'm a fourth year student of Computer Science at the University of Campinas (UNICAMP -- from Brazil, we have a great history of participations on GSoC). Currently, I'm doing an internship at Linux Technology Center - IBM [1], but I've been researching image processing and computer graphics algorithms for the past 2 years. Before that, I worked with robotics, so I have experience on:
YafaRay is one of the most popular raytracers used in Blender. The main goal of this project is to integrate YafaRay with the upcoming Blender 2.5 release, which has some nice features for external applications, such as a Python render API, direct access to the Blender UI, direct access to the Blender Composite nodes and a more efficient scene exporting.
Also, POV-Ray [4] and LuxRender [5], other 2 open-source renderers, have already been ported to Blender 2.5, which shows the urgence of the subject.
As a secondary goal, we have to solve some usability issues of the current YafaRay Exporter UI, which should be no problem since the interface is going to be rebuilt anyway. Also, we would like to create a declarative IU scheme for YafaRay plugins.
There have been a tentative of integration already [6]. Although this script doesn't use YafaRay Python API to render its images, it generates a XML file which is rendered by an XML front-end to YafaRay. This is not the approach YafaRay community wants, but this script is very important, as it shows how to make an external renderer work in Blender 2.5. Also, it's worth to give a look at POV-Ray and LuxRender integration scripts.
Then, after studing Blender's new Python API [7], I'm going to do an experimental version of the exporter. In this step we will probably have to talk with the Blender's Python API developers, since it is still unstable. In fact, I've already done a dummy renderer [8].
Once we have an idea of what Blender 2.5 is capable of, I'm going to write a "final" version of the exporter. In this step we'll design YafaRay exporter's new interface. While in previous version of Blender we were just able to put our interface in a separate view, in Blender 2,5 we can change default Blender interface too. For example, we can add our widgets inside of Blender's Render Panel and delete its unwanted widgets, which is a much more natural integration for the user.
Also, we would like to create an declarative UI system for YaraRay plugins. This means YafaRay plugins have their Blender interface automatically generated from their inputs. For example, a plugin for material has some light properties, these properties will be shown in YafaRay Render Panel. For that I plan:
Even though I have some experience with interfaces, I’m not a usability expert, so the GUI-related parts would probably involve some brainstorming sessions to decide which path to follow.
it's possible we lose some functionality in this Blender new release. For example, material support in Blender has changed, so maybe some of its properties have disappeared or replaced by another one. If this is the case, we'll try to adapt YafaRay to this new interface, but if we aren't sucessful, we'll talk to Blender developers and maybe even change our API. That should be no problem, since YafaRay's Python API uses Swig, which I have experience with because of my past projects.
Once Summer of Code is done I intend to keep doing maintenance on my code, implement new features whenever possible, and help to fix bugs when they come up. Also, I would be very pleased to become a mentor in future GSoC's.
April 26 - May 23: Learn Blender's 2.5 Python API and YafaRay's API.
May 24 - June 25: Do an experimental version of the exporter.
June 25 - July 10: Start coding the final version of the exporter.
July 05 - July 12: Write and submit the mid-term evaluation.
July 12 - August 08: Finish coding the exporter, focusing on the graphical user interface, testing, and documenting.
August 09 - 15: Do some code scrubbing and write final evaluation.
August 16: Submit final evaluation.
August 30: Submit code samples to Google.
In Brazil we only have one month of Winter break (northern hemisphere Summer) on July, but since I am taking few classes this semester, this is not a problem. Also, my internship is part-time. So, I will be able to dedicate enough time to the project.
[1] http://www-03.ibm.com/linux/ltc/
[2] http://br-gogo.sourceforge.net/
[3] http://www.impa.br/opencms/en/
[4] http://www.povray.org/
[5] http://www.luxrender.net/
[6] http://blenderartists.org/forum/showthread.php?t=180935
[7] http://www.blender.org/documentation/250PythonDoc/
[8] http://www.yafaray.org/community/forum/viewtopic.php?f=24&t=3182