Note: This is an archived version of the Blender Developer Wiki (archived 2024). The current developer documentation is available on developer.blender.org/docs.

User:HooglyBoogly/Reports/2021

All Reports

December 20 - December 26

This week I mainly worked on cleanups, some performance improvements, a merge by distance node, and code review.

I worked on some performance improvements, and got some good numbers there-- freeing and copying a large node tree is 25 and 7 times faster, and I observed a 4.4x speedup for calculating the bounds of a large mesh.

I'm happy with the progress of the cleanup of the node editor, I removed 8 more bytes of runtime information from both bNode and bNodeSocket, and removed an extra loop over all nodes and links when drawing the editor.

On Sunday I started a mesh-based implementation of an extrude node-- I just really don't like the idea of adding a BMesh round trip just to implement something that should be very fast.


Changes / Features

  • Mesh: Parallelize bounding box calculation 6a71b2af66
  • Geometry Nodes: Parallelize mesh grid primitive cb96435047
  • Nodes: Add link drag search support for map range node c593db5a2f
  • Nodes: Improve performance when freeing a node tree bdbd0cffda
  • Nodes: Improve node tree copy performance dbbf0e7f66
  • Docs: Add to and cleanup attribute API docs dd3a72f275
  • D13649: Geometry Nodes: Basic point cloud merge by distance node


Bug Fixes

  • Fix T94232: No selection with set material node empty material list 8f89196be2
  • Fix: Potential use after scope in curve to mesh node 14621e7720
  • Fix: Missing update when toggling node mute b4f978e901
  • Fix: Wrong node link drag search menu items for attribute statistic dca5be9b94
  • Fix T94357: Node Ungroup operator copies current node tree 81b3933abb
  • Fix: Curve trim node test failure 1931387799
  • Fix T94344: Incorrect size for edge vertices node output 35bd6fe993
  • Fix: Extra space at the front of "Sample Curve" node name 9033d270d5
  • D13660: Fix T94334: Area close operator crash in 3D view menu


Cleanup

  • Cleanup: Remove spline add_point method, refactor mesh to curve node 60c59d7d61, rBL62774
  • Cleanup: Avoid adding points to splines sequentially 0fd72a98ac
  • Nodes: Refactor to remove node and socket "new" pointers fdc4a1a590
  • Cleanup: Use simpler loops in weld modifier 7acd3ad7d8
  • Cleanup: Move customdata.c to C++ 85abac7e87
  • Cleanup: Move hair object type files to C++ 582f6032fc
  • Cleanup: Use vector instead of linked list d48fc7d156
  • Cleanup: Remove unused UI button definition functions 05f900e346
  • Cleanup: Remove misleading comments 291d2a2222
  • Cleanup: Remove outdated comment 2df912466c
  • Cleanup: Use more common variable name ceed8f7c06
  • Cleanup: Use consistent order for custom data mesh masks 79012c6784
  • Cleanup: Use span instead of raw pointer 5457b66301
  • Cleanup: Remove unused arguments 1d25ba175e
  • Cleanup: Comment formatting in node.cc 82fa2bdf3f
  • Cleanup: Clang tidy, restore alphabetical sorting d2bf60cc17
  • Cleanup: Remove mesh valid assertions in debug builds bdb5852e28
  • Cleanup: Remove unused node type flag 76cb11e332
  • Cleanup: Return early 6b662ebdb9


Review

  • Requested changes D12743: Geometry Nodes: Accumulate Function Node
  • Requested changes D13625: Geometry Nodes: Add Integer Mode to Attribute Statistics
  • Accepted, committed D13445: Fix T94144: Duplicate edges in dual mesh node
  • Requested changes D13664: Fix T94113: Local view + Geometry Nodes is broken for instances
  • Requested changes D13647: USD Preview Surface material export.
  • Accepted, committed D13620: Fix assert conditions in NURBSpline::knots method


Tracker

  • Investigated: 11
  • Resolved: 4
  • Archived: 3
  • Confirmed: 4
  • Known Issue: 1


Next Week

(Like I said last week) I'll try to finish up the merge by distance node. Also on the list are making progress on a rotation data type, working a bit on the named attribute nodes, and hopefully finishing up this extrude node that I started, at least an initial version anyway.


December 13 - December 19

This week I committed the link drag search patch I've been working on for a few weeks, worked on some other smaller patches, and started cleaning up the weld modifier in order to use it in a merge by distance node soon. I also did a fair amount of bug triaging and code review, and worked on a few performance improvements.

Changes / Features

  • UI: String Search: Add an optional weight parameter 0606adceb3
  • Geometry Nodes: Support point clouds in the set material node da2c564bb0
  • Geometry Nodes: Add a note about the nested instancing limit rBM8782
  • Geometry Nodes: Add vector map range node tests rBL62771
  • D13572: Mesh: Parallelize bounding box calculation (WIP)
  • D13565: Geometry Nodes: Support instances in the delete geometry node
  • D13601: Spreadsheet: Add material column for meshes
  • D13605: Geometry Nodes: Remove "normal" from the spreadsheet
  • D13617: Geometry Nodes: Parallelize mesh grid node
  • D13626: Geometry Nodes: Support warnings from field inputs (WIP)


Bug Fixes

  • Fix various cases of incorrect filtering in node link drag search b265b447b6
  • Fix: Crash in nodes modifier with missing node group 49311a73b8
  • Fix T94173: Missing update for frame node size d15d512a68
  • Fix T93920: Wrong field inferencing state with unavailable socket b44a500988
  • Fix T94082: Curve to point empty evaluated NURBS crash 67b657f07c
  • Fix: Build error from missing include 491b9cd2b9


Cleanup

  • Refactor: Simplify spreadsheet handling of cell values 474adc6f88
  • Cleanup: Remove runtime uiBlock pointer from nodes d56bbfea7b
  • Cleanup: Move weld modifier to C++ 8a91673562
  • Cleanup: Simplify node group input and output socket verification fdd41ac49e
  • Cleanup: Remove no-op node preview function calls 43875e8dd1
  • Cleanup: Use signed integers in the weld modifier 0aabaa4583
  • Cleanup: Move curve.c to C++ bd12855110
  • Cleanup: Simplify logic in set material node b7e151d876
  • Cleanup: Use const arguments, references aa55cb2996
  • Cleanup: Remove more no-op node preview code c27d0cb7b9
  • Cleanup: Remove more texture nodes preview handling cc367908cd
  • Cleanup: Const arguments, remove unused argument eac6aff741


Review

  • Accepted D13446: Geometry Nodes: Support instance attributes when realizing instances.
  • Accepted D13246: Nodes: Refactor node tree update handling.
  • Requested changes D11664: Accurate NURBS circle and sphere
  • Requested changes, accepted D13520: Geometry Nodes: Add Selection Input to Attribute Statistics Node
  • Commented D13560: Geometry Nodes: Selection Expand / Contract
  • Accepted, committed D13451: UI: Fix nodes sockets alignment
  • Accepted, committed D13554: Remove CU_CARDINAL and CU_BSPLINE from code base
  • Commented D13581: Fix T94078: Wrong Bound Box calculated for curves
  • Requested changes D13373: Geometry Nodes: Segment Length Node
  • Requested changes, accepted D13445: Fix T94144: Duplicate edges in dual mesh node
  • Updated D6540: Remove node->offsetx/offsety [WIP]
  • Accepted D12760: Nodes: Add Vector Map Range node
  • Commented D13625: Geometry Nodes: Add Integer Mode to Attribute Statistics
  • Accepted D12990: AssetsBrowser: Add ID Properties to Asset Indexer
  • Accepted D13523: Nodes: Begin splitting composite node buttons into individual files
  • Requested changes D13050: Address Multifunction API warnings
  • Commented D13472: Geometry Nodes: Transpose Splines Node
  • Commented D13431: Nodes: Pointer from socket to node for faster lookups
  • Accepted D13571: Geometry Nodes: Simplify using selection when evaluating field.
  • Accepted D13620: Fix assert conditions in NURBSpline::knots method
  • Accepted D13611: Fix T94162: Incorrect handling when there are multiple group outputs.
  • Commented D13553: Geometry Nodes: Add Is Empty Node
  • Accepted D13585: Fix T93975: Add more nested instance limit checks.
  • Accepted D13558: Fix T86200: Properties editor rearranges columns poorly when very wide
  • Commented D13586: Paint2D: Performance


Tracker

  • Investigated: 29
  • Needs Information: 3
  • Resolved: 3
  • Archived: 11
  • Confirmed: 3


Next Week

I'll try to finish up a merge by distance node, do more code review of geometry nodes features, and finish up some of the small projects I started towards the end of this week (the patches at the bottom of the "Changes / Features" section. I'd also like to work on a rotation or 2D vector data type, and update the named attribute nodes patch.


December 6 - December 12

This week I mostly focussed on code review, finishing up the node link drag search menu, and cleanup. I was travelling on Wednesday, but I decided to start some cleanup of runtime values in node DNA and other various node editor code improvements, which I continued a bit later in the week.

I also spent a bit of time working on my refactor of mesh vertex normals.

And as usual, a couple of tasks I made this week:

  • T93830: Move GeometrySet and CurveEval to blender::bke namespace
  • T93817: Convert Triangulate node input to a selection


Changes / Features

  • Geometry Nodes: Remove unnecessary copy when replacing data dffd032bc9


Bug Fixes

  • Fix T93521: Single point NURBS crash in resample node ee4ed99866
  • Revert recent changes to ImBuf transform 5a3d5f751f
  • Fix: Attempt to fix build error on macOS 86d520f268
  • Fix: Compile error in field input 5705db5bb3


Cleanup

  • Docs: Add more comments to geometry set header 7fbb767259
  • Docs: Add comments to Mesh header, rearrange fields 5ca38fd612
  • Docs: Add comment to spline lookup factor method 03015a9b22
  • Docs: Extend a few comments in BKE_spline.hh 5568455d63
  • Cleanup: Remove includes in node_util.h header d9d4b9899e
  • Cleanup: Remove unnecessary generic includes from headers b91ac86cfc
  • Cleanup: Remove unused includes aa23e870ec
  • Cleanup: Use const arguments 23be5fd449
  • Cleanup: Use const argument, rename variables a8b730e04c
  • Cleanup: Use C++ types for multi input socket sorting 78ae587649
  • Cleanup: Use float2 for node view functions 5b06759473
  • Cleanup: Add macro and functions for node storage 2309fa20af
  • Cleanup: Point cloud vs point-cloud in comments 80f1527762
  • Cleanup: Return early in null check 1a02c0d7dd, 74a566d211
  • Cleanup: Remove unused node flag 01779970c2
  • Cleanup: Fix warnings about copied Map loop variables c3c69fee09
  • D13518: Nodes: Refactor to remove node and socket "new" pointers (WIP)
  • D13543: Cleanup: Simplify node group input and output socket verification
  • D13540: Cleanup: Remove runtime uiBlock pointer from nodes
  • D13517: Node Editor: Refactor node tree drawing, avoid runtime data in DNA (WIP)
  • D13519: Cleanup: Remove unused "init" node tree flag


Review

  • Requested changes D13246: Nodes: Refactor node tree update handling
  • Requested changes, accepted D13446: Geometry Nodes: Support instance attributes when realizing instances
  • Requested changes D12550: Geometry Nodes: Add Curve Curvature Node
  • Requested changes D12990: AssetsBrowser: Add ID Properties to Asset Indexer
  • Accepted D13548: Geometry Nodes: Move up destruct instructions in procedure
  • Requested changes, accepted D13504: Geometry Nodes: Mesh Island Field Input Node
  • Accepted, committed D13474: Fix T93591: Make 'Random Value' node in Integer mode spit out evenly distributed numbers
  • Requested changes D13546: Set Spline Type node - better conversion from NURBS to Bezier
  • Commented D12155: Curves: Curve Pen
  • Commented D12746: Geometry Nodes: Add Random Spherical Distribution node
  • Accepted D13489: Geometry Nodes: Reduce code duplication with new GeometryFieldInput.
  • Commented D12936: Geometry Nodes: Add HSVA separate and combine nodes
  • Accepted D10980: UI: Add curve handle buttons to CurveMap interface
  • Requested changes D13451: UI: Fix nodes sockets alignment
  • Accepted D13455: Geometry Nodes: Scene Time Input Node
  • Accepted D13500: Geometry Nodes: New Geometry to Instance node.
  • Commented D13516: UI: Separate Snap option for 3d viewport, UV edit and Node editors
  • Commented D13496: Shader Nodes: Convert bump node to use new socket builder
  • Commented D13310: UI: Individualize option to use snap by space type
  • Commented D13539: UX: Prevent click-through panels and used header area
  • Commented D13523: Nodes: Begin splitting composite node buttons into individual files
  • Abandoned D12080: Geometry Nodes: Mesh Auto Smooth
  • Accepted D13509: Fix T93728: Greasepencil separate will loose all vertex groups
  • Accepted D13487: Fix T93611: Curve modifier crash in editmode in certain situations
  • Commented D13502: Allocator: Simplify using guarded allocator from c++.
  • Commented D13486: Expose the "mute" property of the node on sidebar in Node Editor


Tracker

  • Investigated: 15
  • Needs Information: 1
  • Resolved: 2
  • Archived: 6
  • Confirmed: 2
  • Duplicate: 4
  • Known Issue: 1


Next Week

Hopefully I can land the link drag search menu after finishing responding to the feedback, and start on something like finishing up a couple of the procedural modeling nodes.

November 29 - December 5

This week was mostly about work on the node link drag search menu from last week. At the end of the week, that work turned into some more significant cleanup of node editor files. I made a good start there, but there are so many possible cleanups (and O(N^2) algorithms to fix!).

I also did some bug fixing/triaging and code review. And here are two new tasks I made:

  • T93602: Convert Mesh vertex data into float3
  • T93569: Flip Mesh Faces Node


Changes / Features

  • Geometry Nodes: Propagate attributes in Instances to Points node 386b112f76
  • UI: Add an option to display the node editor context path 70a7685d04
  • D13442: Geometry Nodes: Use mutable input for the resample curve node
  • D13358: Geometry Nodes: Add Factor and Size to Index Input


Bug Fixes

  • Fix T93525: Crash with curve/text armature bone gizmo 594656e7a3
  • Fix T84710: Instances with only mesh edges or vertices are invisible b869da0c10
  • Fix: Missing handling of dynamic instance attribute size c822e03e2a
  • Fix: Instances component does not copy attributes bc48da3235
  • Fix: Remove incorrect asserts for empty attributes 128ebdb062
  • Fix: Add tooltip translation marker to disabled hints ca9cdba2df
  • Fix: Updating geometry nodes test results fails 2b6c01d98c
  • Fix: Missing min value for set spline resolution node f9add2d63e


Cleanup

  • Cleanup: Use references in node editor, other improvements 2d8606b360
  • Cleanup: Store instances id attribute with other attributes f8dd03d3dd
  • Cleanup: Remove unnecessary node type callbacks for drawing 338c1060d5
  • Cleanup: Remove unnecesary node type draw callback 9a312ba192
  • Cleanup: Const, use references, C++ types d1f118d228
  • Cleanup: Remove unused next and prev pointers in bNodeType 0a8a22fc04
  • Cleanup: Rename curve struct fields 218360a892
  • Cleanup: Move public docs to BKE_spline.hh header a1f0f2eacb
  • Cleanup: Use typed enum for node resize direction cb0fbe1fde
  • Cleanup: Avoid using C++ keyword as variable name 27b70428c1
  • Cleanup: Comments and ordering in node editor header be3f3812dc
  • Cleanup: Use LISTBASE_FOREACH macro 56ed4c14d3
  • Cleanup: Remove unused code ca0dbf8c26
  • Cleanup: Move node_shader_util.c to C++ fed4fc9c42
  • D13454: Cleanup/Docs: Add comments to Mesh header, rearrange fields


Review

  • Requested changes, accepted D12949: Geometry Nodes: Dual Mesh node
  • Requested changes D12155: Curves: Curve Pen
  • Requested changes, accepted D13343: Geometry Nodes: 4 Mesh Data Input Nodes
  • Accepted, committed D13444: UI: Fix scaling of HSV cursor when zooming
  • Accepted D13480: Shader Nodes: Declare nodes in their own namespace
  • Accepted D13417: Geometry Nodes: Deduplicate join geometry code
  • Accepted D13365: Geometry Nodes: Add Domain Size Node
  • Requested changes, accepted D13228: Geometry Nodes: Generalized Compare Node
  • Accepted D13429: Geometry Nodes: Propagate attributes in Instance on Points node
  • Commented D12936: Geometry Nodes: Add HSVA separate and combine nodes
  • Accepted, committed D13092: Fix Group Output nodes having different padding from Group Input nodes
  • Commented D13156: UI: Don't use different active color for icons without an emboss
  • Commented D13466: Nodes: Declare compositor nodes in their own namespace
  • Commented D13433: Node editors: Add overlays for grid and breadcrumbs
  • Abandoned D13251: "Mesh Info" and "Point Cloud Info" Geometry Nodes


Tracker

  • Investigated: 17
  • Resolved: 2
  • Archived: 6
  • Confirmed: 2
  • Duplicate: 5
  • Known Issue: 1


Next Week

I'll finish up the link drag search menu, do some other smaller tasks, and hopefully get started on another larger task.

November 22 - November 24

A short week because of the Thanksgiving holidays. I still made some nice progress with the node link drag search menu. It has some issues still but it's looking much closer to finished.

The search menu when you drop a node link shows a list of compatible nodes and sockets, and some extras like a special item for adding a new group input or a reroute.

Apart from that, I spent time reviewing patches, mostly from Jacques and Johnny. I also got the mesh vertex normal refactor to a point where code review comes next.


Changes / Features

  • Tests: Add simple test for geometry nodes writing to vertex group rBL62757
  • Tests: Add test for corner domain attribute transfer in delete geometry node rBL62759


Bug Fixes

  • Fix T92120 (partially): No bone custom shape with curve object meshes a07089dcb1
  • Fix T93250: Crash in spreadsheet tree view after recent commit 77ddc6e350
  • D13390: Fix: Missing handling of dynamic instance attribute size


Cleanup

  • Cleanup: Deduplicate instances component in spreadsheet f7f558e293
  • Cleanup: Simplify geometry node function names fab39440e9
  • Cleanup: Else after return, other simplifications 62b50c612f
  • Geometry Nodes: Rename legacy node files cc6bcb53b2


Review

  • Accepted D13384: Geometry Nodes: Add utility to set remaining outputs
  • Accepted, edited, committed D13089: Updated Addon Themes for Spreadsheet Workspace
  • Requested changes D13228: Geometry Nodes: Generalized Compare Node
  • Requested changes, accepted D13256: Geometry Nodes: Show node execution time
  • Requested changes, accepted D13307: Geometry Nodes: Use ValueOrField type in geometry nodes evaluator.
  • Accepted D13340: Geometry Nodes: Fix logging socket value to group input socket
  • Requested changes D11272: Initial modifications allowing Text object (OB_FONT) boolean targets
  • Requested changes D13365: Geometry Nodes: Add Attribute Domain Size Node
  • Accepted D13338: Geometry Nodes: Fix attribute propagation in Delete Geometry node
  • Accepted D12282: Fix T90808: Undo curve selection recalculates boundbox based on curve data
  • Accepted, committed D13216: Fix T92631: Fix regression with negative thickness in complex solidify
  • Requested changes D13343: Geometry Nodes: 4 Mesh Data Input Nodes
  • Requested changes D13100: Geometry Nodes: Add Arc Mode to Circle Node
  • Requested changes D13279: Geometry Nodes: Add Spline Point Count to Spline Length Node
  • Requested changes, accepted D13275: Geometry Nodes: Change Curve Parameter to Spline Parameter & add Index
  • Accepted D13335: Geometry Nodes: Decouple Delete Geometry node from Mask modifier
  • Accepted D13326: Fix T93231: Crash when overwriting vertex group with other domain
  • Accepted D13319: Fix T93090: Crash with data transfer modifier and geometry nodes.
  • Accepted D13333: Fix T93296: Raycast node uses wrong domain for face corner attributes
  • Accepted D13330: Geometry Nodes: Add file namespaces.
  • Accepted D13362: Fix T93362: Crash when capturing attribute after fillet curve node
  • Accepted D13315: Fix T92654: Missing padding in spreadsheet cells.
  • Accepted D13321: Fix: Const warning in editmesh_knife.c
  • Accepted D13308: Fix (unreported) broken handling of constraints reordering with liboverride.
  • Accepted D13318: CurveEval: Add Point Size and Total Length functions
  • Accepted D13192: GPencil: New Shrinkwrap modifier
  • Accepted D13348: Geometry Nodes: Add utility to show debug messages in node editor
  • Commented D13399: BLF WIP: Outlines from FontBLF
  • Closed D13363: Fix T93159: Particles don't emit text


Tracker

  • Investigated: 10
  • Resolved: 2
  • Archived: 3
  • Needs Information: 1


Next Week

I have a normal full week next week. I'll do code review and look into making more significant progress on our 3.1 targets, especially continuing work on the link drag search menu.


November 15 - November 21

