Google Summer of Code 2008 Report

From K-3D

Jump to: navigation, search

In 2008, K-3D participated for the second time in the Google Summer of Code program. We had had 4 students, all of whom were successfull. The projects were the development of a NURBS toolset, a set of import/export filters, a shader manager and work on NVidia CUDA integration. All of these made use of K-3Ds modular design to create a set of specific plugin modules.



NURBS toolkit

Carsten Haubold (User:Caste) developed a set of NURBS tools. The new features include tools to work with both NURBS curves and surfaces, and tools to create surfaces from curves. Trim curve support is also included. The complete list of plugins can be found at User:Caste/Nurbs_Overview. There is also a short video showing some of the NURBS functionality.

Shader Manager

Shader manager

Alex Curtis created a shader management plugin. One of the long-standing issues with K-3D was the lack of visual tools to manage the Renderman- and other shaders. The shader manager allows for a quick overview of all the shaders in the document, with preview renders that update whenever changes are made to the shaders. See the documentation at NGUIMaterialManagerPanel.

Imported Collada object

Import/Export filters

Carlos Dominguez (User:Carlosadc) added suport for the following popular file formats:

  • SVG, which is imported as a set of NURBS curves, ready for use with the new NURBS plugins
  • Collada
  • 3DS, the 3D Studio format
  • MD2, the Quake format
CUDA benchmark graph

NVidia CUDA Integration

With the arrival of new, powerful GPUs, it is possible to perform certain computations on the GPU. The parallel computations typically encountered in a 3D program like K-3D are an ideal candidate for this. Evan Lezar (User:Evanlezar) investigated the possibility of making use of the GPU in K-3D, using the NVIDIA CUDA API. This resulted in a framework for easy conversion of plugins to make use of CUDA, and some promising results in the dashboard. To keep track of the results, a very useful benchmarking framework was also added to K-3D.

GSoC management

This year, we made several important changes to the approach used last year:

Selection phase

  1. Students were encouraged to supply a code sample, in the form of a simple, working plugin
  2. Projects proposals were to be elaborated on the Wiki user pages, and discussed on the public K-3D development mailing list. This is the exact same procedure as followed by any other developer.
  3. Projects needed to consist of a number of separate plugins, not one monolithic all-or-nothing plugin.
  4. A summer agenda was requested, to evaluate any conflicts with a summer job, thesis, ...

Throughout the project

  1. Students comitted to the SVN trunk
  2. All communication happened on the mailing list, except for evaluation-related subjects, which remained private between mentors and students
  3. Regular development releases were made, to improve the visibility of the work and interaction with the userbase.

In short, the GSoC students were considered to be normal developers, with the only change being that there was a deadline and private evaluation for the project they were working on.


All of our students did a great job this year, resulting in a tangible improvement of K-3D. Many thanks Alex, Carlos, Carsten and Evan!

Personal tools