User:HooglyBoogly/Reports/2022/

All Reports

June 27 - July 3

This week I worked on code review, bug fixing, and later in the week, worked on removing CurveEval (T95443). I'm almost finished with that project.

I made one design task this week, I'll probably discuss it with the sculpt module next week:

  • T99297: Operators to save curve or point selection as an attribute


Changes / Features

  • Geometry Nodes: Only calculate mesh to volume bounds when necessary 0ea282f746
  • Curves: Avoid initializing offsets when first allocated 276e419671
  • Curves: Adjust "for each curve by type" utility 4206b30275
  • D15334: Curves: Port subdivide node to the new data-block
  • D15342: Curves: Remove use of CurveEval in sculpt brushes
  • D15346: Curves: Port fillet node to the new data-block (WIP)
  • D15326: Curves: Move type conversion to the geometry module


Fixes

  • Fix T99171: Crash in mesh vertices positions RNA update function 151fc2fcd8
  • Fix T99309: Duplicate elements deletes instance attributes 95055af668
  • Fix: Flush mode to evaluated object when exiting curves sculpt mode 1c61db5346
  • Fix: Incorrectly sized curves created in set conversion node 7e55ff15b0
  • Fix: Build error with unity builds off after recent cleanup 69ee9ca90e
  • Fix: Correct attribute names in resample curves code c15ae2e87b
  • Fix: Use distance unit for points node radius input 2d18dd9309


Cleanup

  • Cleanup: Rename curve segment count function f4a9a3767e
  • Cleanup: Simplify logic building in length parameterization d0e3388848
  • Cleanup: Avoid assigning constructed VArray to reference a69e5c2348
  • Cleanup: Add assert for unsupported legacy curve type 6161ce6e5d
  • Cleanup: Remove unnecessary includes from geometry nodes header df8d96ab66
  • Cleanup: Remove outdated comments bd7b181e10
  • Cleanup: Clang tidy, unused variable warning 95964444c6
  • Cleanup: Add assert for customdata realloc size 32e9c9802e
  • Cleanup: Remove duplicate include 982d6589a8


Review

  • Accepted D15134: Curves: Prototypes for various features surrounding the new curves object.
  • Accepted D15348: BLI: Refactor length parameterization.
  • Commented D14481: Curves Trim
  • Accepted D15322: Spreadsheet: display byte colors as scene linear floats
  • Committed D10895: Geometry Nodes: Add Mesh To Volume Node
  • Commented D14365: Split the MLoopUV struct to 3 bool attributes and a float2 attribute.
  • Committed D14389: Geometry Nodes: Unwrap and Pack Islands Nodes
  • Committed D15310: Attributes: Use attribute renaming function for generic mesh layers
  • Requested changes, committed D15337: Fix T99316: Crash when no font is in String to Curves in geometry nodes
  • Commented D15308: Draw: Curve outline drawing in object mode.
  • Accepted D15306: Add "Use Limit Surface" option to subdivision surface geometry node
  • Commented D14163: Weight & Vertex Paint: always respect edit mode hiding on faces.


Tracker

  • Reported T99370: Length parameterization failure case
  • Investigated: 15
  • Confirmed: 2
  • Resolved: 4
  • Duplicate: 1
  • Known Issue: 1
  • Archived:


Next Week

TODO

June 20 - June 25

This was another shorter week due mostly to traveling and getting a bit sick earlier in the week. Things are basically back to normal though.

I spent a fair amount of the week fixing some bugs that came up in 3.2, mostly around the color attributes changes. I also did some code review and and finished up some older local changes.


Changes / Features

  • Geometry Nodes: Field on Domain Node ba1e97f1c6 rBL62961
  • Curves: Skip CurveEval in legacy curve conversion 5606942c63
  • Curves: Port string to curves node to the new data-block a646a4b47e
  • Geometry Nodes: Speed up Separate color node in RGB mode 0473462241
  • Geometry Nodes: Optimize selection for virtual array input 3e5a4d1412
  • Mesh: Add an explicit "positions changed" function 54182e4925


Fixes

  • Fix T98975: Broken vertex paint mode operators 2eba15d3e8
  • Fix T98960: Baking to active color attribute uses wrong layer d901f8b75b
  • Fix T98956: Crash removing some builtin attributes cebc5531e9
  • Fix T98949: Deleting vertex group in geometry nodes affects others 12bde317f4
  • Fix: Incorrect dirty normal tag after mesh translation fca94c5e0d
  • Fix: Remove broken vertex paint "fast update" check 6dde88c536z
  • Fix: Memory leak writing to builtin attribute with wrong type 785931fc3c


Cleanup


Review

  • Requested changes D14481: Curves Trim
  • Requested changes D15134: Curves: Prototypes for various features surrounding the new curves object
  • Requested changes D14365: Split the MLoopUV struct to 3 bool attributes and a float2 attribute
  • Requested changes D11591: Alembic: import arbitrary attributes
  • Accepted D13920: Geometry Nodes: Points Node
  • Accepted D14389: Geometry Nodes: Unwrap and Pack Islands Nodes
  • Requested changes, accepted D10895: T86838 Geometry Nodes: Add Mesh To Volume Node
  • Accepted D15293: BLI: Improve check for common virtual array implementations.
  • Committed D15191: Spreadsheet: Support operations for filtering colors
  • Committed D15103: Fixed selection indication for virtual socket on nodes
  • Accepted D15285: Fix T99130: Spline factor gets messed up if one hair is too short
  • Commented D14733: Color Attribute: Add convert color attribute operation
  • Accepted D15241: Fix T94969: Crash. Volume to mesh with 0 amount of voxels
  • Abandoned D14736: Modification of The node "Extrude Mesh" to include the ability to extrude a Conic shape
  • Abandoned D14846: Geometry Nodes: Include Separate Color optimization from Hans


Tracker

  • Investigated: 14
  • Confirmed: 1
  • Resolved: 5
  • Duplicate: 1
  • Archived: 6


Next Week

I think I'll be able to finish porting almost every node to the new type next week. Maybe some other things will come up though.


June 13 - June 19

This week was a bit light in terms of time, and I didn't accomplish too much. But I did get a fair amount of cleanup done, mostly in attribute extraction in the draw module. I'm happy with that change anyway.

I figured out some of the boilerplate for drawing the sculpt selection for curves, nothing visual yet though.

I also made a design task for a "Field on Domain" building block node: T98943


Changes / Features

  • Attributes: Adjustments to duplicate attribute API function rB58a67e6f
  • Attributes: Add null check in color attribute duplicate operator rB0f06de80
  • D15205: Refactor: Extract color attributes as generic attributes


Fixes

  • Fix: Don't allow duplicate color attribute operator in edit mode rBc7942c31


Cleanup

  • Cleanup: Remove unused argument, unnecessary struct keyword rBac4836af
  • Cleanup: Remove unnecessary switch statement rB8a3ff496
  • Cleanup: Always store attribute name in attribute request rB3c2a2a6c
  • Cleanup: Simplify syntax in curves draw cache file rB18def163
  • Cleanup: Remove redundant doxygen section rB96764c3a
  • Cleanup: Miscellaneous improvements to draw attribute extraction rBb83f33ff
  • Cleanup: Use more specific includes for grease pencil modifiers rB10850f0d
  • Cleanup: Variable name style in STL importer rB28f4fc66
  • Cleanup: Snake case for variable name rB25f18e6c
  • Cleanup: Fix const correctness of attribute search function rBf5e7221f
  • D15197: Cleanup: Simplify arguments to sculpt draw functions


Review

  • Accepted D15198: Geometry Nodes: Volume Cube node
  • Requested changes, accepted D13920: Geometry Nodes: Points Node
  • Requested changes, accepted D15151: Geometry Nodes: add 'Intersecting Edges' output for boolean node
  • Requested changes, accepted D15216: Curves: Refactor add brush
  • Requested changes D13952: Geometry Nodes: Add Attribute Smooth
  • Commented D15036: Nodes UI: Visual tweaks to node links
  • Accepted D15191: Spreadsheet: Support operations for filtering colors
  • Commented D15184: Fix T98813: crash with GPU subdiv in edit mode and instance objects
  • Accepted D15217: UI: Custom Properties - Rename properties to remove "Use/Is"


Tracker

  • Investigated: 7
  • Confirmed: 1
  • Resolved: 1
  • Archived: 2


Next Week

Next week I'll be back in the US. Apart from taking some time to get things settled there, I'll be working on basically the same things I suppose, maybe with a bit of "geometry nodes as an operator" sprinkled in. But the main goal is still getting selection drawing figured out.

June 6 - June 10

This was my last week in Amsterdam. I mostly spend time on code review, moving some nodes to the new curves type, and preparing a presentation about the current state of the hair project, which should become a blog post relatively soon. I also did some fixing and cleanup in the attribute C API.


Changes / Features

  • Curves: Port set type node to new data-block rB9e393fc2
  • Curves: Port delete geometry node to the new curves type rB8a6cbcf3
  • Attributes: Use names instead of layers for some functions rB6eea5f70
  • CustomData: Add function to free a named layer rB7974d2bf
  • D15169: Mesh: Simplify access of active/default color attribute (WIP)


Fixes

  • Fix: Incorrect curves and pointcloud bounding boxes rBfe4e6464
  • Fix: Incorrect logic in attribute search functionrBd39e0f96
  • Fix: Heap buffer overflow in new curves set type node rB17971b8a
  • Fix: Crash in selection paint brush with empty curves rB32ee2ffc
  • Fix: Missing include rBaebca2bd


Cleanup


Review

  • Requested changes D15151: Geometry Nodes: add 'New Edges' output for boolean node
  • Commented D15159: OBJ: vertex colors support in importer and exporter
  • Commented D15137: Try to introduce a slider widget for sculpt mesh filter
  • Accepted D15165: Fix T98727: Dynamic Paint does not update normals
  • Requested changes D15019: Geometry Nodes: Add Instance Dimensions Input Node
  • Accepted D15144: Make BKE_id_attribute_rename() generate unique name cross domain
  • Committed D14963: Nodes: Show node description in Node editor
  • Accepted D15131: Geometry Nodes: Instance Rotation Node
  • Accepted D15132: Geometry Nodes: Add Instance Scale Input Node
  • Commented D14389: Geometry Nodes: Unwrap and Pack Islands Nodes
  • Commented D15142: Default "Selected Only" to True When Exporting Objects
  • Abandoned D15008: Adds specific Icons per force to the outliner
  • Accepted D15140: Fix T98624: Curve Pen NURBS extrusion creates duplicates
  • Accepted D15136: Fix for Assert Failure in Duplicate Elements


Tracker

  • Investigated: 8
  • Needs Information: 2
  • Archived: 5


Next Week

Next week I'll be visiting Berlin. I'll also try to make progress on the curves sculpt selection drawing task.

May 30 - June 6

This week was full of lots of code review, cleanup, and bug fixes. We also had a geometry nodes sub-module meeting on Wednesday (meeting notes here), and had design discussions about curves sculpt mode, and some initial discussions about how we should progress with the development of simulations.

I also committed the curves sculpt mode selection patch I've been working on for a bit and worked a bit more on porting nodes to the new curves type.

I was also involved in various design tasks, including one about enum names, more conversation about my mesh SoA refactor, and another about various socket and node names. I also closed the task for the "mesh screw node", and created two tasks:

  • T98533: Writing to 8 bit integer "enum" attributes in geometry nodes
  • T98494: Path animation and the new curves type