I didn't finish much of anything this week, except for some cleanup. I made progress on lots of things, but I'm definitely spread out a bit too much right now. And there's still a lot of time dedicated to bug-fixing, though maybe that's slowing down now.

I didn't expect to work on this, but I revived the patch for a search menu when dragging a node link to empty space: D8286 It's been a while since I tested that out. I really like it!. It should be a huge usability improvement.

I also created/responded to some new tasks:

  • T93203: Geometry Nodes 3.1 Targets
  • T93098: Scene time input node
  • T93233: Refactor Spline Attribute Storage
  • T93268: Bezier Splines: Support different interpolation options
  • T93267: Tangent normal calculation mode for curves
  • T93208: Auto Smooth and Geometry Nodes


Changes / Features

  • Geometry Nodes: Small improvements to object info node cf83719761
  • Spreadsheet: Support instances component viewer node columns ba8dd0f24f
  • rBL62752: Geometry Nodes: Add three more tests for the cube primitive
  • D13248: UI: Add an option to display the node editor context path


Bug Fixes

  • Fix T92857: Deadlock in geometry nodes curve multi-threading 25d30e6c99
  • Fix T92682: EEVEE motion blur crash with curve objects 0f1a200a67
  • Fix T93085: Incorrect geometry nodes modifier warning f30e1fd2f0
  • Fix T93256: Instances to points node broken after recent commit fb470c256a
  • Fix: Use the instances domain in instance transform nodes 1222c45544
  • Fix: Exception in tree view code in new case a0780ad625
  • D13301: Fix T93250: Crash in spreadsheet tree view after recent commit


Cleanup

  • Refactor: Port spreadsheet data set to UI tree view 01df48a983
  • Cleanup: Simplify node editor link dragging storage 51a7961e09
  • Cleanup: Use vector instead of linked list 217d0a1524
  • Cleanup: Simplify declarations in C++ header 3531021d1b
  • Cleanup: Use canonical variable name cfbc9df60e
  • Cleanup: Move menu search template to C++ d455eadcd8
  • Cleanup: Use const arguments 67b4eecac9
  • Cleanup: Use C++ matrix identity constructor 57ed435def
  • Cleanup: Else after return 3baaab15fc
  • Cleanup: Use bool instead of int 8290edefad


Review

  • Accepted D12986: Geometry Nodes: Refactor virtual array system.
  • Requested changes D12746: Geometry Nodes: Add Random Spherical Distribution node
  • Requested changes D13256: Geometry Nodes: Show node execution time
  • Requested changes D12949: Geometry Nodes: Dual Mesh node
  • Accepted D13149: Geometry Nodes: Support custom instance attributes
  • Accepted D13225: UI: Use a map for block name lookups
  • Accepted D13207: Geometry Nodes: Optimize Cube primitive vertex calculation
  • Commented D12282: Fix T90808: Undo curve selection recalculates boundbox based on curve data
  • Commented D13228: Geometry Nodes: Generalized Compare Node
  • Commented D13279: Geometry Nodes: Expand Spline Length and Curve Length
  • Accepted D13255: Node Editor: Skip drawing sockets if zoom is small
  • Accepted D13254: Node Editor: Change minimum zoom
  • Accepted D13274: Fix T93184: Link color not used for custom sockets
  • Accepted D13261: Nodes: Add bf_nodes_geometry library
  • Accepted, committed D13219: Fix: Incorrect socket identifier versioning.
  • Requested changes D12636: Geometry Nodes: Finish off Distribute Points in Volume
  • Requested changes D12035: Geometry Nodes: Add Easing Function Node
  • Accepted, committed D13098: Fix time node using "Sta" instead of "Start"
  • Commented D13251: "Mesh Info" and "Point Cloud Info" Geometry Nodes
  • Accepted D13271: Fix: Error when materializing curve point attribute.
  • Accepted D12928: GPencil: Add randomize options to Length modifier
  • Accepted D13092: Fix Group Output nodes having different padding from Group Input nodes
  • Commented D9586: UI: Fix disconnected and non-clickable checkbox labels in popovers


Tracker

  • Investigated: 16
  • Resolved: 3
  • Archived: 7
  • Duplicate: 1
  • Needs Information: 1


Next Week

Next week will be pretty short for me, since it's the Thanksgiving holiday here. Hopefully I can still get a few things finished though. Anything to narrow down the list of possibilities at this point, there's just so much!


November 8 - November 12

This was a four day week, since I took most of Monday off. Even though I didn't really expect to, I spent most of the week triaging and fixing bugs. We also had some good design discussions though, including a bit of discussion about the simulations topic. Generally that's a relatively difficult thing to discuss though. Some tasks that came out of those discussions:

  • T92967: Add rotation data type
  • T93044: Single Point Node (Design)
  • T92969: Automated performance benchmarks for geometry nodes/modifiers
  • T92965: Refactor the spreadsheet data set region to use the abstract tree view API
  • T92982: Display the execution time of nodes

Other than that, I spend more time working on various refactors-- mesh normals, C++ conversions, and the spreadsheet.

The spreadsheet data set region looks almost exactly the same, except it has a box around it, and over 320 lines of unnecessarily specific code can be removed!

I also spent some more time on the manual, and added a page to describe fields at a high level: https://docs.blender.org/manual/en/3.0/modeling/geometry_nodes/fields.html


Changes / Features

  • Viewport: Remove different outline color for instances aa13c4b386
  • Geometry Nodes: Clarify modifier node group errors 20224369d9


Bug Fixes

  • Fix T91826: Inconsistent node socket name identifier separator d845ba481c
  • Fix T92636: Vector math node link disconnects when loading old file 6b4ca78108
    • Revert "Fix T92636: Vector math node link disconnects when loading old file" (3.1) 738f4fbc5e
  • Fix T89313: Attribute search crash with animation playback 22ffd69a91
  • Fix: Incorrect transfer attribute error message with curves 888b879f5f
  • Fix: Hide selection value in resample curve node, fix order aa440923c8
  • Fix: Incorrect modifier warning with non-geometry input first f3bdabbe24
  • Fix: Incorrect translation search for modifier error messages 67e5edbaa3
  • D13170: Fix T87335: Object material slots do not work with new geometry (WIP)
  • D13196: Fix T84710: Instances with only mesh edges or vertices are invisible
  • D13197: Fix: Exception in tree view code in new case


Cleanup

  • Cleanup: Move interface_region_search.c to C++ f1a8644121
  • Cleanup: Move info_stats.c to C++ 1f6010e609
  • Cleanup: Move remaning node editor files to C++ cbca71a7cf
  • Cleanup: Use bool instead of int 35ae7ab933
  • Cleanup: Improve comment 1e1c870001
  • D13198: Refactor: Port spreadsheet data set to UI tree view


Review

  • Accepted D13162: Fix T92908: Print warning when instance recursion limit is reached.
  • Accepted D13159: Fix T92928: Geometry nodes animation decorator wrong for vectors
  • Accepted D13194: Fix: Attribute Transfer node does not work with a single index.
  • Requested changes D13149: Geometry Nodes: Support custom instance attributes
  • Requested changes D13199: Fix T92313: Adjust header to the center
  • Accepted, committed D13107: Prevent use of uninitialized memory when constructing bezier spline.
  • Accepted, committed D13150: Update Minimal Dark community theme for node editor changes
  • Accepted, committed D13090: Updated Blender Light Theme for Spreadsheet Workspace
  • Accepted, committed UI: Update Minimal Dark community theme for node editor changes Aface67c72
  • Accepted D13097: Geometry Nodes: Add Points Selection Output to Star
  • Requested changes D12019: Geometry Nodes: Merge by Distance (Modifier port)
  • Commented D13116: UI: Add frame range theme options
  • Closed D11253: LineArt Icon patch.


Tracker

  • Investigated: 28
  • Resolved: 14
  • Archived: 5
  • Duplicate: 2
  • Known Issue: 2
  • Needs Information: 1


Next Week

Hopefully there will be fewer bugs and I can make some more progress towards the larger 3.1 goals. I'd like to make some good headway for patch review too.


November 1 - November 7

I spent the majority of the week working on bug fixes. It turns out having Nodevember during Bcon3 has been very helpful for uncovering bugs-- we made a lot of progress. There are still more to finish fixing, but I don't think there will be many other big ones.

I also spent a fair amount of time on code review, and made some design tasks. The first one is particularly important I think.

  • T91668: How to deal with multiple volume grids in a geometry
  • T92744: Add options to realize instances node
  • T92729: More general "Compare" node
  • T92765: 2D Vector Socket Type

Also, I can't see commits to the 3.0 manual branch on Phabricator, but I spent plenty of time checking on the documentation, making some final changes and additions. I still have a couple of things I think should be added there though.


Changes / Features

  • Geometry Nodes: Support volumes in the set material node 348d7c35a9
  • Spreadsheet: Display geometry volume component grids ccead2ed9c


Bug Fixes

  • Fix T92815: Incorrect handling of evaluated meshes from curves 1bc655c5aa
  • Fix T92652: Joining curves breaks point attribute order 18392cef17
  • Fix T92848: Crash when joining curves with spline domain attributes 594ee5f160
  • Fix T92850: Curve to mesh incorrect for single point profiles 616594fcb1
  • Fix T92662: Curve to mesh start cap invalid topology b6c2deef05
  • Fix T92532: Missing null checks in IDPropertyManager.update_from efcf36f2e9
  • Fix T92316: Inconsistent name for Set Curve Tilt node 11392829ad
  • Fix T92640: Crash with instance input to reverse curve node 55e68f1b70
  • Fix: Startup file geometry nodes viewport inconsistent orientation a9bda98519
  • Fix T92812: Startup has "Standard" View Transform Instead of "Filmic" b646846646
  • Fix part of T89313: Attribute search crash during animation playback c473b2ce8b
  • D13133: Viewport: Remove different outline color for instances
  • D13141: Fix: Add tooltip translation marker to disabled hints


Cleanup

  • Cleanup: Improve curve point attribute assert a72ed0bb7f
  • Cleanup: Add function to get attribute ID from custom data layer 7aa311e539
  • Cleanup: Decrease variable scope, rename functions 7a5b8cb202
  • Cleanup: Grammar in comments 42df2a7b57
  • Cleanup: Clang tidy 892da668dc


Review

  • Requested changes D12155: Curves: Curve Pen
  • Requested changes D12949: Geometry Nodes: Dual Mesh node
  • Requested changes, accepted D12831: Geometry Nodes: Selection outputs for cone and cylinder.
  • Accepted, committed D12640: Add node tooltips to Geometry Nodes primitives
  • Accepted D13034: Fix T91862: Do type conversion when data enters or exists node group.
  • Requested changes, accepted D12842: UI: Improve scaling of widgets when zooming
  • Requested changes D13097: Geometry Nodes: Add Points Selection Output to Star
  • Requested changes D12947: Geometry Nodes: Relative Handle Position Mode
  • Requested changes D13089: Updated Addon Themes for Spreadsheet Workspace
  • Requested changes D13107: Prevent use of uninitialized memory when constructing bezier spline.
  • Accepted D13044: UI: Use socket type info color to draw links
  • Requested changes, accepted D13064: Geometry Nodes: Add Selection Input to Resample Curves Node
  • Requested changes, accepted D13115: Cleanup: Move object.c to C++
  • Commented D13065: Add tooltips to MixRGB modes
  • Commented D12035: Geometry Nodes: Add Easing Function Node
  • Commented D13062: Fix T89709: Avoid double node links after delete and reconnect
  • Accepted D12882: Geometry Nodes: Add Length to Curve Parameter Node
  • Accepted D13075: Fix: Make sure geometry set owns mesh before taking ownership.
  • Accepted D13135: Fix T92864: Curve object does not sync correctly in cycles.
  • Accepted D13134: Cleanup: Move mesh.c to C++
  • Accepted D13085: Include node name for socket animation channel UI
  • Accepted D13108: Nodes: Add default link socket to socket declaration.
  • Accepted, committed D11097: Fix: Tool icon jittering in some cases
  • Accepted D9944: UI: Error in UI_GetThemeColorBlendShade4fv function when calculating Alpha
  • Committed A684ef91c1: UI: Update Minimal Dark community theme
  • Commented D12356: Add jump to top and bottom operator in view panning
  • Commented D12738: Fix: Viewport stats not fully working for Geometry Nodes
  • Commented D13112: Fix T92815: Wrong curve rendering in cycles (WIP).
  • Commented D13072: VSE: Remove separator lines between rows
  • Commented D13119: Text Editor: Auto close relevant characters


Tracker

  • Reported T92864: Cycles: Curve object evaluated mesh does not update
  • Investigated: 29
  • Resolved: 10
  • Archived: 9
  • Duplicate: 2
  • Known Issue: 1


Next Week

I'd like to finish fixing the last of this set of bugs and start making some progress on the other new tasks. I also want to get my refactor of mesh vertex normals storage closer to finished.


October 25 - October 31

This week I almost finished the documentation for the changes to geometry nodes in 3.0, I worked on the final changes we wanted to complete before Bcon3, fixed some bugs, and did code review.

Some of the examples I added for the documentation pages. The more the better, I think.

Changes / Features

  • UI: Improve node editor breadcrumbs display 3371a4c472
  • UI: Change node editor grid into a dot grid e463d2c16f
  • UI: Improve layout of custom property edit panel 972677b25e
  • Geometry Nodes: Add "Fill Caps" option to curve to mesh node bc2f4dd8b4
  • Geometry Nodes: Handle multiple grids in the volume to mesh node 8ddfdfd2b2
  • Geometry Nodes: Rename geometry sockets to add hints about supported types 87470169e0, 827d7e7d25
  • Geometry Nodes: Get and set nodes for ID attribute 7d3d09b69c
  • Geometry Nodes: Only create instance IDs when they exist 9fa304bf13
  • Geometry Nodes: Show hint in empty output attributes panel 212b02b548
  • UI: Hide labels for subdivision surface node enums b6bed63b5b
  • UI: Make the mesh to volume node slightly narrower 8f1284ab78
  • Nodes: Add translation markers to new socket names and descriptions 2383628ee1
  • Geometry Nodes: Support instances in the remove attribute node b6d2bee28f
  • Documentation
    • Geometry Nodes: Complete curve nodes documentation rBM8545
    • Geometry Nodes: Complete documentation in text category rBM8547
    • Geometry Nodes: Set Position node rBM8526
    • Add more geometry nodes stub files, started page for capture attribute rBM8513
    • Geometry Nodes: Separate components and realize instances nodes rBM8527
    • Geometry Nodes: Complete geometry proximity page with examples rBM8534
    • Add back note about id to distribute points on faces rBM8518
    • Geometry Nodes: Add "Fill Caps" option to curve to mesh node rBM8507
    • Geometry Nodes: Fields version of the raycast node rBM8525
    • Geometry Nodes: Get and set nodes for ID attribute rBM8524
    • Small improvements to wording in transform node rBM8533
    • Fix typo in curve tangent node, add more detail rBM8522
  • D13037: Geometry Nodes: Support volumes in the set material node
  • D13049: Spreadsheet: Support geometry volume component
  • D13007: Geometry Nodes: Support volumes in the join geometry node


Bug Fixes

  • Fix T92552: Spline evaluation with all points at the origin b43077ba3a
  • Fix: Realize instances versioning fails for curve to mesh node defc1b8e18
  • Fix: Show "new" attribute name typed in nodes modifier input search ef6e03c8e0
  • Fix: Incorrect component type warning in points to volume node fcf1ba18f0
  • Fix: Show node editor dot grid when there is no node tree c7b27f45ae
  • Fix: Assert on startup from incorrect float property min f1a662c157
  • Fix: Inverted normal for one curve to mesh cap be3e09ecec
  • Fix: Typo in texture nodes documentation rBM8546
  • D13038: Fix T92120: Bone custom shape does not work with curve object meshes
  • D13024: Fix T92532: Missing null checks in IDPropertyManager.update_from


Cleanup

  • Cleanup: Simplify logic for adding grid in points to volume node ae9052a33e
  • Cleanup: Restore alphabetical order 35aa3bf22d
  • Cleanup: Remove unused functions, make functions static 3be91d6da5

Review

  • Requested changes D12986: Geometry Nodes: Refactor virtual array system (WIP).
  • Accepted D13031: Fix T92256: Rotate Instances node does not take scaling into account correctly.
  • Accepted D12938: Geometry Nodes: Support viewing field values in spreadsheet.
  • Requested changes D12990: AssetsBrowser: Add ID Properties to Asset Indexer
  • Requested changes D12882: Geometry Nodes: Add Length to Curve Parameter Node
  • Requested changes D12640: Add node tooltips to Geometry Nodes primitives
  • Accepted D13006: Geometry Nodes: Remove reference to anonymous attributes in socket inspection.
  • Requested changes D12035: Geometry Nodes: Add Easing Function Node
  • Requested changes D12746: Geometry Nodes: Add Random Spherical Distribution node
  • Requested changes D12768: Geometry Nodes: Field Reverse Node
  • Accepted D13005: Fix T92427: Adding nodes does no edge-scrolling
  • Accepted D12899: Geometry Nodes: Component type warning system.
  • Accepted D12947: Geometry Nodes: Relative Handle Position Mode
  • Accepted D13009: Geometry Nodes: Do cache invalidation after writing attributes.
  • Accepted, committed D11734: UI: Improve socket icon scaling in the node group input / output list
  • Commented D13051: Geometry Nodes: Curve Auto-Cyclic
  • Commented D12761: Geometry Nodes: Index Offset Node
  • Accepted D13025: Updates Blender manual to have clearer descriptions of Geometry Nodes
  • Accepted D12968: UI: Use flat colors for NLA strip drawing
  • Accepted D13012: Geometry Nodes: Add Image to Switch Node
  • Accepted D13002: Fix T92494: Node Editor dot grid not respecting display resolution scale
  • Accepted D12994: Update images for: Distribute Points on Faces, Value to String, Slice String


Tracker

  • Investigated: 13
  • Resolved: 2
  • Archived: 8


Next Week

Start planning for the next things we want to prioritize in 3.1 and beyond, bug fixing, and code review.


October 18 - October 24

This week I continued working on the final setps of the transition to geometry nodes fields for 3.0. At the end of the week there is still more work to do, but we're very close. At this point I'm definitely looking forward to finishing the fields changes and working on something new!

This is the node group that we add with versioning code to a modifier in between the nodes modifier and an old mesh modifier, to have the same behavior, which used to be implicit.
Testing the curve to points node while updating it to work with fields. One change we might need to make eventually is allowing a spline to control the interpolation between control points, so the cones would not bend around the sharp vector-handle corner.

Changes / Features

  • Geometry Nodes: Fields version of the raycast node 0a6cf3ed0c
  • Geometry Nodes: Update bounding box to work on individual instances 7b9319adf9
  • Geometry Nodes: Attribute search in the modifier 1d96a48267
  • Geometry Nodes: Remove repeated instance attribute names in search 3e75f70acd
  • Geometry Nodes: Make Random ID a builtin attribute, remove sockets 40c3b8836b
  • Geometry Nodes: Fields version of Curve to Points node 334a8d9b3e
  • Geometry Nodes: De-duplicate index input nodes during evaluation a3457704fb
  • Geometry Nodes: Remove implicit realizing and conversion 219058c213, rBL62727
  • Geometry Nodes: Optimize curve builtin attribute exists check 9f895fbb97
  • BLI: Support removing keys from a set during iteration a76bb1a277
  • Documentation
    • Geometry Nodes: Add documentation for the remaining curve nodes rBM8490
    • Update collection info node documentation rBM8491
    • Update the rest of the geometry nodes input nodes rBM8492
    • Add a note about instances to the convex hull node page rBM8493
    • Cleanup: Improve wording of separate components note rBM8496
  • UI: Turn on overlays by default in new node editors cf72b10075
  • D12982: Geometry Nodes: Add "Fill Caps" option to curve to mesh node
  • D12929: Geometry Nodes: Replace color separate and combine nodes


Bug Fixes

  • Fix: Support swapped inputs properly in trim curve node 231d66d8ba
  • Fix: Cyclic single point bezier splines have multiple evaluated points 1d9e2dc954
  • Fix T92369: Raycast node crash with no target attribute 98c53f660a
  • Fix T92345: Crash with only pointcloud in attribute transfer node 7a61916717
  • Fix: Assert using selection in instances to points node 50e7645211
  • Fix: Add missing TBB define to geometry module 7a0cad0989
  • Fix: Curve trim crash on splines with no edges ff46afb4dd
  • Fix: Assert for unused field evaluator in resample curve node 3e1fd26828
  • Fix: Empty geometry nodes input menu with legacy nodes enabled 2a7a8a04e3
  • Fix: Builtin curve attributes unavailable 3f8b45d8d1
  • Fix: Display color sockets without labels correctly 85c8dd6c96
  • Fix T92354: Missing raycast node in geometry nodes add menu d7b4350749
  • Fix: Empty id attribute on curve control points 6b761c59d2
  • Fix: Double calculation of UVs in cone primitive 8cd4cee0d5
  • Fix: Crash when retrieving output "id" attribute 704d077d8f
  • Small fixes to manual rBM8501


