Tamito Kajiyama is the developer who has worked on the integration of Freestyle into Blender for the longest period of time. Since 2009 he is the maintainer of the project. In this interview, he talks about the history and hurdles of the Freestyle integration development and how motivating it is to have active users in early stages of development.
BD: Hello Tamito, tell us a little about yourself and your role and involvement in the Freestyle integration project.
TK: I am an amateur software developer working in the open source free software sector for years. My coding experience is mostly related to the Python programming language and its application, including a Japanese Unicode encoder/decoder for Python, add-on Python scripts for a 2D vector drawing program, and interactive virtual dolls for Unix-like desktop environments. I am a rather new Blender user and started using it in 2006. Since 2008 I have been working on Freestyle integration into Blender, initially in collaboration with Maxime Curioni who started the integration work as a Google Summer of Code (GSoC) funded project. I am the leader of the integration project since December 2009.
BD: How would you describe Freestyle?
TK: As I wrote in the release notes of Blender 2.67, "Freestyle is a new non-photorealistic (NPR) rendering engine integrated into Blender. Originally developed as a stand-alone program in an academic research project, Freestyle provides artists with a new tool set for generating 2D line drawing out of a given 3D scene prepared with Blender. Generated lines can be stylized by a variety of stylization options for tweaking line color, alpha transparency, line thickness, and line geometry. The resulting line art can be combined with other render components (e.g., render passes from the Blender Internal renderer and Cycles) through render layers and the compositor. Examples of Freestyle use cases include cartoon rendering, architectural visualization, technical drawing, blue prints, and computer-generated sketches. Freestyle expands Blender's rendering capabilities on the basis of geometry-based visualization solutions specifically geared to 2D-like computer graphics."
BD: When did you first hear of Freestyle and why did you decide to join the efforts of integrating it into Blender?
TK: If I remember correctly, I got to know Freestyle through a news article about Blender-related projects funded by the 2008 GSoC program. Maxime's Freestyle integration proposal was one of the accepted projects. Since the beginning of my experience with Blender, cartoon rendering was my favorite 3D artwork approach. I was trying to achieve cartoon-like visual effects in Blender, but without much success until then. So the advertised capability of the Freestyle rendering engine was very appealing to me. I began with the stand-alone Freestyle program, and I got really impressed by rendering results from the new tool. Then in early September in 2008, the first Windows build of the Blender Freestyle branch came out. I was one of many Blender users eagerly waiting for the initial product of Maxime's Freestyle integration work for months, so my response was quick. The outcome of initial rendering tests with Freestyle in Blender was just awesome. In the meantime, I found a few technical glitches and addressed them myself through code revisions. I started working with Maxime since then to improve the Freestyle integration into Blender. It was a straightforward decision for me to take some formal responsibility as a member of the Freestyle branch development team as well as a Blender committer, since it was a pleasure for me to be able to directly contribute to the advances in the Freestyle integration work.
BD: Why did the integration take so many years and what were the biggest hurdles you had to overcome?
TK: The integration work took five years simply because of limited time and human resources available for the project. After I took over the project in 2009, I was the only active developer who kept working on Freestyle in Blender. I was time-constrained due to my professional work and daily support for my family. I was able to work on the Freestyle integration project only in my spare time. I knew the expectation from users was really high, but intentionally I didn't push myself too much, because to me the project was just for fun.
Besides the issue of development resources, there were several technical challenges in the Freestyle integration work that required a significant amount of development time and efforts. The biggest hurdles were stability and human-computer interaction.
In the beginning of the integration project, the line rendering with Freestyle was quite unstable. The program tended to fail and stop working even with a simple scene setup. For instance, Freestyle was unable to render the input scene when there were objects behind the camera. Such scenes resulted in abnormal termination of Blender in most cases, so the issue was critical especially for animation rendering. Moreover, there were many other cases of unexpected visual results and unpleasant artifacts. One of the common visual problems was random stray lines that only appeared in a fraction of animation frames. Addressing these kinds of runtime instability and visual artifacts was hence the top priority of the integration project, and the runtime/visual stability has been much improved since then.
It is important to highlight that the initial instability of the Freestyle rendering engine was a natural consequence of its origin and not a fault of the original authors. Freestyle was born as a product of academic computer graphics research. As in many other areas of science and technology, the priority in academic research is the absolute mass of publications in the form of technical papers and books. Software products in this context tend to be left unfinished in many parts, since fully functional programs are often not necessary for experiments to support publications. I guess a majority of academic application codes are left to rot in some storage after publications and never come out for public use, likely because researchers don't have enough resources to finish and release the codes. In this regard, Freestyle is considered a very lucky case where the original authors decided to publish the code as free software. Having this unique opportunity, my primary task was to transform Freestyle from an academic product into a robust computer graphics system that could accommodate a wider range of real-world application scenarios. This was (and in fact has still been) a major challenge in the Freestyle integration project.
Another project component that took more time than expected was the addition of an artist-friendly graphical user interface (GUI). Freestyle is designed to provide users with high programmability so that they can write their own line drawing styles using the Python programming language. In the beginning of the integration project, Freestyle users were supposed to program Python style modules to achieve desired visual effects. Clearly this requirement was limiting the user base a lot, as Blender artists are not necessarily Python programmers. I kept receiving a number of requests for an artist-friendly GUI that would allow interactive manipulation of line stylization parameters. The initial integration plan was to implement it after the trunk merger, but the demand on a genuine GUI for Freestyle was really high. The final decision was to implement a new GUI component before the merge into the trunk is asked. The new GUI had to be designed from scratch. My design goal was to make line stylization options as versatile and flexible as possible. Ideally, the GUI should allow users to do whatever they can do through Python style modules. An obvious design option was a node-based user interface where programming constructs are represented by nodes and links between them, but this approach appeared too demanding in terms of coding time and efforts. Instead, a different approach was taken where a fixed set of line stylization options was carefully chosen and implemented as part of the Blender user interface. The present GUI is a result of many design trials and updates over a long period of time. I hope it helps Blender artists exploit Freestyle capabilities as much as possible.
BD: Great artwork was done with the Freestyle branch even long before it hit the trunk, did you get good feedback from users during that time?
TK: Yes, I had a great deal of feedback from early adopters of the Freestyle branch. The feedback from the users was essential for me to bring the Freestyle integration work to the finish line. Users' feedback was delivered in many forms: reporting bugs, testing bug fixes and new features, providing up-to-date branch builds, sharing Freestyle results, writing about technical know-how, and so forth. In principle I am self-motivated and I work on Freestyle just because I need it. But I also feel privileged when I see others benefiting from the products of my work. This feeling is absolutely rewarding and encouraging, and in the case of the Freestyle integration, the continuous feedback from the users has been a major support that helps me come a long way.
BD: There was some constant begging from Blender users for months if not years. Was that motivating or getting on your nerves?
TK: Responses from Freestyle branch users were absolutely motivating, because there was always something new in the user-side activities. In a long run some users may lose their interest and go away, but there are alway newcomers with fresh interests and new applications. Having such a dynamic and active user base was a huge plus for the Freestyle integration project. For sure there were requests from users that were more difficult to answer and time-consuming to think about. But that is part of the game and basically I enjoyed addressing them.
BD: Since Freestyle has been integrated into trunk, have you used it for personal projects?
TK: Not really, unfortunately. As I said, I keep myself involved in Freestyle integration into Blender because I want to use it. I wish I worked on my own projects using Freestyle and Blender but so far no luck. If time permits, I want to challenge Freestyle capabilities to imitate different drawing styles such as ukiyo-e, art nouveau and bande dessinée.
BD: Do you actively watch out for Freestyle artwork and what was the best use of it you have encountered?
TK: Yes, I have been trying to find Freestyle applications by Blender users since the beginning of the integration work. I tend to like Freestyle artwork and see up-sides no matter how the overall quality is, so it is not easy for me to say the best use. Below I list selected examples of recent Freestyle artwork that I liked the most. [Note from Editor: Tamito's favorites have been placed all over the interview]
This interview was first released in German for the magazine Digital Production. BlenderDiplom is now presenting the interview in its original, non-translated form.