Info
Developers or artists interested in contributing are welcome to join at the links below.
- Workboard - Plans, ongoing work, and community tasks
- Chat Channel - General development communication
- Video Call - Daily meetings at 14:00 CEST
- Meeting Agendas and Notes - Updated throughout the week
Week of 2022-04-18
-
T96455: Drawing of evaluated curves
- Varying segment count
- The conversion to triangles by the render engine relies on the fact that there are the same number of segments in each curve
- This may work for hair, but it doesn’t work for curves, since the use case is more general
- Evaluating curves with the same number of segments in batches, and adding padding at the end where necessary should work.
- The padding points can be added at the same position as the last point for each curve
- Since all curves potentially have a unique segment count, grouping curves with similar point counts together makes sense.
- All curves with less than 4 points, less than 8, less than 16, etc.
- Curve types
- The render engine (i.e. EEVEE/Workbench) just gets a buffer of the final evaluated points, so it doesn’t matter how they are generated.
- Each curve type could have a separate shader, though some of the shader code could be shared.
- Goal is to support evaluating Bezier curves and Catmull Rom curves on the GPU, and support drawing poly curves. NURBS curves can be evaluated on the CPU for now.
- Varying segment count
-
T91742: Named Attribute Nodes
- In which cases should we show the info about an attribute used in the modifier’s node group?
- In some cases like where an attribute is created and removed in the same node group, there is no dependency as long as the name was not used.
- Showing information for those cases is technically redundant and might make it harder to hide the sub-panel in the future when that’s possible.
- However, the “suggested” answer for that use case is anonymous attributes rather than named attributes, and using a heuristic to not display some attributes is relatively complicated.
- Conclusion: Show all used named attributes for now. In the future we could avoid displaying attributes in some cases if users really don’t care about seeing them.
- In which cases should we show the info about an attribute used in the modifier’s node group?
Week of 2022-04-11
- Product Demo.
- [x] T96438: Icon for curve sculpting Delete Brush
- [x] T96445: Comb brush - curve sculpting
- [x] T96444: Add hair - curve sculpting
- Face corner normals don’t update properly
- [x] T96674: Operator to convert from new curves to old hair system.
- [x] T96448: Snake Hook - curve sculpting
- [x] T96271: Attribute search for named attribute input node
- [x] T96855: Add versioning to enable “Duplicate Data” for curves and point cloud.
- [x] T96447: Grow/Shrink - curve sculpting
- [x] T96730: Operator to remap curves to updated surface mesh.
- [x] T96854: Add Menu for new curves object
- [x] T96889: Expose curves to particle system operator in sculpt mode.
- General Blender Studio feedback about curves/hair system (Dalai)
- Top-most features to use only the new system
- EEVEE strand rendering
- Geometry Nodes integration
- Main feedback:
- Mirroring tools are a must.
- Selection (masking).
- Re-sampling operator and/or option for tools (like dynamic topology)
- Collision with the scalp
- Clump (for randomness) brush.
- Puffness brush.
- “Use Front Face” seems to work only in Projected Mode.
- Small things:
- Hair selection is not supported at the moment.
- Interpolation should be ON by default (both of them).
- Snake Hook + Add have .001 in their names.
- Show Tool Settings in the tool settings panels.
- Where is the Custom Curve fall-off defined?
- Open questions:
- How to implement resampling
-
- Resample operator (community task)
-
- “Dynamic topology” option for snake hook brush, and combing brush (e.g., based on curve angle)
-
- How to simplify the render/viewport display settings
- No need for render resolution, viewport resolution AND edit resolution.
- How to implement resampling
- Top-most features to use only the new system
Week of 2022-04-04
- Some discussion about the “hair layers” use case, i.e. node-based vs. a stack-like approach with modifiers. No conclusions yet.
- Curves add menu
- Use “Curves” at the top level to make the goals of the project clear and to avoid the wrong “Hair” name sticking more than it already is.
Curves > Empty Hair
Week of 2022-03-28
- Drawing with
Curves
vs.Curve
- The latter is more correct for different curve types and not fundamentally broken for curves with more segments. The former does processing on the GPU and is the future drawing method.
- Stick with
Curves
when drawing the node object, legacyCurve
otherwise.
-
T95776: How to attach hair to a surface
- There was some discussion about how curve deformation based on a deformed base mesh should work
- T92963: Instancing Performance Improvements
-
D14458: Geometry Nodes: Don’t create new node tree when adding a nodes modifier
- Looks good, seems like a reasonable change.
- Storing mask attribute
- We need a way to address attributes used for the UI, potentially avoiding name conflicts etc.
- No decisions yet, will need feedback from other developers once we come up with a solution.
Week of 2022-03-21
- Product demo
- [x] T93817: Convert Triangulate node input to a selection
- [x] T94535: Extrude Mesh Node
- [x] T94789: Scale Elements node
- Remove soft min for offset scale
- [x] T93259: Duplicate Geometry node
- [x] T86913: Merge by Distance Node
- [x] T93569: Flip Mesh Faces Node
- [x] T94714: Output signed angle from the edge angle node
- [x] T91379: Add operators to convert generic attributes into task specific data (UVLayers, etc)
- [x] T93554: Support instances in the delete geometry node
- [x] T93754: Preview generation for node groups
- We should implement dragging assets to an object in the viewport
- [x] T95769: Add edit mode to hair curves object
- [x] T95768: Add sculpt mode to hair curves object.
- [x] T95934: Add scalp object pointer to curves object
- [x] T95773: Prototype a grab brush for the hair curves sculpt mode.
- Meeting about masking in curves sculpt mode.
- Masks should be floats rather than booleans
- Basic masking tools
- Box mask
- Circle paint mask
- Lasso mask
- Curve and point masks could be part of the same tools
- Automatic masking
- A mask that is generated automatically at the start of a stroke
- Generating a mask based on the start or end of a curve, or the base
- Randomly masking curves or points
- Masks would be multiplied with the explicit mask
- Randomization
- Use a specific tool/brush to select random, or use an option on the regular masking brush?
- Probably the latter.
- Synchronizing masks with curves edit mode
- Ideally selection changes with edit mode would also affect the float masks in sculpt mode.
- Selecting individual curves should be possible
- Masking with “ids”/integers
- For example, grouping “tufts” or using an integer attribute on the base mesh to group curves.
- Drawing
- Give curves some thickness to simplify visualizing masks.
- Need to draw float masks and “curve sets” (integer ids).
- Priorities for implementation
- Circle paint mask brush: Individual curve selection
- Lasso mask
- Randomization for selection brush
-
T96730: Operator to remap curves to updated surface mesh.
- Animation deformation will be done with nodes
- Different methods are used depending on whether the topology changed or not.