Changes / Features

  • Curves: Add soft selection in sculpt mode rBa1830859
  • Curves: Port bounding box node to the new curves type rB8589f605
  • Geometry Nodes: Use fields for delete geometry inversion rBc4e11122
  • Mesh: Only check dirty normals flag of current domain rBa5190dce
  • Attributes: Hide internal UI attributes and disallow procedural access rB4669178f
  • Curves: Add surface UV map name property rB12722bd3
  • Curves: Avoid optimization to avoid storing selection for now rBe9eae1b8
  • D15129: WM: Speed up processing of duplicate notifiers
  • D15108: Curves: Make preserving length in the comb brush optional
  • D15127: Geometry Nodes: Slightly optimize selection for virtual array input


Fixes

  • Fix: Curves sculpt mode keymaps missing in preferences rB0a2a8d70
  • Curves: Fix overallocation for curve attributes when deleting curves rB93a68f2a
  • Fix T98403: Crash applying modifiers on non-mesh objects rB18a17d42
  • Fix T98546: Crash with multires bake and zero levels rB96a47af4
  • Fix: Build error after merge from release branch rB91c44920
  • Fix T98556: Crash with extrude node in edit mode rB2d9c5f3d
  • D15118: Fix: Realloc copies too much from previous allocation


Cleanup

  • Cleanup: Move remaining mesh draw code to C++ rB176d7bcc
  • Cleanup: Move wm_event_system.c to C++ rB545d4698
  • Cleanup: Move lib_override.c to C++ rBa746cef8
  • Cleanup: Move attribute.c to C++ rBb24e091c
  • Cleanup: Simplify dependencies for GMP math header rB3060b988
  • Cleanup: Comments and formatting in mesh extract headers rBe37eebf1
  • Cleanup: Remove unused BKE_spline.hh includes rBc7e4c430
  • Cleanup: Improve const correctness of ID functions rBa40b6111
  • Cleanup: Move attribute domain count out of enum rBa5d9b344
  • Cleanup: Use shorter variable name rB4e3ce048
  • Cleanup: Use const for retrieved custom data layers rBdb5ffdd1
  • Cleanup: Use const, make format rB6572ad86
  • Cleanup: Simplify curves toolbar drawing logic rB545b9ddc
  • Cleanup: Split large block of versioning code to separate function rB4a72b64c
  • Cleanup: Use const pointers rB10488d54
  • Cleanup: Clang tidy rB3f937685
  • Cleanup: Remove unnecessary struct keywords rB23f8fc38
  • Cleanup: Remove outdated comment rBca593917
  • Cleanup: Tweak geometry component comments rB16746e8e
  • D15077: Cleanup: Remove unused sculpt vertex color functions and operators


Review

  • Requested changes, accepted D14941: Native STL Importer
  • Requested changes D15019: Geometry Nodes: Add Instance Dimensions Input Node
  • Accepted D15103: Fixed selection indication for virtual socket on nodes
  • Accepted D15125: Curves: Use uv coordinates to attach curves to mesh.
  • Commented D14150: Object: Speed up duplication of large selections by doing fewer collection syncs
  • Requested changes D15074: Docs: Add Curve Pen Documentation
  • Accepted D15116: Spreadsheet Editor: Support int 8 attribute
  • Commented D14389: Geometry Nodes: Unwrap and Pack Islands Nodes
  • Committed D14802: Geometry Nodes: Show supported types in geo socket tooltip.
  • Accepted D15009: Functions: Speedup preparing multi-function parameters.
  • Accepted D14995: Refactor: Add a single place to do everything needed on layer renames
  • Accepted D15084: Fix T98501: Setting node socket default value is very slow.
  • Accepted D15083: Fix T98454: Subdivision doesn't propagate int attributes.
  • Accepted D15071: Fix T98500: Wrong selection in Duplicate Points
  • Committed rB96f20ddc: Geometry Nodes: Don't allow UI attributes as modifier field inputs
  • Accepted D15087: Fix T98520: Sculpt operators can unintentionally clear multires mask
  • Accepted D15140: Fix T98624: Curve Pen NURBS extrusion creates duplicates
  • Abandoned D15008: Adds specific Icons per force to the outliner
  • Commented D15061: Geometry Node: Changing the tab of Input nodes
  • Accepted D15132: Geometry Nodes: Add Instance Scale Input Node
  • Accepted D15136: Fix for Assert Failure in Duplicate Elements
  • Committed D15058: Cleanup: fix source typos (may break API)
  • Committed rBAbcb71ee: UI: Update deep grey community theme
  • Committed rBA0c532fe: UI: Update Minimal Dark Community theme
  • Accepted D15033: Nodes: Add separately allocated run-time data for bNodeTree
  • Accepted D15060: Nodes: Add separately allocated runtime data for nodes and sockets
  • Accepted D15089: Fix T98536: geometry nodes wrong selection on duplicate edges
  • Requested changes D14205: Geometry Nodes: Add selection outputs to Curve to Mesh node
  • Accepted D15131: Geometry Nodes: Instance Rotation Node
  • Commented D15037: Refactor: Snap-related. Clarified attribute names and refactored #defines into enums
  • Commented D14823: T97706: Adds operator to duplicate the active color attribute layer


Tracker

  • Investigated: 12
  • Duplicate: 1
  • Confirmed: 1
  • Resolved: 2
  • Archived: 3


Next Week

Next week I'll try to get the selection drawing for curves working as an overlay. Since I don't know how much work that will be I won't plan too much more besides the usual bug fixing and code review.

May 16 - May 22

This week I started by doing a bunch of documentation/manual work from the backlog, mainly for 3.2 features: rBM9284, rBM9285

I also focused on finishing up the selection brush and related tools for curves sculpt mode. It should be mainly ready here: D14934. We also spent time discussing/planning/reviewing render engine support for the curves data-block: T96455.

Other than that, I spent time on bug fixing, plenty of planning, and some miscellaneous work on curves sculpt mode.


Changes / Features

  • Curves: Support pressure in sculpt brushes rBcea37b31
  • Curves: Use only current brush location for delete brush rBf8239cc9
  • D14934: Curves: Add float selection in sculpt mode


Bug Fixes

  • Fix T96810: Bitmap race condition in PBVH normal calculation rBb8bd20d7
  • Fix T98237: Double free with curve object conversion to mesh rBc88de159
  • Fix T98266: Crash with empty mesh boolean node rBd4cdae29
  • Fix: Node editor "Group" panel displays for embedded node trees rB00af3e94
  • Fix: Copy and paste error in curves RNA rB200e63b0
  • Geometry Nodes: Fix issue with flip_faces test rBL62929
  • D15002: Fix: Sample pressure properly for 3D curves sculpt brushes
  • D14944: Fix T98101: Handle single point curves in delete brush


Cleanup


Review

  • Requested changes D14916: EEVEE/Workbench: support Curves attributes rendering
  • Accepted D14942: Curves: Draw legacy hair particle system as curves object. (WIP)
  • Commented D14389: Geometry Nodes: Unwrap and Pack Islands Nodes
  • Commented D15009: Functions: Speedup preparing multi-function parameters
  • Accepted D14957: Improve check for whether a node tree references an animated Image.
  • Accepted D14998: Fix T98231: missing updates when material output is in group
  • Accepted D14846: Geometry Nodes: Include Separate Color optimization from Hans
  • Accepted D15004: Manual: Rename Max Width in "String to Curves"-node
  • Commented D14993: BLI: Use no_unique_address attribute.


Tracker

  • Investigated: 8
  • Confirmed: 2
  • Resolved: 2
  • Archived: 2


Next Week

Next week is mostly vacation for me, I'm taking the time to explore the Amsterdam area.

May 9 - May 15

This week I did general work in the curves/hair area, especially the sculpt mode. The main thing I finished was some UI changes I did some work adjusting the UI layouts in the brush header and tool settings, but I also mostly finished a patch to add selection and masking (which at this point is mostly missing drawing in the viewport). We also made some progress on that front by solidifying the plan for drawing the old hair particle system with the new curves object.

We also ran into some design difficulties with how to attach curves to the surface mesh, but I think the result of that will end up in a simpler system actually.

The layout doesn't fit in the tool header
We can use specialized popovers for a specific brush type to make the UI more organized.
The start of a tool to paint a selection in sculpt mode, using a design where the selection is painted, rather than the opposite


Changes / Features

  • Curves: Adjust sculpt mode UI layouts rBa4382bad
  • Curves: Add disabled message for add empty hair operator rB2a2e47b2
  • Refactor: Move resample curves code to the geometry module rBe0e95f78
  • BLI: Avoid invoking tbb for small parallel_reduce calls rBc2737913
  • D14934: Curves: Add float selection in sculpt mode
  • D14938: Edit Mesh: Parallelize bounding box calculation in edit mode


Bug Fixes

  • Fix: Spline parameter node broken for Catmull Rom curves rB74a5fb73
  • Fix T98056: Screw modifier crash with normal calculation and merging rBcb5b33a6
  • Fix: Crash with empty curves add interpolate points rB6599d2f0
  • Fix: Hide empty panel in curves sculpt mode tool settings rB2f799f89
  • Fix: Missing curves type count cache update in add brush rBb38cd1bc
  • Fix T97853: Crash with edit mode X-ray and subdivision rB686abf18


Cleanup

  • Cleanup: Simplify loop syntax, decrease variable scope rBe46a3894
  • Cleanup: Remove includes from DerivedMesh header rB7b091fbb
  • Cleanup: Move three mesh editors files to C++ rB1c70402c, rB7fc2804f
  • Cleanup: Simplify loop syntax, make function static rB84a76415
  • Cleanup: Clang tidy rB024f3ddf
  • Cleanup: Fix range loop construct warning rBc5b67975
  • Cleanup: Use single quotes for Python enum string rBb765ea52
  • Cleanup: Move mesh primitive cube to the geometry module rBa74a2677
  • Cleanup: Return early rBb4682554
  • Cleanup: Remove incorrect statement after recent refactor rB892562b7


Review

  • Accepted D14909: Geometry Nodes: String to Curves rename Max Width
  • Accepted D14823: T97706: Adds operator to duplicate the active color attribute layer
  • Committed D14828: Fix: paint slot material assignment issues
  • Commented D13132: Nodes Editor: Draw lines across the center of the grid
  • Requested changes D14875: Spreadsheet: Support showing enum value strings instead of integers.
  • Requested changes D14733: Color Attribute: Add convert color attribute operation
  • Accepted D14908: Curves: Add operator to convert hair particle system to new curves object.
  • Commented D14935: Add Option To Skip Temporary Layers to BKE_id_attributes_length and CustomData_number_of_layers_typemask
  • Committed D14919: Curves: 'Interpolate Point Count' are missing in 'Brush Settings'.
  • Accepted D14892: Fix T97761: Incorrect mixing of integers.
  • Committed D14891: Fix: compiler warnings due to recent patch


Tracker

  • Investigated: 20
  • Confirmed: 6
  • Resolved: 3
  • Archived: 3
  • Known Issue: 5


Next Week

Hopefully I'll finish up the patch to add selection in curves sculpt mode so that it can be committed and finish up a few of the other pending patches in the curves area. I'd also like to make a bit of tangible progress on the mesh struct of arrays refactor.


May 2 - May 6

This week was filled with planning, work on curves sculpt mode, and some geometry nodes curve development. From looking at the list below, apparently I got to a lot of patch review too.

Changes / Features

  • Curves: Optimize filling all curves with a single type rB16011e34
  • Curves: Use copied original data for invalid NURBS curves rB2d80f814
  • Geometry Nodes: Improve performance of mesh to points node rB6513ce25
  • Curves: Add method to find indices for curve type in a selection rB9ee9dd25
  • D14870: Curves: Expose resample operator in sculpt mode
  • D14769: Curves: Port set type node to new data-block (WIP)


