Brushstroke Tools: Initial Version #328

Merged
Simon Thommes merged 229 commits from SimonThommes/blender-studio-tools:brushstroke_tools-initial-version into main 2024-11-06 15:03:47 +01:00
Member

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

  • base implementation of features on technical level should be as generic as reasonably possible
    • proof-of-concept for potential future node-tools workflow
  • allow highly flexible workflow for advanced users, while providing intuitive and simple UX for the average user
  • avoid changes to surface objects (use on linked data)

Progress

Required:

  • initial migration from (WIP) Scribble Buddy repository
  • convert into extension
  • include brushstroke assets in resources
  • use brushstroke node-groups for presets
  • add scatter(/fill) functionality
    • split presets into categories
    • create flow object
    • integrate scattering nodes
  • define context flow object (flag + context)
    • add concept and tracking of flow object
    • context flag in modifier
  • additional context link types (Material, UVMap)
  • Reuse surface object instead of stacking
  • display brushstroke Modifier UI based on context
    • Show sibling context
    • UI for multiple context brushstroke objects
    • detach modifier display from active object (?)
  • handle active context brushstrokes switching
    • active object / selection
    • mode
  • add operators to uilist
    • delete
    • edit
    • duplicate
    • add helper object
    • Select Surface
    • Copy to selected surface objects
    • Copy All to selected surface objects
  • make edit mode node tools available for marking brush flow
  • fix pointer property editing in viewport context
  • basic material style setup
  • expose material properties as part of preset
  • node-group refactor (scope TBD, as modular as possible)
  • deformation handling
    • setting to handle deformable state conveniently
    • warning for linked data if rest position isn't set
    • warning about constructive modifiers that UVs/rest position might be duplicated
  • validate/mitigate performance penalty of continuous context checks
  • set up parenting relation
  • options to simplify modifier UI by hiding/pinning individual sockets (ability to reset)
  • preferences to include textures/datablocks or link
  • Implement toggle for deforming surface behavior
  • operators to fix mod_info data once out of sync
  • operator to fix render settings
  • setup curves for sculpting with surface
  • set up new modifiers with info data
  • write docs

Nice to have:

  • Color options in material as alternative to brush color
  • change edit button label depending on context method
  • brushstrokes renaming
  • pie menu for edit mode operators
  • allow no surface context
  • hook up preset system to assets (empty objects, material pointer ?)
  • allow for link workflow
  • allow resource path customization
  • brush stroke style management and customization
  • create new brush style node-groups and push to library based on atlas image
    • potentially customizable atlas layout
  • customizable default naming pattern
  • customizable collection assignment rules
  • estimate fill density
    • hook up to bounding box size via context linking with exponent slider
  • display link enum options based on input type
  • more context link types
  • operators to create and assign flow/break etc. afterwards
  • option to reuse flow object
  • expose material viewport color
  • visibility options in layer stack
  • use project on selection with surface obejct
  • copy settings to selected
  • copy brushstrokes to selected surface
  • context dependent UI based on enum sockets
  • tag brushstrokes object with addon version number
  • advanced draw tool UX
    • F to change radius
    • Shift + X to sample color
    • Expose more tool settings
  • refresh operator to re-import resources and replace data-blocks
  • relocate operator to change library path of existing links
  • propagate Warnings in UI for 4.3
  • operator to upgrade node-groups to new version
  • asset library versioning
    • store and read version number of local library
    • give UI to inspect versions on mismatch and ability to upgrade assets
  • brush style management
    • mark brush style node-groups with custom prop
    • register available brush styles in preferences
    • import on selection
    • install new brush styles
    • add own brush style based on atlas
    • add brushstroke style fallback
  • global brushstrokes visibility toggle
  • add brush style inputs to UI
  • add overview of installed styles in user preferences
  • texture as fallback in material
  • handle Keep Transform for surface assignment
  • expose show toggle

