GSoC Project Ideas 2011

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.

Each project has multiple potential mentors (we usually have at least 3 individuals as potential mentors for each project). So if you are interested in feedback or discussion of an idea please email our development discussion list bf-committers or visit or irc channel #blendercoders .

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.

Note that 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 links above).

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.

Ideas

(don't add to this list unless you are a developer who could potentially mentor the project)

Modeling Retopology

Improve the Retopology Tools. Retopology tools allow an artist to start with a 'messy mesh' perhaps from sculpting, or from a model that was created without thought about topology; or perhaps from scanned data - and create a new mesh over the top of the original mesh with the same form, but with a new structure that is better suited for animation and other purposes.

Ideas include for improving retopology tools include (pick one or more to provide enough things to occupy your entire time for gsoc)-

quad from nearest points - which creates a quad based on the four nearest vertices or vertex and edge combination to the cursor in screen space; improve visualization so that with xray on the backfacing faces are culled; similarly backface culling for wireframe see videos for clarification of the problem - video1video2video3

Modeling Sculpting

Improve sculpting tools

Ideas for improving sculpting include ((pick one or more to provide enough things to occupy your entire time for gsoc)-

Faster smooth brush - the performance of the smooth brush for sculpting is significantly slower than other sculpting brushes. This will possibly need some clever algorithms.

resymmetrization - when sculpting often times you want a perfectly symmetrical mesh, but sometimes something happens that results in slight assymetry - resymmetrize would copy one side so that it exactly matches the other either from left to right or right to left. See this video for how it is implemented in zbrush - http://www.youtube.com/watch?v=tGBS5gmGc_I

viewport speed with glsl shading - currently sculpt mode is not accellerated when in the glsl drawing mode. Thus viewing materials (matcaps) on your sculpt model in real time is quite slow relative to other sculpting performance.

apply lower for multires modifier - make it so so that all levels below the current display level of a multires modifier can be applied to a mesh while maintaining the higher levels of the modifer as a modifier still. This used to work in 2.49b so is likely not too difficult.

improve editing of multires base mesh - the multiresolution modifier allows an artist to work at different levels of detail on a mesh and have those changes propogated to higher/lower levels of detail. The 'base' (lowest level) of the mesh is editable so that a new topology can be created and then the higher levels of detail are projected onto that detail. Unfortunately the reprojection doesn't work well currently.

Modeling Modifiers

Implement mesh quilting, the wrapping of a 3D mesh pattern repeatedly over the surface of a model. This research paper presents an algorithm for "stitching" together duplicated 3D texture patches into one continuous mesh, while correcting for deformation introduced by the curvature extremes of the object being wrapped. Representing textures as independent 3D surfaces (as opposed to 2D pixmaps wrapped onto 3D objects) allows for greater levels of detail and a more straightforward animation process. Quilting functionality could potentially be used to model chain mail, weaving or bark; the patching algorithm could also be guided to produce strands of ivy, for instance.

UV Unwrapping

UV Unwrap Polishing - there are a large number of small tool and workflow improvements that could be made to the uv unwrapping tools.

Some ideas include (pick one or more to provide enough things to occupy your entire time for gsoc)

symmetrical seam marking - when a seam is marked for unwrapping on one side of a model the mirror seam could be marked on the mirror image of the model. Note that blender already has algorithms for finding topological and geometric symmetrical geometry so it should be fairly simple to hook up the algorithms to do this.
symmetry video

symmetrical layout/constraining of symmetrical geometry - often you wish to peform operations on generated UVs in a symmetric manner. This would port the topological/geometric mirroring algorithms from the mesh tools to the uv tools.

symmetrical selection in the UV editor basically the same as the above but for selection tools.

select vertex path for uvs this would be porting the select vertex path algorith from the mesh tools to the uv tools.

stacking of symmetrical geometry - often times geometry that is exactly the same we will want to use the same image/texture data to save memory however, aligning the uv islands so they exactly overlap can be tedious. This would allow automatic alignment of UV islands for mirrored/symmetrical geometry. stacking

improved stitching and ripping operations

smooth brush in the sculpting tools the smooth brush 'relaxes' the mesh so that the length of each edge tends towards the mean length. A similar tool for UVs is desired. http://www.youtube.com/watch?v=sM0xZ5wDUhQ

scaling along a custom axis often times a UV island you might want to scale it along dimensions other than the standard x/y directions. It would be desireable to be able to scale the UV island based on a direction defined by the mouse angle to the center of the UV island when scaling begins.

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.

Texturing

Improve texture painting - there are a large variety of improvements that can be made to texture painting tools in terms of selection, masking, and brushes

Animation

Skinning/Weight painting polishing - while the automatic skinning is amazing, the tools for tweaking and adjusting final weights are still clunky, and a number of small niceties are missing.

Some ideas are

relax option where you select vertices of a mesh in an extreme pose and the are reweighted so that they 'relax' towards a smoother relationship with neighbor vertexes.

blend between two geometric selections - interpolate weights between the selection of two loops.

See additional videos for inspiration of other tools that might be useful such as ideas from this video might be of use there is also this nudge tool and I'm sure one can find other useful ideas from Maya, Max, XSI, Houdini, Cinema4D and lightwave.

Improve blender for dealing with motion capture data (for example imported from BVH files).Goals for this project could include...

Rig Re-targeting one rigs animation onto another rig.

Animation curve simplification

Turn repetitive motion capture animations into loops.

Video Editing and Compositing

Camera tracking integration Improve Blender for working with live footage (compositing of digital props, characters, and effects into film recordings). There is an existing library libmv that provides tracking capabilities. The Blender side would be implementing exchange of information with libmv (ie video footage, marker and tracker location data, etc.), and interfaces for interacting with libmv. A commercial program that provide similar functionality and interfaces might be PFMatchit (see the tutorials for details) which provides a node based interface for defining data flow; an image editor interface for selection and removal of markers and for masking operations; fcurve editor for checking the quality of the motion generated and for doing smoothing and other operations to improve the tracking. A 3d view for visualizing the tracking points and the camera and object solving curves; and other functionality.

Compositing Improvements Improve a collection of nodes and tools that currently lack in quality like:

Game Engine

Import/Export

Improve Collada Import and Export - There are numerous improvements that could be made to our collada I/O especially in handling of animation data. (C/C++)

We don't have FBX import yet, export is working OK now. (Python)

Get the ZLIB licensed Bullet .blend read/write library, bring it back to 100% Blender compliancy, and implement a basic (Mesh + UV + objects) import/export via a commercial SDK (for example maya, 3ds, zbrush). This library then can be offered on blender.org for researches, simulation coders, game engines, or studios for pipeline integration.

Misc

Blender still needs good support for international texts in the UI, an accessible translation system and support for UTF text drawing. Requires someone who understands requirements for translated UIs and i8n.

Increase Viewport Speed and Eliminate OpenGL cruft - right now we use some older opengl stuff that is quite slow, (opengl version 1 even!) so eliminating these instances and switching to more modern apis could give large viewport increases. (Suggestion: more compliancy to OpenGL ES for future tablet ports). Particularly interested in sculpt for matcap.

Complete Vector Texture Support - The idea is to load SVG files as standard textures, rendered on demand to match the resolution needed by each textured pixel, and cached in a set of tiles. A basic proof of concept exists (as an old plugin at http://code.google.com/p/vectex/ and also as some unreleased test patches against 2.5), however much work needs to be done for SVG drawings to function like standard images. The rendering itself can be done by an add-on library (AGG), but most of the work is to implement a good caching mechanism (which could use the tile cache recently added to Blender), a decent integration with the image filtering support already in place and maybe some enhancement to the SVG features supported. See discussion for more details.

Relationship Editor: The OOPS editor is being removed from Blender 2.5. A good relationship visualizer and editor is still a useful feature 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. (Note: we actually need a new depencency graph system first)