Bug Fixes

  • Fix T93272: Material index mapping missing for mesh boolean node rBf80e4f00
  • Fix T97831: Curve to mesh node can create invalid wire mesh rB302584bd
  • Fix T97718: Crash using "Text on Curve" rBaf2740ab
  • Fix: Handle default better in curves type count cache rB477066ad
  • Cleanup: Avoid asan overflow warning for RNG seed rB0f2cc50f
  • D14855: Fix T97853: Crash with edit mode X-ray and subdivision


Cleanup

  • Cleanup: Remove unnecessary logic for resample curves node rB060c5a7f
  • Cleanup: Rename field input class name rBb4fa74e8
  • Cleanup: Move color attribute enums to be reusable rB11d075f0
  • Refactor: Use boolean array for curves delete brush rB9fb98735
  • Cleanup: Further clarification and renaming of curve field inputs rB622c4e49
  • Cleanup: Move curve length field input to blenkernel rBbe0417d6
  • Cleanup: Add comment about mininum curve length rBb4fb2a69
  • Cleanup: Adjust variable names, miscellaneous changes rB48c0738d


Review

  • Requested changes D14866: UI: Add tool-tips to shader node sockets
  • Accepted D14795: Curves: Support symmetry in curves sculpting brushes.
  • Accepted D14802: Geometry Nodes: Show supported types in geo socket tooltip.
  • Commented D14877: Curves: Interpolate number of control points for new curves from neighboring curves. (WIP)
  • Committed D14034: Geometry/Compositor/Shader/Texture Nodes: Add general Combine/Separate Color nodes.
  • Accepted D14828: Fix: paint slot material assignment issues
  • Accepted D14199: Subdivision node: add input for vertex creases
  • Commented D14858: PoC: Allow shrinkwrap constraint to target curves
  • Accepted D14872: Curves: Convert legacy curves to new curves object
  • Accepted D14724: UI: Add color attribute create to canvas selector
  • Commented D14647: Auto-save improvements.
  • Accepted D14842: Fix T97375: Changing node tree from Python is very slow.
  • Accepted D14857: Curves: Control number of control points in new curves.
  • Requested changes D14733: Add color attributes option to Convert Attributes operation
  • Accepted D14861: Curves: Use old Add > Curve menu for new curves object.
  • Commented D14841: Workaround T81065: Merge UV's when applying modifiers
  • Accepted D14859: Outliner: add icons for nodegroups
  • Accepted D14775: BPY types: add default Geometry Node poll function
  • Accepted D14840: Curves: Add second experimental option for new curves tools.
  • Accepted D14873: UI: Expand the Snap Curves to Surface operator
  • Closed D12936: Geometry Nodes: Add HSVA separate and combine nodes


Tracker

  • Investigated: 9
  • Confirmed: 2
  • Resolved: 3
  • Archived: 1


Next Week

Mostly more of the same. The larger focus is getting the hair/curves system to be usable for the Heist open movie, and also to move it out of experimental.


April 25 - April 29

This week I worked on bug fixing, finishing up the named attribute node changes, and progressed on converting the set spline type node to the new data-block. On Friday and the weekend I prepared to travel to Amsterdam for the next 6/7 weeks.


Changes / Features

  • Curves: Cache the number of curves of each type f431be224f
  • Curves: Support applying geometry nodes modifier 96bdd65e74
  • Mesh: Make vertex normal property read-only 891268aa82
  • Geometry Nodes: Add default attribute name to field inputs/outputs 0ad73bb965
  • Geometry Nodes: Move named attribute nodes out of experimental 3e7ee3f3bc
  • Geometry Nodes: Add "Named" to "Remove Attribute" node name 2fd8fa8f84
  • D14760: Mesh: Add an explicit "positions changed" function
  • D14779: RNA: Don't allocate empty char pointer properties


Bug Fixes

  • Fix T97679: Retrieving shape key normals modifies vertices c9c95201d0
  • Fix T97595: Modifier attribute output broken for vertex groups 96834a7bac
  • Fix T93546: Fill curve node ignores last point of non-cylic curves 5b1ec08f04
  • Fix T97151: Curve vertex parenting crash with dependency cycle 8095875dff
  • Fix T93899: Incorrect decorator buttons for geometry nodes vector/colors 3d9f0280ff1b 3d9f0280ff
  • Fix: Correctly copy and update curve type counts cache 98ad294d17
  • Fix: Incorrect implicit enum conversion 8e1b16534d
  • Fix: Incorrect conversion from C bitfield syntax 2d7957727c
  • D14788: Fix T93272: Material index mapping missing for mesh boolean node


Tests

  • Geometry Nodes: Add two tests rBL62890
  • Geometry Nodes: Add non-cyclic fill curve test file rBL62895


Cleanup

  • Snap: Use Map and unique_ptr for snap cache 1f270cf99b
  • Cleanup: Remove redundant vertex normal dirty tags 3b4b2bcb13
  • Cleanup: Move anonymous attribute removal to geometry component 3b4b2bcb13
  • Cleanup: Use bool, remove unnecessary struct keywords 9a8669ac81
  • Geometry Nodes: Avoid parallel_for_each with a single geometry e9334c5df8
  • Cleanup: Remove disabled optimization code b60f3fe6ad
  • Cleanup: Reword comment, rename variables 8399375098
  • Cleanup: Improve const correctness of shape key functions b1b153b88c
  • Cleanup: Fix compiler warnings 099120e54a


Review

  • Requested changes, accepted D14628: Geometry Nodes: Refactor array devirtualization.
  • Requested changes D14733: Add color attributes option to Convert Attributes operation
  • Requested changes D14199: Subdivision node: add input for vertex creases
  • Requested changes D14759: Custom Colors for Empty Objects
  • Accepted D14785: Color Attribute: Add menu QoL improvements
  • Requested changes D14607: Assets: Implement viewport drag and drop for geometry nodes (WIP)
  • Commented D14389: Geometry Nodes: Unwrap and Pack Islands Nodes
  • Accepted D14797: Curves: Support spherical delete brush.
  • Accepted D14748: Curves: Add "Curves" to brush names.
  • Accepted D14750: Geometry Nodes: Improve ui when trying to remove built-in attributes.
  • Accepted D14768: UI: Fix consistency issues with tooltips and icons
  • Accepted D14751: Geometry Nodes: Improve attribute dependency overlay.
  • Accepted, committed D14762: Fix: Socket tooltip display error


Tracker

  • Investigated: 29
  • Confirmed: 3
  • Resolved: 6
  • Needs Information: 2
  • Archived: 7
  • Duplicate: 2


Next Week

Adjust to jetlag and life at the Blender studio, finish up some ongoing changes, probably meetings, etc.


April 18 - April 22

This week I basically did more of the same, and not much new to show for it. I spent some time on the design tasks listed here, particularly the volume one where I made some mockups of how volume grids would interact with fields in geometry nodes.

  • T91668: How to deal with multiple volume grids in a geometry
  • T93905: Unify Image Texture node in geometry and shader nodes
  • T97512: Rename to Remove Named Attribute node
  • T97452: Attribute identification and semantics

Changes / Features

  • Mesh: Avoid unnecessary normal calculation and dirty tags 6a3c3c77b3
  • Refactor: Move mesh face dot tag out of MVert 8c25889bb6
  • Nodes: Remove unnecessary RNA pointer creation ef2b8c1c3a
  • D14685: Refactor: Move mesh hide flags to generic data types (WIP)
  • D14730: Curves: Support applying geometry nodes modifier
  • D14732: Curves: Cache the number of curves of each type


Bug Fixes

  • Fix T96498: Modifiers affect multiple curve objects a7c65ef4cb, rBL62890
  • Fix: Memory leak writing to builtin attribute from modifier 65e4c91bec
  • Fix: Build error on macOS after previous commit e96623c19b
  • Fix: Assert failure with certain screw modifier settings fe43c17083
  • Fix: Use alphabetical order in geometry nodes add menu 74b9c351b9
  • Fix: Incorrect info message in set material node d813ee55fd
  • Fix: Assert when sculpting empty curves 5a06996722


Cleanup

  • Curves: Further split of curves draw code from particles 5b87862ddc
  • Cleanup: Don't recalculate normals in versioning code 9ec94c3882
  • Cleanup: Remove unused variables, adjust comments 7f726b48ac
  • Cleanup: Clang tidy, unused variable warnings ff6098345a
  • Cleanup: Rename CD_MLOOPCOL to CD_PROP_BYTE_COLOR 03ec505fa5
  • Cleanup: Clang tidy 98fc998c70
  • Cleanup: Remove redundant types from custom data masks 7cb6fb0183
  • Cleanup: Move object_modifier.c to C++ 95cce6f6b0
  • Cleanup: Remove incorrect comment 314b27850c


Review

  • Requested changes D14607: Implement drag n drop for geo nodes
  • Requested changes, committed D14708: Add a few extra BMesh attribute access macros.
  • Accepted D14701: Geometry Nodes: Show used named attributes in modifier.
  • Accepted D14705: Geometry Nodes: Better support for byte colors.
  • Accepted D14745: BLI: Optimize constructing new virtual array.
  • Commented D14179: Revamp Vertex Paint With C++
  • Commented D14709: T89897: Implement hiding data source names spreadsheet
  • Requested changes D10895: T86838 Geometry Nodes: Add Mesh To Volume Node
  • Commented D14469: Fix T95604: Naming inconsistencies in alembic exporter options
  • Committed D14615: Fix T94559: Copying a geometry node group does not copy animation data
  • Accepted D14535: Fix T97002: Preserve multi socket link order
  • Accepted D14700: Curves: Show sculpt tool settings in panels.


Tracker

  • Investigated: 13
  • Confirmed: 3
  • Resolved: 1
  • Archived: 3


Next Week

I'll try to port another node or two to the new curves data-block and look into various other geometry nodes topics.

April 10 - April 17

This week I worked more on porting curve nodes (I spent most of that time on the curve to mesh node). I also did some miscellaneous performance improvements and code review, and spent the last couple days of the week looking into bugs.


Changes / Features

  • Curves: Port curve to mesh node to the new data-block 7484f274dc
  • Edit Mesh: Parallelize bounds calculation with deform modifiers 0ba061c3bc
  • Curves: Avoid duplicating evaluated positions with all poly curves 5a98e38275
  • Refactor: Evaluate surface objects as mesh components edcbf741df
  • UI: Improve wording for some USD export descriptions 65194f47b0
  • D14621: Geometry Nodes: Port sample curves node to new data-block
  • D14661: Geometry Nodes: Improve performance of mesh to points node


Bug Fixes

  • Fix T96988: Merge by distance node crash with certain input dc5ae10692
  • Fix T97363: Duplicate elements node doesn't tag loose edges 089e701191
  • Fix: Apply tilt in curves data-block normals calculation 47d961a4b1
  • Fix: BMesh Python API errors after vertex_normals addition 77db370cb6
  • Fix: Incorrect custom data maxlayers in rare files baae87ce86
  • Fix: Use after free when removing attribute on instances 05715eaea1
  • Fix: Assert evaluating single point Bezier curve 94495049a8
  • Fix: Use consistent type for nurbs order attribute a8ee279aa9
  • Fix: Curves: Add missing builtin attribute definition 078aa677b6
  • Fix: Assert when curve has no evaluated points 359b6baf32
  • Fix: Missing translation in node socket inspection 810f33d434


Cleanup


