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.
(don't add to this list unless you are a developer who could potentially mentor the project)
- Improve the sculpting tools. Ideas include hiding geometry, masking parts of the geometry, additional brush options, multiple layers support, better brush UI, and easy displacement map creation.
- Improve the texturing tools. Ideas include adding tiff layers support for texturing, including projecting multiple layers and passes for the new projection tool improvements, adding painting of multiple channels for texturing (ie paint a bump map and diffuse map at the same time), additional brush options, interface improvements such as better thumbnail brush preview generation.
- Integrate PTex texture mapping library. This would be used for storing multires displacement and painted textures, and would need to be integrated as part of the multires modifier, sculpt mode, texture paint mode, and the render engine (or a subset of these).
- Remeshing to automatically create a feature aligned and quad dominant mesh out of a dense and unorganized mesh, which would then be suitable for catmull-clark subdivision, sculpting, good deformations in animation, etc.. See for example quad dominant remeshing and mixed integer quadrangulation. (note that a coder might already be working on this)
- Improve the retopology tools. Ideas include adapting the grease pencil code to add the following tools - 'slices and connect' painting with slices defining the edge rings, and the connect line defining how slices are connected; quad from nearest points - which creates a quad based on the four nearest vertices or vertice and edge combination to the cursor in screen space; http://www.3d-coat.com/retopology/ http://www.topogun.com/media/videos.htm
- Automatic seam creation for UV unwrapping. This would take into account generating islands with little distortion, using as few seams as possible, and putting them in places where they are least noticeable, and preserving symmetry. Various papers have been written on this, a recent one is what you seam is what you get.
- Non-Traditional Devices: Investigate and implement methods to improve using Blender with devices such as tablets, or multi-touch screens. Particularly this would involve implementing functionality to support this better in the event system, documenting how tools should behave to support them, and working on an area such as the transform, sculpt, and paint system to take better advantage of these devices. Experience or strong interest in user interface design is recommended.
- Relationship Editor: The OOPS editor is being removed from Blender 2.5. A good relationship visualizer and editor is still a useful future however. A new editor would try to solve the presenting the data with nicer graph layouts that does not look like a big mess, and based on 2.5 technologies it can allow much more powerful editing than the OOPS editor.
- Improve blender for dealing with motion capture data (for example imported from BVH files). Features such as curve simplification for motion capture data (with curve fitting), Improve the process or re-targeting one rig to another and turn repetitive motion capture animations into loops.
- Integrate Bullet physics in animation system: (advanced), making a rigid body "construction kit", allowing visual editing in 3d for constraints (hinges) and fully interactive forces feedback. Important is to check on well defined or future-proof integration with other physics systems in Blender as well. Biggest issue is that it requires a very good design on UI and interaction level first.
- Game Engine Python API: Refactor and filling in missing API calls, could include mesh access, vehicle & material API's, could also include improved access to physics and input information.
- Unit Tests: Implement unit tests for a part of Blender functionality. These should then cover all operators and properties of a certain area. Various types of tests such as crash tests, regression tests, correctness tests or performance tests are possible. These should run efficiently and help developers avoid breaking things when refactoring or adding new functionality. Existing tools like CTest and CDash may be a good choice since we are already using CMake.