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 TrimAccepted
D15322: Spreadsheet: display byte colors as scene linear floatsCommitted
D10895: Geometry Nodes: Add Mesh To Volume NodeCommented
D14365: Split the MLoopUV struct to 3 bool attributes and a float2 attribute.Committed
D14389: Geometry Nodes: Unwrap and Pack Islands NodesCommitted
D15310: Attributes: Use attribute renaming function for generic mesh layersRequested changes, committed
D15337: Fix T99316: Crash when no font is in String to Curves in geometry nodesCommented
D15308: Draw: Curve outline drawing in object mode.Accepted
D15306: Add "Use Limit Surface" option to subdivision surface geometry nodeCommented
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
- Cleanup: Remove unnecessary includes f6290cd2a4
- Cleanup: Move paint_vertex_color_ops.c to C++ 3545d8a500
- Cleanup: Remove unused argument 35d2a22846
- Cleanup: Make function static b0fe0e6a30
- Cleanup: Remove unused array in vertex paint code 9b775ebad7
- Cleanup: Use const arguments d2a3b99ff7
- Cleanup: Clang tidy 1160a3a3f8, be692cc4fe
- Cleanup: Grammar in comments c08fda3a6b
- Cleanup: Remove unused argument 256cb68d33
- Cleanup: Grammar: a vs an 9f8cc1bc34
Review
Requested changes
D14481: Curves TrimRequested changes
D15134: Curves: Prototypes for various features surrounding the new curves objectRequested changes
D14365: Split the MLoopUV struct to 3 bool attributes and a float2 attributeRequested changes
D11591: Alembic: import arbitrary attributesAccepted
D13920: Geometry Nodes: Points NodeAccepted
D14389: Geometry Nodes: Unwrap and Pack Islands NodesRequested changes, accepted
D10895: T86838 Geometry Nodes: Add Mesh To Volume NodeAccepted
D15293: BLI: Improve check for common virtual array implementations.Committed
D15191: Spreadsheet: Support operations for filtering colorsCommitted
D15103: Fixed selection indication for virtual socket on nodesAccepted
D15285: Fix T99130: Spline factor gets messed up if one hair is too shortCommented
D14733: Color Attribute: Add convert color attribute operationAccepted
D15241: Fix T94969: Crash. Volume to mesh with 0 amount of voxelsAbandoned
D14736: Modification of The node "Extrude Mesh" to include the ability to extrude a Conic shapeAbandoned
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 nodeRequested changes, accepted
D13920: Geometry Nodes: Points NodeRequested changes, accepted
D15151: Geometry Nodes: add 'Intersecting Edges' output for boolean nodeRequested changes, accepted
D15216: Curves: Refactor add brushRequested changes
D13952: Geometry Nodes: Add Attribute SmoothCommented
D15036: Nodes UI: Visual tweaks to node linksAccepted
D15191: Spreadsheet: Support operations for filtering colorsCommented
D15184: Fix T98813: crash with GPU subdiv in edit mode and instance objectsAccepted
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
- Cleanup: Use const pointers in attribute API rB9fda2338
- Cleanup: Use const variables/pointers rB5b0e9bd9
- Cleanup: Remove unnecessary namespace specification rBfe746b27
- Cleanup: Clang tidy rB6a11cd03
- Cleanup: Correct comments rB4fc7e1a8
Review
Requested changes
D15151: Geometry Nodes: add 'New Edges' output for boolean nodeCommented
D15159: OBJ: vertex colors support in importer and exporterCommented
D15137: Try to introduce a slider widget for sculpt mesh filterAccepted
D15165: Fix T98727: Dynamic Paint does not update normalsRequested changes
D15019: Geometry Nodes: Add Instance Dimensions Input NodeAccepted
D15144: Make BKE_id_attribute_rename() generate unique name cross domainCommitted
D14963: Nodes: Show node description in Node editorAccepted
D15131: Geometry Nodes: Instance Rotation NodeAccepted
D15132: Geometry Nodes: Add Instance Scale Input NodeCommented
D14389: Geometry Nodes: Unwrap and Pack Islands NodesCommented
D15142: Default "Selected Only" to True When Exporting ObjectsAbandoned
D15008: Adds specific Icons per force to the outlinerAccepted
D15140: Fix T98624: Curve Pen NURBS extrusion creates duplicatesAccepted
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 ImporterRequested changes
D15019: Geometry Nodes: Add Instance Dimensions Input NodeAccepted
D15103: Fixed selection indication for virtual socket on nodesAccepted
D15125: Curves: Use uv coordinates to attach curves to mesh.Commented
D14150: Object: Speed up duplication of large selections by doing fewer collection syncsRequested changes
D15074: Docs: Add Curve Pen DocumentationAccepted
D15116: Spreadsheet Editor: Support int 8 attributeCommented
D14389: Geometry Nodes: Unwrap and Pack Islands NodesCommitted
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 renamesAccepted
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 PointsCommitted
rB96f20ddc: Geometry Nodes: Don't allow UI attributes as modifier field inputsAccepted
D15087: Fix T98520: Sculpt operators can unintentionally clear multires maskAccepted
D15140: Fix T98624: Curve Pen NURBS extrusion creates duplicatesAbandoned
D15008: Adds specific Icons per force to the outlinerCommented
D15061: Geometry Node: Changing the tab of Input nodesAccepted
D15132: Geometry Nodes: Add Instance Scale Input NodeAccepted
D15136: Fix for Assert Failure in Duplicate ElementsCommitted
D15058: Cleanup: fix source typos (may break API)Committed
rBAbcb71ee: UI: Update deep grey community themeCommitted
rBA0c532fe: UI: Update Minimal Dark Community themeAccepted
D15033: Nodes: Add separately allocated run-time data for bNodeTreeAccepted
D15060: Nodes: Add separately allocated runtime data for nodes and socketsAccepted
D15089: Fix T98536: geometry nodes wrong selection on duplicate edgesRequested changes
D14205: Geometry Nodes: Add selection outputs to Curve to Mesh nodeAccepted
D15131: Geometry Nodes: Instance Rotation NodeCommented
D15037: Refactor: Snap-related. Clarified attribute names and refactored #defines into enumsCommented
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
- Cleanup: Simplify loop syntax for curve points rB019681b9, rBb215fe82
- Cleanup: Use const arguments rBe222e19d, rBd095fcd6
- Cleanup: Remove unused function rBfff8f969
- Cleanup: Deduplicate Alembic procedural bounding box mesh creation rBf11401d3
- Cleanup: Remove redundant function rB29ca935e
- Cleanup: Use const in curves sculpt code rBed62b654
- Cleanup: Decrease variable scope rBf5b708d1
- Cleanup: Remove unnecessary indentation rBf4cbfade
- Cleanup: Order return arguments last rB3ad55104
- D15011: Cleanup: Simplify custom data file writing process
Review
Requested changes
D14916: EEVEE/Workbench: support Curves attributes renderingAccepted
D14942: Curves: Draw legacy hair particle system as curves object. (WIP)Commented
D14389: Geometry Nodes: Unwrap and Pack Islands NodesCommented
D15009: Functions: Speedup preparing multi-function parametersAccepted
D14957: Improve check for whether a node tree references an animated Image.Accepted
D14998: Fix T98231: missing updates when material output is in groupAccepted
D14846: Geometry Nodes: Include Separate Color optimization from HansAccepted
D15004: Manual: Rename Max Width in "String to Curves"-nodeCommented
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.

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 WidthAccepted
D14823: T97706: Adds operator to duplicate the active color attribute layerCommitted
D14828: Fix: paint slot material assignment issuesCommented
D13132: Nodes Editor: Draw lines across the center of the gridRequested changes
D14875: Spreadsheet: Support showing enum value strings instead of integers.Requested changes
D14733: Color Attribute: Add convert color attribute operationAccepted
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_typemaskCommitted
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 socketsAccepted
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 issuesAccepted
D14199: Subdivision node: add input for vertex creasesCommented
D14858: PoC: Allow shrinkwrap constraint to target curvesAccepted
D14872: Curves: Convert legacy curves to new curves objectAccepted
D14724: UI: Add color attribute create to canvas selectorCommented
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 operationAccepted
D14861: Curves: Use old Add > Curve menu for new curves object.Commented
D14841: Workaround T81065: Merge UV's when applying modifiersAccepted
D14859: Outliner: add icons for nodegroupsAccepted
D14775: BPY types: add default Geometry Node poll functionAccepted
D14840: Curves: Add second experimental option for new curves tools.Accepted
D14873: UI: Expand the Snap Curves to Surface operatorClosed
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
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 operationRequested changes
D14199: Subdivision node: add input for vertex creasesRequested changes
D14759: Custom Colors for Empty ObjectsAccepted
D14785: Color Attribute: Add menu QoL improvementsRequested changes
D14607: Assets: Implement viewport drag and drop for geometry nodes (WIP)Commented
D14389: Geometry Nodes: Unwrap and Pack Islands NodesAccepted
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 iconsAccepted
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 nodesRequested 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 spreadsheetRequested changes
D10895: T86838 Geometry Nodes: Add Mesh To Volume NodeCommented
D14469: Fix T95604: Naming inconsistencies in alembic exporter optionsCommitted
D14615: Fix T94559: Copying a geometry node group does not copy animation dataAccepted
D14535: Fix T97002: Preserve multi socket link orderAccepted
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
- Curves: Split curve EEVEE/workbench functions from particle hair f31c3f8114
- Cleanup: Return early cb3c233ed3
- Cleanup: Clang tidy 0f9057390d, ad3378215c
- Cleanup: Further hair to curves renaming 180163c4e4
- Cleanup: Declare variables where initialized 232b388455
- Cleanup: Make curve deform argument optional 8e4c3c6a24
- Cleanup: Move three mesh files to C++ abd02da4bd
- Cleanup: Correct wording in comments 88ab34488b
- Cleanup: Remove reference to CD_NORMAL in poly custom data b1d915d027
Review
Commented
D14481: Curves TrimCommented
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 SmoothAccepted
D14277: Curves: Initial geometry nodes support for curves object.Accepted
D14034: Geometry/Compositor/Shader/Texture Nodes: Add general Combine/Separate Color nodesAccepted
D14643: Fix T95700: Oject Info node does not work with GPU subdivided meshesRequested changes
D14802: Geometry Nodes: Show supported types in geo socket tooltip.Accepted
D14615: Fix T94559: Copying a geometry node group does not copy animation dataRequested changes
D10895: T86838 Geometry Nodes: Add Mesh To Volume NodeCommented
D14335: Curves edit mode: support point selectionAccepted
D14640: Random value node hintsAccepted
D9967: Add support for showing socket descriptions in tooltips in Node Editor and Material PropertiesCommented
D11591: Alembic: import arbitrary attributesAccepted
D14637: Curves: Fix some issues with operator to convert to particle system.Committed
D14622: Adding support for New Curves type in Set Material nodeAccepted
D14616: Curves Sculpting Icons: Snake Hook and Grow updatesAccepted
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 PropertiesRequested changes
D14607: Implement drag n drop for geo nodesRequested changes, accepted
D12587: Move Sculpt Colors From ExperimentalAccepted
D14515: Curves: Operator to snap curves to surface.Accepted
D14585: Functions: Optimize simple generated multi-functions.Accepted
D14262: Curves edit mode: show dots for pointsAccepted
D14474: Curves: New Grow/Shrink brush.Accepted
D14330: Curves: fix edit mode detectionCommented
D14608: Updated voxel remesher defaultsCommitted
D14321: Geometry Nodes: Add "Connected" mode for Merge by Distance nodeCommitted
D14476: Fix T91541: Naming inconsistency in Freestyle Modifier - Curvature 3DCommitted
D13558: Fix T86200: Properties editor rearranges columns poorly when very wideCommitted
D14522: Geometry: fix division by zero inGEO_uv_parametrizer_pack
Committed
D14577: Set curve resolution in curves_to_curve_eval()Committed
D14518: Knife tool: Fix UI alignment in extra settings popoverAccepted
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.
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 ExperimentalRequested changes, accepted
D11592: Alembic/USD: use geometry sets to import dataRequested changes, accepted
D11591: Alembic: import arbitrary attributesAccepted
D14262: Curves edit mode: show dots for pointsAccepted
D14408: Curves: Improve Snake Hook brush.Commented
D14507: Assets: Instancing operator option for collection asset droppingCommented
D14199: Subdivision node: add input for vertex creasesCommented
D14474: Curves: New Grow/Shrink brush.Requested changes
D14389: Geometry Nodes: Unwrap and Pack Islands NodesAccepted
D14457: UI: Address cosmetic papercuts of the reroute nodeAccepted
D14249: Nodes: Remove hidden links when creating node groupsAccepted
D13302: UI: Improve visual stability of the dot grid backgroundCommented
D14330: Curves: use a flag to detect edit modeCommented
D14400: Attributes: show attributes in edit mode n-panelAccepted
D14441: Curves: Support converting curves to legacy hair system.Committed
D14501: Fix: outliner and button icons alignmentCommitted
D14453: Move uvedit_parametrizer functions to blenlib from uvedit codeAccepted
D11474: Fix T88785: Avoid value slider clipping through rounded cornersAccepted
D14458: Geometry Nodes: Don't create new node tree when adding a nodes modifierAccepted
D14443: Cleanup: Fix various typos (code and comments)Accepted
D14476: Fix T91541: Naming inconsistency in Freestyle Modifier - Curvature 3DAccepted
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
- Cleanup: Simplify logic, rename variables 9b2879f8b3
- Cleanup: Adjust naming in new curves code e253f9f66d, 6e72e3fdb2
- Cleanup: Add asserts, remove default case 1243cb803e
- Cleanup: Use more specific variable name 83c99ccb21
- Cleanup: Use bool for BMesh creation params 1c790555a0
- Cleanup: Small changes to multires bake normals access def1c0c538
- Cleanup: Clang tidy aeb2c2afaf, 976c91cd77
- Cleanup: Typo, improve variable names 6d61cf4e80
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 attributesAccepted
D14376: Curves: Improve Comb brushCommented
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_validCommented
D9967: Add support for node socket tooltipsAccepted
D12155: Curves: Curve PenRequested changes
D14469: Fix T95604: Naming inconsistencies in alembic exporter optionsCommitted
D14283: Fix unreported: Drag link search doesn't always connect to the socketCommented
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 brushRequested changes
{Phab|D14389}}: Geometry Nodes: Unwrap and Pack Islands NodesCommented
D14389: Geometry Nodes: Unwrap and Pack Islands NodesCommented
D13522: Eevee: Add support for Nishita sky textureRequested changes, accepted
D14321: Geometry Nodes: Add "Connected" mode for Merge by Distance nodeRequested changes
D11591: Alembic: import arbitrary attributesRequested changes
D14335: Curves edit mode: support point selectionRequested changes
D12155: Curves: Curve PenRequested changes
D14330: Curves: add an EditCurves structureCommented
D14379: Add Material Index selector to existing Multiple strokes modifierCommented
D14262: Curves edit mode: show dots for pointsAccepted
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
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 CurvesCommitted
D13891: Revision of NURBS knot generation modesAccepted
D14315: Validation message split from nurb_check_validAccepted
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 pointsCommented
D14323: Geometry Nodes: Add "Is Seam" and "Set Seam" nodes, "seam" attributeAccepted, committed
D14279: Geometry Nodes: Tiny optimization to UV SphereAccepted
D14283: Fix unreported: Drag link search doesn't always connect to the socketCommented
D14326: Geometry Nodes: Add "Set Sharp" and "Is Sharp" nodesCommented
D14277: Curves: Initial geometry nodes support for curves object (WIP).Committed
D14172: Implement interpolation for boolean custom data typeCommented
D12482: Geometry Nodes: Add UV output to Curve to Mesh nodeCommented
D14173: UI: Multi-Window Area DockingCommented
D14199: Subdivision node: add input for vertex creasesCommented
D14281: Geometry Nodes: Add "Capsule" geometry primitiveRequest changes
D11907: Geometry Nodes: Remesh VoxelAccepted
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 PenAccepted
D14223: Search: Take word order into account in string search.Commented
D14205: Geometry Nodes: Add selection outputs to Curve to Mesh nodeAccepted
D14207: Curves: Add brush to add curves on surface.Committed
D11930: Nodes: Improve readability of selected node linksAccepted, committed
D14192: UI Papercut: Fix multi input socket outline and highlightAccepted
D14225: Fix T95479: Geometry nodes crash with cage display.Commented
D12482: Geometry Nodes: Add UV output to Curve to Mesh nodeAccepted
D13891: Revision of NURBS knot generation modesAccepted
D14215: BLI: Add scoped-defer utility to add RAII-like behavior to C types.Committed
D14129: Dual Mesh: use std::moveAccepted
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
- 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 PenAccepted
D13701: Geometry Nodes: Duplicate ElementsAccepted
D14181: Fix T95985: Crash when assigning a name for an output attributeAccepted
D14180: Curves: Initial brush implementations for curves sculpt modeAccepted
D14192: UI Papercut: Fix multi input socket outline and highlightClosed
D14174: Fix T95952: Uninitialized value is used in Bezier Segment primitive node.Closed
D14155: Fix T93873: Broken UI of color socket inputClosed
D14174: Fix T95952: Uninitialized value is used in Bezier Segment primitive nodeCommented
D13906: Geometry Nodes: Mesh Face is Planar NodeCommented
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 ElementsCommented
D12587: Move Sculpt Colors From ExperimentalCommented
D13891: Revision of NURBS knot generation modesAccepted, committed
D14065: Fix T95542: Dual Mesh crashes with some non-manifold verticesCommented
D13958: New C++ based wavefront OBJ importerAccepted
D11930: Nodes: Improve readability of selected node linksAccepted
D14107: Curves: Add experimental curves sculpt mode.Commented
D14143: Improve Complex Solidify Constraints SolverCommented
D13906: Geometry Nodes: Mesh Face is Planar NodeAccepted
D14136: Curves: add initial edit mode supportAccepted, committed
D14122 D14122: Fix T87829 and T95331: Issues when nodes too close togetherAccepted, committed
D14124: Fix (unreported): Curve to Mesh: Don't create caps, when the rail curve is cyclicAccepted
D14117: Curves: Initial brush system integration for curves sculpt mode.Accepted
D14151: UI: Do not include the text stating an enum item is the defaultAccepted, committed
D14142: Fix T93526: Missing tooltip for attribute search buttonAccepted
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
- Cleanup: Remove unused mesh mask definitions 0247dcde65
- Cleanup: Clang tidy, unused variabel warnings c824c06f38
- Cleanup: Clang tidy 2cc4747443, 7d5f6c330f
- Cleanup: Remove definition for unused flag 22c60ac8b1
Review
Commented
D12587: Move Sculpt Colors From ExperimentalRequested changes
D13701: Geometry Nodes: Duplicate ElementsAccepted
D13906: Geometry Nodes: Mesh Face is Planar NodeAccepted, committed
D13356: UI: Improve node drop shadowRequested changes
D13891: Revision of NURBS knot generation modesAccepted
D14006: BLI: New C++ BitVector data structure.Accepted
D13737: Fix T94415: Nodes: poor selection behavior inside frame nodesCommented
D13953: Geometry Nodes: Split SplinesCommented
D12746: Geometry Nodes: Add Random Spherical Distribution nodeCommented
D13958: New C++ based wavefront OBJ importerCommented
D13577: Geometry Nodes: Add Between operations to Compare nodeRequested changes
D14042: Move solidify code to geometry moduleAccepted
D14051: Fix T95612: Missing domain interpolation when setting output attribute.Accepted, committed
D14026: Fix T95532: Merge node deletes everything for empty selectionsCommented
D14038: Geometry Component: add access to vertex creasesCommented
D13749: Node: Mix nodeCommented
D14050: Fix T91840: Don't create invalid links when inserting a node on a link.Commented
D11209: [WIP] Reroute node improvementsClosed
D14046: Bevel modifier limit method based on edge/face smoothnessCommented
D14062: Fix size_t -> int -> size_t round trip in CyclesClosed
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 NodeCommented
D13891: Revision of NURBS knot generation modesCommented
D13868: Collections: Functions to calculate bounding box and dimensionsAccepted
D13975: Fix T95185: Invalid normals after undo in sculpt modeCommented
D13919: Geometry Nodes: NURBS Order Input/Set NodeAccepted
D13983: Fix T95084: Evaluate all output attributes before changing the geometry.Commented
D13918: Curve: increase max of order u/vCommented
D12035: Geometry Nodes: Add Easing Function NodeRequested changes
D13952: Geometry Nodes: New node Attribute SmoothCommented
D13764: Function Node: Add Integer Math nodeCommented
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 nodeCommented
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 sizeCommented
D13577: Geometry Nodes: Add Between operations to Compare nodeRequested changes
D14002: Fix :T94815 Drag to add node search prioritizes wrong node typeCommented
D13773: Fix T94241: Grayed out Front-Face Falloff checkbox in popoverCommitted
A81fc6b060: UI: Update deep grey community themeClosed
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 StatisticsRequested changes
D13936: Nodes: Dynamic nclass for Map Range nodeCommented
D13920: Geometry Nodes: Single Point NodeAccepted
D13356: UI: Improve node drop shadowAccepted
D13747: Assets: Add operator to create preview from active object.Accepted
D13774: Geometry Nodes: Add NAND, NOR, XOR, XNOR, IMPLY, NIMPLY to Boolean MathAccepted
D13694: Geometry Nodes: String to Curves Line/PivotAccepted
D13373: Geometry Nodes: Segment Length NodeCommented
D12587: Move Sculpt Colors From ExperimentalCommitted
52b2769b9c: Fix T95169: Assert in weld modifier codeCommented
D13927: obj: speed up the exporter by multi-threading and avoiding tiny I/O callsClosed
D12224: Geometry Nodes: Mesh ExtrudeClosed
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.
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 sphereAccepted
D13757: Geometry Nodes: New Scale Elements node.Commented
D13868: Collections: Functions to calculate bounding box and dimensionsAccepted, committed
D13809: Flip Mesh Faces NodeAccepted
D13640: Geometry Nodes: Curve Primitive ArcAccepted
D13804: Geometry Nodes: Triangulate Node - Add Selection InputAccepted
D13796: Geometry Nodes: Edge Angle Node: Add Signed Angle OutputAccepted
D13647: USD Preview Surface material export.Accepted
D13838: Attributes: Add operator to convert generic attributes to other typesAccepted
D13774: Geometry Nodes: Add NAND, NOR, XOR, XNOR, IMPLY, NIMPLY to Boolean MathRequested changes
D13373: Geometry Nodes: Segment Length NodeCommented
D13734: Geometry Nodes: Add Intersection mode to Curve Trim node.Commented
D13840: Fix T94038: Curve type objects count double in scene statisticsAccepted
D13700: Geometry Nodes: New Output for Number of Mesh IslandsCommented
D13867: Fix Bevel Intersection ContinuityCommented
D12530: GPencil: Add Scale Thickness to Pivot Point Pie MenuClosed
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 ExperimentalRequested changes
D13757: Geometry Nodes: New Scale Elements node.Accepted, committed
D13546: Set Spline Type node - better conversion from NURBS to BezierCommented
D13550: Nodes: Expand Math and Vector Math functionsRequested changes
D13796: Geometry Nodes: Edge Angle Node - Add Return Signed Angle OutputRequested changes
D13764: Function Node: Add Integer Math nodeAccepted
D13774: Geometry Nodes: Add NAND, NOR, XOR, XNOR, IMPLY, NIMPLY to Boolean MathRequested changes
D13809: Flip Mesh Faces NodeRequested changes
D13694: Geometry Nodes: String to Curves Line/PivotRequested changes
D13804: Geometry Nodes: Triangulate Node - Add Selection InputAbandoned
D12695: Nodes: Expose the node socket location as read-only to the Python APICommented
D12035: Geometry Nodes: Add Easing Function NodeCommented
D13640: Geometry Nodes: Curve Primitive ArcCommented
D12792: Geometry Nodes: Add Random value to Object Info nodeCommented
D13303: Start of implementation of new texture margin generation.Commented
D13791: BLI: Refactor vector types & functions to use templatesAccepted
D13800: Fix T94812: Render layer sockets are missing after file load.Accepted
D13813: Fix T94837: curve tilt on a 2-point-curve is wrongAccepted
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 objectRequested changes
D13694: Geometry Nodes: String to Curves Line/PivotRequested changes
D13764: Function Node: Add Integer Math nodeRequested changes
D13546: Set Spline Type node - better conversion from NURBS to BezierAccepted
D11664: Accurate NURBS circle and sphereAccepted
D13739: UI: Show recently selected items at the top of searchesAccepted
D13718: Cleanup: Nodes: Convert generic shader node files to c++Commented
D13733: Fix crash when removing sockets used by internal linkCommented
D13715: Fix T94495: 'Split Edges' geometry node leads to a crash in edit modeAccepted
D13736: Fix T94659: Crash when deleting instances.Accepted
D13366: Geometry Nodes: Add Mesh Edge Angle NodeCommented
D9621: Configurable rotation angle incrementsCommented
D13697: Fix T89252: Unable to interact with Stabilize stroke text on clickCommented
D13693: Geometry Nodes: Rename String To Curves socket
Tracker
- Reported
- 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.
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 NodeRequested changes, accepted
D13680: Nodes: Improve link drag search for Math and Vector Math nodesAccepted
D12743: Geometry Nodes: Accumulate Function NodeAccepted
D13625: Geometry Nodes: Add Integer Mode to Attribute StatisticsRequested changes, accepted
D13664: Fix T94113: Local view + Geometry Nodes is broken for instancesCommented, accepted
D13695: Nodes: Add Compare node operations to link drag search menuAccepted
D13691: Nodes: Weight drag link search for Math nodesAccepted
D13686: Nodes: Cleanup: Remove no op registration functionsAccepted
D13697: Fix T89252: Unable to interact with Stabilize stroke text on clickAccepted
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.