Review

  • Commented D14481: Curves Trim
  • Commented D14365: Split the MLoopUV struct to 3 bool attributes and a float2 attribute.
  • Accepted D14618: Geometry Nodes: Show used named attributes in nodes.
  • Requested changes D13952: Geometry Nodes: New node Attribute Smooth
  • Accepted D14277: Curves: Initial geometry nodes support for curves object.
  • Accepted D14034: Geometry/Compositor/Shader/Texture Nodes: Add general Combine/Separate Color nodes
  • Accepted D14643: Fix T95700: Oject Info node does not work with GPU subdivided meshes
  • Requested changes D14802: Geometry Nodes: Show supported types in geo socket tooltip.
  • Accepted D14615: Fix T94559: Copying a geometry node group does not copy animation data
  • Requested changes D10895: T86838 Geometry Nodes: Add Mesh To Volume Node
  • Commented D14335: Curves edit mode: support point selection
  • Accepted D14640: Random value node hints
  • Accepted D9967: Add support for showing socket descriptions in tooltips in Node Editor and Material Properties
  • Commented D11591: Alembic: import arbitrary attributes
  • Accepted D14637: Curves: Fix some issues with operator to convert to particle system.
  • Committed D14622: Adding support for New Curves type in Set Material node
  • Accepted D14616: Curves Sculpting Icons: Snake Hook and Grow updates
  • Accepted D14584: Fix adding certain nodes can cause python errors


Tracker

  • Reported T97310: Tooltips broken after recent BLF commit
  • Investigated: 34
  • Resolved: 7
  • Archived: 7
  • Duplicate: 2
  • Known Issue: 2


Next Week

Exactly the same as last week! I'll port more curve nodes to the new data-block, do more code review, and some continued struct-of-array refactoring for mesh code.

April 4 - April 10

This week I mostly worked more on curves to-dos. I also did a fair amount of code review, and some bug fixing.

Later on I looked into removing some DispList code. Apart from some weirdness with instancing of metaballs that is going pretty well.


Changes / Features

  • Curves: Port tangent and normal calculation to the new data-block ceed37fc5c
  • Curves: Add initial sampling utility, use for snake hook brush eb40b231f9
  • Curves: Port legacy curve viewport drawing to the new data-block b84255f590
  • Curves: Hair to Curves rename in Cycles/EEVEE UI 8b04308953
  • Geometry Nodes: Parallelize mesh line node 8f344b530a
  • Refactor: Evaluate surface objects as mesh components edcbf741df
  • D14576: Curves: Split curve EEVEE/workbench functions from particle hair
  • D14593: Refactor: Evaluate metaball objects as mesh components
  • D14583: Blend Write: Add option for legacy mesh format


Bug Fixes

  • Fix: Various fixes and cleanups in new curves code 502d16e667
  • Fix: Curve parameter node broken for Bezier curves after refactor 74db0f3d5f
  • Fix: Missing virtual destructor on virtual class 6aaae44473
  • Fix: Assert fails when evaluating single point Bezier curve 1d86d61782
  • Fix T96838: Missing translations in link drag search e7f4aa8f0c
  • Fix T96999: RNA mesh transform does not mark normals dirty 9c962b2e2b
  • D14561: Fix T96498: Curve object modifier affects all curves


Cleanup

  • Cleanup: Return early in metaball tessellation code 46c54b12b0
  • Cleanup: Define new curves normal mode in DNA 87a3bf3356
  • Curves: Name mutable data retrieval functions explicitly 8551e89068
  • Cleanup: Pass const arguments to object snapping 7a5e663843
  • Cleanup: Simplify if statements, clang tidy bb7e3c2b56
  • Cleanup: Move interface.c to C++ 432ad4c632
  • Cleanup: Remove unused function 9eb4cb956b


Review

  • Requested changes D9967: Add support for showing socket descriptions in tooltips in Node Editor and Material Properties
  • Requested changes D14607: Implement drag n drop for geo nodes
  • Requested changes, accepted D12587: Move Sculpt Colors From Experimental
  • Accepted D14515: Curves: Operator to snap curves to surface.
  • Accepted D14585: Functions: Optimize simple generated multi-functions.
  • Accepted D14262: Curves edit mode: show dots for points
  • Accepted D14474: Curves: New Grow/Shrink brush.
  • Accepted D14330: Curves: fix edit mode detection
  • Commented D14608: Updated voxel remesher defaults
  • Committed D14321: Geometry Nodes: Add "Connected" mode for Merge by Distance node
  • Committed D14476: Fix T91541: Naming inconsistency in Freestyle Modifier - Curvature 3D
  • Committed D13558: Fix T86200: Properties editor rearranges columns poorly when very wide
  • Committed D14522: Geometry: fix division by zero in GEO_uv_parametrizer_pack
  • Committed D14577: Set curve resolution in curves_to_curve_eval()
  • Committed D14518: Knife tool: Fix UI alignment in extra settings popover
  • Accepted D14556: Curves: Add menu for new curves object.
  • Accepted D14554: Enable Duplicate Data for curves and point cloud objects.


Tracker

  • Investigated: 9
  • Resolved: 3
  • Archived: 2
  • Duplicate: 1


Next Week

I'll port more curve nodes to the new data-block, do more code review, and maybe some continued struct-of-array refactoring for mesh code.


March 28 - April 3

This week I finished the patches for converting nodes to the new data structure that I started last week.

I spent a lot of time on code review, mainly for the sculpt colors patch and two Alembic import patches, but also for a fair amount of smaller changes.

I also made a design task for improvements to bounding boxes (T96968) that should be relevant to instancing performance improvements (T92963). And another code architecture topic I looked into a bit was curve evaluation on the GPU (T96455). It looks like it's important that GPU evaluation is implemented for performance in the viewport.

Adding attribute search that changes the node's output type and the links properly based on what you click.

Changes / Features

  • Geometry Nodes: Add search to named attribute input node 3ecdfd0938
  • Geometry Nodes: Port set handle nodes to new data-block 00ba51d37b
  • Curves: Add length cache, length paramerterize utility 72d25fa41d
  • Curves: Port resample node to the new data-block 60a6fbf5b5
  • Curves: Port parameter node to the new data-block f4f89a76a8
  • Curves: Port length node to the new data-block 62334c6ee4
  • Geometry Nodes: Remove soft min from extrude node scale 4a93c4bf1d
  • Curves: Port curves total length node to the new data-block 400ea40dca
  • Curves: Support set origin and apply transform operators 933d56d9e9
  • Curves: Inline some simple methods f6baba695c
  • D14483: Use a vector instead of a linked list for object instances (WIP)


Bug Fixes

  • Fix T97001: Grease pencil array modifier relative offset broken 637fe6f5ff
  • Fix: Assert with set origin operation and single active object a567bef5cc
  • Fix: Remove special case from curve segment size function 87e9451d66
  • Fix: Failing curves test after recent commit e26c89cd76
  • Fix: incorrect assert in new code ac9ddf54a0


Cleanup

  • Cleanup: Remove interface region files to C++ 4537eb0c3b
  • Cleanup: Move interface View2D files to C++ be699936af
  • Cleanup: Remove object bounding box function 69c07adb51
  • Cleanup: Remove unused boundbox flag 11c6d4e88e
  • Cleanup: Use const for bounding boxes where possible f688e3cc31, 5387d33e5f
  • Cleanup: Move geometry set fields to a separate header 5c80543c43
  • Cleanup: Curves draw cache renaming, use references 8466fd4bd1
  • Cleanup: Avoid storing pointers for attribute search callback 762d3a48e8
  • Cleanup: Move scene.c to C++ fc288d3970
  • Cleanup: Move transform_snap_object.c to C++ 037f789111
  • Cleanup: Move two grease pencil files to C++ 27424b758a
  • Cleanup: Remove legacy dupli system from point cloud object 1f6c2507f8
  • Cleanup: Use float3 type 59c3194f8e
  • Cleanup: Remove unnecessary namespace specification 41ee5382f6
  • Cleanup: Use const mesh arguments c9f54cd644


Review

  • Requested changes D12587: Move Sculpt Colors From Experimental
  • Requested changes, accepted D11592: Alembic/USD: use geometry sets to import data
  • Requested changes, accepted D11591: Alembic: import arbitrary attributes
  • Accepted D14262: Curves edit mode: show dots for points
  • Accepted D14408: Curves: Improve Snake Hook brush.
  • Commented D14507: Assets: Instancing operator option for collection asset dropping
  • Commented D14199: Subdivision node: add input for vertex creases
  • Commented D14474: Curves: New Grow/Shrink brush.
  • Requested changes D14389: Geometry Nodes: Unwrap and Pack Islands Nodes
  • Accepted D14457: UI: Address cosmetic papercuts of the reroute node
  • Accepted D14249: Nodes: Remove hidden links when creating node groups
  • Accepted D13302: UI: Improve visual stability of the dot grid background
  • Commented D14330: Curves: use a flag to detect edit mode
  • Commented D14400: Attributes: show attributes in edit mode n-panel
  • Accepted D14441: Curves: Support converting curves to legacy hair system.
  • Committed D14501: Fix: outliner and button icons alignment
  • Committed D14453: Move uvedit_parametrizer functions to blenlib from uvedit code
  • Accepted D11474: Fix T88785: Avoid value slider clipping through rounded corners
  • Accepted D14458: Geometry Nodes: Don't create new node tree when adding a nodes modifier
  • Accepted D14443: Cleanup: Fix various typos (code and comments)
  • Accepted D14476: Fix T91541: Naming inconsistency in Freestyle Modifier - Curvature 3D
  • Accepted D14469: Fix T95604: Naming inconsistencies in alembic exporter options


Tracker

  • Investigated: 9
  • Resolved: 2
  • Archived: 2


Next Week

I'll have to spend some time solving the current issue with curve object updates (T96498). Beyond that, next week will probably look pretty similar.


March 21 - March 27

This week I spent most of my time working on porting more nodes to the new curve data structure, and on bug fixes. The performance improvements I get when porting nodes are satisfying, and it's really important to make sure we don't have three separate curve types in Blender's code, but I'm getting a bit burnt out working on constant refactoring, so I might take a break from that next.


Changes / Features

  • Geometry Nodes: Multi-thread creation of selection from field d3a1e9cbb9
  • Geometry Nodes: Improve performance writing to vertex groups 610ec34c1f
  • Curves: Add a utility to count curves of each type c0016d85b2
  • Curves: Bezier and general interpolate to evaluated utility cea51c1bb5
  • Curves: Tweak evaluated offset functions 797a1356ca
  • BLI: Add utility for tracking average and min runtime 7ef3a1a6e6
  • BLI: Adjust interpolation to support integers, other tweaks 378022c797
  • UI: Use title case for labels f92e3b39f1
  • D14435: Curves: Port resample node to the new data-block
  • D14382: Curves: Add length cache, length paramerterize utility
  • D14463: Curves: Port length node to the new data-block
  • D14464: Geometry Nodes: Port set handle nodes to new data-block
  • D14462: Curves: Port curves total length node to the new data-block


Bug Fixes

  • Fix T96308: Mesh to BMesh conversion doesn't calculate vertex normals 64cd927519
  • Fix T96294: Crash and error with shape key normal calculation b0aaf6ff4a
  • Fix T96401: Broken multires baked normals result 3a8a7d93f9
  • Fix T96494: Array modifier with caps crash on curve objects 923b28aab8
  • Fix: Small fixes for NURBS evaluation 8ed4638960
  • Fix: Missing "Hair" to "Curves" rename 067d0d4466
  • Fix: Build error with flag usage and strict warnings fb3a0a34b4


Cleanup


Tests

  • Modifiers: Update tests for recent fix to Mesh to BMesh conversion rBL62860
  • Geometry Nodes: Update test file for vertex group writing change rBL62862


Review

  • Requested changes D11591: Alembic: import arbitrary attributes
  • Accepted D14376: Curves: Improve Comb brush
  • Commented D14365: Split off the flag of the MLoopUV struct to 2 bool attrib layers.
  • Accepted D14340: Curves: New Add brush.
  • Committed D14315: Validation message split from nurb_check_valid
  • Commented D9967: Add support for node socket tooltips
  • Accepted D12155: Curves: Curve Pen
  • Requested changes D14469: Fix T95604: Naming inconsistencies in alembic exporter options
  • Committed D14283: Fix unreported: Drag link search doesn't always connect to the socket
  • Commented D14277: Curves: Initial geometry nodes support for curves object (WIP).
  • Commented D14443: Cleanup: Fix various typos (code and comments)
  • Accepted D14409: Fix T96577: Setting curve handles not working correctly with multiple curves.


