Dev:Ref/GoogleSummerOfCode/2015/Ideas
Google Summer of Code
Google did not select Blender this year for the Summer of Code. We'll try again in 2016!
Read everything about this program here: http://www.google-melange.com/gsoc/homepage/google/gsoc2015
Contacting Us
You can contact us via our bf-committers developers mailing list
Or via IRC: irc.freenode.net #blendercoders
You can also use our wiki.blender.org, your private page, to write down proposal drafts for discussions.
For matters you prefer to discuss more in private, mail Ton Roosendaal: ton at blender.org.
GSoC Project Ideas 2015
The following list provides some ideas for projects that
- a student coder can complete in the time frame given (hopefully not too easy, and not too hard); and
- implements topics marked as "to do" by current developers, implements a coveted feature request from our user community, or improves 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 .
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 submissions that have been merely cut and paste from this list of project ideas with little value added will be swiftly discarded.
All projects will require a strong working knowledge of C/C++, in addition we use Python for much of our interface code (anyone skilled in C/C++ can trivially learn enough Python to make the needed interface code changes). While C++ is present in many of the libraries we use such as the Bullet physics library, Carve booleans and Ceres LSCM. All C++ libraries use a C interface when accessed from within the Blender core code.
Ideas
(don't add to this list unless you are a developer who could potentially mentor the project)
Getting the big picture
A good illustration of projects we do for Blender you can find on many places at blender.org and our wiki. For example check on:
- Release logs
- The 2014 GSoC projects
- The 2013 GSoC projects
- The 2012 GSoC projects
- The 2011 GSoC projects
- Blender Developer todo list
Game Engine
- Using blender as game engine/level editor
- The target of this project is to utilize blender as a game development tool for external engines. To get an idea what blender should be used for, have a look at other game engine tools like the UDK or CryEngine toolset. The outcome of this project should be either a usable editor for a specific engine or a very good document on how to use blender like this, focusing on the actual implementation and showing samples for some imaginary non-existent game engine. Examples of features and important things to think about: adding a RenderSettings.engine (next to Blender Internal, Cycles and Blender Game) to select the game engine and change the UI elements to what is used for the engine; level editing tools, for example setting entities and their properties; necessary exporters for levels, game engine models, etc; baking of light-/shadowmaps and similar for the asset pipeline of the game engine; and many more! -neXyon
Audio
Contact: neXyon
- Playback manager - A class/interface that can handle multiple sounds being played back with different categories assigned (e.g. voice, music, background noise, notifications, etc.) where each category can be controlled. Useful for the game engine for example to easily pause/stop all sounds and adjust volume levels of different categories.
- Binaural audio: 3D audio with headphones, using HRTFs (head-related transfer functions)
- Environmental audio: different sound modifications (filters, reverb, etc.) which are spatially dependant on sound source and listener position. For example a gunshot in a tiled bathroom sounds different than in a room with sound absorbing walls.
- Dynamic music: a music playback interface which can change the music based on some user-defined flags. For example: a game has some random background music while the player runs around and then he starts fighting against a bunch of enemies and the music gets more exciting. This interface should then use predefined loopable music samples and transition nicely between them changing the mood of the background music according to the action that is currently going on.
- Random sounds: repeating sounds all over again sounds boring and is easily noticed by the player (for example footsteps) so this functionality should add a list of sounds to the sound actuator instead of a single one, with the ability to choose sounds randomly or sequential when it is triggered.
- Reverberation
- Back- and front-ends (libogg, libvorbis, alsa, pulse, Windows and OSX backends)
- Filters
- Lipsync: see the not-implemented project idea
Modifiers
- Improved deformations for armature modifier, there have been multiple papers released which show how ugly deformations can be corrected.
See: http://rodolphe-vaillant.fr/?e=59
note, this is quit an advanced project.
Modelling
- Improve tools to work with mesh topology editing - possibly port some of the loop-tools addon to C (or add similar/related tools).
Note, we could have a GSOC project to focus on modelling tools, improvements to existing and/or new tools.
However it would be good for the student to investigate a good selection of tools to work on.
- Improve UV editing tools. Currently there are some obvious additions such as path selection, ripping, better handling of UV islands & seams, features such as mirror editing and better snapping support.
Some logic can be shared with existing BMesh code too to improve handling of UV loops.
- Improve Transform System: (Collection of smaller improvements) ... (just suggestions, not a comprehensive list of all possible changes).
- Possible addition of a taper tool.
- Interactively set PET size
(currently mouse-wheel, could use something similar to setting the brush size). - (optimization) cache manipulator transformation (calculated on draw).
- (optimization) tree-structure for snapping to points (currently loops over all points).
- UV/Transform.
- Individual origin pivot support.
- Mirror support.
- Curve tools
Blender's curve tools aren't very advanced compared to vector editors like inkscape, while its not the purpose of Blender to be a full vector graphics editor, there are areas we could improve.- Freehand drawing (additionally to draw over existing curves, pressure sensitivity use for radius/weight...) - similar to vector drawing applications.
- Support for vertex weights. (as mesh & lattice do, support in the modifier stack).
- Optimize 3d text (tessellate characters only once), sounds simple but involves re-working curve-code..
- Misc tools missing from other areas (vertex slide, decimate/simplify)
User Interface
Here are some tasks that may be used for a user-interface focused GSOC.
- Custom Icons (C, Python API): Support for Addons loading in their own icons
Note, this may seem trivial on face-value, but supporting regular + hi-dpi, lazy loading, RNA-API integration.
Its not a simple weekend task - Multi-line text display, (wrapped text in Blender's UI and support with the layout code), (nice to have for T43451, but other places too)
- Visual hints for button arrows, T38560 T38070
Platform Support
- Add Wayland support (http://wayland.freedesktop.org).
Note, there is an older branch already which may be used as a reference, but was never completed & needs updating for recent changes.
Simulation
- Improve the integration of Mantaflow into Blender. Basic work was completed during the 2014 GSoC in the soc-2014-fluid branch.
Import / Export
- Improve the performance of some importers and exporters. For example, the OBJ exporter is quite slow on huge models, and could be sped up dramatically by coding it in C (a proof of concept of this exists). Alternatively, it might be possible to design and add specialized Python API helper functions to speed up the slowest parts of import and export. A good GSoC project should propose speeding up several important importers and exporters, and can deliver incremental value throughout the project, so this should not be one of those projects that ends with no value added to Blender.
Important Links
Application Template
http://wiki.blender.org/index.php/Dev:Ref/GoogleSummerOfCode/2013/Application_Template
Google Summer of Code, application page
http://www.google-melange.com/gsoc/org2/google/gsoc2015/blender
Blender 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
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 http://wiki.blender.org/index.php/Dev:Ref/GoogleSummerOfCode/2011 http://wiki.blender.org/index.php/Dev:Ref/GoogleSummerOfCode/2012 http://wiki.blender.org/index.php/Dev:Ref/GoogleSummerOfCode/2013 http://wiki.blender.org/index.php/Dev:Ref/GoogleSummerOfCode/2014
Page Siblings <dpl> namespace= titlematch=Dev:Ref/GoogleSummerOfCode/2015/% format=,²{#ifeq:²{PagetitlePartsAmount