To Fix:

  • rest position behavior with mirror modifier
  • make new bs active
  • double undo step on custom draw tool
  • re-init seed on duplication
  • deselect other objects on brushstroke selection
  • rename modifiers
  • image texture path options
  • material assignment messed up when preset is initialized
  • UVmap linking on surface draw method (?)
  • fix use attribute button
  • select active + edit accumulates editing context
  • add deformation modifier on flow curves
  • allow id picking for textures and materials
  • tracking active brushstrokes layer
  • write back preset of active brushstrokes layer, even when not active object
  • nullchecks (e.g. deleted surface obj)
  • missing icon for draw tool
  • missing constraint on flow object
  • keep context all links when writing back to preset
    • copy complete socket info to brushstroke object
  • change use_attribute toggle when brush stroke object isn't active
  • change delete modifier operator when brush stroke object isn't active
  • make make preset work on active context brushstroke if not active object
  • update asset library directory when changing resource path
  • de-duplicate utility node-groups
  • import brushstroke material if not found
  • changing brush style retains inputs weirdly
  • check length based picking
  • improve coplanar case with minimal twist
  • don't show attribute toggle on inputs that don't support it (e.g. density)
  • switch context material on selection (viewport)
  • image file packing using wrong path
    • don't pack if already packed (avoid crash)
  • flow editing broken
  • context material not set properly
  • error when deleting object
  • performance issue with forced time dependency for animation
  • copy to selected only working when enabled
    • at least avoid duplicating partial data