Tracker

  • Investigated: 10
  • Resolved: 5
  • Archived: 1
  • Known Issue: 1
  • Duplicate: 2


Next Week

Bug fixing and code review (though I guess that goes without saying by now). I'll finish up the node conversions I started last week, but I may start working on updating the drawing code next week.


March 14 - March 20

This week I committed the first curves evaluation and used in a few nodes, and also ported plenty more nodes to the new data structure. Some of the conversions unlocked a lot of performance. I observed a 150x improvement in the duplicate elements node, as a nice example.

I did some miscellaneous code review. Not that much bug fixing though, I'll have to catch up on that next week.

Also, I removed the code for the old legacy geometry nodes from before 3.0. A ~13000 line reduction! That means fewer areas to refactor to the new curves type.


Changes / Features

  • Curves: Initial evaluation for curves data-block 8538c69921
  • Geometry Nodes: Remove legacy node code 943b919fe8, rBL62854
  • Geometry Nodes: Add named attribute nodes behind experimental flag d4e46c13cc
  • Curves: Port duplicate elements node to new data-block 663bd38ed6
  • Curves: Port handle type selection node to new data-block 578c2f117a
  • Curves: Port Bezier Segment node to the new data-block 389807624d
  • Curves: Port transform node to new data-block 5d7f4f2cab
  • Curves: Port fill curve node to the new data-block b2cb99d3fd
  • Curves: Port reverse curves node to the new data-block 298d8a7b4a
  • Curves: Port handle type selection node to new data-block 578c2f117a
  • Curves: Port convex hull node to new data-block d4bd9f6a27
  • Curves: Port count spline length output to new data-block 379bd6d50c
  • D14382: BLI: Add length parameterization utility


Bug Fixes

  • Fix: Curves last evaluated segment is empty 8146c996eb
  • Fix: Build error from missing build dependencies 263c5b33d6
  • Fix: Update icons for hair to curves rename 9af791f873
  • Fix: Build error after curve evaluation commit 7a4af7a01b
  • Fix: Compiler error on windows and mac 22de21bef1


Cleanup

  • Cleanup: Miscellaneous improvements to duplicate geometry node 6d97a5f93c
  • Cleanup: Move object_transform.c to C++ 356073c13e
  • Cleanup: Reorganize duplicate elements file ee2d39b3a7
  • Cleanup: Remove unnecessary namespace specification 2564d152d6
  • Cleanup: Remove unnecessary namespace usage, use const d2726e4626
  • Cleanup: Rename "spline" variables to "curve" 0835996cc9
  • Cleanup: Remove unused includes 7bdba5f1e0
  • Cleanup: Further removal for legacy geometry nodes 213d00607e
  • Cleanup: Clang tidy cc98b40f87


Review

  • Requested changes D14340: Curves: New Add brush
  • Requested changes {Phab|D14389}}: Geometry Nodes: Unwrap and Pack Islands Nodes
  • Commented D14389: Geometry Nodes: Unwrap and Pack Islands Nodes
  • Commented D13522: Eevee: Add support for Nishita sky texture
  • Requested changes, accepted D14321: Geometry Nodes: Add "Connected" mode for Merge by Distance node
  • Requested changes D11591: Alembic: import arbitrary attributes
  • Requested changes D14335: Curves edit mode: support point selection
  • Requested changes D12155: Curves: Curve Pen
  • Requested changes D14330: Curves: add an EditCurves structure
  • Commented D14379: Add Material Index selector to existing Multiple strokes modifier
  • Commented D14262: Curves edit mode: show dots for points
  • Accepted D14299: Fix T96278: Missing update after alpha socket connection.
  • Accepted D14367: BLI: Move CPPType to blenlib.
  • Commented D14344: User Pref: Improve consistency and clarity of names and tooltips


Tracker

  • Investigated: 8
  • Resolved: 1
  • Archived: 3
  • Duplicate: 2


Next Week

Bug fixing, code review, more curves node conversions.


March 7 - March 13

This week I worked more on converting nodes to use the new curve data structure, making progress on curves evaluation, code review.

I also spent some time working on the named attribute nodes, and added some tasks about the changes.

  • T91742: Named Attribute Nodes
    • T96271: Attribute search for named attribute input node
    • T96273: Named attribute modifier panel visualization
    • T96275: Named attribute node group visualization


Changes / Features

  • Curves: Port realize instances node to the new data-block 6c6f591f90
  • Curves: Port mesh to curve node to new data-block 901a03725e
  • Curve: Store NURBS basis cache as a single vector 25b4e41875
  • Curve: Remove temporary buffer during NURBS evaluation 29dc6fb1c1
  • UI: Use property split in curves surface panel f19582ebf4
  • D14284: Curves: Initial evaluation for curves data-block (WIP)


Bug Fixes

  • Fix: Deleting vertex group attribute can change original mesh 5c86f0369c
  • Fix T96146: Subdivide curve node uninitialized dangling handles 521d4190a0
  • Fix: Assert in set spline type node after recent commit dbd9472ef5
  • Fix T95843: Invalid mesh runtime data after sculpt undo c77597cd0e
  • Fix T93573: Curve evaluated mesh selected in edit mode 2b3367cdf8
  • Fix: Handle handles reset when realizing with other curve types edcb2ad7b3
  • Fix: Use "construct" instead of "assign" for uninitialized memory 115ff08fdb
  • Fix: Curves cyclic access function duplicates attribute c238728105
  • Fix: Add missing break 24c543d4af
  • D14317: Fix T96294: Crash and error with shape key normal calculation


Tests

  • Geometry Nodes: Add test file with many NURBS curves rBL62853
  • Geometry Nodes: Add regression test for recent commit rBL62850
  • Adjust OBJ tests slightly for recent NURBS cleanup rBL62852
  • Curves: Add test for knots generation commit rBL62851


Cleanup

  • Cleanup: Reduce duplication in realize instances code 338fe9e2b5
  • Cleanup: Simplify NURBS basis cache arguments 3c8182409c
  • Cleanup: Remove unnecessary NURBS optimization 34a61ceeaa
  • Cleanup: Simplify/deduplicate curves built-in attribute access f379943734
  • Cleanup: Use new enum for NURBS curve knots modes db7c4d7a1c
  • Cleanup: Use helper variable, const argument 4ec1c8bc9c
  • Cleanup: Use helper variable 28434dab0c
  • Cleanup: Rename geometry set "curve" to "curves" b8f1ae5c38
  • Cleanup: Correct comment 90c3147e05
  • Cleanup: Clang tidy d09695b4dd


Review

  • Commented D13953: Geometry Nodes: Split Curves
  • Committed D13891: Revision of NURBS knot generation modes
  • Accepted D14315: Validation message split from nurb_check_valid
  • Accepted D14291: Curves: Actually delete curves with Delete brush.
  • Accepted D14241: Curves: Initial comb/shrink/grow brushes.
  • Request changes D14262: Curves edit mode: show dots for points
  • Commented D14323: Geometry Nodes: Add "Is Seam" and "Set Seam" nodes, "seam" attribute
  • Accepted, committed D14279: Geometry Nodes: Tiny optimization to UV Sphere
  • Accepted D14283: Fix unreported: Drag link search doesn't always connect to the socket
  • Commented D14326: Geometry Nodes: Add "Set Sharp" and "Is Sharp" nodes
  • Commented D14277: Curves: Initial geometry nodes support for curves object (WIP).
  • Committed D14172: Implement interpolation for boolean custom data type
  • Commented D12482: Geometry Nodes: Add UV output to Curve to Mesh node
  • Commented D14173: UI: Multi-Window Area Docking
  • Commented D14199: Subdivision node: add input for vertex creases
  • Commented D14281: Geometry Nodes: Add "Capsule" geometry primitive
  • Request changes D11907: Geometry Nodes: Remesh Voxel
  • Accepted D14276: Fix Spline Length node after recent refactor.
  • Commented D14287: Preferences: Convert certain preferences to be row-based.
  • Accepted D14301: Fix T96292: Unable to set active material output using Python.


Tracker

  • Investigated: 9
  • Resolved: 3
  • Confirmed: 2


Next Week

I think I can finish up the position evaluation earlier this week. Then I can either work on the rest of curve evaluation, and porting the rest of the nodes, or help on sculpt/edit modes for curves.


February 28 - March 5

This week I worked more on converting code to use the new curves data-block, and made progress on curves evaluation with the new data-block as well.

I also did a fair amount of bug fixing and investigating for the 3.1 release.

I was visiting family, so I worked a little less than usual.


Changes / Features

  • Geometry Nodes: Begin conversion to new curves 9ec12c26f1
  • Geometry Nodes: Port most curve primitives to new data-block 444d57d440
  • Curves: Move curves primitive to object add code f98d74c80d
  • Curves: Port set resolution node to the new data-block ddf956fb58
  • BLI: Add functions to IndexRange to mirror Span d793d18413
  • D14247: Curves: Port realize instances node to the new data-block


Bug Fixes

  • Fix T96164: Crash with curve domain attributes 295d5c6ef5
  • Fix T96152: Crash realizing curve instances 887ccb8537
  • Fix T93573: Remove outline from instances in edit mode 216a215ba5
  • Fix: BLI math clamp doesn't work 2600806c2e
  • Fix: Failing OBJ export tests due to mesh normals commit 7aa0be4b32
  • Fix: Don't tag curves component cache dirty for radius 94a4dddb1b
  • Fix: Use correct default in Curves to CurveEval conversion 9ebb65323e
  • Fix: Only possible to create one 8 bit integer attribute 1a8db5b717
  • Fix: Incorrect assert in curves code 4f2f3114b7
  • D14229: Fix T93573: Curve evaluated mesh selected in edit mode


Cleanup

  • Cleanup: Mesh normal calculation comments and logic ac3f4db719
  • Cleanup: Rename set handle type node internally to match UI 3c175caaa3
  • Cleanup: Unused variable warnings 1763ffa0be
  • Cleanup: Use bool instead of int 611157057b
  • Cleanup: Rename geometry set "curve" functions to "curves" 245722866d
  • Cleanup: Move mesh_validate.c to C++ 579f42ae52
  • Cleanup: Move object_add.c to C++ 4c407f20a6


Review

  • Requested changes D12155: Curves: Curve Pen
  • Accepted D14223: Search: Take word order into account in string search.
  • Commented D14205: Geometry Nodes: Add selection outputs to Curve to Mesh node
  • Accepted D14207: Curves: Add brush to add curves on surface.
  • Committed D11930: Nodes: Improve readability of selected node links
  • Accepted, committed D14192: UI Papercut: Fix multi input socket outline and highlight
  • Accepted D14225: Fix T95479: Geometry nodes crash with cage display.
  • Commented D12482: Geometry Nodes: Add UV output to Curve to Mesh node
  • Accepted D13891: Revision of NURBS knot generation modes
  • Accepted D14215: BLI: Add scoped-defer utility to add RAII-like behavior to C types.
  • Committed D14129: Dual Mesh: use std::move
  • Accepted D13962: Cleanup: Convert image.c to c++
  • Accepted D14216: Fix T96085: Repeated evaluation of geometry nodes when nothing changed.
  • Commented D14093: Enabled the outliner to use the correct icon for each curve subtype.
  • Closed D14196: Nodes: NodeSocket location exposed to the Python API


