User:HooglyBoogly/Reports/2021/

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!)