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.

Synopsis

I will implement several enhancements to the sculpting tools in Blender.

The features I want to add, listed by a rough priority, are:

Projection Brush - A new brush type that projects an image onto the mesh.
Miscellaneous Brush Enhancements - Additional brush types and new options for existing brushes.

Benefits to Blender

3D sculpting tools have quickly gained popularity because they have intuitive interfaces. They have become possible because current computers can handle the millions of vertexes required to make it workable. I would say that for me 3D sculpting is the most fun and addictive form of 3D modeling I have ever used and I am sure that other users will agree. My intention is to both help to bring Blender up to par compared to proprietary 3D sculpting tools but also make sure that Blender's sculpting tool is unique and innovative.


Deliverables

Projection Brush There will be a new brush mode where the user can paint "through" an image that covers the view-port. Applying the brush projects the contents of the image onto the mesh. This will also be useful for texture, vertex, and weight painting modes. This is a feature similar to what Mudbox calls "stencils."

Miscellaneous Brush Enhancements There are many potential new brushes and new options for existing brushes. Some can be copied from other programs such as:

The ability to flood fill a model with the current brush, A "nudge" brush for making fine adjustments by moving features slightly without changing them too much, A "snake hook"' brush that can potentially extrude a long tenticle from a mesh. These are examples, there are dozens of possible brushes and I'll need to talk to people more to determine what is most wanted. Another idea that I have come up with, and not seen in any existing program, would be a mesh density brush that has the ability to push or pull vertexes so that there are more or less vertexes in an area but the shape of the mesh is not effected too much. I would work with the community to determine what brushes and features are most desired and prioritize.

Documentation New documentation and even small tutorials will be provided for Partial Mesh Hiding, Projection Brush, and Layering. Changes to existing documentation will be made for any changes to existing brushes.


Project Details

Many of of these features interact with the multi-resolution modifier and many of these features can be generalized to the other painting modes. Therefore careful planning must be made to implement these features correctly.

Projection Brush The projection brush is a generally useful tool across multiple editors. I see this as more of a user interface challenge than a programming challenge since the function of the brush is not particularly difficult to implement. The trick is to create something that fits into Blender well and allows it to be easily accessed from all the different tools and editors it would be useful for. I won't pretend I have an answer already but I intend to find a good solution.

Miscellaneous Brush Enhancements The brushes are currently hard coded into the sculpt_paint module in a large monolithic file that needs to be re-factored. It will be straight-forward enough to add additional brushes but eventually the file will need to be cleaned up and made more modular. I think an important goal while making enhancements to the selection of brushes is that I leave it easier for people to add even more in the future.

Project Schedule

I will be free to work for the entire official 12 week period, as well as the time before starting on May 9th.

Substantial time before even May 9th can be contributed since I have completed my requirements to graduate.

For the duration of the official work period I will be able give the project my full undivided attention and contribute a full 40 hour work week.

I have no planned vacation or other time off, except for a long weekend were I intend to go to Texas to finalize living arrangements.

I anticipate that the order and priority of tasks may change depending on what other students may be doing that relates to the sculpt, multi-resolution, and paint tools.

Bio

Some sample code and screen shots are available at:[1]

I will graduate with a Master's degree in computer science from Arkansas State University in May 2010 and starting in the Fall I am starting at Texas A&M University as a PhD candidate. My master's thesis focused on generic/object-oriented compiler design (to be clear, the design of the compiler is generic and object-oriented, not the target language).

Although my thesis was on compilers I have also devoted considerable class and research time to computer graphics. I have written a path-tracing renderer that is capable of anti-aliasing, soft shadows, glossy reflections, caustics, depth of field, participating media, and motion blur. The renderer is also a near real-time ray tracer that uses SSE and OpenMP for performance.

For the past couple of years I have acted as a graduate teaching assistant helping to teach C++ to undergraduates.

I have used and participated in open source. I contributed the quaternion math and BeOS port to the Allegro game programming library, and I created and supported a distribution of GCC, called DevKit Advance, that made it easy to cross-compile for the Gameboy Advance. I plan to continue to contribute to Blender in the future because it will help support my computer graphics research at Texas A&M, because it is the most advanced open source tool for creating 3D content.