Tracker

  • Created: T96138: Regression: Curve wire line not displayed in edit mode when it has evaluated mesh/point/volume
  • Investigated: 14
  • Resolved: 3
  • Archived: 1
  • Duplicate: 3


Next Week

More similar work: curves evalaluation, and a bit of code review and bug fixing.


February 21 - February 27

Another very similar week! I worked a bit on the conversion of the curve geometry component, splitting off some initial changes to master.

I did some code review, but not as much as usual, since this curves might end up holding other things up, it's a bit higher priority.

I created and commented on some design tasks:

  • T95965: Mesh Struct of Arrays Refactor
    • T95966: Struct of Arrays Refactor for Mesh Edges
    • T95967: Struct of Arrays Refactor for Mesh Polygons
    • T93602: Convert Mesh vertex data into float3
  • T95940: Remove normalization from original coordinate attribute (CD_ORCO)
  • T95776: How to attach hair to a surface
  • T95845: Use Copy on Write in more places


Changes / Features

  • Curves: Use simpler "set" behavior for postion attribute 4c66bd5da2
  • Curves: Use simpler "set" behavior for handle position attributes f8fe0e831e


Bug Fixes

  • Fix T95839: Data race when lazily creating mesh normal layers 59343ee162
  • Fix T93873: Wrong limits for color socket exposed to modifier be6bcaa8c1
  • Fix: Clear mesh runtime cache when adding elements 353fe610ed
  • Fix T95987: Data transfer modifier custom normals crash 398538b914
  • Fix T95952: Uninitialized value used in Bezier Segment node dbef66c32f
  • Fix T95919: Apply Pose as Rest Pose Operator crashes 284cef473f
  • Fix: Build error in debug build a81cc5cbcb
  • Fix: Failing OBJ export tests due to mesh normals commit 7aa0be4b32
  • Fix: Errors in previous cleanup commit 06bc20f61a
  • Fix: Attempt to fix build error on windows 7518adc5bb
  • Fix: Crash switching between sculpt and edit mode 7b37d980b9
  • Fix: Only possible to create one 8 bit integer attribute 1a8db5b717
  • Fix: Incorrect assert in curves code 4f2f3114b7


Cleanup

  • Cleanup: Mesh normal calculation comments and logic ac3f4db719
  • Cleanup: Use function to check if normals are dirty b7171d1b82
  • Cleanup: Use new enum for CurveEval handle types 5b4732f81c
  • Cleanup: Use new curves type enum for CurveEval f3ef0763b4
  • Cleanup: Remove unused mesh dirty flags ad3ee84f4e
  • Cleanup: Use curves wrapper dde5cc6670
  • Cleanup: Simplify operating on multiple geometry components c23ee6d7b4
  • Curves: Add methods to retrieve range for points or curves 1361c6e604
  • Cleanup: Typo in comment f4d80ecdfd


Review

  • Requested changes D12155: Curves: Curve Pen
  • Accepted D13701: Geometry Nodes: Duplicate Elements
  • Accepted D14181: Fix T95985: Crash when assigning a name for an output attribute
  • Accepted D14180: Curves: Initial brush implementations for curves sculpt mode
  • Accepted D14192: UI Papercut: Fix multi input socket outline and highlight
  • Closed D14174: Fix T95952: Uninitialized value is used in Bezier Segment primitive node.
  • Closed D14155: Fix T93873: Broken UI of color socket input
  • Closed D14174: Fix T95952: Uninitialized value is used in Bezier Segment primitive node
  • Commented D13906: Geometry Nodes: Mesh Face is Planar Node
  • Commented D14093: Enabled the outliner to use the correct icon for each curve subtype.
  • Closed D14196: Nodes: NodeSocket location exposed to the Python API


Tracker

  • Investigated: 10
  • Resolved: 5
  • Archived: 1


Next Week

More similar work: curves evalaluation, and a bit of code review and bug fixing.


February 14 - February 18

Another very similar week, only a couple things really different from last week. On Friday Jacques and I discovered a threading issue with the new lazy normal calculation that I had to fix: T95839

Part of the work on the curve data structure sent me on a tangent of reworking the newly added C++ templated math operations to add support for basic types like float and int, in addition to the vector types like float3. That's useful for sharing very type-agnostic code.


Changes / Features

  • BLI: Implement templated math functions for basic types 399168f3c1
  • BLI: Generalize short algorithm for finding bounds 5b73017ddb
  • Mesh: Avoid creating incorrect original index layers 1850a0b2ab
  • Cleanup: Use functions for accessing mesh normal dirty state 969c4a45ce
  • Nodes: Update dependency graph when removing some nodes 734c6a4405
  • D14145: Geometry Nodes: Begin conversion to new curves (WIP)


Bug Fixes

  • Fix T95252: Move duplicate node doesn't do edge-panning 33d5ecd5b5
  • Fix T95720: Spreadsheet missing volume grid info 1f7f7ca14e
  • Fix T94495: Split edges node leads to a crash in edit mode 82c3bef765
  • Fix: Debug build error with vector type division 48432c1c92
  • Fix: Build error in debug build cbdd578640
  • Fix: Memory leak in recently added curves copy function 114cc47b78
  • D14154:Fix T95839: Data race when lazily creating mesh normal layers


Cleanup

  • BLI: Change dependencies in vector math files a9f023e226
  • Cleanup: Pass const Scene to mesh evaluation 7773393d35
  • Cleanup: Deduplicate functions for creating attributes 8c96ee8903
  • Cleanup: Remove unused argument to mesh tessellation ef0e21f0ae
  • Cleanup: Use C++ math functions ad1f8a50b0
  • Cleanup: Rename original curve object type enum ad1f8a50b0
  • Cleanup: Rename file used for calculating mesh edges 3ed3ee253b
  • Cleanup: Clang tidy 7d5f6c330f


Review

  • Updated D13701: Geometry Nodes: Duplicate Elements
  • Commented D12587: Move Sculpt Colors From Experimental
  • Commented D13891: Revision of NURBS knot generation modes
  • Accepted, committed D14065: Fix T95542: Dual Mesh crashes with some non-manifold vertices
  • Commented D13958: New C++ based wavefront OBJ importer
  • Accepted D11930: Nodes: Improve readability of selected node links
  • Accepted D14107: Curves: Add experimental curves sculpt mode.
  • Commented D14143: Improve Complex Solidify Constraints Solver
  • Commented D13906: Geometry Nodes: Mesh Face is Planar Node
  • Accepted D14136: Curves: add initial edit mode support
  • Accepted, committed D14122 D14122: Fix T87829 and T95331: Issues when nodes too close together
  • Accepted, committed D14124: Fix (unreported): Curve to Mesh: Don't create caps, when the rail curve is cyclic
  • Accepted D14117: Curves: Initial brush system integration for curves sculpt mode.
  • Accepted D14151: UI: Do not include the text stating an enum item is the default
  • Accepted, committed D14142: Fix T93526: Missing tooltip for attribute search button
  • Accepted D14129: Dual Mesh: use std::move


Tests

  • Geometry Nodes: Add regression test files for extrude node rBL62844
  • Geometry Nodes: Add regression test for T95542 rBL62843


Tracker

  • Reported: T95839: Data race when lazily creating mesh normal layers
  • Investigated: 16
  • Resolved: 2
  • Archived: 3
  • Known Issue: 3
  • Needs Information: 1
  • Confirmed: 2
  • Duplicate: 3

Next Week

Similar plan: I'll do a bit more bug fixing for 3.1, work on curves evaluation and the refactor to change nodes to the new data structure, and do code review.


February 7 - February 13

This week I worked more on implementing the curves data-block, lots of miscellaneous code review, some bug fixes, and had some meetings. Two with industry folks about the hair project, and one about the sculpt vertex colors patch. I'm also still making progress on my project of turning mesh vertex data into a regular vector for just positions (T93602).


Changes / Features

  • Curves: Rename "Hair" types, variables, and functions to "Curves" fe1816f67f
  • Refactor: Move PBVH update tag out of MVert 7682d7de04
  • D14054: Curves: Further implementation of new curves data structure
  • D14077: Refactor: Move bevel weight out of MVert and MEdge
  • D14053: BLI: Generalize short algorithm for finding bounds


Bug Fixes

  • Fix T95458: Line art ignores curve objects with no evaluated mesh 88ff5e5fb9
  • Fix T95573: Incorrect bounding box of evaluated curve b76918717d
  • Fix T95620: Crash When Entering Edit Mode on a Curve d1202bd641
  • Fix: Incorrect size used for reading curves data 516781da80
  • Fix: Missing changes in recent "Curves" rename 40e8b9775d
  • Fix: Complete curves renaming missed in previous commit 2887df119c


Cleanup


Review

  • Commented D12587: Move Sculpt Colors From Experimental
  • Requested changes D13701: Geometry Nodes: Duplicate Elements
  • Accepted D13906: Geometry Nodes: Mesh Face is Planar Node
  • Accepted, committed D13356: UI: Improve node drop shadow
  • Requested changes D13891: Revision of NURBS knot generation modes
  • Accepted D14006: BLI: New C++ BitVector data structure.
  • Accepted D13737: Fix T94415: Nodes: poor selection behavior inside frame nodes
  • Commented D13953: Geometry Nodes: Split Splines
  • Commented D12746: Geometry Nodes: Add Random Spherical Distribution node
  • Commented D13958: New C++ based wavefront OBJ importer
  • Commented D13577: Geometry Nodes: Add Between operations to Compare node
  • Requested changes D14042: Move solidify code to geometry module
  • Accepted D14051: Fix T95612: Missing domain interpolation when setting output attribute.
  • Accepted, committed D14026: Fix T95532: Merge node deletes everything for empty selections
  • Commented D14038: Geometry Component: add access to vertex creases
  • Commented D13749: Node: Mix node
  • Commented D14050: Fix T91840: Don't create invalid links when inserting a node on a link.
  • Commented D11209: [WIP] Reroute node improvements
  • Closed D14046: Bevel modifier limit method based on edge/face smoothness
  • Commented D14062: Fix size_t -> int -> size_t round trip in Cycles
  • Closed D13656: Fix T94334: 3DView View Menu Close Error


Tracker

  • Investigated: 21
  • Resolved: 3
  • Archived: 5
  • Known Issue: 1
  • Confirmed: 5


Next Week

The same as last week's plan: code review and a bit of work for 3.2 targets, continue building the new curves data structure, and bug fixing.


January 31 - February 6

This week I mainly worked on bug fixing, code review, and starting to refactor the new curves data structure.

I also organized a 3.2 targets list for geometry nodes, and created tasks where necessary. There were some design discussions about 2D vector sockets, which I suppose I'll continue next week.

One interesting bug I ran into was T93245, where it turns out that creating over 2047 instances overrides point cloud object's color!


I also abandoned some of my old patches that I don't think are worth pursuing at this point:

  • D9145: Property Search: Use fuzzy string matching
  • D10619: WIP: Curve Profile Presets
  • D12175: Geometry Nodes: Proof of concept lazy conversion to and from BMesh
  • D11773: BLI: Add "is_parallel" function for float3
  • D11596: Geometry Nodes: Curve Deform Node


Changes / Features

  • Curves: Changes to the new curves data-block f59767ff97
  • Attributes: Infrastructure for generic 8-bit integer data type e7912dfa19
  • Geometry Nodes: Remove object transform dependency in some cases c9b578eac8
  • D14007: Curves: Rename "Hair" types, variables, and functions to "Curves"


