The clay strips brush coded by Jason Wilkins is enabled in trunk now.
The default .blend hasn’t been updated yet, so you’ll need to create a new brush and change its tool to “Clay strips”. Note that the tool property is now in the Brush menu rather than the toolbar.
Unlike the other brushes, the clay strips brush uses a cube test to define its area of influence (as opposed to a sphere.) The brush curve still behaves normally, so you can choose between a full cubic effect or a softer look that blends better. In the image above, the three embedded cubes were drawn with a flat brush curve and anchored stroke mode; the rest uses spacing stroke with various brush curves.
The poly map tells you which polygons use each vertex, information that is not normally available outside of edit mode.
It’s a relatively small amount of memory compared to some of the bigger mesh element/VBO allocations, but for a mesh of 1.5 million quads (non-multires) it reduces the size of the adjacency allocation from 168MB to 48MB (for 64-bit builds.)
This feature began as an ugly hack back in 2.4x, got rewritten during GSoC, and is finally committed to trunk with support from the Blender development fund. Thanks all for your help and support; there’s more to come!
There are no feature changes here, but the underlying code has changed a bit, so there’s a good chance that I’ve broken everything. As always, please let me know if you see problems…
Here’s an updated masking patch that should apply cleanly against current trunk: masking-03.diff
Note that in this update, material colors aren’t working correctly. I’m pondering how best to address this and other drawing problems now.
Past couple days I’ve been committing some code cleanups to the non-sculpt drawing code. It’s still a lot of code to wade through, but it’s at least a little less verbose now.
Example of multiple materials drawing correctly in sculpt mode (click to embiggen)
Recently I’ve been committing some improvements to the sculpt PBVH drawing code. None of these changes affect the fancier drawing modes — GLSL and all that is still not accelerated by the PBVH when sculpting. However, there are still some performance and feature improvements.
The most noticeable change is pictured at right: materials and shading mode (smooth/flat faces) are now drawn correctly in sculpt mode. Previously, the material and shading mode were set once for each PBVHNode (each of which typically contains thousands of polygons.) This is still the case, but now PBVHNodes are split until all the faces they contain (whether mesh or multires faces) all share the same material and shading mode.
Another recent change involves building VBOs for multires meshes. This is done by mapping a vertex buffer as write-only and copying multires grids (containing coordinate and normal data) into the buffer. There was a small bug in this code though: when sculpting on a flat-shaded model, the normals in the buffer were updated in a way that read from the buffer before writing to it. This is an invalid operation for a write-only buffer, and while most drivers won’t crash if you do it, I found that on my particular drivers (Gallium/Radeon) it makes a huge difference in performance. (This was on the order of seconds for dense meshes.)
Finally, improvements have been made to use better normals for flat shading. The results should in general look quite close to non-sculpt normals, with the exception of non-multires with VBO.
As part of my Blender development fund work, I’m working to bring sculpt masking (a feature from the 2010 Google Summer of Code) into trunk.
Here is a patch against current trunk for testing: masking-01.diff. There’s also a tarball of the git patches if you’d prefer something more fine-grained. Note that this patch sits on top of the partial-visibility code, so you’ll find both features available after building with these patches. If you make a test build, please consider uploading it to Graphicall and post a link in the comments.
You’ll find in-progress documentation on masking in the wiki. Although these patches are not quite finished yet, they are ready for testing. I’d appreciate feedback on the masking tools. In particular, how’s the UI? And of course any notes on crashes and other bugs would be good to have as well.
Multires partial visibility demonstrated on Suzanne
Back in the ancient days of Blender 2.4x, sculpt had a feature called partial visibility. You could hide areas of the mesh via border selection. This feature went away during the 2.5 rewrite, which was probably a good thing. The old code was nasty, touching too many parts of the code and resulting in a lot of file corruption bugs. My bad.
I rewrote the partial visibility tool during the 2010 Google Summer of Code as a much “safer” tool that mainly affects the PBVH (the acceleration structure used by sculpt mode for drawing and querying the mesh.) This code never quite made it to Blender trunk, but I’ve been working on a freshening that code up and getting it ready for a proper release as one part of the work I’m being sponsored to do by the Blender development fund.
The code has been cleaned up in various ways, and from the user perspective you’ll notice that multires hiding now works as you’d expect, rather than the very “blocky” look it had in the GSoC branch.
With BMesh coming soon to trunk (possibly as soon as 2.63) I’ve rebased my patches against that. Here’s a single diff containing the entire changeset: partial-visibility-20120210-00.diff (again, this is against the bmesh branch, not trunk!)
There’s also some in-progress documentation for partial visibility on the Blender wiki.