User:HooglyBoogly/Reports/2021/

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