From BlenderWiki

Jump to: navigation, search
Note: This is an archived version of the Blender Developer Wiki. The current and active wiki is available on wiki.blender.org.

Short description: This proposal will target usability, feature and system design improvements for blender's paint system

Synopsis

This proposal will target usability, feature and system design improvements for blender's paint system

Benefits to Blender

This proposal will resume work done during the 2.67 release of blender to include more unification of paint modes. To the end user this means more unified access to the tools and also new features that will help with content authoring

Deliverables

There are many things to try to tackle and possibly a lot more will crop up while working on this project. Some are:

  • Unification of symmetry and anchored and area stroke modes across all our paint systems. That means users will be able to use these options on image/vertex/weight paint.
  • Support for curve driven strokes
  • Reuse an efficient data structure for vertex and weight painting
  • Sharpen tool for texture painting
  • Standard tools for painting, bucket fill (possibly with some selection mechanism), gradient, colour pallettes.
  • Better way to select textures for image painting:

Project Details

  • Unification of symmetry and anchored and area stroke modes across all our paint systems. This entails separating the code that sculpt mode uses and reusing this for our other systems. Anchored strokes will need some way to restore the image/mesh data below so this is not so straightforward.
  • Support for curve driven strokes. This will possibly be a stroke mode by itself where the user will be able to set spline points, possibly also defining the pressure at each point by means of a handle and the stroke system will generate the paint dabs on top of the curve. Automatic pressure based on curvature can also be performed.
  • Reuse an efficient data structure for vertex and weight painting

This is architectural work that needs to be done to get rid of vertex and texture paint reliance on OpenGL for vertex selection during painting. This causes a very nasty bug where very dense meshes will have some of their faces skipped while painting due to the faces not being captured by OpenGL. I think reusing sculpt PBVH makes sense here too.

  • Sharpen tool for texture painting. A minor tool that does the opposite of blur, possibly using unsharp masking
  • Standard tools for painting, bucket fill (possibly with some selection mechanism), gradient, colour pallettes. These are all straightforward with the exception of selection mechanisms. The general mask system for the tracker may be useful here.
  • Better way to select textures for image painting: The current system entails going back and forth to UV editor to set active image. A simplified system that will use a UV layer and an image will substitute the old cumbersome system. This will mean that the user won't be able to paint on many textures simultaneously but that is not a common use case I think.

Project Schedule

This project will be active for the whole period of GSOC. The objectives are complex and it is likely that not all of them can be implemented. Possibly there will have to be a choice between one of the big refactoring features (Unification and vertex/weight paint refactoring). I expect that other features can be completed though. Roughly I expect the following times:

  • Unification: about 3-4 weeks
  • Curve driven strokes: 1-2 weeks
  • Sharpen tool about 1 week at most
  • Standard tools for painting about 2 weeks, more if including selection support
  • Vertex/Weight painting system refactoring: 3-4 weeks.
  • Better way to select textures for image painting: about 1-2 weeks. May prove tricky due to interaction with drawing.

There is a time between the end of August and beginning of September where there will be an exam period for my university which means I will have to slow down somewhat to study too.