Brushstroke Tools: Initial Version #328
No reviewers
Labels
No Label
Kind
Breaking
Kind
Bug
Kind: Community
Kind
Documentation
Kind
Easy
Kind
Enhancement
Kind
Feature
Kind
Proposal
Kind
Security
Kind
Studio Request
Kind
Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: studio/blender-studio-tools#328
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "SimonThommes/blender-studio-tools:brushstroke_tools-initial-version"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Package brushstroke tooling developed for the Blender Studio Project Gold production based majorly on Geometry Nodes in a convenient addon to create, manage and edit brushstroke objects.
Principles
Progress
Required:
add helper objectNice to have:
hook up preset system to assets (empty objects, material pointer ?)hook up to bounding box size via context linking with exponent sliderproject on selection
with surface obejctF
to change radiusShift + X
to sample colorKeep Transform
for surface assignmentTo Fix:
rest position behavior with mirror modifiermaterial assignment messed up when preset is initializeduse_attribute
toggle when brush stroke object isn't activemake preset
work on active context brushstroke if not active objectNodes
Brushstroke Tools: Initial Versionto WIP: Brushstroke Tools: Initial VersionWas just reading this because I was curious, left some general code style comments. Maybe that's useful.
@ -0,0 +7,4 @@
m.register()
def unregister():
for m in modules:
Generally it's recommended to unregister in reverse registration order:
for m in reversed(modules):
@ -0,0 +202,4 @@
mod_info = settings.preset_object.modifier_info.add()
mod_info.name = mod.name
utils.mark_socket_context_type(mod_info, 'Socket_2', 'SURFACE_OBJECT')
It's not really necessary to have empty return statements.
@ -0,0 +35,4 @@
if not settings.context_brushstrokes:
return
if len_prev == len(settings.context_brushstrokes):
settings.active_context_brushstrokes_index = idx
Generally, the code would be easier to read if line lengths were more limited. E.g. for Blender we have a 120 line length limit. That also makes it easier to have two files open next to each other. Such limits can be enforced automatically with auto-formatters like
autopep8
(what we currently use in Blender) or e.g.black
.@ -0,0 +124,4 @@
return bs['BSBST_surface_object']
def get_flow_object(bs):
if not 'BSBST_flow_object' in bs.keys():
Would recommend using
x not in y
instead ofnot x in y
for improved readability.https://stackoverflow.com/a/3481700
@JacquesLucke thanks for the input! I implemented most of the suggestions
eeb5453f9c
to88b9de2ab2
Todos from review Session with Francesco:
Fixes:
UX:
Density Max
->Density
Nice to Have:
Simon Thommes referenced this pull request from blender/blender2024-10-08 12:35:31 +02:00
To do
nice to have:
Todo:
"No Valid Surface Object" Message seems buggy when toggling visibility of layers on and off.
typo in tool tip for Normal Contribution: Contibution, r missing
can't see flow lines, unsure if I should delete them or just draw more on top if I change my mind for an area.
Lost my material for a fill and a draw layer once each, one of them fixed itself somehow. Material seems to still exist because the strokes didn't really change and the correct color was showing.
Tool tip phrasing:
Segment Length: Splits brushstroke into shorter segments of set average length.
Split Probability: Increases likelihood of brushstroke splitting into segments.
Taper: Tapers duplicates towards original stroke. 1.000 tapers ends and tips of strokes. -1.000 tapers middle of the stroke towards original.
Spread: Creates distance between brushstroke duplicates around the original.
Random Tilt: Adds tilt to each duplicate stroke. Helps to visually fill gaps around the edges of objects.
Nice to have:
Unsure you can do something about it, but a single undo step undoes not only the last brushstroke I made but also sets back the Bursh Color I picked right before making the brush stroke.
That's an issue with the blender undo stack, when entering edit mode and undoing the first stroke. Nothing I could do something about. The solution is to not undo the first stroke, but delete it instead.
Not important for version 1.
Gently making a suggestion to maybe split dapple resolution from curve resolution.
Adjusting curve resolution is a handy tool to make badly drawn curves on weird meshes nicer and smoother, but once brushstrokes are dappled it becomes tricky to get both the look I want and the curve to be decent.
WIP: Brushstroke Tools: Initial Versionto Brushstroke Tools: Initial Version