Cleanup

  • Cleanup: Remove unused function 742b7adbad
  • Cleanup: Use common define for menu separator arrow 3858bf5c6f
  • Cleanup: Add check whether to remove an anonymous atttribute 990b912fd7
  • Cleanup: Use simpler method to create attribute lookups 3cbe921899
  • Cleanup: Rearrange code, rename function 9a8badc1e4
  • Cleanup: Remove unnecessary constructor argument ec8a9a0d65


Review

  • Requested changes D12709: Nodes: Support updating socket availability and labels in declaration.
  • Requested changes D12938: Geometry Nodes: Support viewing field values in spreadsheet.
  • Accepted, committed D12893: Geometry Nodes: Instances to points
  • Accepted D12827: Geometry Nodes: Add Image Texture node
  • Accepted D12886: Node Editor: Introduce color overlay and dashed wires theme setting
  • Accepted, committed D12721: Geometry Nodes: "Replace String" node
  • Accepted D12956: Fix T92371: Move AZONE_REGION When Overlapped
  • Accepted, committed D12858: warnings for inputs with instances in Geometry Proximity and Sample Curve geometry nodes
  • Accepted, committed D12828: Fix for T91979: Make String Length Output not a field
  • Accepted D12907: Geometry Nodes: Insert Instances in Name Order
  • Requested changes D12947: Geometry Nodes: Relative Handle Position Mode
  • Requested changes D12753: Geometry Nodes: 2D PolyLine/Bezier Boolean [WIP]
  • Requested changes D12941: Geometry Nodes: Trim Curves with Cyclic Curves
  • Commented D12640: Add node tooltips to Geometry Nodes primitives
  • Requested changes, accepted {Phab|D12981}}: Manual: Rotate Euler, Align Euler to Vector, Subdivision Surface, Instances to Points
  • Requested changes D12882: Geometry Nodes: Add Length to Curve Parameter Node
  • Requested changes D11097: Fix: Tool icon jittering in some cases
  • Commented D12282: Fix T90808: Undo curve selection recalculates boundbox based on curve data
  • Commented D12842: [WIP] UI: Improve scaling of widgets when zooming
  • Accepted D12965: Fix panel pinning showing for instanced panels (e.g. FCurve modifiers)
  • Accepted D12931: Geometry Nodes: Rename node "String Substring" to "Slice String"
  • Commented D12760: Nodes: Add Vector Map Range node
  • Closed D12892: Bounding Box around instances (WIP)


Tracker

  • Investigated: 4
  • Resolved: 3
  • Archived: 1


Next Week

I'll finish the final changes and updates for 3.0 in the first half of the week. Then whatever time is left should probably just be dedicated to bug fixing.


October 11 - October 17

This week I continued working on updating nodes for the field changes, started work on documentation, and did code review for those same changes. I also worked with Pablo to finish/review some of the patches for UI style changes.

The transfer attribute node was probably the most exciting thing I committed this week, I really like how it works as a field node.

Other than that, discussion about the named attribute nodes mostly petered out, and I was mostly finishing up patches from last week.


Changes / Features

  • Geometry Nodes: Fields version of edge split node 366cea95c5
  • Geometry Nodes: Fields transfer attribute node 76f386a37a
  • Geometry Nodes: Field version of mesh to curve node 17b8da7196
  • Geometry Nodes: Object info node optional instance output 19bab2a536
  • Geometry Nodes: Make attribute capture work on instances 96876305e1
  • Documentation or stubs for 20 nodes, screenshots for all nodes rBM8479, rBM8481
  • Documentation for 10 curve nodes, other fixes rBM8480
  • Functions: Generic array data structure b42ce0c54c
  • Geometry Nodes: Order selection inputs after geometry inputs 2055ef107a
  • Geometry Nodes: Create empty components less often 89c7c115ce
  • Geometry Nodes: Add units to set radius node inputs 9e3c84a5d6
  • Geometry Nodes: Add "XYZ" label to instance on points scale 53af51ad50
  • Geometry Nodes: Use a separator in the add menu input category 4b31a21bcd
  • UI: Reduce whitespace in custom node categories bb6cc67d05
  • D12638: Geometry Nodes: Fields Version of Raycast Node (WIP)
  • D12903: Geometry Nodes: Make Random ID a builtin attribute (WIP)
  • D12867: BLI: Support removing keys from a set during iteration


Bug Fixes

  • Fix T91809: Crash on undo with empty field inferencing f18ab3470f
  • Fix T92160: Geometry Proximity node can produce invalid values 9d03990e32
  • Fix T92192: Inconsistent curve circle primitive direction 988b9bc40c
  • Fix T92180: Curve subdivide incorrect result for poly splines 1ae79b704a
  • Fix: Field type inference considers unavailable sockets 4682aad432
  • Fix: Incorrect error message in set spline resolution node 3a03d6c851
  • rBL62722: Update geometry nodes test file for change in object info node


Cleanup

  • Cleanup: Refactor use of implicit inputs in geometry nodes 47a72ac4fd
  • Cleanup: Attempt to fix benign macOS compile warnings c1a1644db7
  • Cleanup: Fix comment formatting and grammar eb56e8cd78


Review

  • Updated, accepted D12814: UI: Visual style update to panels
  • Requested changes D12870: Fix T92256: Rotate instances node scaling bug
  • Accepted, committed D12574: Geometry Nodes: Separate + Delete Geometry for fields
  • Accepted, committed D12681: Geometry Nodes: Scale Instances node
  • Accepted, committed D12682: Geometry Nodes: Rotate Instances Node
  • Accepted, committed D12679: Geometry Nodes: Translate Instances node
  • Commented D12887: Geometry Nodes: Curve to Points Node Update - WIP
  • Commented D12884: Node Editor: Style update to nodes
  • Commented D12886: Node Editor: Introduce color and dashed wires overlay
  • Accepted D12832: Fix T92103: Update BLI hash_float_to_float functions to be shader compatible
  • Accepted D12793: Geometry Nodes: Add Color input node
  • Accepted D12773: Geometry Nodes: Update the 'Set Position' node with offset input
  • Accepted D12846: Geometry Nodes: Curve Endpoint Selection
  • Accepted D12798: Geometry Nodes: Verb First Name Changes for 12 Nodes
  • Accepted, committed D12883: UI: Remove padding around curve widget
  • Accepted, committed D12830: Geometry Nodes: Subdivision Surface Node
  • Accepted, committed D12881: Rotate Euler: Use "Local" instead of "Point"
  • Accepted, committed D12844: Overload float4x4 multiplication-assignment operator.
  • Accepted, committed D12838: Fix T92149: Missing check for empty components
  • Accepted, committed D12840: Fix T92150: Incorrect invert in Delete Geometry node
  • Accepted, committed D12824: Some Align Euler to Vector fixes
  • Commented D12842: [WIP] UI: Improve scaling of widgets when zooming
  • Accepted D12837: Geometry Nodes: Material Index Get/Set, and Node Naming
  • Accepted D12847: Geometry Nodes: Add selection to Instance on Points
  • Accepted D12851: Fix T92153: Use-after-free with anonymous attributes.
  • Accepted D12856: UI: Adjust header color when active instead of inactive
  • Accepted D12876: Fix T92083: Crash renaming bone used in Armature modifier on curve
  • Accepted D12878: Geometry Nodes: Bring back lazy evaluation for field types in Switch node.
  • Accepted D12891: Fix: Subdivision Surface Node Crash with no Edges
  • Accepted D12898: Nodes: Support sharing node declarations between nodes.


Tracker

  • Reported T92252: User after free when opening file after Blender starts
  • Investigated: 12
  • Resolved: 4
  • Archived: 5
  • Duplicate: 1
  • Confirmed: 1


Next Week

I'll continue working on the final changes necessary before Bcon3 and finish documentation for new geometry nodes features.


October 4 - October 10

This week I continued working where I could to make more progress on the fields conversion. Without Jacques around I didn't commit very much of it though. The design for a few other patches stalled a bit. On the bright side that means we should be able to make more visible progress next week.

There was lots of discussion about this node this week

On topic that took up a lot of time was the removal of the named attribute nodes. Currently the official plan is to only add the "Store Named Attribute" node, but not an input node. As users realized this, it became an important topic. Hopefully discussion about that can move forward next week.

On the weekend I added a boolean IDProperty type, which is nice for cases like this.


Changes / Features

  • D12770: Refactor: Move normals out of MVert, on demand calculation
  • D12785: Geometry Nodes: Fields transfer attribute node
  • D12788: Geometry Nodes: Attribute search in the modifier (WIP)
  • D12805: UI: Improve layout of custom property edit panel
  • D10413: UI: Improve node editor breadcrumbs display


Bug Fixes

  • Fix T92037: Custom property edit issues with integer soft range 886196b888
  • Fix: Missing field markers for curve fillet node inputs e9daca77d6
  • Fix: Typo in UI error message 728e31e18a
  • Fix: Unable to select left and right in set handle type node 301ee97b93
  • Fix field type in curve resample node 18959c502d


Cleanup


Review

  • Requested changes D12753: Geometry Nodes: 2D PolyLine/Bezier Boolean [WIP]
  • Commented D12282: Fix T90808: Undo curve selection recalculates boundbox based on curve data
  • Requested changes D12019: Geometry Nodes: Merge by Distance (Modifier port)
  • Requested changes D12574: Geometry Nodes: Separate + Delete Geometry for fields
  • Requested changes D12743: Geometry Nodes: Accumulate Function Node
  • Commented D12687: Geometry Nodes: Add Nodes to Get/Set Built-in Attributes
  • Accepted D12721: Geometry Nodes: "Replace in String" node
  • Requested changes D12803: Geometry Nodes: Index Range Selection
  • Commented D12784: Geometry Nodes: Curve Endpoints Node Update (WIP)
  • Commented D12760: Nodes: Add Vector Map Range node
  • Accepted D12744: Geometry Nodes: Add Fields Inputs to Trim Curve Node
  • Accepted D12778: Nodes: Move texture nodes to C++
  • Accepted D12758: Geometry Nodes: Add default_value() to String socket declaration
  • Accepted, committed D12726: Geometry Nodes: Align Euler to Vector Node
  • Committed D12678: Geometry Nodes: Rename "String Join"-node to "Join Strings"
  • Commented D12802: UI: Default Fonts Folder for Mac and Linux
  • Commented D12754: Geometry Nodes: Dimmed dashed lines
  • Closed D5336: Destructive Extrude Operator


Tracker

  • Investigated: 6
  • Resolved: 1
  • Archived: 2


Next Week

I'd like to move forward on the named attribute input node discussion, i.e. present my viewpoint in a more final way, and make a big push to finish converting all of the other nodes, and add the last changes for Bcon2. It might be a lot!

September 27 - October 3

This week I mainly worked on code review, changing the behavior of how nodes act on instances, and attempting to fix some bugs. The bug I still haven't figured out has to do with keeping track of data through undo steps. Hopefully I can figure it out early next week.

I started working on a mesh based version of the edge split node. There is already some slightly similar functionality exposed as an API function for cycles to split edges based on normals, but this needs to use a selection. Figuring out which edges should actually be split based on the selection is turning out to be quite tricky though!

Creating effects like this is so much simpler now!

I also created some tasks:

  • T91762: Updated versions of curve to points and curve endpoints nodes
  • T91763: Updated version of subdivision surface node
  • T91844: Selection outputs in primitive nodes
  • T91845: Add "Offset" toggle to set position node
  • T91852: Output UVs from mesh primitive nodes with anonymous attributes
  • T91884: Add warnings for nodes that don't work with instances
  • T91935: Support fields in the curve trim node


Changes / Features

  • Geometry Nodes: Run nodes once on unique instance data 44e4f077a9
  • Geometry Nodes: Mesh Point Cloud Conversion Nodes 262b211856, 827e30bd15
  • Geometry Nodes: Expose Bezier handle positions as an attribute 81f552e9ad
  • Geometry Nodes: Distribute points once per instance reference c75c08a737
  • Geometry Nodes: Fields version of attribute proximity node 9f0a3a99ab
  • Geometry Nodes: Only show attribute toggle for field inputs 797064544e
  • Geometry Nodes: Move output attribute names to a subpanel 5d70a4d7ee
  • Geometry Nodes: Use factor slider for distribution density factor e45ffce5fa
  • Geometry Nodes: Do not realize instances in the material assign node f94164d896
  • Data Transfer: Remove unnecessary noisy error message e863e05697
  • D12579: Geometry Nodes: Field version of mesh to curve node


Bug Fixes

  • Fix T91904: Assert when loading empty CurveProfile cc8fa3ee90
  • Fix: Incorrect node socket name after recent refactor 11bfbc3337


Cleanup


Review

  • Accepted, committed D12463: Geometry Nodes: Add side and fill segments to Cone/Cylinder mesh primitive nodes
  • Requested changes D12482: Geometry Nodes: Add UV output to Curve to Mesh node
  • Accepted, committed D12669: Geometry Nodes: Rotate Euler Node
  • Accepted D12650: Geometry Nodes: Add utility to process all instances separately.
  • Accepted D12644: Geometry Nodes: Support creating new attributes in modifier.
  • Accepted D12716: Fix T87536: Incorrect socket types in reroute nodes.
  • Requested changes D12574: Geometry Nodes: Separate + Delete Geometry for fields
  • Requested changes, accepted D12506: Geometry Nodes: Create New Version of Curve Reverse Node
  • Requested changes, accepted D12559: Geometry Nodes: Fields Version of Select by Handle Type
  • Requested changes, accepted D12531: Geometry Nodes: Fields Version of Points to Volume
  • Accepted D12730: Geometry Nodes: Add option to enable attribute search in node sockets
  • Commented D12731: VSE: Sound add decorate buttons, sort and expose degree
  • Accepted, committed D12718: Fix: fix warning icon on Curve to Mesh geometry node
  • Accepted, committed D12672: Geometry Nodes: Remove experimental option for fields.
  • Accepted, committed D12655: String to Curves VS2017 fix
  • Accepted D12717: Geometry Nodes: Port shader gradient texture node
  • Accepted D12712: Fix T91839: Incorrect active vertex group index.
  • Accepted D12683: Nodes: Add Float Curve
  • Accepted D12652: Geometry Nodes: Multi-threading for modify_geometry_sets.
  • Accepted D12646: Geometry Nodes: Use thinner link lines for fields.
  • Accepted D12678: Geometry Nodes: Rename "String Join"-node to "Join Strings"
  • Accepted D12677: Fix for T91756: String to Curves node produces NaN when size is zero
  • Accepted D12522: Geometry Nodes: Update Set Spline Type Node for Fields
  • Accepted D12534: Geometry Nodes: Fields Version of Curve Subdivide
  • Accepted D12735: Geometry Nodes: Resample Curve Fields Update
  • Closed D12551: Geometry Nodes: Fields Version of Point Separate
  • Closed D9678: Bevel on curves does not create distorted geometry anymore
  • Closed D9684: Fix T80979: Fixed the bevel distortion issue at bends


Tracker

  • Investigated: 1
  • Archived: 1


Next Week

Since Jacques won't be here, I won't take on many new things, my to-do list is already way too long. So I'll probably just use the opportunity to catch up on lots of things.


September 20 - September 24

This week I worked on finishing up work on the final curve nodes for 3.0, including review of the string to curves node and the curve fillet node. We also had some very productive discussions about instances and naming that I started to work on implementing in some places.

The other goal was getting ready to enable fields by default in master. I didn't quite finish up outputting attributes from the modifier like I had hoped though.

The two main topics of the week, final curve nodes and instancing. Here the curve parameter factor used as the density on instanced curve spiral meshes.


Changes / Features

  • Custom Properties: Rewrite edit operator, improve UX bf948b2cef
  • Geometry Nodes: Curve Sample Node 17021adcea
  • Geometry Nodes: Curve Parameter Node 4d881d9dad
  • Geometry Nodes: Curve tangent node 4d51af68ad
  • Geometry nodes: Output curve normals from the normal node 05ce5276db
  • Geometry Nodes: Fill instances separately in the curve fill node 6d162d35e2
  • Geometry Nodes: Add legacy warning and "View Legacy" operator 41e3bf8a8e
  • Geometry Nodes: Add versioning and legacy warning for random float node 2dd3968335
  • D12623: Geometry Nodes: Only show attribute toggle for field inputs (WIP)
  • D12579: Geometry Nodes: Field version of mesh to curve node


Bug Fixes

  • Fix T12533: Simplify curve object to mesh conversion eb0eb54d96
  • Fix: Incorrect field visualization for some shader nodes 0e039749e3
  • Fix: Add versioning for geometry nodes attribute input toggle b37d36a60f
  • Fix: Curve fill node doesn't fill real geometry with instances 26141664f0
  • Fix T91661: Vector rotate output socket diconnects on file load 0f764ade1a
  • Fix: Crash with single point bezier spline auto handles 4472a11017
  • Functions: Fix incorrect assert for unused output 9e939a614e
  • Fix: Incorrect versioning for float IDProperty default array fde9c3bc74
  • Fix: Incorrect socket names after previous commit 6fb4c8f040
  • Fix build error caused by typo c1b925f7ff


Cleanup

  • Cleanup: Use new node socket declaration API for some shader nodes c99cb81452, 79bcc19240
  • Cleanup: Move curve to mesh node implementation to blenkernel 3642e17428
  • Cleanup: Remove debugging change, add comments 5eb505e368


Review

  • Requested changes D12019: Geometry Nodes: Merge by Distance (Modifier port)
  • Updated, committed D12584: Geometry Nodes: Initial socket visualization for fields
  • Updated, committed D11522: Geometry Nodes: String to Curves
  • Commented, accepted D12536: Geometry Nodes: Point Distribute Surface
  • Accepted, committed D10202: Geometry Nodes: Attribute Statistic node
  • Accepted, committed D12603: Geometry Nodes: Fields version of Attribute Randomize as a Function Node
  • Requested changes, accepted D12607: Add Tooltips to new Socket API and Tooltip Drawing
  • Requested changes, accepted D12573: UI: Tree-View API for easy creation of tree UIs
  • Accepted D12115: Geometry Nodes: Add curve fillet node
  • Accepted, committed D12532: String manipulation nodes
  • Accepted, committed D12620: Geometry Nodes: Special Characters
  • Commented D12096: Curves: Cleanup set radius/weight operators
  • Accepted D12553: Geometry Nodes: Implicit Position input in Set Position node.
  • Accepted D12526: Geometry Nodes: Create New Version of Curve Set Handles Node
  • Accepted D12506: Geometry Nodes: Create New Version of Curve Reverse Node
  • Accepted D12598: Add Custom properties to Collection Properties Tab
  • Requested changes D12587: Move Sculpt Color From Experimental


Tracker

  • Investigated: 8
  • Resolved: 2
  • Archived: 3
  • Known Issue: 1


Next Week

I'll start with code review, then making progress on converting the next nodes for fields.


September 13 - September 19

This week I worked on some converting some nodes to use fields, transferring attributes in the curve to mesh node, and adding special domain interpolation for selections, since before they weren't working like edit mode selection interpolations.

On the weekend I finished up a proper implementation of the curve parameter node and curve sample node, which I hope to get into 3.0. The curvature node ended up being a bit tricky, so I don't think I'll try to finish that this week. It may not be possible to find a definition of curvature that doesn't change when the curve resolution increases or when the curve scales up, so I'll probably have to expose both.

The curve sample node ended up looking pretty simple as a field node.

Changes / Features

  • Geometry Nodes: Transfer attributes in the curve to mesh node f81bacd6f0, rBL62695
  • Geometry Nodes: Add special domain interpolation for selections 5841f8656d
  • Geometry Nodes: Add a toggle to use attributes as input values 8e21d528ca
  • Geometry Nodes: Add fields version of material nodes 09f14b38f2
  • Geometry Nodes: Hide values for selection inputs 525def99bc
  • D12565: Geometry Nodes: Curve Sample Node
  • D12548: Geometry Nodes: Add Curve Parameter Node
  • D12500: Attributes: Add mesh edit mode operators for boolean attributes (WIP)
  • D12454: Geometry Nodes: Add legacy warning and "View Legacy" operator


Bug Fixes

  • Fix: Use after free in spreadsheet attribute column ID e6fa74ffed
  • Fix: Spline length calculation fails with no evaluated points f973e0b75a
  • Fix: Incorrect default values for the curve trim node c773443845, c9e835fec1
  • Fix: Nodes modifier ignores input value with new property missing 633c29fb7b
  • Fix: Division by zero in curve spiral primitive node acb8909021
  • D12492: Fix: Custom property step value has 100x factor


Cleanup

  • Cleanup: Remove duplicate warning from subdivision surface node 8c5d9fa929
  • Cleanup: Use function to mark mesh normals dirty 28bd74c186
  • Geometry Nodes: Simplify using OutputAttribute in a vector ddb7cb7e4a
  • Cleanup: Rename curve node enums 257c7753e9
  • Cleanup: Fix/improve variable names and comments 25aa943e8c
  • Cleanup: Add built-in check for an attribute ID 31a0708cb1
  • Cleanup: Remove unnecessary manual of move constructor db7fca3588
  • Cleanup: Move mesh_convert.c to C++ 8e2e44b58b
  • Cleanup: Pass const mesh argument a1c65748c4


