Sculpt Node Brush
Petar Dosev
Contact Info:
- [email protected]
- pdosev on blender.chat and projects.blender. org
- github. com/pvdosev
(I had to mangle the links so the forum would let me post)
Synopsis:
I want to build a brush system configurable using a node interface. As can be seen with geometry nodes, such a system would give flexibility to artists to customize their tools and achieve new kinds of effects that would be difficult and time consuming to create in C++.
Benefits:
Currently brushes have a limited amount of configuration options, and adding anything new requires writing complicated code. Also, it is somewhat easy to toggle the wrong setting, and then the brush stops working as expected, or you get the wrong result. Node interfaces are flexible, powerful, and already familiar to many Blender users. And if integrated with the brush assets project, this could give artists an easy way to share and experiment with new brushes.
Deliverables:
- A new brush type in sculpt mode, living alongside all other brushes.
- A new editor type, the brush node editor.
- A selection of basic nodes that work together well: vector inputs and vector math.
- User documentation.
Project Details:
Generally, a brush works by iterating over the vertices around the cursor and applying a displacement to them. This displacement would be the main output of a node group. It could be driven by many input nodes: camera direction, surface normal, pen pressure, pen tilt, stroke length, time since stroke has begun, random noise, texture maps, etc. They would be processed with math, vector math, ramps, and other intermediate nodes, similar to the other node editors.
For this project specifically, I would limit it to the basics: surface and cursor normal inputs, camera direction, and vector math nodes. If time allows, I’ll add more, but a lot can be done even with just a few nodes. The goal for this summer is a more customizable draw brush.
To simplify things for most artists, more intermediate nodes could be added, so they don’t have to do a bunch of vector math. It would make sense to model them off of the existing Blender brushes, like plane projection for clay-like brushes. This will need design, experimentation and user feedback, to see what artists would find easy to use.
I can imagine many extra features which would be very nice to have, but would be out of scope of the initial implementation, such as color output, or simulation nodes style feedback for snake hook type brushes.
Schedule:
I expect to be able to work around 25 hours per week, since I’m also a part-time C++ tutor at my college.
Dates | Details |
---|---|
May 27 - June 7 (2 weeks) |
|
June 10 - July 5 (4 weeks) | Iterate on design. Implement input and intermediate nodes, prioritized by user feedback and research. |
July 8 - July 26 (3 weeks) | Cleanup code, optimize, fix bugs, getting it ready for merging into main |
July 29 - August 9 (2 weeks) | Write documentation, get code reviewed and hopefully merged |
August 12 - August 23 (2 weeks) | Gap weeks for any remaining work |
Bio:
I am a second year computer science student, currently at Broward College. I discovered Blender around 2017, and I’ve been sculpting characters ever since! This got me interested in computer graphics in general, and that’s how I ended up in this field. I only looked into contributing to Blender recently, and the code wasn’t nearly as scary as I expected. I ended up fixing an issue that has bothered me for a while: #111665 - Fix #104022: Expand Mask inverted fill - blender - Blender Projects
It’s also the reason I’m writing this proposal. I can think of many great tools I’d like to use, and I want to try make one.