Blender Development Series 1 - First Impression

The result of Google Code of Summer (GSoC 2016) is announced today. I am fortunately accepted by Blender Foundation to work on “Multi-view Camera Reconstruction”. As I work towards this goal, I will document my exploration in the next series of posts. Hope my work in the next months will benefit the users of Blender!

Installation, Bug report and Patches

The first thing to work on a project is to build it from source. Blender has a set of comprehensive building instructions for developers (which is perhaps the most smoothing experience I have to build a software from source). I just follow the instructions for Mac. It is really a huge project so the building process including pull the source code takes a while.

As a side note, if you use an IDE like me (I use Qt-Creator), don’t forget to add a custom building process (make install), after ‘make (-j4)’. The ‘make install’ command copy the necessary libraries to the final application before you can open it in the /bin folder.

After the building process, just navigate to the bin folder and open Blender.app. The software is cute but also full of buttons. For now, let’s just put that aside since I have a whole summer to know about its functionalities. Let’s first get familar with how to submit code patches. For that Blender Foundation has a nice system for browsing bugs, submitting patches and code reviews. As I walked through the building process, I found a cmake configuration bug for mac using Qt-Creator. The bug report and patch submission system is very effective and handy. I submit my patch following the instruction and this issue got quick response. By the end of the day, the bug was resolved and merged into the main code base. Nice work for Blender developers!

Note: An alternative way for patch submission and code review is to use Arcanist, a command line tool for Phabricator, which is the software development platform used by Blender. Blender has already provided us a handy arc set-up guide.

What am I trying to achieve

Here I will just do a quick overview regarding my GSoC 2016 project. As we may know, the estimation of camera motion plays an important role in visual effects (VFX) industry, which enables the interaction between the virtual and the reality. Currently Blender only supports solving camera motion from a single view, which sometimes does not give satisfactory solutions. In this project, I will implement a generic-purpose multi-view tracking system that incorporates witness cameras to strengthen the estimation result. A full version of my proposal has been created under the blender wiki website.

Useful Resources

Besides the official New Developer Advice, here are some of the links that I found useful for the development:

(0) The graphical code layout is definitely useful, though it may be out-dated.

(1) Blender has a strict coding style both for C++ and python. You may consider set up your editor configurations according to this page before you proceed.

(2) The Files Structure of the code base can be a good start point for reference.

(3) API for python tools: A major part of my work would involve the UI modification work. So I guess it is better to know more about python scripting.

(4) A web portal for Blender GSoC 2016.

(5) The user manual: The manual is available in English, Chinese, German, French and Russia.

Written on April 23, 2016