Bug Fixes

  • Fix T95334: Crash with no vertex normals in multires bake 2f591adc1a
  • Fix T94334: Area close operator crash in 3D view menu b73d3b80fd
  • Fix: Displaying any point cloud in the viewport causes crash 59a8bdd48c
  • Fix: Missing translations from operator descriptions 7099d5b661
  • Fix: Remove incorrect assert in mesh modifier evaluation 0b4cf2984f
  • Fix: Incorrect default distance for merge by distance node 0446c9c875
  • Fix build error b127654816
  • D14018: Mesh: Avoid creating incorrect original index layers
  • D14000: Cleanup: Move PBVH update tag out of MVert


Cleanup

  • Cleanup: Remove unused "init" node tree flag 66e9ee1a2f
  • Cleanup: Grammar in comments and tooltips f79c8e25f1
  • Cleanup: Add comment about unsed custom data type 3e0ffe5a39
  • Cleanup: Return early, use switch, rename function 2053fc849e
  • Cleanup: Add file names back to node header af426c8508
  • Cleanup: Clang tidy, use braces 28656293c6
  • Cleanup: Add missing breaks in previous commit bff83ecee5
  • Cleanup: Use C++ types 03e580c98c
  • Cleanup: Add back comment removed in recent commit c4f159cfcd


Review

  • Requested changes D13906: Geometry Nodes: Mesh Face is Planar Node
  • Commented D13891: Revision of NURBS knot generation modes
  • Commented D13868: Collections: Functions to calculate bounding box and dimensions
  • Accepted D13975: Fix T95185: Invalid normals after undo in sculpt mode
  • Commented D13919: Geometry Nodes: NURBS Order Input/Set Node
  • Accepted D13983: Fix T95084: Evaluate all output attributes before changing the geometry.
  • Commented D13918: Curve: increase max of order u/v
  • Commented D12035: Geometry Nodes: Add Easing Function Node
  • Requested changes D13952: Geometry Nodes: New node Attribute Smooth
  • Commented D13764: Function Node: Add Integer Math node
  • Commented D13962: Cleanup: Convert image.c to c++
  • Commented D13985: Geometry Nodes: Add a 2D Vector Socket Type (and a couple supporting nodes)
  • Accepted D13936: Nodes: Dynamic node class for Map Range node
  • Commented D14006: BLI: New C++ BitVector data structure (WIP).
  • Accepted D13994: Fix T94435: Remove anonymous attributes when applying modifier.
  • Commented D13954: Fix T95105: Extend range for the frame node's label size
  • Commented D13577: Geometry Nodes: Add Between operations to Compare node
  • Requested changes D14002: Fix :T94815 Drag to add node search prioritizes wrong node type
  • Commented D13773: Fix T94241: Grayed out Front-Face Falloff checkbox in popover
  • Committed A81fc6b060: UI: Update deep grey community theme
  • Closed D13715: Fix T94495: 'Split Edges' geometry node leads to a crash in edit mode


Tracker

  • Investigated: 22
  • Resolved: 3
  • Archived: 6
  • Known Issue: 1
  • Confirmed: 3


Next Week

I plan to basically continue the same things, code review for 3.2 targets, continue building the new curves data structure, and bug fixing.


January 24 - January 30

This was a bit of a duller week. I finished up the necessary manual pages for all of the new geometry nodes features in 3.1, and worked on bug fixing. Plus a little bit of code review. There were no daily meetings since Jacques was in Amsterdam.

I committed the merge by distance patches and added tests for them as well as the 29 tests for the extrude node.


Changes / Features

  • Geometry Nodes: Initial merge by distance node ec1b0c2014
  • Geometry Nodes: Port weld modifier to the merge by distance node 0ec94d5359
  • Geometry Nodes: Add or improve various socket descriptions cab1f1d9a2
  • Nodes: Improve link-drag search support for boolean math node a18bd403bf
  • Mesh: Add versioning in 3.0 for vertex normal refactor add07576a0
  • UI: Use property split in new operator popup cb09485ff2


Bug Fixes

  • Fix T94476: Threading/performance issue with curve to points node 03b57d3973
  • Fix T95202: Curve to mesh node inconsistent edge vertex order 89dbad9085
  • Fix T95212: Mirror modifier normals crash 834b966b41
  • Fix: Complete transfer attribute input renaming 279a73e429
  • D13960: Fix T95334: Crash with no vertex normals in multires bake
  • D13939: Fix T95185: Invalid normals after undo in sculpt mode
  • D13934: Fix T95252: Move duplicate node doesn't do edge-panning


Cleanup

  • Cleanup: Remove mesh vertex "temp tag" flag 90a23dec46
  • Cleanup: Remove unused DerivedMesh functions 23775f3914
  • Cleanup: Remove unused DerivedMesh normal handling 14427f5aaa
  • Cleanup: Remove unused DerivedMesh flag 79032a8513
  • Cleanup: Remove unused "_ex" version of function 57f6aa4d83
  • Cleanup: Remove modifier type hair callback a58592885c
  • Cleanup: Correct location of node function declarations 2bf519d211
  • Cleanup: Remove useless comments c1b5cea63a
  • Cleanup: Clang tidy d7ac659e02
  • Cleanup: Remove unused variable 3e2591c83e
  • D13946: Cleanup: Move mesh extract files to C++


Manual

  • Geometry Nodes: Extrude Mesh Node rBM8896
  • Geometry Nodes: Generalized Compare Node rBM8875
  • Geometry Nodes: 4 Field Inputs for Mesh Topology Data rBM8877
  • Geometry Nodes: Add note about index consistency rBM8876
  • Geometry Nodes: Initial merge by distance node rBM8888
  • Geometry Nodes: Mesh Island Node rBM8880
  • Geometry Nodes: new Scale Elements nodes rBM8891
  • Geometry Nodes: new Geometry to Instance node rBM8878
  • Geometry Nodes: String to Curves Line/Pivot Point rBM8889
  • Geometry Nodes: Accumulate Field Node rBM8882
  • Geometry Nodes: Edge Angle Node rBM8883
  • Geometry Nodes: Domain Size Node rBM8856
  • Geometry Nodes: new Field at Index node rBM8887
  • Geometry Nodes: Edge Neighbors Node rBM8879
  • Geometry Nodes: Support custom instance attributes rBM8855
  • Geometry Nodes: Flip Faces Node rBM8886
  • Attributes: add operator to convert generic attributes to other types rBM8897
  • Attributes: Add links for attribute_add and remove operators rBM8890
  • Geometry Nodes: Link to attribute domains rBM8881
  • Geometry Nodes: Clarify that transfer attribute does not support instances rBM8873
  • Geometry Nodes: Expand the Boolean Math node rBM8874
  • Geometry Nodes: Rename Curve Parameter, Add Index on Spline rBM8872
  • Geometry Nodes: Link to the mesh normals reference rBM8885
  • Geometry Nodes: Selection outputs for Cone and Cylinder rBM8854
  • Add more information to the scene time node rBM8861
  • Geometry Nodes: Propagate attributes in Instances to Points node rBM8858
  • Geometry Nodes: support instance attributes when realizing instances rBM8862
  • Geometry Nodes: propagate attributes in Instance on Points node rBM8860
  • Geometry Nodes: Add Point Count to Spline Length Node rBM8859
  • Geometry Nodes: Relative Handle Position Mode rBM8857
  • Geometry Nodes: Add Outer Points Selection to Star rBM8853
  • Geometry Nodes: Support instances in the delete geometry node rBM8864
  • Geometry Nodes: Add Offset to Handle Position Node rBM8851
  • Geometry Nodes: Improve the description of selection input rBM8847
  • Geometry Nodes: Add Selection Input to Resample Curve Node rBM8848
  • Geometry Nodes: Slightly improve accumulate field example rBM8898
  • Geometry Nodes: Add Length Output to Curve Parameter Node rBM8850
  • Geometry Nodes: Add Selection to Attribute Statistics rBM8863
  • Fix: Correct geometry output name rBM8852
  • Fix: Incorrect socket label rBM8884
  • Fix: Typo rBM8906
  • Fix: Incorrect node screenshot rBM8895


Tests

  • Geometry Nodes: Add regression test files for extrude node rBL62803
  • Tests: Enable new tests for geometry nodes extrude node 5a0c5912a4
  • Update tests for curve to mesh edge vertex order change rBL62814
  • Add regression test for point cloud merge by distance node rBL62805


Review

  • Requested changes D13547: Geometry Nodes: Grouped Statistics
  • Requested changes D13936: Nodes: Dynamic nclass for Map Range node
  • Commented D13920: Geometry Nodes: Single Point Node
  • Accepted D13356: UI: Improve node drop shadow
  • Accepted D13747: Assets: Add operator to create preview from active object.
  • Accepted D13774: Geometry Nodes: Add NAND, NOR, XOR, XNOR, IMPLY, NIMPLY to Boolean Math
  • Accepted D13694: Geometry Nodes: String to Curves Line/Pivot
  • Accepted D13373: Geometry Nodes: Segment Length Node
  • Commented D12587: Move Sculpt Colors From Experimental
  • Committed 52b2769b9c: Fix T95169: Assert in weld modifier code
  • Commented D13927: obj: speed up the exporter by multi-threading and avoiding tiny I/O calls
  • Closed D12224: Geometry Nodes: Mesh Extrude
  • Closed D12019: Geometry Nodes: Merge by Distance (Modifier port)


Tracker

  • Investigated: 16
  • Resolved: 4
  • Archived: 4
  • Confirmed: 2
  • Duplicate: 2


Next Week

I'll probably spend a fair amount of time working on bug fixes, and hopefully start refactoring the curves data structure. I also wanted to make a proposal about how to improve caching of object bounding boxes in the code.

January 17 - January 23

This week my main goal was finishing up the extrude node, which I thankfully did finish. I also worked on lots of other relatively random things that came up, including some bug fixes, code review, and cleanup (like usual), and updated the Nodes & Physics module page to fit in with the new organization.

All of the new code should be quite well tested at this point. Many of the tests deal with attribute interpolation, which is probably the more complicated aspect of the node.
I ported the weld modifier to the merge by distance node, hopefully we can get that into 3.1.

Changes / Features

  • Geometry Nodes: Extrude Mesh Node 95981c9876
  • Mesh RNA API: Expose contiguous normal arrays b7fe27314b
  • Geometry Nodes: Rename transfer attribute geometry input 6a16a9e661
  • Geometry Nodes: Set Handle Type Node: Left and right by default 8c1ddee10c
  • BLI: Add index_range method to VectorSet 44ca984dc7


Bug Fixes

  • Fix T94760: Crash building BMesh when opening file 6cd977b903
  • Fix T94967: Sculpt mode crashes with missing normals 68aa35ae74
  • Fix: Node link drag search doesn't list shader sockets 5fca280c80
  • Fix T95097: Attribute Capture node UI inconsistency 294ab84909
  • Fix Python API docs build error 9ca1052226
  • Fix: Incorrect soft max after IDProperty UI data refactor A0574f418a
  • D13887: Fix T93455: Set material node does not use empty slot
  • D13856: Mesh: Add versioning in 3.0 for vertex normal refactor


Cleanup

  • Cleanup: Improvements to mesh to bmesh conversion 5c4a5fd40d
  • Cleanup: Move bmesh_mesh_convert.c to C++ b7878a4d45
  • Cleanup: Use references, const variables 1f026a3db9
  • Cleanup: Move node editor files to proper namespace 902a103f80
  • Cleanup: Make node editor functions private 977baeaa26
  • Cleanup: Grammar: its self vs. itself 46475b8e11
  • Cleanup: Use references, LISTBASE_FOREACH macro 221ff895d9
  • Cleanup: Remove unused node editor toolbar file 09ecb089a5
  • Cleanup: Remove incorrect comment 9b4c017031
  • Cleanup: Resolve unused variable warning, make function static 14d261d23a
  • D13878: Cleanup: Remove mesh vertex "temp tag" flag
  • D13869: Cleanup: Correct location of node function declarations


