From BlenderWiki

Jump to: navigation, search

General Information

Deadline is March 26th! (5:00 PM Pacific time (12:00 AM UTC March 27, 2007)

In order to be accepted for a Google Summer of Code (GSoC) grant, your proposal must really stand out. Student applications are submitted at the Google Summer of Code website: http://code.google.com/soc/

Important! The Perl Foundation has written some excellent guidelines for structuring an GSoC proposal, and we ask that you follow them when writing your proposal:

http://www.perlfoundation.org/gc/grants/proposals.html

An example of a successful proposal from 2005 is here:

http://mediawiki.blender.org/index.php/BlenderDev/SoCIKProposal

A page outlining all of the 2005 Google Summer of Code projects for Blender is here:

http://mediawiki.blender.org/index.php/BlenderDev/SummerOfCode2005

The Successful applications for 2006 can be found here:

http://wiki.blender.org/index.php/BlenderDev/SummerOfCode2006

Requirements for acceptance

  • You must be able to work on your Summer of Code project fulltime for the summer (i.e., we will favour applicants who have no summer school or fulltime job elsewhere);
  • You must prove that you have successfully compiled Blender from source on your prefered platform;
  • You must currently be a user of Blender with a good knowledge of many of the program's features;
  • You must be thoroughly proficient in C. Some projects may be based in C++ or python, so you should be proficient in those languages if you intend to use them.
  • You must be willing to submit weekly progress reports and be available for weekly IRC meetings;
  • All short listed candidates will undergo a brief interview on IRC.

Project Ideas

The following list provides some ideas for projects that

1) a student coder can complete in the time frame given (hopefully not too easy, and not too hard); and

2) either implement a coveted feature request from our user community, or improve upon existing code.

Applicants are also welcome to choose a project of their own design that implements a feature they wish Blender had. We especially invite students to contribute based on their past experience and competences, or based on their current research, so that they can efficiently bring in new development directions for blender.

Be warned though, some areas of the code are scheduled for dramatic architectural changes and are beyond the scope of a Summer of Code project. With this in mind, it may be prudent for an applicant to pass ideas around on the developer's mailinglist before investing a lot of time on a proposal (see link below).

Additional project ideas may be added to this list, so you may want to check this page later as the application deadline looms.

Please note that proposals that have been merely cut and paste from this list of project ideas with little value added will be swiftly discarded.


Audio

  • Restructure existing audio support in Blender, so it uses a single internal audio API (and not SDL and OpenAL together). This should keep game audio running as well.
  • Add sound-to-object binding to allow for the rendering of real 3D spacial-dependent surround sound. Example: a character turns his back, speaking to a wall. The sound voice escapes the mouth area, bounces off the wall, and the echoes back to the camera with lower volume and slight reverberation from the rear speakers.

Interface

  • Generic manipulator api covering current functionality and allow custom extensions, for example edit mode/manipulators for Lamps, Cameras, Modifiers, Nodes. Twiddling buttons in a panel does not lead to a natural workflow for things could be done easily and interactively in the 3D window (such as spotlight size, shadow buffer clipping, etc.).

Modeling

  • Beveling improvements: improve the tool to work on groups of faces, edges, or vertices, preferably with a robust enough implementation that a 'bevel modifier' can also be created.
  • curve API redesign. The redesign is intended to extend the system to also handle the following: Fix the 3D twisting bug; Adaptive subdivision for render; More editing tools such as inserting a CV at a chosen place on a segment, while keeping the shape identical, and vice versa; Make the various bevel and taper features into modifiers for better control; More modifiers for curves (e.g.. the mesh ones like mirror, or a smoothing modifier); Integration with mesh modifiers like subsurf via the 'derivedmesh' output (i.e. the polygonalized result of bevels/tapers).
  • Enhancements for 'crazy space'. Editing meshes and other object types deformed by any combination of armatures, lattices, curves, etc. should be rock solid. The student that handles this must be particularly gifted, as it involves advanced geometric problems (for example, calculating an 'inverse' for a Catmull-Clark subdivision surface).
  • Object attribute transferral (like XSI's GATOR), copying data such as vertex colours, UVs, weights, between models with differing topology

Texturing

  • Texture Baking improvements, to achieve real tangent space normal maps, and bake normal maps out of higher resolution meshes.

Animation

  • General usability analysis and clean up of the NLA window to provide the animator with a better working experience. Relationship of this window with the other animation editor windows should be revisited.
  • Non Linear Shape key editor, with strips and blending modes

Simulation

  • Create and integrate generalized API and tools for physics and collisions in Blender, to be used for softbody, cloth, particles, rigid body, armatures.

Rendering

  • Improve performance of raytracing (for example, through better spatial organization). The applicant must have a solid understanding of octrees/bsp/kd-tree/etc.
  • Volumetric effects
  • Techniques for improved shading (final gather, caustics, subsurface scattering... global illumination in general).
  • Shadow calculation methods as appeared in research papers recent years (fast render, smooth results).
  • Render export/plugin API: extend Blender to have better access to external renderers, including pixie, aqsis, mentalray, prman, yafray, povray. The applicant should have good knowledge of the Renderman standard, and basic knowledge of yafray/povray.
  • Displacement map / normal map generation, useful for sculpt mode among other purposes

Import/Export

  • DXF importer/exporter improvements (Python/C)
    • Add support for drawing line width/color in Blender
    • Improve blenders editing tools to work on an imported DXF file
    • Support DXF text objects
    • Improve the process of taking a DXF into Blender and making a 3d model from the 2D or 3D content for architectural rendering.
  • BVH importer/exporter improvements (Python/C)
    • Note, a BVH importer is alredy included with Blender, an exporter was also written once but is not included anymore because it only worked with a hierarchy of animated Empty's rather then an Armature
    • Write a BVH exporter that works with armatures.
    • Write an IPO curve fitting function to make imported BVH animations files easier to edit.
    • Write a tool to clean up jitter in an IPO curve (filter to improve a BVH from a motion capture device).
    • Test how well Blender is able to re-target an animation (apply the animation from 1 BVH to an existing armature) - Improve blenders animation tools for this process since BVH's are ofter used for this.
  • Second Life Exporter
  • Importer/Exporter for Blender Video Sequence editor
    Python has initial python support for the video sequence editor, import/export could allow interoperability with other video editors.

Game Engine

  • If your interest lies in real-time technologies, you could choose a project that enhances the built-in Game Engine.



Other

  • Font previews/loading - ability to see the font as it would appear in the font selection menu, similar to what is available in the gimp or inkscape.
  • Recode radiosity to be threaded, or implement techniques that improve the realism of the lighting (in a threaded way).


  • Dimensioning: Some discussion on possible implementations can be found on our mailing list, in particular:

http://projects.blender.org/pipermail/bf-committers/2006-April/014298.html http://projects.blender.org/pipermail/bf-committers/2006-April/014281.html http://projects.blender.org/pipermail/bf-committers/2006-April/014276.html

  • Improve 3D texture paint
    • Add projection painting to paint across seams.
    • Speed up painting by partially redrawing the screen.

Important Links

  • Project page:
 http://www.blender.org
  • Developer's mailinglist:
 http://projects.blender.org/mailman/listinfo/bf-committers
  • A guide for new developers:
 http://mediawiki.blender.org/index.php/BlenderDev/New_Dev_Info