Nodes

  • refactor and modularize
  • surface vs point flow modes
  • separate meshing node-group (?)
  • propagate additional properties from flow curves
    • size
    • color
    • noise
  • random orientation without flow
  • randomization of general orientation
  • color methods
  • break on surface creases/edges
  • figure out proper normals (alternatively)
  • tangent space back-deformation
  • improve fade interpolation
  • tweak FX node parameters
  • expose random width/length
  • expose more default brush style settings
  • color modes for surface draw modifier
  • fix normals to be smarter in general
  • tangent space smoothing to avoid intersection
  • mask by material
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 - base implementation of features on technical level should be as generic as reasonably possible - proof-of-concept for potential future node-tools workflow - allow highly flexible workflow for advanced users, while providing intuitive and simple UX for the average user - avoid changes to surface objects (use on linked data) --- ### Progress #### Required: - [x] initial migration from (WIP) [Scribble Buddy repository](https://projects.blender.org/SimonThommes/scribble-buddy) - [x] convert into extension - [x] include brushstroke assets in resources - [x] use brushstroke node-groups for presets - [x] add scatter(/fill) functionality - [x] split presets into categories - [x] create flow object - [x] integrate scattering nodes - [x] define context flow object (flag + context) - [x] add concept and tracking of flow object - [x] context flag in modifier - [x] additional context link types (Material, UVMap) - [x] Reuse surface object instead of stacking - [x] display brushstroke Modifier UI based on context - [x] Show sibling context - [x] UI for multiple context brushstroke objects - [x] detach modifier display from active object (?) - [x] handle active context brushstrokes switching - [x] active object / selection - [x] mode - [x] add operators to uilist - [x] delete - [x] edit - [x] duplicate - [ ] ~~add helper object~~ - [x] Select Surface - [x] Copy to selected surface objects - [x] Copy All to selected surface objects - [x] make edit mode node tools available for marking brush flow - [x] fix pointer property editing in viewport context - [x] basic material style setup - [x] expose material properties as part of preset - [ ] node-group refactor (scope TBD, as modular as possible) - [ ] deformation handling - [x] setting to handle deformable state conveniently - [ ] warning for linked data if rest position isn't set - [ ] warning about constructive modifiers that UVs/rest position might be duplicated - [ ] validate/mitigate performance penalty of continuous context checks - [x] set up parenting relation - [x] options to simplify modifier UI by hiding/pinning individual sockets (ability to reset) - [x] preferences to include textures/datablocks or link - [x] Implement toggle for deforming surface behavior - [ ] operators to fix mod_info data once out of sync - [x] operator to fix render settings - [x] setup curves for sculpting with surface - [x] set up new modifiers with info data - [ ] write docs #### Nice to have: - [x] Color options in material as alternative to brush color - [x] change edit button label depending on context method - [x] brushstrokes renaming - [x] pie menu for edit mode operators - [ ] allow no surface context - [ ] ~~hook up preset system to assets (empty objects, material pointer ?)~~ - [x] allow for link workflow - [x] allow resource path customization - [ ] brush stroke style management and customization - [ ] create new brush style node-groups and push to library based on atlas image - [ ] potentially customizable atlas layout - [ ] customizable default naming pattern - [ ] customizable collection assignment rules - [x] estimate fill density - [ ] ~~hook up to bounding box size via context linking with exponent slider~~ - [ ] display link enum options based on input type - [x] more context link types - [ ] operators to create and assign flow/break etc. afterwards - [x] option to reuse flow object - [x] expose material viewport color - [x] visibility options in layer stack - [x] use `project on selection` with surface obejct - [ ] copy settings to selected - [x] copy brushstrokes to selected surface - [x] context dependent UI based on enum sockets - [x] tag brushstrokes object with addon version number - [ ] advanced draw tool UX - [ ] `F` to change radius - [ ] `Shift + X` to sample color - [ ] Expose more tool settings - [ ] refresh operator to re-import resources and replace data-blocks - [ ] relocate operator to change library path of existing links - [ ] propagate Warnings in UI for 4.3 - [ ] operator to upgrade node-groups to new version - [x] asset library versioning - [x] store and read version number of local library - [x] give UI to inspect versions on mismatch and ability to upgrade assets - [ ] brush style management - [x] mark brush style node-groups with custom prop - [x] register available brush styles in preferences - [x] import on selection - [x] install new brush styles - [ ] add own brush style based on atlas - [x] add brushstroke style fallback - [ ] global brushstrokes visibility toggle - [x] add brush style inputs to UI - [x] add overview of installed styles in user preferences - [ ] texture as fallback in material - [ ] handle `Keep Transform` for surface assignment - [ ] expose show toggle #### To Fix: - [ ] ~~rest position behavior with mirror modifier~~ - [x] make new bs active - [x] double undo step on custom draw tool - [x] re-init seed on duplication - [x] deselect other objects on brushstroke selection - [x] rename modifiers - [x] image texture path options - [ ] ~~material assignment messed up when preset is initialized~~ - [x] UVmap linking on surface draw method (?) - [x] fix use attribute button - [x] select active + edit accumulates editing context - [x] add deformation modifier on flow curves - [x] allow id picking for textures and materials - [x] tracking active brushstrokes layer - [x] write back preset of active brushstrokes layer, even when not active object - [x] nullchecks (e.g. deleted surface obj) - [x] missing icon for draw tool - [x] missing constraint on flow object - [x] keep context all links when writing back to preset - [x] copy complete socket info to brushstroke object - [x] change `use_attribute` toggle when brush stroke object isn't active - [x] change delete modifier operator when brush stroke object isn't active - [x] make `make preset` work on active context brushstroke if not active object - [x] update asset library directory when changing resource path - [x] de-duplicate utility node-groups - [x] import brushstroke material if not found - [x] changing brush style retains inputs weirdly - [ ] check length based picking - [ ] improve coplanar case with minimal twist - [x] don't show attribute toggle on inputs that don't support it (e.g. density) - [x] switch context material on selection (viewport) - [ ] image file packing using wrong path - [x] don't pack if already packed (avoid crash) - [x] flow editing broken - [x] context material not set properly - [x] error when deleting object - [x] performance issue with forced time dependency for animation - [ ] copy to selected only working when enabled - [x] at least avoid duplicating partial data --- ### Nodes - [ ] refactor and modularize - [ ] surface vs point flow modes - [ ] separate meshing node-group (?) - [ ] propagate additional properties from flow curves - [ ] size - [x] color - [ ] noise - [x] random orientation without flow - [x] randomization of general orientation - [x] color methods - [ ] break on surface creases/edges - [x] figure out proper normals (alternatively) - [ ] tangent space back-deformation - [ ] improve fade interpolation - [ ] tweak FX node parameters - [ ] expose random width/length - [x] expose more default brush style settings - [ ] color modes for surface draw modifier - [ ] fix normals to be smarter in general - [ ] tangent space smoothing to avoid intersection - [x] mask by material
Simon Thommes added 1 commit 2024-08-21 14:55:20 +02:00
- initial migration from (WIP) Scribble Buddy repository (https://projects.blender.org/SimonThommes/scribble-buddy)
- convert into extension
Simon Thommes added 1 commit 2024-08-21 15:20:37 +02:00
Simon Thommes added 3 commits 2024-08-21 16:21:47 +02:00
Simon Thommes added 2 commits 2024-08-21 18:53:48 +02:00
Simon Thommes added 1 commit 2024-08-22 14:49:50 +02:00
Simon Thommes added 3 commits 2024-08-22 17:27:08 +02:00
Simon Thommes added 2 commits 2024-08-22 18:52:57 +02:00
- include initial brushstroke material
- add initial brush atlas library
Simon Thommes added 3 commits 2024-08-22 19:30:10 +02:00
Simon Thommes added 2 commits 2024-08-23 16:21:59 +02:00
Simon Thommes added 1 commit 2024-08-23 17:53:00 +02:00
Simon Thommes added 3 commits 2024-08-23 18:58:14 +02:00
Simon Thommes added 2 commits 2024-08-23 19:11:19 +02:00
Simon Thommes added 1 commit 2024-08-23 19:25:36 +02:00
Simon Thommes changed title from Brushstroke Tools: Initial Version to WIP: Brushstroke Tools: Initial Version 2024-08-26 12:15:43 +02:00
Simon Thommes added 3 commits 2024-08-26 12:41:47 +02:00
Simon Thommes added 1 commit 2024-08-26 12:51:06 +02:00
Jacques Lucke reviewed 2024-08-26 12:52:27 +02:00
Jacques Lucke left a comment
First-time contributor

Was just reading this because I was curious, left some general code style comments. Maybe that's useful.

Was 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:
First-time contributor

Generally it's recommended to unregister in reverse registration order: for m in reversed(modules):

Generally it's recommended to unregister in reverse registration order: `for m in reversed(modules):`
SimonThommes marked this conversation as resolved
@ -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')
First-time contributor

It's not really necessary to have empty return statements.

It's not really necessary to have empty return statements.
SimonThommes marked this conversation as resolved
@ -0,0 +35,4 @@
if not settings.context_brushstrokes:
return
if len_prev == len(settings.context_brushstrokes):
settings.active_context_brushstrokes_index = idx
First-time contributor

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.

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`.
SimonThommes marked this conversation as resolved
@ -0,0 +124,4 @@
return bs['BSBST_surface_object']
def get_flow_object(bs):
if not 'BSBST_flow_object' in bs.keys():
First-time contributor

Would recommend using x not in y instead of not x in y for improved readability.

https://stackoverflow.com/a/3481700

Would recommend using `x not in y` instead of `not x in y` for improved readability. https://stackoverflow.com/a/3481700
SimonThommes marked this conversation as resolved
Simon Thommes added 3 commits 2024-08-26 13:13:08 +02:00
Author
Member

@JacquesLucke thanks for the input! I implemented most of the suggestions

@JacquesLucke thanks for the input! I implemented most of the suggestions
Simon Thommes added 1 commit 2024-08-26 14:19:09 +02:00
Simon Thommes added 2 commits 2024-08-26 17:16:43 +02:00
Simon Thommes added 4 commits 2024-08-27 15:13:02 +02:00
Simon Thommes added 2 commits 2024-08-27 17:00:35 +02:00
Simon Thommes added 1 commit 2024-08-27 17:10:33 +02:00
Simon Thommes added 2 commits 2024-08-27 17:23:05 +02:00
Simon Thommes added 1 commit 2024-08-27 17:49:45 +02:00
Simon Thommes added 1 commit 2024-08-27 18:03:46 +02:00
Simon Thommes added 8 commits 2024-08-28 16:53:29 +02:00
The manual_shot_name prop was being evaluated exclusively (ignoring
shot_name, which is set on shot init). This made it impossible to
submit newly initialized shots unless a manual_shot_name was set.

Now both props are taken into account, and if manual_shot_name is not
set, we show show_name as placeholder.
Take into account the existence of strip.kitsu.shot_name in more
places (currently we were only evaluating manual_shot_name.
Simon Thommes force-pushed brushstroke_tools-initial-version from eeb5453f9c to 88b9de2ab2 2024-08-28 17:29:34 +02:00 Compare
Simon Thommes added 1 commit 2024-08-28 17:42:54 +02:00
Simon Thommes added 2 commits 2024-08-28 19:03:16 +02:00
Simon Thommes added 1 commit 2024-08-29 19:52:00 +02:00
Simon Thommes added 1 commit 2024-08-30 19:05:17 +02:00
Simon Thommes added 2 commits 2024-09-02 11:51:17 +02:00
Simon Thommes added 6 commits 2024-09-02 16:07:57 +02:00
Simon Thommes added 2 commits 2024-09-02 16:53:28 +02:00
Simon Thommes added 1 commit 2024-09-02 18:04:25 +02:00
Simon Thommes added 2 commits 2024-09-02 19:16:31 +02:00
Simon Thommes added 2 commits 2024-09-03 11:01:43 +02:00
Simon Thommes added 1 commit 2024-09-03 13:55:23 +02:00
Simon Thommes added 1 commit 2024-09-04 20:01:00 +02:00
Simon Thommes added 2 commits 2024-09-05 16:58:26 +02:00
Simon Thommes added 1 commit 2024-09-06 14:58:07 +02:00
Simon Thommes added 2 commits 2024-09-06 16:12:45 +02:00
Simon Thommes added 3 commits 2024-09-06 16:29:15 +02:00
Simon Thommes added 2 commits 2024-09-06 18:02:55 +02:00
Simon Thommes added 1 commit 2024-09-10 19:10:38 +02:00
Simon Thommes added 1 commit 2024-09-12 16:58:45 +02:00
Simon Thommes added 1 commit 2024-09-12 17:08:18 +02:00
Simon Thommes added 1 commit 2024-09-12 17:20:11 +02:00
Simon Thommes added 2 commits 2024-09-12 17:45:39 +02:00
Simon Thommes added 1 commit 2024-09-12 18:48:10 +02:00
Simon Thommes added 3 commits 2024-09-13 14:20:51 +02:00
Simon Thommes added 2 commits 2024-09-13 18:23:40 +02:00
Simon Thommes added 2 commits 2024-09-13 19:06:59 +02:00
Simon Thommes added 1 commit 2024-09-13 19:11:17 +02:00
Simon Thommes added 6 commits 2024-09-16 11:16:55 +02:00
Simon Thommes added 1 commit 2024-09-16 11:18:08 +02:00
Simon Thommes added 1 commit 2024-09-16 12:54:19 +02:00
Simon Thommes added 1 commit 2024-09-16 15:59:01 +02:00
Simon Thommes added 1 commit 2024-09-16 17:17:02 +02:00
Simon Thommes added 1 commit 2024-09-16 19:05:17 +02:00
Simon Thommes added 1 commit 2024-09-17 10:58:21 +02:00
Simon Thommes added 2 commits 2024-09-17 12:58:09 +02:00
Simon Thommes added 1 commit 2024-09-17 18:51:13 +02:00
Simon Thommes added 1 commit 2024-09-17 19:27:10 +02:00
Simon Thommes added 2 commits 2024-09-18 15:55:38 +02:00
- fix missing property
- add functionality to change resource path
- add functionality to copy resource to custom dir
Simon Thommes added 1 commit 2024-09-18 16:30:40 +02:00
Simon Thommes added 1 commit 2024-09-18 18:20:13 +02:00
Simon Thommes added 1 commit 2024-09-19 15:23:18 +02:00
- additional small node-group tweaks
Simon Thommes added 1 commit 2024-09-19 16:01:16 +02:00
Simon Thommes added 1 commit 2024-09-19 16:42:59 +02:00
Simon Thommes added 2 commits 2024-09-23 19:28:16 +02:00
Simon Thommes added 1 commit 2024-09-24 16:47:55 +02:00
Simon Thommes added 1 commit 2024-09-24 16:59:53 +02:00
Simon Thommes reviewed 2024-10-02 17:52:57 +02:00
Simon Thommes left a comment
Author
Member

Todos from review Session with Francesco:

Fixes:

  • Make new BS layer active
  • fix deleting a brushstroke layer when visibility is off
  • recover active context when deleting layer
  • fix node tools not found on first install
  • identify and fix issue with flow curves not having any effect in some cases
  • investigate/fix how you can end up with duplicate brushstroke styles
  • Fix issue when wrong mesh island is assigned
  • make noise/frizz work without flow

UX:

  • Move trashcan to avoid confusion
  • Change edit toggle default to be off
  • auto-edit on new layer
  • add operator to copy flow object from other layer
  • do a pass on modifier UI of the draw layer
  • do a pass over default setting visibility
  • Add warning for missing/bad UVs
  • Give a warning for low resolution meshes
  • select default brush types and split out a pack of additional ones
  • Write tooltips for nodegroup inputs
  • Move Brush Panel before Distribution Panel
  • change density input
    • change behavior to go linear with amount
    • rename Density Max -> Density
  • random seed on duplication
  • change slider UI for opacity
  • make material UI more resilient against customization

Nice to Have:

  • add flow sampling/interpolation option for low res meshes
  • add translucency to material
  • Improve split behavior
Todos from review Session with Francesco: Fixes: * [x] Make new BS layer active * [x] fix deleting a brushstroke layer when visibility is off * [x] recover active context when deleting layer * [ ] fix node tools not found on first install * [x] identify and fix issue with flow curves not having any effect in some cases * [x] investigate/fix how you can end up with duplicate brushstroke styles * [x] Fix issue when wrong mesh island is assigned * [x] make noise/frizz work without flow UX: * [x] Move trashcan to avoid confusion * [x] Change edit toggle default to be off * [x] auto-edit on new layer * [x] add operator to copy flow object from other layer * [x] do a pass on modifier UI of the draw layer * [x] do a pass over default setting visibility * [x] Add warning for missing/bad UVs * [ ] Give a warning for low resolution meshes * [ ] select default brush types and split out a pack of additional ones * [x] Write tooltips for nodegroup inputs * [x] Move Brush Panel before Distribution Panel * [x] change density input * [x] change behavior to go linear with amount * [x] rename `Density Max` -> `Density` * [x] random seed on duplication * [x] change slider UI for opacity * [x] make material UI more resilient against customization Nice to Have: * [ ] add flow sampling/interpolation option for low res meshes * [x] add translucency to material * [x] Improve split behavior
Simon Thommes added 2 commits 2024-10-02 18:54:16 +02:00
Simon Thommes added 1 commit 2024-10-03 09:02:17 +02:00
Simon Thommes added 2 commits 2024-10-03 10:30:58 +02:00
Simon Thommes added 4 commits 2024-10-03 17:24:28 +02:00
Simon Thommes added 2 commits 2024-10-08 16:56:29 +02:00
Simon Thommes added 2 commits 2024-10-09 14:27:03 +02:00
- restructure `Surface Draw` node-group interface
- do full pass on socket descriptions
Simon Thommes added 1 commit 2024-10-09 15:00:58 +02:00
Simon Thommes added 3 commits 2024-10-09 15:20:48 +02:00
Simon Thommes added 2 commits 2024-10-09 15:54:33 +02:00
Simon Thommes added 1 commit 2024-10-09 16:42:41 +02:00
Simon Thommes added 2 commits 2024-10-09 17:08:52 +02:00
Simon Thommes added 3 commits 2024-10-09 18:45:49 +02:00
Simon Thommes added 2 commits 2024-10-10 14:40:15 +02:00
Simon Thommes added 1 commit 2024-10-10 15:08:00 +02:00
Simon Thommes added 2 commits 2024-10-11 18:44:26 +02:00
- get available brush styles with recursive traversal
- import selected bruish style on-the-fly
Simon Thommes added 2 commits 2024-10-14 19:48:56 +02:00
Simon Thommes added 1 commit 2024-10-14 22:42:03 +02:00
Simon Thommes added 1 commit 2024-10-16 15:52:42 +02:00
Simon Thommes added 3 commits 2024-10-16 16:57:06 +02:00
Simon Thommes added 1 commit 2024-10-16 17:01:21 +02:00
Simon Thommes added 1 commit 2024-10-16 17:19:13 +02:00
Simon Thommes added 1 commit 2024-10-16 18:10:45 +02:00
Simon Thommes added 2 commits 2024-10-16 19:19:11 +02:00
First-time contributor

To do

  • expose project onto surface
  • move surface tab up
  • Even Thickness could be called Parallel Strokes
  • Split Length could be called Segment Length
  • Overdraw instead of Texture Extension
  • Tool tips for settings
  • Use Brush Strength seems unused? useless?
  • expose Seed by default
  • adjust default curve to make stroke more opaque
  • Dots to Dappled Stroke
  • Streaks to Raked Stroke
  • Streaks settings need some tweaking
  • Undo Make Preset choice?
  • Viewport color setting all the way at the bottom
  • change default brushstoke layer name

nice to have:

  • fade node, fade entire stroke, make optional
  • brush style preview image
  • brush pack description
  • brush styles by category
  • improve procedural default brush
To do - [x] expose project onto surface - [x] move surface tab up - [x] Even Thickness could be called Parallel Strokes - [x] Split Length could be called Segment Length - [x] Overdraw instead of Texture Extension - [x] Tool tips for settings - [ ] Use Brush Strength seems unused? useless? - [x] expose Seed by default - [x] adjust default curve to make stroke more opaque - [x] Dots to Dappled Stroke - [x] Streaks to Raked Stroke - [ ] Streaks settings need some tweaking - [ ] Undo Make Preset choice? - [x] Viewport color setting all the way at the bottom - [ ] change default brushstoke layer name nice to have: - [ ] fade node, fade entire stroke, make optional - [ ] brush style preview image - [ ] brush pack description - [ ] brush styles by category - [x] improve procedural default brush
Simon Thommes added 1 commit 2024-10-17 18:39:49 +02:00
Simon Thommes added 3 commits 2024-10-17 19:03:49 +02:00
Simon Thommes added 1 commit 2024-10-18 13:07:56 +02:00
Simon Thommes added 1 commit 2024-10-18 15:50:47 +02:00
- expose seed parameter for atlas
First-time contributor

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:

  • Manual layer ordering
  • Expose and process brush strength
Todo: - [x] "No Valid Surface Object" Message seems buggy when toggling visibility of layers on and off. - [x] 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. - [x] 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. - [x] 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: - [ ] Manual layer ordering - [ ] Expose and process brush strength
Simon Thommes added 2 commits 2024-10-19 19:56:39 +02:00
Simon Thommes added 1 commit 2024-10-20 13:55:11 +02:00
Simon Thommes added 1 commit 2024-10-20 14:20:39 +02:00
Simon Thommes added 1 commit 2024-10-21 17:10:06 +02:00
Simon Thommes added 1 commit 2024-10-22 16:02:20 +02:00
Simon Thommes added 1 commit 2024-10-22 16:09:48 +02:00
Simon Thommes added 1 commit 2024-10-22 16:19:13 +02:00
Simon Thommes added 2 commits 2024-10-28 18:48:13 +01:00
Simon Thommes added 1 commit 2024-10-28 18:57:36 +01:00
Simon Thommes added 1 commit 2024-10-28 19:03:58 +01:00
Simon Thommes added 1 commit 2024-10-29 11:50:00 +01:00
Simon Thommes added 1 commit 2024-10-29 12:19:22 +01:00
Simon Thommes added 1 commit 2024-10-29 19:24:34 +01:00
Simon Thommes added 1 commit 2024-10-29 19:30:01 +01:00
Simon Thommes added 4 commits 2024-10-30 10:54:04 +01:00
Simon Thommes added 1 commit 2024-10-30 11:12:33 +01:00
Simon Thommes added 1 commit 2024-10-30 11:26:34 +01:00
Simon Thommes added 2 commits 2024-10-31 12:00:52 +01:00
Simon Thommes added 1 commit 2024-10-31 12:22:39 +01:00
Simon Thommes added 2 commits 2024-10-31 14:47:34 +01:00
Simon Thommes added 1 commit 2024-10-31 16:46:55 +01:00
Simon Thommes added 1 commit 2024-10-31 16:50:51 +01:00
Simon Thommes added 1 commit 2024-10-31 17:05:20 +01:00
Simon Thommes added 1 commit 2024-10-31 17:10:24 +01:00
Simon Thommes added 1 commit 2024-10-31 17:22:44 +01:00
Simon Thommes added 2 commits 2024-11-01 10:17:44 +01:00
Simon Thommes added 1 commit 2024-11-01 10:41:02 +01:00
Simon Thommes added 2 commits 2024-11-01 11:33:31 +01:00
Simon Thommes added 2 commits 2024-11-01 12:20:05 +01:00
Simon Thommes added 1 commit 2024-11-01 14:07:44 +01:00
Simon Thommes added 1 commit 2024-11-01 16:42:44 +01:00
Simon Thommes added 2 commits 2024-11-01 18:18:47 +01:00
First-time contributor

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.

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.
Author
Member

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.

> 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.
Simon Thommes added 1 commit 2024-11-03 21:30:47 +01:00
Simon Thommes added 1 commit 2024-11-04 10:48:44 +01:00
Simon Thommes added 2 commits 2024-11-04 13:17:08 +01:00
Simon Thommes added 2 commits 2024-11-04 17:36:49 +01:00
Simon Thommes added 1 commit 2024-11-04 20:05:23 +01:00
Simon Thommes added 1 commit 2024-11-04 20:59:50 +01:00
Simon Thommes added 1 commit 2024-11-04 23:12:17 +01:00
Simon Thommes added 4 commits 2024-11-05 17:30:56 +01:00
Simon Thommes added 1 commit 2024-11-05 17:34:47 +01:00
First-time contributor

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.

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.
Simon Thommes changed title from WIP: Brushstroke Tools: Initial Version to Brushstroke Tools: Initial Version 2024-11-06 15:03:09 +01:00
Simon Thommes merged commit 6b6b01ad5e into main 2024-11-06 15:03:47 +01:00
Simon Thommes deleted branch brushstroke_tools-initial-version 2024-11-06 15:05:08 +01:00
Sign in to join this conversation.
No reviewers
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: studio/blender-studio-tools#328
No description provided.