Review

  • Updated, accepted D11876: GPencil: Dot-dash modifier
  • Requested changes D12115: Geometry Nodes: Add curve fillet node
  • Requested changes D12478: Geometry Nodes: Instance on Points and Collection Info
  • Requested changes, accepted D12471: Nodes: Cache node declaration on node.
  • Requested changes, accepted D10202: Geometry Nodes: Attribute Statistic node
  • Requested changes D12559: Geometry Nodes: Fields Version of Select by Handle Type
  • Requested changes D11522: [WIP] Geometry Nodes: Text nodes
  • Accepted D12457: Geometry Nodes: Multi-threaded field evaluation
  • Requested changes D12532: String manipulation nodes
  • Requested changes D12536: Geometry Nodes: Point Distribute Surface
  • Requested changes D11664: Accurate NURBS circle and sphere
  • Requested changes D12506: Geometry Nodes: Create New Version of Curve Reverse Node
  • Commented, accepted D11668: GPencil: Curvature support for length modifier
  • Requested changes, committed D12501: Create a Spline Method for Revering a Spline
  • Accepted D12485: Add a reverse method to MutableSpan


Tracker

  • Investigated: 5
  • Resolved: 1
  • Archived: 2


Next Week

I'm narrowing down the list of things I'd like to get into 3.0-- I'd like to get the curve fillet, string to curve, curve sample, curve parameter, and hopefully the attribute statistic node committed. There's also general conversions and design discussions to do.

September 6 - September 12

This week I mainly worked on final cleanup on the first commit of the field changes with Jacques, fixed issues with the curve object geometry nodes support (and finally committed it!), and worked on more custom property issues. I ended up making a patch to improve the custom property edit operator-- the old one just didn't cut it.


On Saturday I also worked a bit more on refactoring mesh normal storage. It affects way more places than I thought, so even after a fair amount of work my branch still doesn't compile, but I think the refactor is very important for the future of data-oriented mesh processing in Blender.


Changes / Features

  • Geometry Nodes: fields and anonymous attributes bf47fb40fd (With Jacques)
  • Geometry Nodes: Support "Evaluated" mode in Resample Curve node d475f99460
  • Geometry Nodes: Allow exposing color sockets to the modifier b4fd8750f9
  • Geometry Nodes: Add versioning to change legacy node ID names e2f99c338b
  • Nodes: Add vector min/max support to new socket builder API cb83313863
  • UI: Remove label of mode in Point Instance node 1680c3d510
  • D12435: Custom Properties: Rewrite edit operator, improve UX
  • D12456: Geometry Nodes: Add fields version of material nodes
  • D12454: Geometry Nodes: Add legacy warning and "View Legacy" operator


Bug Fixes

  • Fix T91255: IDProperty UI as_dict() returns step as default value 4e91cd5c11
  • Fix: Incorrect default for exposed geometry nodes vectors df65103bf0
  • Fix: Incorrect file subversion for geometry node versioning 6a00e7a428


Cleanup

  • Cleanup: Rename variables, simplify logic 6ae8de4742
  • Cleanup: Move function to versioning_common.cc a392609ab6
  • Cleanup: Remove no-op/unused code 15405685d9
  • Cleanup: Split legacy node type defines 8745bb9628


Review

  • Requested changes D11876: GPencil: Dot-dash modifier
  • Accepted D12416: Fix T91093: Off by one error in curve resample node.
  • Commented D12443: BLI: Add Cycles compatible Perlin noise
  • Accepted D11396: UI: ActionZone Mouse Cursor Feedback
  • Commented D12295: UI: Movie Clip: Cleanup Proxy Settings
  • Requested changes D12347: Fix T90862: Texts in Outliner can have wrong icon
  • Commented D12451: VSE UI: Since functions in Effect menu only work on active strip, move them into the strip sidebar


Tracker

  • Investigated: 4
  • Resolved: 1
  • Archived: 1


Next Week

Next week I'd like make some significant progress getting updated versions of nodes added to master. Since I didn't get to much code review last week, I'll do more of that. And I'll be working on more general field-refactor changes too, like allowing the modifier to switch between inputing a value or a named attribute. Speaking of named attributes, there is that design discussion to continue.

August 30 - September 5

Earlier this week I fixed more issues that came up after the IDProperty UI data refactor, but I mostly continued working in the fields branch.

I added a "Normal" node that gives properly normalized normals on all mesh domains, added support for fields and a selection in the point translate node, and did more cleanup and refactoring. I also made a list of the nodes we'll have to change, and we had discussions about visualization and naming of some of the new concepts.

For real this time! The "Normal" node can also output curve normals in the future, for direct access to normals on fields.

I spent a bit of extra time on the level set patch, including adding info to a thread on devtalk for discussion.

Curves and volumes do seem to work well together!

On the weekend I spent some time investigating moving mesh vertex normals to their own data layer instead of storing them in MVert. Here is a design task with some reasoning: T91186: Move mesh vertex normals out of MVert


Changes / Features

  • D12363: Geometry Nodes: Transfer named attributes in the curve to mesh node


Bug Fixes

  • Fix: Incorrect versioning for float IDProperty UI data 838b6ec48a
  • Fix T91084: Missing versioning for object pose bone property UI data cfc674408e
  • Fix T91088: Assigning custom property value in python resets UI data 60fba8202c
  • Fix T91054: List of strings custom property cannot be edited 29590eec6e
  • Fix T91054: Editing group custom property gives error 42546db490
  • Fix T91119: Curve to mesh node inverted face normals 716682365c, rBL62692
  • Fix: Output int for precision in UI data as_dict method 37943b00f2


Cleanup

  • Cleanup: Remove redundant property UI data clear 99c981fd06
  • Cleanup: Reduce variable scope 596f1878b6
  • Cleanup: Grammar 4170668776
  • D12402: Cleanup: Use C++ types and lambdas for mesh normal calculation


Review

  • Requested changes D12115: Geometry Nodes: Add curve fillet node
  • Requested changes D12177: Geometry Nodes: Curve Connect Splines Node
  • Commented D11522: [WIP] Geometry Nodes: Text nodes
  • Accepted D12335: Nodes: Add more flexible method to declare the sockets of a node
  • Commented D12289: Geometry Nodes: Helper functions for nodes that uses bmesh operators
  • Accepted D12345: Let rna_idprop_ui_create take "step" as a keyword argument
  • Accepted D12377: Geometry Nodes: Most Remaining Nodes New Socket Syntax
  • Accepted D12376: Geometry Nodes: Attribute Nodes New Socket Syntax
  • Accepted D12373: Geometry Nodes: Change All Curve & Curve Primitive Nodes to New Socket Format
  • Accepted D12374: Geometry Nodes: Change All Points Nodes to New Socket Format
  • Commented D11209: [WIP] Reroute node improvements
  • Requested changes D12381: Rename options for Quad View to be more readable
  • Commented D7946: [Scr-ops] Drag resize operator
  • Commented D11925: UI: Increase Area Resize Edge Hit Size
  • Commented D12379: Smart UV: search optimization


Tracker

  • Investigated: 11
  • Resolved: 6
  • Archived: 2
  • Duplicate: 1
  • Known Issue: 1


Next Week

Next week the goal is to merge the initial changes in the fields branch. But there is still lots more to do-- the changes for all the nodes in the list above, discussions about making versioning possible, and other new features.

I'd also like to make progress on some of the other changes in my 3.0 targets list.

August 23 - August 29

This week I mainly worked on understanding the idea and prototype implementation of fields, and implementing the basic data structures and evaluation system in a branch. Jacques suggested I do this so I'd have a better idea of the internals. That was a great idea, because I definitely do! In the process I created a document with some of the things I learned: https://hackmd.io/@nodes/ByW_ZpzWt

I finally committed the IDProperty UI data refactor! (And sadly spent a large chunk of Friday searching for a stupid mistake in it that broke tests.)

I also made a quick list of my goals for geometry nodes 3.0: https://hackmd.io/@nodes/By1_orZWt


Changes / Features

  • Refactor IDProperty UI data storage 8b9a3b94fc
  • Update addons for D9697 "_RNA_UI" removal A104ba1c56
  • D12100: Geometry Nodes: Level Set Nodes
    • Add support for the Attribute Proximity node
  • D11103: Generic array data structure


Bug Fixes

  • Fix T90900: Crash when rendering geometry nodes created curve 5ef3afd87c
  • Fix failing alembic test after IDProperty UI data refactor 276a862ebc


Cleanup

  • Cleanup: Refactor proximity node to be more data type agnostic 70fbdcb6bf
  • Cleanup: Remove unecessary variables a2e0f714f2
  • Cleanup: Add comment about suspicious O(n^3) loop 41eb33794c
  • Cleanup: Make function static, remove unused arguments f53cf5141d
  • Cleanup: Remove redundant null check eae4e22518
  • Cleanup: Simplify logic 9327c00f70
  • Cleanup: Use shorter enum item names f80c39b74e


Review

  • Accepted, committed with tweaks D11810: Cuboid Mesh Primitive Geometry Node
  • Accepted, Committed with tweaks D11846: Geometry Nodes: Curve Fill
  • Requested changes D11876: GPencil: Dot-dash modifier
  • Requested changes D11668: GPencil: Curvature support for length modifier
  • Accepted D11736: Nodes: Improvements to edge panning in the node editor.
  • Commented D8954: Add Bisect Modifier
  • Accepted, committed D11772: Geometry Nodes: Allow for one vertex in grid node
  • Accepted, committed D12152: Fix: Corrected edge flag for outer edges in the circle mesh primitive node.
  • Commented D11938: UI: Consistent Area Move Snapping Locations
  • Commented D12305: Modifiers: export motion blur velocity through attribute
  • Commented D12217: VSE: Use the word "Hide" for all non-sound strip types instead of the counter-intuitive "Mute".
  • Commented D12035: Geometry Nodes: Add Easing Function Node


Tracker

  • Investigated: 10
  • Resolved: 2
  • Archived: 5


Next Week