Tests

  • Geometry Nodes: Add test for mesh flip faces node rBL62794


Review

  • Committed D11664: Accurate NURBS circle and sphere
  • Accepted D13757: Geometry Nodes: New Scale Elements node.
  • Commented D13868: Collections: Functions to calculate bounding box and dimensions
  • Accepted, committed D13809: Flip Mesh Faces Node
  • Accepted D13640: Geometry Nodes: Curve Primitive Arc
  • Accepted D13804: Geometry Nodes: Triangulate Node - Add Selection Input
  • Accepted D13796: Geometry Nodes: Edge Angle Node: Add Signed Angle Output
  • Accepted D13647: USD Preview Surface material export.
  • Accepted D13838: Attributes: Add operator to convert generic attributes to other types
  • Accepted D13774: Geometry Nodes: Add NAND, NOR, XOR, XNOR, IMPLY, NIMPLY to Boolean Math
  • Requested changes D13373: Geometry Nodes: Segment Length Node
  • Commented D13734: Geometry Nodes: Add Intersection mode to Curve Trim node.
  • Commented D13840: Fix T94038: Curve type objects count double in scene statistics
  • Accepted D13700: Geometry Nodes: New Output for Number of Mesh Islands
  • Commented D13867: Fix Bevel Intersection Continuity
  • Commented D12530: GPencil: Add Scale Thickness to Pivot Point Pie Menu
  • Closed D1863: T39656 Ctrl+Click for Nurbs


Tracker

  • Reported: T94987: Dragged node links are invisible
  • Investigated: 22
  • Resolved: 4
  • Archived: 4
  • Confirmed: 6
  • Duplicate: 5


Next Week

Just bug fixing and work on the manual for all the new 3.1 features. I'll try to get the merge by distance node into 3.1 as well, and on Monday I'll start by moving my extrude node test file to become regression tests.


January 10 - January 14

This week the most exciting thing is that I landed the vertex normal refactor I've been working on. Apart from some issues with an OBJ test that I hadn't tested since it was added, it went well I think, though I do see a couple of bug reports now. I did some performance testing, and it made some observable gains in real files, which was a nice surprise, since I was mostly approaching it from the "understandable code" perspective.

We had some longer meetings talking about patches and other design topics this week. The meeting notes are pretty lengthy here: https://devtalk.blender.org/t/2022-1-10-2022-01-14-geometry-nodes-sub-module-meetings/22405

I spent quite a while reviewing a patch that exposes color painting in sculpt mode (previously "sculpt vertex colors") in master, and had a bit of a discussion about it afterwards.


Changes / Features

  • Refactor: Move normals out of MVert, lazy calculation cfa53e0fbe
  • Geometry Nodes: Rename transfer attribute geometry input 6a16a9e661
  • Spreadsheet: Add mesh topology information with a debug value 922ae55a16
  • Nodes: Support link-drag search with compare node outputs 9fe704800e
  • D13839: Mesh RNA API: Expose contiguous normal arrays


Bug Fixes

  • Fix T94624: Object as font instances don't work 97c2c39916
  • Fix T94852: Geometry Proximity crash when unsuccessful 6e926e9b56
  • Fix: Incorrect logic in mesh validation for removing layers 0c5ccae79d


Cleanup

  • Cleanup: Remove unused "active ID" node flag 37b336a8af
  • Geometry Nodes: Move normal field input to be usable elsewhere f4af21038d
  • Cleanup: Remove unused subdiv functions b7a27efd78
  • Cleanup: Clang tidy 1bd0a87384
  • Docs: Add comments to node socket struct header a4a95c8d36


Tests

  • Geometry Nodes: Add tests for set spline type node rBL62789
  • Tests: Update tests for normal refactor changes rBL62787
  • Tests: Update obj export tests for normals refactor rBL62788


Manual

  • rBM8808: Geometry Nodes: Improve the introduction page


Review

  • Requested changes D12587: Move Sculpt Colors From Experimental
  • Requested changes D13757: Geometry Nodes: New Scale Elements node.
  • Accepted, committed D13546: Set Spline Type node - better conversion from NURBS to Bezier
  • Commented D13550: Nodes: Expand Math and Vector Math functions
  • Requested changes D13796: Geometry Nodes: Edge Angle Node - Add Return Signed Angle Output
  • Requested changes D13764: Function Node: Add Integer Math node
  • Accepted D13774: Geometry Nodes: Add NAND, NOR, XOR, XNOR, IMPLY, NIMPLY to Boolean Math
  • Requested changes D13809: Flip Mesh Faces Node
  • Requested changes D13694: Geometry Nodes: String to Curves Line/Pivot
  • Requested changes D13804: Geometry Nodes: Triangulate Node - Add Selection Input
  • Abandoned D12695: Nodes: Expose the node socket location as read-only to the Python API
  • Commented D12035: Geometry Nodes: Add Easing Function Node
  • Commented D13640: Geometry Nodes: Curve Primitive Arc
  • Commented D12792: Geometry Nodes: Add Random value to Object Info node
  • Commented D13303: Start of implementation of new texture margin generation.
  • Commented D13791: BLI: Refactor vector types & functions to use templates
  • Accepted D13800: Fix T94812: Render layer sockets are missing after file load.
  • Accepted D13813: Fix T94837: curve tilt on a 2-point-curve is wrong
  • Accepted D12915: Fix: Build warning with MSVC


Tracker

  • Investigated: 15
  • Resolved: 3
  • Archived: 2
  • Confirmed: 1
  • Duplicate: 2


Next Week

Now that I've had a break and some time to think about it, I'll come back to the "extrude regions" case for the extrude node. Then some code review, and hopefully merge by distance for meshes (looking into porting the weld modifier again).

January 3 - January 9

This week I didn't really finish anything notable. Mostly it was a big time vacuum with lots of work on various branches and discussions about "random" things like GPU acceleration, performance bottlenecks, and patches.

Changes / Features

  • Nodes: Consistent link drag search for math and vector math nodes 458be2ecc4
  • BLI: Add slice method to MutableSpan 9793bc30ce
  • D13721: Attributes: Infrastructure for generic 8-bit integer data type
  • D13735: Spreadsheet: Add mesh topology information hidden with a debug value


Bug Fixes

  • Fix T94581: Incorrect geometry delete behavior with instances c6069c439c
  • Fix: Link drag search error with random value node from color socket f7c0287278
  • Fix T94594: Incorrect spreadsheet data set region type in old files 1b9e103a30
  • D13768: Fix T94624: Object as font instances don't work


Cleanup

  • Cleanup: Remove unused code from BKE_node.h 34e84d0ee8
  • Cleanup: Use forward declaration of struct in header 5ba5678e00
  • Cleanup: Spelling/grammar in comments c0fb8ea8f3
  • Cleanup: Clang tidy 675d3cdd69
  • D13770: Cleanup: Remove unused "active ID" node flag


Tests

  • Tests: Replace new geometry nodes test file that fails on macs rBL62782


Manual

  • Geometry Nodes: Node execution time overlay rBM8804
  • Geometry Nodes: Clarify named attribute input from the modifier rBM8805
  • Geometry Nodes: Further clarify named attribute input process rBM8806
  • Fix: Outdated images and text in the node groups page rBM8807


Review

  • Commented D13701: Geometry Nodes: Duplicate Geometry (Cleanup and Testing)
  • Requested changes D13747: Assets: Add operator to create preview from active object
  • Requested changes D13694: Geometry Nodes: String to Curves Line/Pivot
  • Requested changes D13764: Function Node: Add Integer Math node
  • Requested changes D13546: Set Spline Type node - better conversion from NURBS to Bezier
  • Accepted D11664: Accurate NURBS circle and sphere
  • Accepted D13739: UI: Show recently selected items at the top of searches
  • Accepted D13718: Cleanup: Nodes: Convert generic shader node files to c++
  • Commented D13733: Fix crash when removing sockets used by internal link
  • Commented D13715: Fix T94495: 'Split Edges' geometry node leads to a crash in edit mode
  • Accepted D13736: Fix T94659: Crash when deleting instances.
  • Accepted D13366: Geometry Nodes: Add Mesh Edge Angle Node
  • Commented D9621: Configurable rotation angle increments
  • Commented D13697: Fix T89252: Unable to interact with Stabilize stroke text on click
  • Commented D13693: Geometry Nodes: Rename String To Curves socket


Tracker

  • Reported
    • T94725: Instance on Points attribute transfer issue with pick instance
    • T94672: Workbench shadow shading incorrect results with GPU subdivision
  • Investigated: 16
  • Resolved: 2
  • Archived: 7
  • Confirmed: 2
  • Known Issue: 1
  • Duplicate: 1


Next Week

I want to finish the larger things that I think could actually make it to 3.1: the extrude node, the mesh normals refactor, and the merge by distance node. Beyond that, I'll plan patch review and bug fixing, but I think I'll be realistic and keep it at that.


December 27 - January 3

This was a relatively relaxed week, with not many people around. Besides bug fixing and code review, I mainly worked on a mesh extrude node. I'm almost done with that, and happy with how it's turning out.

The work-in-progress extrude node in individual face mode, showing the transfer of the material index attribute, with the vertex mode on the right.


Changes / Features

  • Point Cloud: Optimize bounding box calculation 6d7dbdbb44
  • Geometry Nodes: Support instances in the delete geometry node a94d80716e
  • D13709: Geometry Nodes: Extrude Mesh Node


Bug Fixes

  • Fix T94442: Trim curve node can crash with duplicate point 4cbcfd22f5
  • Fix T94454: Python API curve to mesh use after free without depsgraph c0fdf16561
  • Fix T94380: Scrolling zooms in spreadsheet data set region 1a721c5dbe
  • Fix: Issues with attribute comparison in geometry nodes tests 279085e18e
  • Fix: Duplicate link search entries for attribute statistic node 955748ab1e
  • Fix T94453: Weld modifier crash after recent cleanup dc0bf9b702


Cleanup

  • Cleanup: Remove unused node tree "local sync" functions c34ea3323a
  • Cleanup: Remove unused DerivedMesh functions 5e8b42bf86
  • Cleanup: Return early, organize variable declarations 1464eff375


Tests

  • Geometry Nodes: Fix issue in mesh to curve test file rBL62776
  • Geometry Nodes: Add tests for the dual mesh node rBL62777
  • Geometry Nodes: Add test for T94453 rBL62778
  • Geometry Nodes: Add test file for accumulate field node rBL62779
  • Geometry Nodes: Update test file to attempt to fix mac buildbot error rBL62781
  • Geometry Nodes: Add mesh island test rBL62780


Review

  • Requested changes, accepted D13366: Geometry Nodes: Add Mesh Edge Angle Node
  • Requested changes, accepted D13680: Nodes: Improve link drag search for Math and Vector Math nodes
  • Accepted D12743: Geometry Nodes: Accumulate Function Node
  • Accepted D13625: Geometry Nodes: Add Integer Mode to Attribute Statistics
  • Requested changes, accepted D13664: Fix T94113: Local view + Geometry Nodes is broken for instances
  • Commented, accepted D13695: Nodes: Add Compare node operations to link drag search menu
  • Accepted D13691: Nodes: Weight drag link search for Math nodes
  • Accepted D13686: Nodes: Cleanup: Remove no op registration functions
  • Accepted D13697: Fix T89252: Unable to interact with Stabilize stroke text on click
  • Accepted D13674: Nodes: Support linking to existing group input from link drag search.
  • Accepted D13673: BLI: Add utility to check if type is any specific type.


Tracker

  • Investigated: 12
  • Resolved: 5
  • Archived: 1
  • Confirmed: 5
  • Duplicate: 2


Next Week More work on the extrude node, the named attribute nodes, the generalized curve data structures, and possibly some work on the merge by distance node.