From BlenderWiki

Jump to: navigation, search

Contacting US

You can contact either the individual running GSoC for us this year (Tom M. aka LetterRip - LetterRip AT GMAIL DOT COM ) Or via our developers mailing list

http://projects.blender.org/mailman/listinfo/bf-committers

Or via IRC

irc.freenode.net #blendercoders

GSoC Project Ideas 2011

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.

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)-

Slice tool for quickly adding loops - blender already has code for drawing on top of an existing mesh so it is primarily just the algorith for generating the new mesh: http://www.3d-coat.com/uploads/pics/rtp_slices.gif

pen tool to quickly draw polygons without the need to fill faces manually. An example can be seen in Modo's Pen tool here: http://www.luxology.com/common/qt/LuxQT.aspx?u=http://video.luxology.com/modo/301/video/PenTool.mov&w=1280&h=780 and another in Topogun via the SimpleCreate tool: http://www.topogun.com/media/videos.htm

Paint Stroke tool for adding faces based on intersecting strokes: http://www.3d-coat.com/uploads/pics/rtp_strokes.gif

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 - video1 video2 video3

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.

sculpting layers - sculpting layers is an idea that is conceptually similar to layers in image painting programs, where layers can be hidden/revealed, overlayed and combined with eacy other, but instead of mixing image data it mixes geometric data. Mudbox sculpt layers - http://www.youtube.com/watch?v=BnSZKZjsLKE ZBrush layzers can be seen in this video - http://www.youtube.com/watch?v=-q-u4EvUIZw

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.

improve mesh baking performance - reduce memory consumption/slowness when baking to normal maps and other baking of sculpt detail. http://www.blendercookie.com/2010/06/30/normal_maps_blender_2_5/

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.

See these videos for additional ideas: video1 video2 video3

  • 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:

http://images04.olx.com.py/ui/5/30/71/1269613937_83782971_3-BUSHI-DOJO-OFRECE-MUAY-THAI-KICK-BOXING-JIU-JITSU-Otros-Servicios.jpg

dof http://www.uruloki.org/felipeblog/imagesflickr6/20090702-hit-girl-en-kick-ass.jpg

Example of a double edge mask: http://homepage.mac.com/juhatak/TEMP/blender/shake_roto.png

Hacky implementation with mesh and vertex colors: http://zanqdo.com/tmp/DoubleEdgeMask.blend

Fluid Sim

  • Extend elbeem fluid sim with thin fluid features

See: http://www.youtube.com/watch?v=GyfB_vQHMAo and: http://www.youtube.com/watch?v=7Who8EpbvCY

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)

Important Links

Application Template

http://wiki.blender.org/index.php/Dev:Ref/GoogleSummerOfCode/2011/Application_Template

Project page

 http://www.blender.org

A guide for new developers

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

Google Summer of Code FAQ's

 http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/faqs

An example of a successful proposal from 2005

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

Previous summer of code projects

 http://wiki.blender.org/index.php/BlenderDev/SummerOfCode2005
 http://wiki.blender.org/index.php/BlenderDev/SummerOfCode2006
 http://wiki.blender.org/index.php/BlenderDev/SummerOfCode2007
 http://wiki.blender.org/index.php/BlenderDev/SummerOfCode2008
 http://wiki.blender.org/index.php/Dev:Ref/GoogleSummerOfCode/2009
 http://wiki.blender.org/index.php/Dev:Ref/GoogleSummerOfCode/2010/Proposals

Thread on forum about 2011 ideas

 http://blenderartists.org/forum/showthread.php?212017-Blender-accepted-into-GSOC-2011

Page Siblings