I'll finish up the fields data structure and evaluator, add tests, support building the fields network in the geometry nodes evaluator, and do code review. If I'm too slow with the fields stuff, I'll switch tasks with Jacques, since I don't want to hold things up (it's basically the first time I written code that needs to solve that class of problem).


August 9 - August 13

This week I reviewed all of the patches assigned to the geometry nodes project, spending more time on the curve fillet node, the connect splines node, the text nodes, and the cuboid node. I also worked on the fields branch, where I added a "Curve Parameter" node, and progressed farther in my level set patch, where I added primitive nodes, morphing between level sets, converting level sets to masks, and finished the sample volume node. The volume stuff has been a nice thing to work on while waiting for the attribute discussion to finish, I think it will end up being very useful! It's in the geometry-nodes-level-set-nodes branch right now.

Here a level set is generated from a curve, combined with a sphere, and used to set the material on a mesh object. This is the "Select by Volume" that I've wanted for a long time.
An interesting class of nodes for fields. They are evaluated within the context of a geometry (i.e. part of a field system), but they also depend on another geometry! It's an elegant solution I think.
The curve parameter node, which is like the index node, but the portion of the total length of each spline. Works nicely, except for NURBS.

Also, Campbell and Sybren accepted the IDProperty UI data refactor patch (D9697)! I'll commit it when I get back after next week.


Changes / Features

  • D12175: Geometry Nodes: Proof of concept lazy conversion to and from BMesh


Bug Fixes

  • Fix T90447: 3D view transform locks do not use driver colors 8652e69d8b
  • Fix T90547: Add node errors when compiled without OpenVDB or Bullet b04997cca4
  • Fixed typos and errors for point separate geometry node rBM8300


Cleanup

  • Cleanup: Variable names, formatting, reduce indentation 8f2b60ddbf
  • Cleanup: Remove unused includes 1275ce61b1
  • Cleanup: Remove unecessary RNA get and set functions 3b87fd376a


Review

  • Requested changes D12115: Geometry Nodes: Add curve fillet node
  • Requested changes D12177: Geometry Nodes: Curve Connect Splines Node
  • Requested changes D11522: [WIP] Geometry Nodes: Text nodes
  • Requested changes D11810: Cuboid Mesh Primitive Geometry Node
  • Requested changes D11876: GPencil: Dot-dash modifier
  • Requested changes D11846: Geometry Nodes: Curve Fill
  • Requested changes D12019: Geometry Nodes: Merge by Distance (Modifier port)
  • Updated D11639: Geometry Nodes: Curve Primitive Phyllotaxis Spiral
  • Requested changes D11713: Geometry Nodes: Curve Primitive Arc
  • Commented D12080: Geometry Nodes: Mesh Auto Smooth
  • Accepted D11841: Geometry Nodes: Initial support for geometry instancing (WIP).
  • Commented D11736: Nodes: Improvements to edge panning in the node editor.
  • Requested changes D12108: Geometry Nodes: Inset
  • Requested changes D11791: Geometry Nodes: Collapse Node, Dissolve Node, Unsubdivide Node
  • Requested changes D11684: UI: Node Contents Jiggling
  • Accepted D11835: Topology mapping mode for Attribute Transfer node
  • Accepted D11930: Nodes: Highlight entire link when connected to a selected node
  • Accepted D10417: Geometry Nodes: Add all UV Smooth and Boundary Smooth options to subdivision node
  • Requested changes D12079: Geometry Nodes: Curve Extract Spline Node
  • Requested changes D12072: Geometry Nodes: Bridge Curve Node
  • Requested changes D10795: Geometry Nodes: Using BMesh Subdivide Operation for the Subdivide Node
  • Accepted, committed D11754: Add a label for texture sockets
  • Accepted, committed D12147: Fixed typos for point separate geometry node
  • Accepted D10505: UI: Freestyle UI Upgrade
  • Accepted D12191: Fix T89027: [2.93 only] pose slide factor wrong in redo popup
  • Accepted D10914: Add Extras Dropdown Menu to Constraints
  • Closed D11787: Geometry Nodes: Mesh Primitive Torus
  • Closed D10190: Geometry Nodes: Point Primitive Node
  • Closed D10508: Rename "Point Distribute" to "Point Distribute Surface"
  • Closed D10355: Geometry Nodes: Add Invert option to the Transform node
  • Requested changes D10585: Geometry Nodes: Add shader Color Mix node
  • Requested changes D12035: Geometry Nodes: Add Attribute Easing Node
  • Requested changes D10459: Geometry Nodes: Add alternative distribution options to the Attribute Randomize node
  • Requested changes D10883: Geometry Nodes: Attribute Randomize Spherical Node
  • Requested changes D11541: Geometry Nodes: Add a minimum distance attribute to the Attribute Proximity Node
  • Commented D11465: Adding Attribute Math Expression Node
  • Commented D12025: Geometry Nodes: Geometry, Mesh, Curve & Point Cloud Info nodes
  • Commented D9949: Geometry Nodes: Yuksel's sample elimination algorithm
  • Commented D12201: UI: Add option to allow the display of the viewport axis gizmo while transforming
  • Requested changes D11575: Geometry Nodes: Solidify Node
  • Commented D11875: Geometry Nodes: Curve Primitive Line -> Add 'Track To' mode
  • Commented D11942: Geometry: new geometry module
  • Closed D10905: Geometry Nodes: add Attribute Edge Length
  • Closed D10888: Node: Merge by Distance
  • Closed D10097: Geometry Nodes: Add rotation orders in the Transform Node
  • Commented D11547: Geometry Nodes: New Attribute Processor.


Tracker

  • Investigated: 4
  • Resolved: 2
  • Archived: 1


Next Week

I'll be away next week, no internet at all!


August 2 - August 8

This past week (and the weekend before at the end of vacation), I focussed on a few things:

  • Cleaning up the current openVDB level set API and building nodes for level set operations (D12100)
  • Adding features and support for nodes to the fields and anonymous attributes prototype branch
  • Working on the IDProperty UI data storage refactor (now accepted by Campbell and Sybren!) (D9697)
  • Code review, mostly for more geometry nodes features
Nodes for creating level sets from meshes, CSG operations, surface filtering. It's quite nice to work with, but I want to see if I can do anything to optimize it further, it's a little slower than I had hoped.
Without all of the string sockets for attribute names, the nodes look so much better! Also showing the rudimentary visualization of which inputs are constant, which I actually like a lot.

Changes / Features

  • Geometry Nodes: Select by Handle Type Node 1f8485ae82
  • Mesh: Tag normals dirty instead of calculating 8b93265c19
  • D12100: Geometry Nodes: Level Set Nodes (WIP)


Bug Fixes

  • Fix T90087: Assigning object data doesn't copy vertex groups 263fa406cd
  • Fix T90042: Spline tangent calculation assert with coincident points a4813379f9
  • Fix memory leak from rB263fa406cd2b 99738fbfdc
  • Fix build error in debug builds and uninitialized structs 54bd5efa68


Cleanup

  • Cleanup: Remove unused/unecessary OpenVDB C API 67d56eb71e
  • Cleanup: Use const mesh arguments 2f63303e25
  • Cleanup: Remove unecessary helper function 17243337d7
  • Cleanup: Voxel remesh function naming 37e2fec090
  • Cleanup: Simplify logic, follow style guide for integer types 35894dc700
  • Cleanup: Move remesh files to C++ a9ea310d30
  • Cleanup: Sort node types alphabetically 79277986c2
  • Cleanup: Remove unused includes 8063f10166
  • Cleanup: Reorder functions 524908146c
  • Cleanup: Remove duplicate special case check efd7c95bb2
  • Cleanup: Make spline settings copy function public 4f6f445120


Review

  • Updated, accepted D10202: Geometry Nodes: Attribute Statistic node
  • Updated, accepted D12013: Geometry Nodes: Curve Set Spline Type
  • Requested changes D11810: Cuboid Mesh Primitive Geometry Node
  • Requested changes D10951: A Mesh Smooth node, as designed in T86903.
  • Requested changes D11984: Fix unexpected twist and asymmetry in curve using tangent mode
  • Requested changes D12108: Geometry Nodes: Extrude
  • Accepted D10943: XR Actions [part 2]: Actionmaps
  • Accepted D11923: Geometry Nodes: Add more warnings for out of bounds parameters
  • Requested changes D11980: Range filter for spreadsheet editor
  • Requested changes D11772: Geometry Nodes: Allow for one vertex in grid node
  • Requested changes D11907: Geometry Nodes: Remesh Voxel
  • Accepted D12152: Fix: Corrected edge flag for outer edges in the circle mesh primitive node.
  • Accepted D12136: Fix: Avoid FP error to accumulate when creating mesh primitives


Tracker

  • Investigated: 5
  • Archived: 2


Next Week

I'll work more on all of the ongoing projects, and maybe participate in some of the discussions about the attribute workflow changes.

I'd also like to make a simple system to lazily convert to and from BMesh for the MeshComponent.


July 19 - July 23

This week I mainly worked on the curve modifier stack changes for the nodes modifier (I had to merge Jacques' geometry instancing patch to fix an issue), investigated bugs, adding notes or committing fixes directly, and did code review.

Apart from that, I discussed the IDProperty UI data refactor with Sybren and Campbell. After some disagreements we came to a nice conclusion that I'll implement when I'm back.


Changes / Features

  • Geometry Nodes: Display Node Warnings in Modifier 49e68f15f2
  • D12004: Geometry Nodes: Expose NURBS weight as an attribute
  • D12005: Geometry Nodes: Expose Bezier handle positions as an attribute


Bug Fixes

  • Fix T89979: Assert in edit mode with curve to mesh node 76a3ff70d5
  • Fix: Bezier segment node adds handles incorrectly 76a3ff70d5
  • Fix T89687: Curve to mesh node incorrect face orientation cf28398471
  • Fix T89993: Failed assert drawing single point cyclic splines aeee7f390d
  • Fix T89827: Attribute transfer node crash on mesh with no faces bfe6b55aa7
  • Fix: "Bake" automatically calculated handles in set handle node 524d172742


Cleanup

  • Cleanup: Use const arguments and less sequential iteration 1e063a0242
  • Cleanup: Remove unused function, unused declaration ebe32e01e1, 0733926a34
  • Cleanup: Make function static, use const object argument 59eb71afa1
  • Cleanup: Add function to check a curve's spline types f76dfe8fb4


Review

  • [Requested changes, accepted] D10700: USD Importer
  • [Requested changes] D11999: GPencil: New Brush option to define Caps type
  • [Requested changes] D10943: XR Actions [part 2]: Actionmaps
  • [Requested changes, committed] D11992: Geometry Nodes: Set Handle Type Node
  • [Accepted] D12007: Fix T89393: Crash when selecting edges when geometry nodes has "on cage" turned on
  • [Accepted] D12006: Fix: Avoid creating improper rotation matrix
  • [Accepted] D12009: Fix T89829: Wrong active context path check in spreadsheet
  • [Accepted] D12008: Fix T90065: Disable attribute search in places where there is too little context
  • [Accepted] D12019: Geometry Nodes: Merge by Distance (Modifier port)
  • [Accepted] D11575: Geometry Nodes: Solidify Node
  • [Accepted] D11905: Geometry Nodes: Remesh Blocks
  • [Commented] D11886: Fix curve minimum twist producing wrong geometry
  • [Accepted] D11972: Fix T89982: 'New' Button tries to create node tree on active modifier rather than context
  • [Accepted] D11990: Make polls for removing mesh data layers consistent


Tracker

  • Reported T89996: Resetting multi-button value does not work when active button value is the same
  • Investigated: 13
  • Archived: 1
  • Known Issue: 1
  • Duplicate: 1
  • Resolved: 1


Next Week

Vacation next week, I'll be sailing, hopefully not thinking too much about this stuff ; )


July 12 - July 18

This week I continued working on supporting the nodes modifier on curve objects, on the vertex group refactor, and on the IDProperty refactor. I also spent a fair amount of time on code review, and I spent some time adding the new features to the manual.

The vertex group refactor caused a couple bugs, it turns out some edit mesh / dependency graph work caused some of the issues though.

I wanted to build a generic curve sampling node to use for the curve deform code. This week I'll do some testing with this before finally implementing the curve deform node.


Changes / Features

  • Refactor: Move vertex group names to object data 3b6ee8cee7
  • Python API: Add functions to ensure and clear IDProperties c202d38659
  • Bezier Spline: Add a more generalized insertion utility 093074aefe
  • Python API: Add functions to ensure and clear IDProperties c202d38659
  • Updates to the manual
    • Spreadsheet Editor: Dataset region rBM8206
    • Spreadsheet Editor: Row Filters rBM8207
    • Geometry Nodes: New Viewer Node (further changes) rBM8208
    • Geometry Nodes: Curve Primitive Quadrilateral rBM8209
    • Geometry Nodes: Curve Trim Node rBM8211
    • Refactor: Move vertex group names to object data rBM8210
    • Geometry Nodes: Curve Endpoints Node rBM8212


Bug Fixes

  • Fix T89899: Crashes when accessing vertex groups from objects c4df8ac1a4
  • Fix: Incorrect logic in spline lookup function 9eafdb985d
  • Fix: memcpy overlapping region ASAN warning in curve trim node 83883ae66a
  • Fix failing tests from vertex group name parameter copy 0cc2a72f94


Cleanup

  • Cleanup: Make curve trim node code more semantically correct 75ae328d62
  • Cleanup: Avoid duplication in line art stroke generation 2acebcae24
  • Cleanup: Move gpencil_geom.c to C++ feba1fe974
  • Cleanup: Simplify logic, use C++ types e7b441a05c
  • Cleanup: Simplify realizing of pointcloud instances 118803893e
  • Cleanup: Use C++ float3 type, use prefix for return argument d6b1d35bf8
  • Cleanup: Remove redundant logic 802a59a58a
  • Cleanup: Get vertex group names directly from grease pencil data 6025897cd6
  • Cleanup: Remove use of designated initializers in C++ code a566dc25aa
  • Cleanup: Clang tidy 7d618b4dde


Review

  • [Requested changes] D11876: GPencil: Dot-dash modifier
  • [Requested changes, accepted] D10700: USD Importer
  • [Requested changes, committed] D11901: Geometry Nodes: Curve Trim Node
  • [Requested changes] D11846: Geometry Nodes: Curve Fill
  • [Requested changes] D11810: Cuboid Mesh Primitive Geometry Node
  • [Requested changes, acceped] D11842: Geometry Nodes: Initial socket inspection.
  • [Accepted] D11951: VSE: Fix truncated label
  • [Accepted] D11958: Versioning: fix vertex group name loss in linked duplicates
  • [Requested changes] D10787: Node Editor: Paste Node on mouse position
  • [Accepted] D11813: Nodes: Dim links whose start and end sockets are not visible
  • [Commented] D11736: Nodes: Improvements to edge panning in the node editor.
  • [Committed] D11665: Geometry Nodes: Curve Primitive Quadrilateral
  • [Updated] D11639: Geometry Nodes: Curve Primitive Phyllotaxis Spiral
  • [Committed] D8877: Papercut: Flip driver debug UI
  • [Commented] D11923: Add more warnings to Geometry Nodes
  • [Commented] D11886: Fix curve minimum twist producing wrong geometry
  • [Commented] D11875: Geometry Nodes: Curve Primitive Line -> Add 'Track To' mode
  • [Closed] D9993: Geometry Nodes: Multiple dynamic sockets for the Join Geometry Node
  • [Closed] D11659: Fix T89316: Boolean node does not transfer vertex group names


Tracker

  • Investigated: 11
  • Archived: 2
  • Known Issue: 1
  • Resolved: 5


Next Week

Next week I'll just continue focusing on the same couple things, and whatever smaller things we decide to focus on this coming week.

July 5 - July 11

This was just a two day week, so I didn't finish much, I focused on code review. While I was gone I kept up with the GSoC projects and conversations in the chat.


Changes / Features

  • Geometry Nodes: Rename nodes for clarity between mesh and curve 0b1050bf09
  • Geometry Nodes: Use same shape as mesh line in curve line node b66c21f8b0
  • Geometry Nodes: Allow 3 points in curve star primitive 9182c882fe


Bug Fixes

  • Fix: Crash when geometry nodes NURB spline has no evaluated points 40de5742af
  • Fix: Curve Resample Node: Copy attributes to 1 point results 0521272ab3
  • Fix T89702: Curve to points node assert on single point spline cd38daeff4


Cleanup


Review

  • [Requested changes, accepted] D11700: Geometry Nodes: Refactor logging during evaluation
  • [Requested changes, accepted] D10912: Nodes: Add a button to change group socket types
  • [Accepted with changes] D11830: Fix T89559: Outliner shows extra view layer column when it shouldn't
  • [Requested changes] D11791: Geometry Nodes: Collapse Node, Dissolve Node, Unsubdivide Node
  • [Requested changes] D11835: Topology mapping mode for Attribute Transfer node
  • [Committed] D11719: Curve End Points Node
  • [Committed] D11700: Geometry Nodes: Add explicit Float to Int conversion node
  • [Committed] D11769: Geometry Nodes: Curve Primitive Line
  • [Closed] D11674: Geometry Nodes: Curve Primitive Rose Curve
  • [Closed] D11657: Geometry Nodes: Curve Primitive Polynomial Curve
  • [Commented] D11792: UI: Fix time labels drawing
  • [Commented] D11522: [WIP] Geometry Nodes: Text nodes
  • [Commented] D11754: Add a label for texture sockets
  • [Committed] D11711: Documentation for new Float To Int Node


Tracker

  • Investigated: 4
  • Archived: 1


Next Week

Catch up with review and responding to review on my own patches, then more general module development. I'll do the documentation for the spreadsheet row filters.


June 28 - July 4

This week I mainly worked on the same two tasks as last week-- moving vertex groups names to geometry, and getting the geometry nodes modifier working on curve objects. That has taken quite a bit of time, but I finally got it working!

This doesn't look like much, but it represents a lot of work and improved understanding, particularly for showing the overlays properly in edit mode.

Other than that I mostly spent time on code review.

I also made a design task for sampling data from a curve, like a curve deform node without the deformation, and more flexible: T89612


Changes / Features

  • Curves: Avoid duplication of control points during evaluation f8d8f28e2c
  • Geometry Nodes: Add mesh input warning to curve to mesh node 55f27617cf


Bug Fixes

  • Fix T89350: Emboss color missing from icon buttons without emboss 6c97c7f767
  • Fix name of UI emboss RNA enum item 0afe4e81cb


Cleanup

  • Cleanup: Remove unused "for_orco" argument to curve evaluation d2e473a2dd
  • Cleanup: Remove unused transform matrix from objects 5f5cf21a83
  • Cleanup: Use const variables for object's evaluated mesh 9f5c0ffb5e
  • Cleanup: Use const mesh to ensure BVH and triangulation cache 5f8969bb4b
  • Cleanup: Add function to create a CurveEval from a nurbs list a0c45a2d54
  • Cleanup: Further use of const when accessing evaluated mesh 8221d64844
  • Cleanup: Move bvhutils.c to C++ 0ff1c38fcc
  • Cleanup: Split curve and surface data evaluation functions, rename 3471ff1a5c
  • Cleanup: Replace paranoid check with assert d0e6b59cd1
  • Cleanup: Avoid freeing curve evaluation data twice a3a7e19f07
  • Cleanup: Avoid ASAN report when converting displist to mesh 2271b9b584
  • Cleanup: Use simpler method to retrieve attribute domain 2d146b61d8
  • Cleanup: Fix variable redeclaration warning a1609340b4
  • Cleanup: Clang tidy, remove typedef fd1fec5600
  • Cleanup: Use bool instead of int, rename variable 4f3ec01101, 5a64c687dd
  • Cleanup: Use function name for allocation strings 24c321cfe9
  • Cleanup: Use const arguments dc0c81337d
  • Curve: Add functions to retrieve const access to spline list 790cb28766
  • Cleanup: Order return arguments last, use r_ prefix d6480167ad


Review

  • [Commented] D11522: [WIP] Geometry Nodes: Text nodes
  • [Accepted] D11786: Node Wrangler: Change shortcut to make viewer node work in geometry nodes.
  • [Requested changes] D11719: Implement T89215 Curve Endpoints
  • [Requested changes] D11700: Geometry Nodes: Add explicit Float to Int conversion node
  • [Commented] D11684: UI: Node Contents Jiggling
  • [Committed] D11650: Geometry Nodes: Curve Primitive Circle
  • [Committed] D11609: Geometry Nodes: Curve Primitive Spiral
  • [Committed] D11649: Geometry Nodes: Curve Primitive Quadratic Bezier Segment
  • [Committed] D11648: Geometry Nodes: Curve Primitive Bezier Segment
  • [Committed] D11653: Geometry Nodes: Curve Primitive Star
  • [Requested changes] D11665: Geometry Nodes: Curve Primitive Quadrilateral
  • [Commented, Accepted] D11759: VSE: Snapping feedback
  • [Requested changes] D11688: Moving mesh_evaluate.c to C++
  • [Commented] D11780: Various Boolean parallelizations and optimizations
  • [Commented] D11754: Add a label for texture sockets
  • [Accepted] D11738: UI: Custom free functions improvements.
  • [Accepted] D11755: Cleanup: variable naming for texture/material SocketPropertyType
  • [Accepted] D11732: Typo in function identifier: mutli -> multi


Tracker

  • Investigated: 6
  • Duplicate: 4
  • Archived: 3


Next Week

Next week is only two days, so I won't plan much except hopefully finishing some in-progress tasks.


June 21 - June 27

Not too much new this week, I mainly focused on finishing up earlier projects, including:

  • More work on supporting the geometry nodes modifier on curve objects.
  • Trying to debug the curve deform node
  • Supporting Johnny Matthews on his work on the Curve Primitive Nodes
  • Researching optimizations I was thinking of for curve spline code (some successful, others were not)
  • Fixing bugs

I also started working on moving vertex groups to geometry (mesh, grease pencil, and lattice data), which should solve a whole class of bugs, and improve code quality.


Changes / Features

  • Geometry Nodes: Use multithreading for the curve to mesh node 445d506ac9
  • Geometry Nodes: Join curve attributes when realizing instances 0b15353baa
  • UI: Cleanup: Phrasing of tooltips in line art modifier 23c4854f45
  • D11689: Refactor: Move vertex group names to object data (WIP)


Bug Fixes

  • Fix T89343: Point cloud instances not transformed when realized ebfad93039
  • Fix T89430: Realizing NURBS curve instances is broken 20e68d848e
  • Fix T89327: Cube and ico sphere nodes do not create UVs ee8b284d11


Cleanup

  • Cleanup: Refactor spline copying functions f3eecfe386
  • Cleanup: Rename variables, use shorter names dc3b7602ee
  • Cleanup: Use "size" instead of "points_len" in spline code e1d6219731
  • Cleanup: Clang format 9586472b9a


Review

  • [Requested changes] D11688: Moving mesh_evaluate.c to C++
  • [Requested changes] D11700: Geometry Nodes: Add explicit Float to Int conversion node
  • [Committed] D10810: Fix widget emboss: Also fade emboss on the right side
  • [Commented] D11659: Fix T89316: Boolean node does not transfer vertex group names.
  • [Requested changes] D11657: Geometry Nodes: Curve Primitive Polynomial Curve
  • [Requested changes] D11653: Geometry Nodes: Curve Primitive Star
  • [Requested changes] D11650: Geometry Nodes: Curve Primitive Circle
  • [Requested changes] D11609: Geometry Nodes: Curve Primitive Spiral
  • [Requested changes] D11649: Geometry Nodes: Curve Primitive Quadratic Bezier Segment
  • [Requested changes] D11648: Geometry Nodes: Curve Primitive Bezier Segment
  • [Requested changes] D11639: Geometry Nodes: Curve Primitive Phyllotaxis Spiral
  • [Requested changes] D11665: Geometry Nodes: Curve Primitive Quadrilateral
  • [Requested changes] D11674: Geometry Nodes: Curve Primitive Rose Curve
  • [Accepted] D11656: Geometry Nodes: Curve Primitive Polygon


Tracker

  • Investigated: 9
  • Archived: 5


Next Week

My first priority is finishing the curve modifier stack work. Then I'll try to finish up some other tasks, and support Jacques on the node work where I can.


June 14 - June 20

This week I focused on finishing up more of the curve nodes, reviewing code for geometry nodes features, cleanup, and some bug fixing. There are a few contributors working on curve features, including the GSoC project, so I'm trying to keep all of that coordinated too.

I spent time working on trying to wrap up the IDProperty UI data refactor, getting closer there! And finally committed the spreadsheet row filter patch.

The new row filters in the spreadsheet use drag and drop panels, just because why not! With part of my curve performance test file on the right.

I also made some design tasks this week. That's quite fun!

  • Tasks for new nodes:
  • Some work on the "converting modifiers" task (I should write a blog post about this at some point)
    • T86839: Converting Modifiers to Nodes
  • And a couple TODO tasks for the spreadsheet editor after landing the row filters:
    • T89272: Visible column search for the spreadsheet
    • T89273: "Range" filter option for spreadsheet row filters


Changes / Features

  • Geometry Nodes: Curve to Points Node for Evaluated Data fcbb20286a
  • Geometry Nodes: Add Curve Subdivision Node ed4222258e
  • Spreadsheet Editor: Row Filters f9aea19d98
  • Curves: Multithread Curve to CurveEval conversion 0cd34967c0
  • Geometry Nodes: Multithread curve resample node a1c3e45100
  • Geometry Nodes: Parallelize curve reverse node bf7f918a0e
  • Geometry Nodes: Allow int attribute input fields with single value 143a81ccce


Bug Fixes

  • Fix: Spreadsheet selection filter crash on non-mesh components 6afafc46f6
  • Fix T89302: Broken normals after mesh to curve node 2d75b39b64
  • Fix T89233: Incorrect attribute remove warning for curves 94c4a9995e
  • Fix T89310: Industry Compatible keymap not working 80083ac773


Cleanup

  • Splines: Add resize method to CurveEval 732e8c723e
  • Cleanup: Rename spline interpolation functions feb6fd632f
  • Cleanup: Expose function publicly, rename c29afa5156
  • Cleanup: Fix inconsistent parameter name warning 0b0c7ca017
  • Cleanup: Refactor join geometry node attribute gathering fe0fa7cec6


Review

  • [Requested changes, accepted] D11619: Raycast geometry node
  • [Requested changes, accepted] D11291: Line Art: Cached calculation for multiple modifiers in the stack
  • [Accepted] D10895: T86838 Geometry Nodes: Add Mesh To Volume Node
  • [Accepted] D11073: Edge-scrolling for node editor
  • [Committed] D11577: Geometry Nodes: Separate Components Node
  • [Committed] D11538: Curve 'Switch Direction' Node (Change Direction, Reverse)
  • [Requested changes] D11648: Geometry Nodes: Curve Primitive Bezier Segment
  • [Commented, accepted] D11620: Documentation for Raycast geometry node
  • [Accepted] D11624: BLI: Add threading namespace.


Tracker

  • Investigated: 5
  • Archived: 4


Next Week

Next week is general module development: I'm planning to tackle technical debt, some last important features for curves, and maybe some thinking/work on volumes.

June 7 - June 13

This week I (still) focused on finishing up the curve tasks on the workboard. Most of them are getting close, but there is still work to do. In preparation for supporting the nodes modifier on curve objects I did some cleanup to the file responsible for the curve modifier stack.

Curve deform node with options mostly similar to the modifier. I would like to combine the two options to a single "Stretch to Fit" option.

Changes / Features

  • UI: Add the option to not display some socket labels ec98bb318b
  • UI: Remove property descriptions exactly the same as names 1ef33be2d4
  • Splines: Add API functions for interpolating data 675677ec67
  • Geometry Nodes: Copy spline attributes in the curve resample node 93fd07e19c
  • Geometry Nodes: Support curve instances in the bounding box node f5a2d93224
  • Geometry Nodes: Rename bounding box mesh output to "Bounding Box" 22ee056c3a
  • D11539: Geometry Nodes: Curve to Points Node
  • D11596: Geometry Nodes: Curve Deform Node
  • D11597: WIP: Geometry Nodes: Support nodes modifier on curve objects
  • D11535: Geometry Nodes: Support multi-input socket in bounding box node


Bug Fixes

  • Fix T88934: Crash with line node count input < 0 a2ebbeb836
  • Fix: Point translate and point scale don't execute on curve data a3226bdf3e
  • Fix: Incorrect node bezier spline tangent calculation for end points 8c3f4f7edf
  • Fix test failure caused by earlier cleanup commit 0abce91940


Cleanup

  • Cleanup: Decrease variable scope 8cbff7093d
  • Cleanup: Remove outdated/useless comments 7313b243f2
  • Cleanup: Use const arguments, return by value d2aee304e8
  • Cleanup: Remove unused function, make function private 1182c26978
  • Cleanup: Fix uninitialized variable warning 7f1d1b03ad
  • Cleanup: Order return argument last 84adc23941
  • Cleanup: Reduce indentation from redundant check 54a03d4247
  • Cleanup: Comment formatting 33c4eefabb
  • Cleanup: Remove duplicate call to function a31bd2609f
  • Cleanup: Make function static 1c6e338d59
  • Cleanup: Order return argument last b0ec1d2747


Review

  • [Committed] D10925: Geometry Nodes: Convex Hull Node
  • [Requested changes, accepted] D11046: Spreadsheet: Dataset region for spreadsheet editor
  • [Requested changes] D11522: Nodes: String to Curve, Value to String, String Join, String Substring, String Length
  • [Commented] D11470: Geometry Nodes: New Viewer node.
  • [Committed] D11560: Add Texture and Material options to switch node
  • [Requested changes, accepted] D11538: Curve 'Switch Direction' Node (Change Direction, Reverse)
  • [Commented] D10196: Alembic: add settings to control radius of imported curves and points
  • [Closed] D10485: WIP:Geometry Nodes: Remesh Node


Tracker

  • Investigated: 4
  • Archived: 2


Next Week

More work on curve nodes, hopefully finishing all of them that I'm working on right now. Apart from that, some code review and feedback to other developers. Also, hopefully more conversations with GSoC students.


May 31 - June 4

This week I mainly focused on code review and various curve node tasks.

For code review, I did review rounds of the spreadsheet data set region patch, and reviewed/committed the geometry delete node and curve length nodes, among some other smaller patches.

I took a break from the subdivide node, since the implementation for bezier curves was giving me a headache. I'll come back to it again next week hopefully, after deciding whether to prioritize handle type or curve shape. I implemented two options for the "curve evaluation instancing". We had talked about a "Curve to Points" node for that use case, but after I thought about it more I thought of another option which I like more. I implemented a basic curve deform node, parts of which were quite simple with the code so far, but figuring out how exactly to change the position was harder than I expected, and I didn't quite finish.

I also made these design tasks:


Changes / Features

  • Geometry Nodes: Support curve data in the geometry delete node e5a1cadb2f
  • Geometry Nodes: Skip calculating normals in transform node 17b09b509c
  • Geometry Nodes: Allow reading converted attribute directly from spline 34f99bc6be
  • Splines: Function to copy spline settings without data 21de669141
  • D11491: Geometry Nodes: Join dynamic curve attributes in the join geometry node
  • D11468: Geometry Nodes: Add "No attribute" warning to geometry delete node
  • D11421: WIP: Geometry Nodes: Add curve subdivision node


Bug Fixes

  • Fix T88732: Curve to mesh node crash with empty input curve 05b685989b


Cleanup


Review

  • [Requested changes] D11046: Spreadsheet: Dataset region for spreadsheet editor
  • [Accepted, commented] D10925: Geometry Nodes: Convex Hull Node
  • [Accepted] D11439: Geometry Nodes: Add empty material slot to new meshes.
  • [Committed] Geometry Nodes: Add Delete Geometry Node 464797078d
  • [Requested changes, committed] D11459: Geometry Nodes: Curve Length Node
  • [Commented] D11520: Function node: Value to String
  • [Commented] D11415: Fix T88598: Support disabling task isolation in task pool.
  • [Closed] D304: Solution for T37878 - Viewport normal drawing with constant length


Tracker

  • Investigated: 2
  • Archived: 1
  • Dupliucate: 2


Next Week

I'll start by doing some code review, then I'll focus on finishing up the curve tasks on the workboard finally, which I actually think is possible now.

May 24 - May 28

This week I continued development for curve nodes, where the system is starting to get more complete. Once we have a proper way to evaluate splines I think it will be quite powerful. Apart from some design disagreements this project has been really satisfying.


Changes / Features

  • Geometry Nodes: Add Mesh to Curve Node 11e32332dd
  • Geometry Nodes: Draw curve data in the viewport ac833108db
  • Geometry Nodes: Support interpolation between curve domains c97b6215a3
  • Geometry Nodes: Expose texture and material inputs to modifier 3025c34825
  • Geometry Nodes: Polish switch node UI 653bbaa246


Bug Fixes

  • Fix T88452: Point Separate crash on curve component e5b51cb511
  • Fix T88603: Crash with spline attributes after curve resample e5b51cb511
  • Fix T88601: Attribute Compare boolean doesn't expose socket 20e250dae3


Cleanup

  • Cleanup: Simplify spline point attribute materialize functions b132dd042e
  • Cleanup: Convert to static type directly from CPPType c3c576c8c4
  • Cleanup: Remove completed "TODO" comment a10e41b02e
  • Cleanup: Use consistent variable names a12fd5c3ad
  • Cleanup: Fix short comparison with bool warning c0bb7d9cb7
  • Cleanup: Fix forward declaring class with "struct" 24b2482ad9, a3edf4a381


Review

  • [Requested changes] D11046: Spreadsheet: Dataset region for spreadsheet editor
  • [Commented] D10749: Geometry Nodes: Add node labels to Attribute maths nodes
  • [Accepted] D11399: Fix threading issues with node ui storage, again...
  • [Closed] D8167: Minor UI: Make the 'Snap to' dropdown inactive when the 'Snap' icon is off, in line with the operation of the 'Proportional Editing' icon and its related dropdown.


Tracker

  • Investigated: 7
  • Archived: 2


Next Week

Next week I'll do code review and continue curve nodes development and whatever else comes up. Maybe I'll make some other design tasks for ideas I've had recently.

May 17 - May 23

This week I mostly worked on curve attributes again. I committed support for dynamic attributes. The few left are NURBS weight and bezier handles, then that project is mostly finished. There are still other curve nodes I want to complete for 3.0, but I may have some work to do convincing others about my approach first.

I made changes to draw curve data in the viewport, though there are still some problems with it to fix before committing.

I also updated the manual for recently added changes to geometry nodes, and spent a bit of my own time prototyping a volume sample node, which I think would be awesome.

Changes / Features

  • Geometry Nodes: Support for dynamic attributes on curve splines 627f357127
  • Geometry nodes manual updates
    • Add note about materials on join geometry page rBM8055
    • Add note about attributes to the geometry join node rBM8056
    • Add note about sharp edges to the curve to mesh node page rBM8057
    • Geometry Nodes: Add Material Assign Node rBM8053
    • Geometry Nodes: Add Material Input Node rBM8054
    • Cleanup: Fix grammar, add term references rBM8059
    • Geometry Nodes: Add Attribute Vector Rotate Node rBM8060
    • Add more information to the curve resample node page rBM8058
  • Splines: Optimize interpolation in special case virtual array d1c9a99c07
  • D11351: Geometry Nodes: Draw curve data in the viewport
  • D11353: WIP: Geometry Nodes: Volume Sample Node


Bug Fixes

  • Fix T87316: No undo push for clicking on attribute name 991a1cdf5d


Cleanup

  • Cleanup: Use consistent order for functions in node files 58893eaef8
  • Cleanup: Use copy constructor for CurveEval 192a3f1a05


Review

  • [Accepted] D11191: New Geometry Nodes evaluator
  • [Commented] D11276: Initial attribute list for meshes
  • [Accepted] D11155: Geometry Nodes: New Material Assign node
  • [Accepted] D11324: Geometry Nodes: New Select by Material node
  • [Accepted] D11303: Materials: Support materials when applying modifier
  • [Committed] D11342: Fix T87357: Missing update after removing socket
  • [Commented] D10358: Proposal: Improved feedback when dropping is not possible on drag 'n drop
  • [Commented] D11300: Custom Properties: Copying Utility
  • [Closed] D11270: Expose Sculpt Face Sets To Geometry Nodes
  • [Accepted] D11305: Geometry Nodes: New material input node


Tracker

  • Investigated: 5
  • Duplicate: 1
  • Known Issue: 1
  • Archived: 3


Next Week

Next week I'll try to make more progress on curve nodes, commit the IDProperty UI data refactor, and fix some bugs.

May 10 - May 16

This week I worked on curve control point attributes, where the main complexity is exposing separate data from multiple splines as if it were a continuous set of values. I also worked on adding support for dynamic attributes to curves. In both of these cases I'm fairly happy with the result, though there is room for performance improvement.

On Saturday I made two nodes I had been thinking about during the week:

A spline from edges node generates curve data based on edges of a mesh. The algorithm I used is a straightforward one I found in Animation Nodes.
It's often quicker to instance something directly on a curve than on point data with a rotation attribute. This node instances on evaluated curve points.

I also started reviewing Jacques' new geometry nodes evaluator patch. I'll have to put on my smart hat and do another pass on that though.

I abandoned D10712: Geometry Nodes: Optimize transform node for meshes-- we decided to just mark the normals invalid since you often do other operations after a transform node that may or may not use normals.


Changes / Features

  • Geometry Nodes Curves: Expose first builtin point attributes 1892b131ed
  • Functions: Add materialize methods for generic mutable virtual array 5613c61275
  • Functions: Expose set_all method for generic virtual arrays c5d38a2be8, r01a614c69902
  • D11251: Geometry Nodes: Support for dynamic attributes on curve splines
  • D11265: Geometry Nodes: Add Curve from Edges Node
  • D11268: Geometry Nodes: Add Curve Instance Node


Bug Fixes

  • Fix T88262: Curve to mesh crash with vector last segment db59f0b943


Cleanup


Review

  • [Commented] D11191: New Geometry Nodes evaluator
  • [Requested changes] D11046: Spreadsheet: Dataset region for spreadsheet editor
  • [Commented] D10925: Geometry Nodes: Convex Hull Node
  • [Requested changes] D10787: Node Editor: Paste Node on mouse position
  • [Accepted, committed] D11042: Geometry Nodes: Add Attribute Vector Rotate node
  • [Accepted] D11231: Fix connecting wrong sockets when inserting node
  • [Accepted] D11229: Geometry Nodes: Implement the validate_link callback
  • [Commented] D10748: Geometry Nodes: Add a new Delete Geometry node
  • [Commented] D9678: Bevel on curves does not create distorted geometry anymore
  • [Commented] D11270: Expose Sculpt Face Sets To Geometry Nodes
  • [Accepted] D11222: Geometry Nodes: Use texture socket in Attribute Sample Texture node


Tracker

  • Investigated: 7
  • Duplicate: 2
  • Confirmed: 1
  • Archived: 4


Next Week

I'm travelling a bit so I won't have quite as much time this coming week (still almost a full week though). I'd like to finish up the intitial targets for curves (then I still have some personal ideas I'd like to find time to work on-- volume sample node, 2D curve meshing, and some others).

I'm hoping it will be possible to commit D9697: Refactor IDProperty UI data storage this coming week.


May 3 - May 9

This week I kept working on curve support and curve nodes. On Monday I committed the first change to master. Then I worked from there to add tilt control and a resample node, which is the first actually useful thing about all of this. I haven't quite finished yet but support for curve point attributes is almost ready (though position will take some more time, automatically adjusting Bezier handles adds a lot of complexity!). I fixed the few bugs that came up with the curve nodes, mostly unreported.

I was interested in trying the Contrained Delauny Triangulation code for this purpose. Here it's working nicely for a single spline, I didn't get it to work properly for multiple splines yet though.

I also worked on performance for the point instance node (another 8x performance boost), and did some random reviewing. We also had a long UI meeting on Wednesday.

Not much cleanup this week, wow!


Changes / Features

  • Geometry Nodes: Initial basic curve data support 8216b759e9
  • Geometry Nodes: Curve Resample Node 3185084efb
  • Geometry Nodes: Parallelize attribute nodes 1d7ee50fef
  • Geometry Nodes: Improve point instance node performance 518c5ce4cd
  • Nodes Splines: Apply tilt to normal evaluation d08cc63e2f


Bug Fixes

  • Fix T88126: Curve resample crash for single point input 7029cc2f8a
  • Fix: Incorrect type used for geometry nodes poly splines 441160930b
  • Fix: Incorrect cyclic interpolation for nodes bezier spline 7ab7ae80c5
  • Fix: Splines: Use consistent bezier linear interpolation method 1f5710326f
  • Fix: Curve to mesh node fails with one point and no profile 5bfd5e77b7
  • Fix: Curve to mesh node assert when last profile segment is vector e46b9de6ab
  • Fix: Curve resample duplicates last point for cyclic splines f694321db0
  • D11190: Fix T87316: No undo push for clicking on attribute name


Cleanup

  • Geometry Nodes: Refactor point instance node 9569a522f2


Review

  • [Commented] D11191: New Geometry Nodes evaluator (WIP).
  • [Accepted] D11116: Drag & Drop: Use session id instead of name to identify dropped object
  • [Accepted, committed] Geometry Nodes: Add Attribute Curve Map Node ba06bc16ae
  • [Accepted] D11165: Switch Node Polish
  • [Commented] D10700: USD Importer
  • [Commented] D11073: Edge-scrolling for node editor
  • [Commented] D11195: View3D: Add undo support for Lock Camera To View
  • [Accepted] D11171: Fix T88030: operator showing options it shouldnt
  • [Accepted] D11194: Geometry Nodes: Parallelize Attribute Curve Map node


Tracker

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


Next Week

Next week I'd like to finish up builtin and generic attributes for curves, and maybe get to the other normal evaluation methods. At that point the base will be pretty solid. There are also some patches I'd like to review, and I want to push on the "Selection attribute" design.


April 26 - May 2

This week I spent most time looking through bugs and doing some fixing. I also did some review back and forth with Jacques on the curve patch to keep that moving. On Saturday I looked into parallelizing some of the attribute nodes, D11139. I expect it depends heavily on the computer, but 3-10 times faster with 8 cores in a linear situation is pretty nice. Really that's just earlier work paying off though, but it's nice to see.

Distribute points evenly on a curve, generate a volume from the output, so many opportunities!

I also updated an old patch, D9697: Refactor IDProperty UI data storage, hopefully we can get that reviewed and in master soon.


Changes / Features

  • Geometry Nodes: Add a template utility to mix two attribute values ddaeaa4b98
  • Spreadsheet: Add instance IDs from geometry set 1b5b4b067e
  • UI: Change "Int" to "Integer" in enum item names 6a664cc945
  • D11091: Geometry Nodes: Initial basic curve data support
  • D11139: Geometry Nodes: Parallelize Attribute Nodes
  • D11103: Generic array data structure (WIP)


Bug Fixes

  • Fix T87401: Drop-down can apply the wrong modifier fe79935f00
  • Fix T87702: Cannot generate one point with line node in end points mode 14b26fc976
  • Fix T87165: Join geometry node doesn't copy instance IDs 7e678c3096
  • Fix: Self object missing from geometry nodes evaluator params eecaa59513


Cleanup


Review

  • [Accepted] D11037: Geometry Nodes: Initial Attribute Transfer node
  • [Requested changes] D10951: Geometry Nodes: Mesh Smooth node
  • [Requested changes] D11073: Edge-scrolling for node editor
  • [Requested changes] D11042: Geometry Nodes: Add Attribute Vector Rotate node
  • [Accepted] D11125: Geometry Nodes: Refactor instances component.
  • [Accepted, committed] D10938: Nodes: Add a callback to check for valid socket type
  • [Accepted, committed] D10932: Geometry Nodes: Add an "Auto" option for Attribute Convert data type
  • [Accepted] D11085: Geometry Nodes: Improve geometry nodes evaluator api.
  • [Accepted] D11086: Fix T85889: Recursive instances result in crash.
  • [Accepted, committed] D11062: Fix T87749: Fix text jitter in buttons with icons
  • [Requested changes] D10925: Geometry Nodes: Convex Hull Node
  • [Commented] D11140: Adaptive Curve Resolution
  • [Commented] D10862: Expose Face Sets to Python
  • [Commented] D11121: Fix: Undo history for 3D viewport pivot dropdown
  • [Accepted] D11108: Fix T87767: Spreadsheet not updating on texture changes.
  • [Accepted] D11107: Fix T87876: Vertex groups missing when mesh is in edit mode.
  • [Accepted] D11106: Fix T87526: Poor contrast in attribute search.


Tracker

  • Investigated: 14
  • Needs Information: 3
  • Archived: 5
  • Resolved: 1


Next Week

Maybe more of the same (fixing final bugs for 2.93, various smaller design topics, curve support, and general refactoring). That's my prediction anyway.


April 19 - April 25

This week I mainly worked more on curves. I got NURBS splines working, generalized some of the interpolation from control points to evaluated points, and planned how I'll implement more features in the future. I'm quite happy with how it's turning out. It's taken a while to get the base working well, but the result is quite nice I think. It should be faster and more understandable than the current curve code, and it lays the groundwork for more features like arbitrary attributes.


Curve evaluation in BKE_spline.hh has three layers: the control points, the evaluated points (based on the resolution), and then on top of that, uniform/adaptive sampling.

One important thing to recognize is that the user generally cares about the evaluated points and not the mathematically exact spline. The user sees the spline with the given resolution, not the exact version, so evaluation, sampling, deform, etc. should be done with the evaluated points of the set resolution. The other benefit is that it's possible to approximate the mathematical spline very well if you increase the resolution, but using an approach based on resolution means everything can be faster when complete accuracy isn't required.

First the data is interpolated from the control points to the evaluated points. The method is different for the different spline types:

  1. Bezier uses a map of floats generated alongside the positions with indices and factors packed together.
  2. Poly just return the input data, nice and simple. This means that the data returned from the interpolation would ideally have optional ownership.
  3. NURBS Slightly more complicated. For proper interpolation you need to mix values from a few of the control points, so the cache for each evaluated point is a start index and a small vector of weights.

Next, this is my current plan for the third sampling step:

  1. When you just need a very small values, use the binary search lookup that returns two indices and a factor. Nice because it avoids having to build a large table and is accurate.
  2. When you need uniform samples, use a function that returns an array of "uniform-ed" parameters (could also use a callback)
  3. When you need to sample a bunch of arbitrary parameters (curve deform), sort them, then pass them to a function that "uniform-izes" them (this could also use a callback)


I've I also worked more on the spreadsheet row filters, that needs one more update before committing to master though.

Other than that, I spent time mainly on miscellaneous code review and bug fixing. We had a UI meeting too, the first in a while.


Changes / Features

  • Geometry Nodes: Get attribute domain and type without allocation b9a7b40924
  • BLI: Add "first" method to MutableSpan and Vector 16b2b33d01


Bug Fixes

  • Geometry Nodes: Add initializer for attribute creation d1ccc5b969
  • Fix T87392: Copy modifier to selected does not do anything 6f761c7110
  • Fix T85223: Some modifier panels can dissapear in old files b8b7b47a00
  • Fix T87567: Crash adding item in empty attribute search d7caae56c4
  • Fix windows build: Don't use designated initializers in C++ 3a6f481d5a


Cleanup

  • Cleanup: Clang tidy, clang format 68cbf0a2be
  • D11078: Cleanup: Move displist.cc to C++
  • D11080: Cleanup: Replace modifyVolume with modifyGeometrySet


Review

  • [Requested changes] D11037: Geometry Nodes: Initial Attribute Transfer node.
  • [Requested changes] D10895: T86838 Geometry Nodes: Add Mesh To Volume Node
  • [Requested changes] D10914: Add Extras Dropdown Menu to Constraints
  • [Requested changes, accepted] D10742: Line Art manual page
  • [Accepted] D11029: Curve modifiers: Disable 'Apply on Spline' option if not available
  • [Accepted] D10748: Geometry Nodes: Add a new Delete Geometry node.
  • [Accepted] D11056: Spreadsheet: Combine vector/color spreadsheet columns.
  • [Accepted] D11060: Partially fix T87749: Fix text jitter in buttons and spreadsheet editor
  • [Accepted] D11021: Fix T87637: Dragging button value cancel not working
  • [Accepted] D11011: Geometry Nodes: Support Geometry Nodes modifier on volume objects.
  • [Commented] D10980: UI: Add curve handle buttons to CurveMap interface
  • [Commented] D10938: Nodes: Add a callback to check for valid socket type
  • [Requested changes] D10905: Geometry Nodes: add Attribute Edge Length


Tracker

  • Investigated: 8
  • Archived: 2
  • Resolved: 4


Next Week

Next week will be a combination of bug fixing and working more on the curves.

April 12 - April 18

This week I worked on spreadsheet row filters, the final improvements to the attribute search menu, and I continued working on curves.

For the row filters I implemented drag and drop support, mostly just for the fun of it.

Spreadsheet Row Filters Patch.png

Some initial design documents for a few of the curve nodes:


Changes / Features

  • Geometry Nodes: Add domain and data type to attribute search 71eaf872c2
  • UI: Add a workspace for geometry nodes in the default startup file ac90c8a774
  • Geometry Nodes: Realize instances when applying modifiers 788a28251b
  • D10959: Spreadsheet Editor: Row filters


Bug Fixes

  • Fix compile warning 06888a8970
  • Fix text in startup file python console a4877f9e54
  • Fix T87555: Incorrect view transform default in startup file b2a0f69275


Cleanup

  • Cleanup: Use C++ types in object_dupli.cc 1e8a808910
  • Cleanup: Nodes: Use consistent errors for nodes built without features 8d9fd0427d


Review

  • [Accepted] D10994: Geometry Nodes: Use virtual arrays in internal attribute api (WIP).
  • [Requested changes, accepted] D10931: Spreadsheet: Breadcrumbs and node pinning.
  • [Closed] D4960: New Voxel Mesher Modifier
  • [Requested changes] D10925: Geometry Nodes: Convex Hull Node
  • [Accepted] D10921: Geometry Nodes: Add Attribute Curve Mapping node
  • [Accepted] D10884: Nodes: Tooltip for Group Input properties
  • [Accepted] D10962: Spreadsheet: Rename Point to Vertex.
  • [Accepted] D10940: Fix T87356 & T87358: Small multi-input socket issues


Tracker

  • Reported: T87526: Poor contrast for right aligned grayed text in search menu active item
  • Investigated: 7
  • Confirmed: 1
  • Needs Information: 1
  • Archived: 4


Next Week

This coming week I'm hoping to get some of the curve support into master, fix a few bugs, and do code review. I'd also like to create design tasks for a few of the volume nodes.

April 5 - April 11

This week I worked more on improvements to attribute search, row filtering for the spreadsheet, and various other tasks for geometry nodes. One area I focused on was volumes, where I refactored some code for more general improvements.

The bounding box node works on meshes, point clouds, and volumes

In my free time I also worked on curve nodes a bit, I've been having quite a bit of fun with that.

In the "Curve to Mesh" node, use auto smooth, and automatically set the sharp flags for free and vector control points.

Changes / Features

  • Geometry Nodes: Greatly improve speed of some mesh primitives 22ba85b510
  • Geometry Nodes: Support instances in attribute search 1ec9ac2016
  • Geometry Nodes: Bounding Box Node e0a1a2f49d
  • Geometry Nodes: Rename grid output UV attribute 1a8db9ec04
  • Geometry Nodes: Support volumes in the bounding box node 500045a0d3
  • BKE: Add a utility to transform a shallow copy of a volume grid 0e2a1ef132


Bug Fixes

  • Fix T87264: Button to remove physics modifier doesn't work 02a7289fe3
  • Fix: Dragging a modifier to the same index recalculates modifier stack 2e3b0e8a99


Cleanup

  • Cleanup: Remove unused includes, use consistent order 223093ed17
  • Cleanup: Use const arguments for volume code fd414b4906
  • BKE: Refactor volume bounding box code 57fe650b76
  • Cleanup: Rename function, switch order of arguments 79ba4fde15


Review

  • [Accepted] D10901: Spreadsheet: Persistent column storage and data source.
  • [Requested changes] D10895: T86838 Geometry Nodes: Add Mesh To Volume Node
  • [Requested changes] D10202: Geometry Nodes: Attribute Statistic node
  • [Accepted, committed] D10900: Use distance property subtype for geometry node sockets
  • [Requested changes] D10884: Nodes: Tooltip for Group Input properties
  • [Accepted] D10921: Geometry Nodes: Add Attribute Curve Mapping node
  • [Accepted] D10928: Fix T87167: Object dragged from Outliner into Geo Nodes doesn't auto update
  • [Accepted] D10774: Node Editor: Show frame label only when a label is set
  • [Accepted] D10910: Fix T87263: Animation decorator not working on Grease Pencil Build modifier Factor value
  • [Accepted] D10926: Spreadsheet: Add spreadsheet width unit.


Tracker

  • Reported: T87355: Crash using menu search from the top bar
  • Reported: T87356: Bad offset for node link in multi-input socket after disconnecting
  • Reported: T87358: Assert for boolean node multi-input socket
  • Investigated: 7
  • Confirmed: 3
  • Archived: 1


Next Week

The next sprint will be focused on finishing up some improvements we want for 2.93, and as a nice surprise, curve and volume nodes, yay!

March 29 - April 4

This week I spent time on miscellaneous geometry nodes tasks, started work on row filtering for the spreadsheet, and finished up my work on the boolean node, including some cleanup of the boolean modifier at the end.

I also finally committed a change the UI team had talked about a while ago: returning hover shortcuts for mesh modifiers. I'm still not happy with the way it looks though-- The blue border around the active modifier makes it look like it's selected, but it has no effect on which shortcut the modifiers apply to. I brainstormed some ideas, nothing great yet though.

I moved the curve support in geometry nodes design document to the wiki. This weekend I started working on implementing this plan-- surprisingly it's not taking quite as much time as I thought. It's been quite fun.

The first curve attributes here, only on the spline domain so far-- and "length" is read-only.

Changes / Features

  • Geometry Nodes: Improve speed of boolean node, use multi-input socket e8573a59f6
  • Geometry Nodes: Separate grid primitive X and Y size 46d75052eb, rBM7918
  • Geometry Nodes: Set default grid vertices to 3 by 3 b1380101df
  • UI: Bring back hover shortcuts for mesh modifiers 9f323e9bf7
  • Geometry Nodes: Rename "Grid" to "Density" 4fd7b1f3db
  • Geometry Nodes: Change point translate and scale node defaults bd9c479475
  • Geometry Nodes: Allow float input for point scale node 0e8fa1d44b, rBM7913


Bug Fixes

  • Fix unused variable warning caused by recent cleanup a4b6c222fa
  • Fix T87094: Transforming geometry instances component is broken 46ee9b599a
  • D10870: Fix: Button to remove physics modifier doesn't work


Cleanup

  • Cleanup: Remove unecessary C API for direct mesh boolean a0e1080428
  • Cleanup: Remove remaining unused code for DispList "bevel_split" 910469eccf
  • Cleanup: Remove unused code in boolean modifier d91fec1a85
  • Cleanup: Use const arguments in curve code a641e08227
  • Cleanup: Use float4x4 type and constructor d037fef3bd
  • Cleanup: Move object_dupli.cc to C++ 3ca1cf2b51
  • Cleanup: Decrease variable scope 7d467915a4
  • Cleanup: Fix incorrect socket list name 73b5afd352
  • Cleanup: Improve comment 6ea09db7a1
  • Cleanup: Remove unused code 6be964e267
  • Cleanup: Remove unecessary part of instances component C API c5d9968392
  • Cleanup: Use const arguments 77f6857740
  • D10881: Cleanup: Fix incorrect error in mesh validation code


Review

  • [Requested changes] D9969: Geometry Nodes: Mirror node
  • [Commented] D10506: Point Distribute Volume
  • [Committed] D10847: Expose multi input socket in python API
  • [Accepted] D10878: Fix T86874: Wireframe Overlay Mesh Primitives Grid, Circle. Add ME_EDGEDRAW, ME_EDGERENDER edge flags
  • [Closed] D10866: Fix T86874: Wireframe Overlay Mesh Primitives Grid, Circle
  • [Accepted] D10857: BLI: Rename resource collector to resource scope.
  • [Commented] D10875: Spreadsheet: Show data of active node (WIP).
  • [Accepted] D10871: UI: Align Spreadsheet Reals and Integer to Right
  • [Accepted] D10876: Fix T86654: wrong Vertex Interpolation option default when importing alembic caches


Tracker

  • Reported: T87138: Memory leak in boolean fast solver collection mode
  • Investigated: 3
  • Confirmed: 1
  • Archived: 1


Next Week

Next week I'll finish up the row filtering for the spreadsheet, and work on some remaining issues I'd like to solve before Bcon4. On Monday I'm going to just work on curve support though.

March 22 - March 28

Since the focus for this past week was documentation, I made design tasks for porting a few modifiers to nodes. I'm finding I really like focusing on design:

I also worked on a design task to clarify the idea of using boolean attributes as selections. I think the right approach is pretty clear, tried to think through pros and cons of different options: T86907: Selection / Tagging in Geometry Nodes

Earlier in the week I had a short meeting with Howard and Campbell going over my proposals for curve support in geometry nodes and for converting modifiers to nodes. That was actually very nice; reflecting on it a bit I couldn't imagine doing anything like that a year ago, and their reception was positive!

Lastly I worked with Antonio on getting the grease pencil I/O patch, D10482, ready for master, which we finally did!


Changes / Features

  • UI: Remove text for add and remove buttons in cryptomatte node 1a7f9b5005
  • BLI: Add "identity" constructor to float4x4 type 2d1120c171
  • Geometry Nodes: Remove location and rotation from mesh primitives 23d2174d6b
  • Geometry Nodes: Move mesh primitives to their own category 9f19d01e3c
  • Geometry Nodes: Make plane primitive size consistent 83df354524
  • Geometry Nodes: Rename "Plane" primitive to "Grid" 80530edcae
  • Add an example to the Attribute Vector Math page rBM7894
  • UI: Use correct property split ratio for node socket buttons a363d64b93
  • D10599: Geometry Nodes: Improve speed of boolean node, use multi-input sockets
  • D10834: Geometry Nodes: Support X and Y size for grid primitive
  • D10420: Geometry Nodes: Bounding Box Node


Bug Fixes

  • Fix T86875: "Show on Cage" crash for geometry nodes primitives 8060293656


Cleanup

  • Fix build error and warnings in new grease pencil IO code bf0454b78b
  • Cleanup: Pass instance group result vector as an argument 64ca286540
  • Cleanup: Geometry Nodes: Allow using "Auto" domain to avoid adapting 3d25669486
  • Cleanup: Remove unecessary enum funcs 9ad3d1d36b
  • Cleanup: Use enum for "in" vs. "out" node sockets 35d5cc8982


Review

  • [Requested changes] D10748: Geometry Nodes: Add a new Delete Geometry node.
  • [Accepted] D10769: Fix drag and drop issues with Object Info for geometry nodes
  • [Requested changes] D10742: Line Art manual page
  • [Committed] Abcd08a950: Themes: Update the "Minimal Dark" theme preset
  • [Commented] D4328: Boolean modifier: new option to set bevel weight / edge crease for new edges
  • [Commented] D10745: Geometry Nodes: Use implicit conversion when writing to built-in attributes
  • [Committed] D10822: Geometry Nodes: Center Plane primitive around origin and fix UV size
  • [Committed] D10344: Geometry Nodes: add Attribute Map Range
  • [Committed] D10650: Geometry Nodes: Add remaining operations of the Vector Math node
  • [Committed] D9904: Cleanup: "Warning" in tooltips/description, use unified format
  • [Committed] D10537: UI - Remove 'Enable physics for:' text
  • [Commented] D10749: Geometry Nodes: Add node labels to Attribute maths nodes
  • [Commented] D10639: VSE UI: Sidebar overlapping and transparent
  • [Accepted] D10803: Geometry Nodes: Rename attribute domains.
  • [Commented] D10831: Add Object: Point Primitive


Tracker

  • Investigated: 6
  • Confirmed: 2
  • Archived: 2


Next Week I'm not exactly sure what the next week's focus will be, but I expect bug fixing, review, and maybe some prototyping.

March 15 - March 21

This was a very scattered week. I was hoping to get to starting the attribute processor prototype, but I had to keep pushing that back in order to finish the mesh primitives, fix bugs, review code, and have design discussions. I'm still happy with it, it was just all over the place.

It's much easier to make an illegible node tree that generates some basic thing now! Makes me really want a bevel node!

In order to make review of the mesh primitives patch easier, I split up some of the new implementations into a separate patch, D10730. Doing that I discovered that the new implementation for the sphere was over 4000 times faster in some cases. Regardless of whatever stupid reason causes that, it's a nice feeling!

Basic decomposed transform and names of instances in the spreadsheet

I also spent a fair amount of time going over the line art commit for a UI pass, mostly for wording of tooltips, etc. That involved some discussion for figuring out what some of the options do.

I made a design task for a Geometry Delete Node after some discussion because Wannes Malfait wanted to work on porting the mask modifier.

Changes / Features

  • Geometry Nodes: Add initial version of mesh primitives 9a56a3865c
  • UI: Tweak labels, descriptions, and panel layout for line art be33d3eccd
  • UI: Correct icon and description for "Object Line Art" 4de7dc42c9
  • Geometry Nodes: Add geometry instances data to the spreadsheet 17a5db7303
  • Geometry Nodes: Implicit interpolations to and from the edge domain 97b83b6a67
  • Geometry Nodes: Don't create empty components when realizing instances 894e8b18e4
  • Geometry Nodes: Rename "Subdivide Smooth" back to "Subdivision Surface" a41d3c0ebe, rBM7843
  • Geometry Nodes: Use consistent default for cylinder node 1cc427ce2b
  • Geometry Nodes: Move cone primtive to rest on its base by default dbe45073d2
  • Geometry Nodes: Make cone primitive 2m tall by default eb7a601e1b
  • D10730: Geometry Nodes: Greatly improve speed of some mesh primitives


Bug Fixes

  • Geometry Nodes: Refactor / fix point separate node 9b806c49d0
  • Add versioning code removed in 91561629cd0b 96abe8a3e8


Cleanup

  • BLI: Add location, rotation, scale constructor to float4x4 36deb8a48e
  • Cleanup: Remove commented code de6d6e171e
  • Cleanup: Don't use class method to override equality operator 2a06657eca


Review

  • [Requested changes] D10482: GPencil: New modules for Import and Export
  • [Requested changes] D10506: Point Distribute Volume
  • [Requested changes] D10345: Node Redesign: Dot Grid
  • [Requested changes] D10417: Geometry Nodes: Add all UV Smooth and Boundary Smooth options to subdivision node
  • [Accepted] D10526: Geometry Nodes: Add Attribute Clamp Node
  • [Commented] D9678: Bevel on curves does not create distorted geometry anymore
  • [Commented] D10755: Fix T86602: Redo Last Panel in the bottom left disappears on left click (regression)
  • [Committed] Af04606087 Update the deep grey theme preset
  • [Accepted] D10729: Documention for Attribute Remove node
  • [Accepted] D10660: Geometry Nodes: Expose crease attribute
  • [Accepted] D10726: Nodes: Fix crash after undo after recent multi-input-socket changes
  • [Accepted] D10741: UI: Rename Init to Initialize Face Sets in menu
  • [Accepted] D10725: Fix T86548: Sculpt: Mask by Color tool not working
  • [Accepted, committed] D10763: Fix T86701 : Geometry nodes Cube and UV Sphere mesh size
  • [Accepted, committed] D10595: Reset View (CurveProfile) function access for python


Tracker

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


Next Week

I have quite a bit of review piling up now: the grease pencil IO patch, line art documentation (which I'll probably only look at briefly for something like a "native speaker pass"), and others. Then I should really change back to the hover shortcuts for modifiers sooner rather than later, and there are a few UI bug fixes to get too as well.

On top of that there are some design discussions coming up that I'm dreading a bit since there's some disagreement about the answers. I'm trying to find the right balance of pushing back, but in some cases I just think it's important. Speaking of compromising, I'll remove the location and rotation control from the primitives as well.

Also I'll need to add the manual pages for the primitive nodes...

March 8 - March 14

This week I re-wrote the "normal" attribute, reverting the previous implementation which was a bit hacky and not properly thought-through. I also mostly finished the initial version of the mesh primitives and posted a patch for that.

I wrote down some design ideas for the attribute processor node, thought it seems we'll be heading in a different direction. I wasn't there on Friday when the latest design was presented.

I also wrote about some design disagreements for the "tools" task and the status bar for the spreadsheet editor. The need to do that comes partly from time zone differences, since it's harder to be involved in design discussions in real time. Sometimes that makes it feel like we're rushing with some design decisions.

Changes / Features

  • Geometry Nodes: Improve performance of point distribute node 84a4f2ae68
  • Geometry Nodes: Revert current normal attribute implementation 2966871a7a
  • Geometry Nodes: Add "normal" attribute for face normals ba3a0dc9ba
  • Geometry Nodes: Expose "shade smooth" as an attribute 0700441578
  • Geometry Nodes: Add Attribute interpolation for polygon domains 80f7f1070f
  • Geometry Nodes: Rename subdivision nodes 2e19509e60, rBM7808
  • UI: Clean up sub-panel for new boolean modifier options 745576b16e
  • Geometry Nodes: Add color to boolean implicit conversion 1e7b2d0bc6
  • Nodes: Move group input and output to a consistent menu location 2c216413d5
  • Nodes: Add distance float socket type 9f68f5c1e1
  • D10715: Geometry Nodes: Add initial mesh primitives
  • D10712: WIP: Geometry Nodes: Optimize transform node for meshes
  • D10714: Add location, rotation, scale constructor to float4x4


Bug Fixes

  • Fix geometry nodes implicit conversion to booleans reversed 8ab6450abb


Cleanup

  • Cleanup: Move geometry component implementations to separate files 9ce950daab, d25ab68cf4
  • Cleanup: Do not pass stack allocated string to MEM_callocN 996586860b
  • BLI: Add "is_zero" method to float2 and float3 types c23da7a5c9


Review

  • [Wrote alternate version, committed] D10624: Geometry Nodes: Add Attribute Convert node
  • [Requested changes] D10460: Geometry Nodes: Switch Node
  • [Requested changes] D10526: Geometry Nodes: Add Attribute Clamp Node
  • [Requested changes] D10506: Point Distribute Volume
  • [Accepted] D10566: Spreadsheet: New spreadsheet editor (MVP).
  • [Accepted] D10681: Spreadsheet: Expose more domains and point cloud data.
  • [Accepted] D10701: Spreadsheet: Support showing data from original/unevaluated object.
  • [Accepted] D10556: Manual: Add Page for Attribute Proximity (Geometry) Node
  • [Accepted] D10645: Spreadsheet: Add boilerplate code for new editor type.
  • [Commented, accepted] D10689: Nodes: Fix drag link from output to already linked Multi-Input Socket
  • [Requested changes] D10417: Geometry Nodes: Add all UV Smooth and Boundary Smooth options to subdivision node
  • [Accepted] D10674: Fix (unreported) geometry node attribute search not working in the Properties Editor
  • [Requested changes] D9678: Bevel on curves does not create distorted geometry anymore
  • [Requested changes] D10622: Nodes: Add Refract function to Vector Maths nodes
  • [Requested changes] D10585: Geometry Nodes: Add shader Color Mix node


Tracker

  • Investigated: 5
  • Archived: 3
  • Resolved: 2


Next Week

Next week I expect an initial rush to get some changes into 2.93 before Bcon2, then I'll focus on working on some of the other things we planned for this sprint, like some of the prototypes we wanted to look into. I'd really like to progress on the "modifiers to nodes" design write-up I wanted to do too.

March 1 - March 7

This week I worked on attribute search for geometry nodes, exposing normals as an attribute, a design document for supporting curves in geometry nodes (T86243), and updating miscellaneous work-in-progress patches. I'm really happy to have the curve support design document mostly finished, I think it turned out well.

I also reviewed a patch for improved breadcrumbs in the node editor, but when I thought it was ready we received some feedback that it shouldn't be committed. The headless status of the UI module means it's not very clear what happens next there.


Changes / Features

  • Geometry Nodes: Attribute search drop-down 85421c4fab
  • Geometry Nodes: Expose vertex normals as an attribute f117ea2624
  • UI: Allow translation for node error messages f53221bff7
  • UI: Correct output attribute name in proximity node f4a9883294
  • Geometry Nodes: Allow clearing an attribute text field dd43a37016
  • Geometry Nodes: Sort attribute search items when menu opens becc36cce5
  • UI: Expose an "is first search" boolean to search button callbacks 1a8aee0a7c
  • UI: Remove extra blank space for decorators in FCurve modifiers e4a55b46c4
  • D10596: Geometry Nodes: Use read-only instances in point distribute node
  • D10619: WIP: Curve Profile Presets
  • D10623: Geometry Nodes: Add domain and data type to attribute search (WIP)


Bug Fixes

  • Fix Node UI Storage Threading Issues 5a3b7c5329
  • UI: Rename search button variable a344f20346
  • Fix crash when dragging nodes 4dd1068a57
  • Fix crash with pinned geometry node tree with no active object f882bee431


Cleanup


Review

  • [Requested changes] D10482: GPencil: New modules for Import and Export
  • [Requested changes] D10566: Spreadsheet: New spreadsheet editor.
  • [Accepted] D10413: Nodes: Breadcrumbs for node editor
  • [Closed] D10573: Geometry Nodes: Point Array Node
  • [Requested changes] D10506: Point Distribute Volume
  • [Accepted] D10620: Refactor derived node tree.
  • [Requested changes, committed] D10418: Fix: Fixes Bug with Multi Input Sockets picking wrong link if no link is selected
  • [Accepted, committed] D10551: UI Cleanup: "Draw" to "Display"
  • [Accepted, committed] D10561: Reset View (CurveMapping) function access for python
  • [Accepted] D10634: UI: UVProject modifier: clarify aspect & scale are only for camera projectors
  • [Commented] D10591: Add Root operation to math node (all Editors)


Tracker

  • Investigated: 9
  • Confirmed: 1
  • Invalid: 2
  • Resolved: 2


Next Week

Next week the next sprint will start, so I'm not exactly sure what I'll be working on. There are a fair amount of new features to wrap up for 2.93 though, I assume that may be the focus.

February 22 - February 28

This week I mainly worked on attribute search and code review. The initial version of the search is just waiting on code review now. I did a code review session with Julian on Wednesday, and after that I was able to commit some old patches, which was nice. I still have to work on actually finishing projects I start!

The available attributes are stored based on the evaluation, and a list is displayed as hints. Next will be adding domain and data type information

I also spent some extra time working on initial mesh primitive nodes, mostly for fun, but they'll be really nice to have in soon I think.

Just three so far, but others should be pretty quick

Changes / Features

  • Improve the attribute reference page (for 2.92 and 2.93) rBM7785
  • UI: Fix icon width and padding in search menus 6daff9a08e
  • D10519: Geometry Nodes: Attribute Search Buttons
  • D10527: UI: Add an option to search buttons to allow any string input
  • D10528: UI: Expose an "is first search" boolean to search button callbacks
  • D10538: Geometry Nodes: Expose "shade smooth" as an attribute
  • D10541: Geometry Nodes: Expose vertex normals as an attribute


Bug Fixes

  • UI: Reorder mesh merge operator types for consistent shortcuts bc0e121bce
  • Fix T84953: Incorrect tooltip for dragging collections 81e795e7f0
  • Fix T85963: Combine and separate XYZ nodes don't work on instances 17260c9b9a
  • Fix T85979: Attribute missing warning with empty geometry 626a8e0f10


Cleanup


Review

  • [Requested changes] D10413: Nodes: Breadcrumbs for node editor
  • [Accepted, committed] D10415: Geometry Nodes: add Location output to Attribute Proximity node
  • [Requested changes] D10459: Geometry Nodes: Add alternative distribution options to the Attribute Randomize node
  • [Requested changes] D10526: Geometry Nodes: Add Attribute Clamp Node
  • [Commented] D10503: VSE UI: rework "Frame Overlay" panel to make it more user friendly
  • [Accepted] D10511: Geometry Nodes: Improve accessing attribute meta data.
  • [Accepted] D10514: Add documentation for Attribute Combine and Separate XYZ nodes.
  • [Commented] D10342: Nodes Redesign: Colored Links
  • [Requested changes] D10345: Node Redesign: Dot Grid
  • [Accepted] D10215: Fix T83398: Fade inactive geometry overlay option not visible depending on the mode
  • [Accepted] D10537: UI - Remove 'Enable physics for:' text
  • [Accepted] D10551: UI Cleanup: "Draw" to "Display"
  • [Accepted, committed] D10266: Fix T84796: Particle tools properties displayed for select/cursor tool
  • [Accepted, committed] D10080: Nodes: Make Virtual Sockets better recognizable.
  • [Accepted, committed] D9924: Cleanup: Fixes for labels and descriptions in various places
  • [Accepted, committed] D9910: Cleanup: use of the term "Metaballs"
  • [Accepted, committed] D9817: Cleanup: "Dupli" to "Instance"


Tracker

  • Investigated: 6
  • Confirmed: 2
  • Invalid: 1


Next Week

Next week I'll continue work on what we have planned for the geometry nodes sprint. Earlier in the week I'll hope to commit the initial version of the attribute search and review the spreadsheet editor code. And again, I have way too many open patches and ongoing projects, I need to finish some of them.

February 15 - February 21

This week I focused on a few geometry nodes features. First is error messages, which also includes laying the groundwork for more information to be stored for the UI during the node tree evaluation, like a list of attribute names, which I worked on later in the week (no visual results yet though).

No attribute with name "no_name".

I worked on some other features: adding mesh primitives, speeding up some nodes with read-only access to instances, and adding the material_index attribute. I wrote more about the "Attribute Processor" design, and worked on design for converting existing modifiers into nodes.

The built-in material_index attribute uses the polygon domain and the integer data type

On Friday I was able to commit some UI patches that had been around for a while, which was really nice! I also reviewed and committed some geometry nodes patches.


Changes / Features

  • Geometry Nodes: Node error messages 461d4fc1aa
  • UI: FModifier layout updates, drag and drop 1f5647c07d
  • Geometry Nodes: Expose material index attribute 53bf04f284
  • Geometry Nodes: Support integer type in the Attribute Fill Node 2da0f3e523
  • UI: Use property split in geometry node properties ee1c674775
  • UI: Expand enum in collection info node 4604350eef
  • UI: Use title case for label 2441886c58
  • D10420: Geometry Nodes: Bounding Box Node


Bug Fixes

  • Fix T83027: Incorrect outliner collection state after operator 34580748dc
  • Fix T85664: 3D Viewport issues with curve poly splines ab484ff22f
  • Fix T85716: "Applied Modifier:" report hides more important message 47a269745e
  • Fix: Attribute randomize node broken for integer attributes f29a1d87e8


Cleanup


Review

  • [Requested changes] D10413: Nodes: Breadcrumbs for node editor
  • [Requested changes] D10415: Geometry Nodes: add Location output to Attribute Proximity node
  • [Requested changes] D10417: Geometry Nodes: Add all UV Smooth and Boundary Smooth options to subdivision node
  • [Commented] D10355: Geometry Nodes: Add Invert option to the Transform node
  • [Accepted, committed] D10316: Geometry Nodes: Add string input node (rBM7770)
  • [Accepted, committed] D10409: Geometry Nodes: Add Simple Subdivision node
  • [Accepted, committed] D10467: Fix T85410: Quick liquid domain alignment
  • [Commented] D10459: Geometry Nodes: Add distribution option to the Attribute Randomize node
  • [Accepted] D10432: Geometry Nodes: Realize instances before passing geometry to mesh modifier.
  • [Accepted] D10451: Geometry Nodes: Convert point cloud to mesh vertices for other modifiers.
  • [Accepted] D10461: Geometry Nodes: Use corner domain for density map in Point Distribute node.
  • [Accepted] D10477: Geometry Nodes: Support float2 attribute in Python api and for rendering.


Tracker

  • Investigated: 5
  • Duplicate: 1
  • Confirmed: 2
  • Invalid: 2


Next Week

Next week I'll work with Jacques to finish the code for displaying a list of attribute name hints in the UI, and hopefully finish some of the other assorted geometry nodes tasks I've been working on.


February 8 - February 14

We spent most of the week on geometry nodes design, like we planned. Though we didn't have enough time to cover all of the topics we wanted to (simulation in particular we didn't really get to, though Jacques did share some thoughts with me). I wrote a document discussing how to convert existing modifiers to nodes, and worked on a mock-up to address some feedback from Simon.

Attributes are a powerful concept, but node trees with the "Attribute" nodes can be quite linear. Nodes in this "frame" would run for every element of the selected domain, affecting every value in the output attributes on the right.
A bevel node can be a bit simpler-- all of the "selection" parts can be moved to other more generic nodes. The custom profile could also be a regular curve geometry.

With the rest of the time not spent on design, I worked on making instances work properly in the node tree, and supporting attribute domains besides "points" in nodes. I also spent a fair amount of time finishing up review for the multi-socket join node, where I ended up adjusting a few parts of the patch.


Changes / Features

  • Geometry Nodes: Make instances real on-demand a4baedea91
  • Geometry Nodes: Add dependency relation for collection objects 5393054a5d
  • Geometry Nodes: Allow attribute nodes to use different domains d7c2c889a6
  • Geometry Nodes: Add operation setting to attribute randomize node d4fd06d6ce
  • D10393: WIP: Geometry Nodes: Material Index attribute, polygon domain interpolation
  • D10420: WIP: Geometry Nodes: Bounding Box Node


Bug Fixes

  • Fix Geometry Nodes: Broken built-in attribute exists check 328a8c68b7
  • Fix errors in point separate page rBM7750
  • Fix T85555: Geometry Nodes: Attribute Vector Math Wrap is broken 314525b8cf
  • Fix ASAN report when creating attribute math node b0e483c373
  • Fix T85633: Misspelling of "neighborhood" in description 7a608f88a7


Cleanup

  • Cleanup: Simplify three functions in displist.c cdb3cbd644
  • Cleanup: Register node property layout callbacks in files cfa48c84d0
  • Cleanup: Decrease scope of RNA enum definitions dd2ff266ac
  • Cleanup: Simplify geometry nodes attribute API usage 0bc281a6dd
  • Cleanup: Remove unecessary padding from small DNA structs d72595a594
  • Cleanup: Remove unused variable 6a5d17bfb2
  • Add additional object to curve_to_mesh test file 85f6674241, rBL62561


Review

  • [Requested changes, committed] D10181: UI: Multi-input node socket spacing and interaction
  • [Accepted] D10341: Geometry Nodes: Refactor internal attribute access architecture.
  • [Accepted] D10305: Geometry Nodes: Initial attribute interpolation between domains.
  • [Requested changes, accepted] D10344: Geometry Nodes: add Attribute Map Range
  • [Accepted] D10308: Geometry Nodes: Add Combine and Separate XYZ nodes for attributes
  • [Commented] D9599: Preserve Layer Collections During Sync
  • [Requested changes] D10316: Added New String Input Node
  • [Accepted] D10387: RNA: Support bool attribute in RNA.
  • [Accepted] D9678: Bevel on curves does not create distorted geometry anymore
  • [Committed] D10378: Fix: T85493 move FLT_MAX fill outside of parallel_for
  • [Committed] D10411: Cleanup: Fix clang compile warning


Tracker

  • Investigated: 11
  • Duplicate: 4
  • Confirmed: 3
  • Invalid: 2
  • Resolved: 3


Next Week

Next week we'll be focusing on polishing the attribute workflow. So of course the first order of business is finally finishing the node error messages, because the socket inspection relies on that concept. Then, I'd also be interested in looking into the attribute spreadsheet idea.

February 1 - February 7

This week I worked on a few things:

  • Implementing and implementing an API to support reading instances in geometry nodes and making them real when necessary. This project has been really enjoyable, and quite important for the project I think. Though the largest user-visible change will probably be "the collection info node works" for now.
  • Node error messages. Unfortunately this is still in progress, but I know the next steps and they should be relatively quick.
  • Code and design review for geometry nodes and the UI module
The idea is that the fact that the collection geometry is an "instance" is almost completely invisible to the user-- they are made real automatically when the geometry needs to be written to.

Changes / Features

  • D10327: WIP: Geometry Nodes: Instances API, support in point distribute node
  • D10290: WIP: Geometry Nodes: Node error messages


Bug Fixes

  • Fix T85155: Vertex groups from object don't transfer to next nodes modifier a1c7cab06c
  • Fix build error on windows after recent commit b3f9895ab0


Cleanup

  • Blenkernel: Move node.c to C++ 198ff4703f
  • Cleanup: Alphabetize function order eb7d9e2a1b
  • D10352: Cleanup: Register node property layout callbacks in files
  • D10289: WIP: Cleanup: Use Map instead of GHash for node type hashes
  • D10335: Cleanup: Remove unecessary padding from small DNA structs


Review

  • [Updated, committed] D10154: Geometry Nodes: add Attribute Proximity node
  • [Requested changes] D10181: UI: Multi-input node socket spacing and interaction
  • [Requested changes] D10308: Geometry Nodes: Add Combine and Separate XYZ nodes for attributes
  • [Accepted, committed] D10067: Geometry Nodes: Multi Input Sockets
  • [Requested changes] D10069: Geometry Nodes: Changes Join Geometry Node to use Multi Input Sockets
  • [Commented, Accepted] D10243: Geometry Nodes: Add Volume to Mesh Node
  • [Commented] D9599: Preserve Layer Collections During Sync
  • [Commented] D10057: VSE: Draw function for add strip operators
  • [Commented] D10316: Added New String Input Node
  • [Commented] D10347: cleanup: fix source typos (API breakage)
  • [Accepted] D10302: Geometry Nodes: New Is Viewport node.


Tracker

  • Reported T85409: Quick Liquid has no effect until playback loops back on the start frame
  • Reported T85410: Rotation of new object created by "Quick Liquid" affected by user preference
  • Investigated: 11
  • Confirmed: 3
  • Invalid: 3


Next Week

This coming week we're going to try to work on "Everything Nodes Design", which should be quite interesting. I'm not quite sure how it's going to work though, since most people on the team are only working on the project for a day or two a week. I'll have to work on other stuff for much of the time anyway, because of the time zone offset. Hopefully I can wrap up a lot of my existing patches.

January 25 - January 31

This wasn't the most productive bug week, a few of my fixes are still in review, but I just didn't get to very many bugs. It's a bit hard to say in retrospect, but probably for a few reasons: time spent organizing the workboard (which can sometimes result in catching up on old design tasks), time spent working on design for geometry nodes, time spent on code cleanup, time spend on code review, and the difficulty of finding a good bug to work on.

Actually, when I look back on that list, the week doesn't seem unproductive.

Experimenting with a bounding box node, for a "bounding box boolean" node group I want to make sometime.

Changes / Features

  • Geometry Nodes: Support all operations in the "Attribute Math" node 1c4b0c47dd
  • Geometry Nodes: Use highest complexity attribute in join node 89484e9754
  • Geometry Nodes: Add attribute reference page to manual rBM7667
  • UI: Fix ugly alignment of timeline popover buttons a6016bf5af
  • Geometry Nodes: Add float2 to attribute complexity map e9e054b987
  • D10269: Geometry Nodes: Upgrade Attribute Randomize node with operation


Bug Fixes

  • Fix: Unable to animate nodes modifier exposed properties aa030d3459
  • UI: Fix incorrect RNA percentage property definitions c71a8e8376
  • Fix T83988: Active modifier outline uses search theme color 71cb6923f5
  • RNA: Add warning to float percentage property definition 4c4ccdfa36
  • Fix build error d9a63d40e2
  • Fix incorrect RNA enum default e285765a6b
  • D10240: Fix T83027: Incorrect outliner collection state after operator
  • D10256: Fix T85155: Vertex groups from object don't transfer to next nodes modifier
  • D10203: Fix T84953: Incorrect tooltip for dragging collections
  • D10241: Geometry Nodes: Add "Group Input" and "Group Output" nodes to menu


Cleanup


Review

  • [Requested changes] D10154: Geometry Nodes: add Attribute Proximity node
  • [Requested changes] D10181: Geometry Nodes: Socket Growing and Link Spaceing
  • [Accepted] D10194: Fix T84935: Boolean custom data layers not saved correctly.
  • [Accepted] D10193: Fix T84907: Incorrect dirty mask after geometry join node.
  • [Requested changes] D9849: fix preserving user selected exclude-state of nested collections.
  • [Accepted] D10242: Fix for T84038: Improved Report Warnings
  • [Accepted] D9817: Cleanup: "Dupli" to "Instance"
  • [Accepted] D10217: UI: Current Frame Marker Cleanup
  • [Accepted] D10080: Nodes: Make Virtual Sockets better recognizable.
  • [Accepted] D9855: UI: Allow node editor wires to have alpha
  • [Accepted] D9856: UI: Update community themes for node wire alpha


Tracker

  • Reported T85124: Undo assert changing property in redo panel
  • Investigated: 7
  • Invalid: 1


Next Week

Next week is the first sprint of the second phase of the geometry nodes project. That's probably going to involve lots of little things with attributes and instances. Personally I'm looking forward to creating a proper API to retrieve instanced geometry, and to cleaning up the attribute API so that using it is a bit more intuitive.


January 18 - January 24

This was a relatively less productive week in terms of features and fixes finished and committed. I spent quite a while working on node error messages, which ended up being more complicated than I expected. I didn't quite get to the point of posting a patch for that this week, but it's basically finished.

I spent the remainder of my time doing code review and working on a few bug fixes for geometry nodes. I also spent a while looking into the attribute system, seeing if I could expose the normal and material_index attributes. The latter lead to me looking into attribute domain conversion, which is an interesting problem but sort of a big one!

The "normal" attribute automatically interpolated by the "Point Distribute" node

Changes / Features

  • D10180: Geometry Nodes: Expose normals as an attribute
  • D10142: Geometry Nodes: Randomize random attribute seed socket


Bug Fixes

  • Fix: Mouse presses in some areas do not set active modifier e845467d93
  • D10175: Fix animating nodes modifier properties doesn't work
  • Fix "use after scope" reported by ASAN bd4ed5ca9a


Cleanup

  • Cleanup: Store runtime space node variables in a separate struct 6290091bac
  • UI Code Quality: Use "params" struct for area and region callbacks 09c7c63890
  • Cleanup: Use const arguments, explicit type da6dea5701
  • Cleanup: Clang tidy else after return bfa083f873, 4b4aec2884


Review

  • [Requested changes] D10069: Geometry Nodes: Changes Join Geometry Node to use Multi Input Sockets
  • [Commented, accepted] D10121: Geometry Nodes: New Sample Texture node.
  • [Accepted] D10124: Geometry Nodes - Object Info: Transformation Space
  • [Accepted] D10121: Geometry Nodes: New Sample Texture node.
  • [Commented] D10154: Geometry Nodes: add Attribute Proximity node
  • [Commented] D10169: Geometry Nodes: New Points to Volume node.
  • [Commented] D10144: Object Context Menu tweaks for consistency
  • [Commented] D10148: Refactor modifier copying code.
  • [Commented] D10074: VSE: Expose existing Transform Expand as a Select Tool toggle button
  • [Requested changes] D10107: Fix T846224: Extra user for geometry nodes data-blocks
  • [Requested changes] D9964: Geometry Nodes: Plane Primitive Node
  • [Commented] D10131: Fix T84600: prevent bone groups operators on proxies/overrides
  • [Commented] D10184: Better categorization in Grease Pencil Layers sub-panels


Tracker

  • Investigated: 5
  • Invalid: 2


Next Week

A bug fixing week. I'd like to look into UI and geometry nodes bugs, and hopefully finish up some of my previous bug fix patches.

January 11 - January 17

I spent the first half of the week somewhat frantically finishing up polishing changes to geometry nodes for 2.92. The team was only back together this week after holidays, so that left a fair amount of changes we wanted to make for 2.92 in a short amount of time. I'm relatively happy with how it's turning out. There are still some pretty significant usability challenges though.

The first of those is that there are no error messages when nodes don't work for some reason, which I spent some time on later in the week. Other than that I spent time on code review for geometry nodes and UI changes, worked on bug fixes, and participated in meetings, including an extra UI meeting this week.


Changes / Features

  • Geometry Nodes: Attribute Vector Math Node ecdbd83a8d, rBM7565
  • Geometry Nodes: Output the most complex attribute data type 719bea0d6d
  • Geometry Nodes Point Distribution: Align points to face normals 5bd822dc46
  • Geometry Nodes: Enable exposing object and collection sockets 89f490932f
  • Geometry Nodes: Add "Point Translate" and "Point Scale" nodes 1f4c1c5fc7, rBM7586
  • Bevel Modifier: Use angle limit method by default 6b5e4ad589
  • UI: Update geometry icon files b9b59aa6de
  • UI: Clarify the property name of "F-Curve Visibility" b9e02eace6
  • Geometry Nodes documentation tweaks rBM7566, rBM7602
  • Geometry Nodes: Rename boolean input sockets 80578a9d54
  • Geometry Nodes: Rename "Rotate Points" to "Point Rotate" 8df0268e2b
  • UI: Use capital letters for X Y and Z axes 7d749720ad
  • UI: Draw socket type colors on the left in group sockets list b75552ebbb
  • Bump file subversion after recent node versioning commit 9dab489d51


Bug Fixes

  • Fix T84686: Node vector socket default values not animate-able cf9709fd1e
  • Fix "Make Instances Real" to work with nodes modifier instances 6c840a2cb9, rBM7592
  • Geometry Nodes: Use a default value in the point scale node 0b0e45252b


Cleanup

  • Cleanup: Add const in various places in node code 237e27e161
  • Cleanup: Fix incorrect function name bf5d45fd99
  • Cleanup: Remove unecessary namespace prefixes ad4202a14f


Review

  • [Requested changes] D10067: Geometry Nodes: Multi Input Sockets
  • [Requested changes] D9964: Geometry Nodes: Plane Primitive Node
  • [Requested changes] D10107: Fix T846224: Extra user for geometry nodes data-blocks
  • [Requested changes, committed] D10123: Fix T84713: Implement the update function for geometry nodes
  • [Committed] D10012: UI: Icon for Multires Displacement Smear Tool
  • [Commented] D10074: VSE: Expose existing Transform Expand as a Select Tool toggle button.
  • [Accepted] D10081: Geometry Nodes: New Align Rotation to Vector node.
  • [Accepted] D10114: Geometry Nodes: Transfer corner and point attributes in Point Distribute node.
  • [Requested changes] D9964: Geometry Nodes: Plane Primitive Node
  • [Requested changes] D10107: Fix T846224: Extra user for geometry nodes data-blocks


Tracker

  • Reported T84639: Scale attribute has no default value after distribution
  • Reported T84624: Geometry Nodes: Node group data-block has phantom user
  • Investigated: 11
  • Invalid: 6
  • Needs Information: 1
  • Resolved: 5
  • Confirmed: 2


Next Week

The second week of the sprint! Hopefully I can get the error messages finished up. I'm hoping to look into adding another data type to the node tree too, and I'm sure other things will come up.

January 3 - January 10

This was mostly a regular bug fixing week. I fixed some UI bugs and some geometry nodes bugs. Lack of communication and code review means it's a bit harder to make solid progress on bugs than it could be though. For example, I still have some open patches for bug fixes from weeks and months ago.

I spent some time advising contributors making patches for the UI and geometry nodes. It's been very satisfying to see their progress. I made a task for a UI inconsistency that the UI team discussed, T84535.

I also spent a bit of time cleaning up old patches for the UI module. Still at 218 open patches though.


Changes / Features

  • UI: Improve node group input / output list interface 1d3b92bdea
  • Corrections and clarifications to geometry nodes documentation rBM7543
  • Geometry Nodes: Don't start with empty group nodes selected 69a22a70ac
  • UI: Use the 3D cursor icon for the RNA struct 6ea01dc509
  • Geometry Nodes: Gray out "New" button when curve object is active 7fd19c20e0
  • Keymap: Enable repeat for "Make Edge/Face" operator 9c07454816
  • D10059: Geometry Nodes: Make instances real when applying the modifier
  • D10042: Change operators to add new "group" collections to the scene
  • D10054: Geometry Nodes: New duplicate node group and assign operator
  • D10056: Geometry Nodes: Enable Exposing object and collection sockets


Bug Fixes

  • UI: Fix typo in operator description ec90dda318
  • Fix T84382: Geometry Nodes: Vertex group attributes are removed 102eff0bd4
  • Fix T83868: Disabled or inactive list items are not grayed out 61f1faac3f
  • Fix T78681: "Add Primitive" icons are cropped in tool header c20e482714, rBL62537
  • Fix T84326: No ID for geometry nodes instances after scattering 3db975f30d
  • Fix T78017: Broken layout in "View Lock" panel with armature 5a6dfb7571
  • Fix T84517: Two geometry node trees added with "New" button 3c1fcec652
  • D10008: UI: Reorder mesh merge operator types for consistent shortcuts
  • D10025: Fix T84455: Circle select tool cursor draws in overlapping regions
  • D10051: Fix T84417: Common noisy terminal messages when entering numbers
  • D10027: UI: Clarify the property name of "F-Curve Visibility"


Cleanup


Review

  • [Requested changes] D9949: Geometry Nodes: add method for Poisson Disk sampling on mesh
  • [Commented] D9994: File Browser: select files and directories after renaming
  • [Accepted] D9567: Gizmos: Keep navigation gizmo visible during modals
  • [Commented] D9987: Fix T84367: Fix crash when showing invalid/legacy constraints
  • [Committed] D9989: Fix T84183: Dark area in the bevel custom profile widget
  • [Committed] D9947: Fix T83094: Alternate rows in the Sequencer are green (macOS)
  • [Commented] D10012: UI: Icons for Sculpt Displacement tools
  • [Commented] D9937: Fix NURBS Repeat for Extrude doesn't repeat extrusion.
  • [Requested changes] D9948: Add fill to Grease Pencil Topbar Radius sliders
  • [Committed] D9867: UI: Fix various issues with UI text
  • [Commented] D9621: Configurable rotation angle increments


Tracker

  • Reported T84530: Failing assert when choosing custom icon for brush
  • Investigated: 23
  • Invalid: 4
  • Duplicate: 2
  • Resolved: 2
  • Known Issue: 2
  • Confirmed: 3


Next Week

Next week may be the first "normal" week in quite a while. As far as I know, we're back to work on geometry nodes. Personally I'm excited to fix some problems with attributes and tackle more "edit mode like" features. I'll also spend time on code review and finishing up ongoing projects (really trying not to start new ones!)