Dev:Ref/GoogleSummerOfCode/2015/Ideas

提供: wiki
移動先: 案内検索

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 .

We especially invite students to contribute based on their past experience and competencies, or based on their current research, so that they can efficiently bring a new development direction for Blender.

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:

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