User:Filedescriptor/Reports/2023
Weekly Reports 2023
February 06 - February 10 (week 1)
I tested and reviewed some critical fixes by Amélie Fondevilla:
- D17214 Fix T104371: Grease Pencil merge down layer duplicates wrong frame
- dc9f7fe64f1 Fix #104514: GPencil merge down layer misses some frames
This week I continued development of the (hair) curves edit mode. Although this seems very unrelated to grease pencil, curves make use of the CurvesGeometry
structure which will be the core component for the upcoming GP 3.0 project. This work allows me to get familiar with the structure as well as the C++ patterns that are used. I made sure to also implement these features in a way that the code can be used by other objects that use CurvesGeometry
. This means that GP 3.0 can use this code as well.
- f01bf82480c Curves: Add select pick operator
- 3bed78ff591 Curves: Add box selection
- 6f8c4419503 Curves: Add select linked
- 7351f533e07 Curves: Add lasso and circle select
- PR #104620 Curves: Add support for proportional editing
- PR #104626 Curves: Add select more/less
Next to the development work, I also planned, coordinated, and summarized some meetings. I also talked to Clément Foucault and Shen Ciao about grease pencil rendering.
- Grease Pencil Module Meeting
- Grease Pencil Developer Meeting
- Meeting about reviewing the summary of the user feedback form.
I also began working on a principles documents for the upcoming grease pencil 3.0 project.
February 13 - February 17 (week 2)
This week I continued the work on the curves edit mode. With the addition of the toolbar and some fixes regarding the overlay drawing, it was ready to land for 3.5 and is now out of experimental.
- 55843cd64b2 Curves: Add select more/less
- 4fbc9c42e51 Curves: Add transform tools to toolbar
- 715acf758cc Curves: Use deformed points in edit mode overlay
- d4f7f1dfe43 Curves: Fix memory leak in view3d_select
- 7dbf2e2e959 Curves: Draw point overlay only in point selection mode
- 8d20db05949 Curves: Fix curve segment selection
I also had some meetings regarding the GP 3.0 project and started to work on a technical outline of the current plan that I will present to the team in Amsterdam in the next week.
February 20 - February 24 (week 3)
This week I mostly focused on fixing bugs in the new hair curves edit mode.
- 33cbd063d36 Curves: Fix proportional editing not working
- 8a135a9a5f2 Curves: Add cursor snapping support
- 2fef2f707a5 Fix: Unable pick select first point/curve in Curves
- 061d1916771 Fix #105043: Add shortcut for proportional editing
- 2e7bd1dfb1b Fix #105044: Crash when rotating hair curves
- 059ba28b299 Fix #105026: Texture space operators in transform menu
- PR #105184 Fix #105109: Pick selection with multi object edit
Next to patching bugs I began working on the Duplicate
operator.
I also organized the Grease Pencil Module meeting and finished the technical outline of the GP 3.0 project. This plan will be presented to the team in Amsterdam next week.
February 27 - March 03 (week 4)
This week, I was in Amsterdam at Blender and mostly worked on the technical design of Grease Pencil 3.0. After multiple meetings throughout the week with Bastien, Brecht, Dalai, Francesco, Julien, Sergey, and more, this is the design that was approved:
I also planned the next 5 weeks or so of development with some target milestones. The goal is to confirm the performance improvements that we expect from this new design.
I also committed some fixes to curves edit mode:
- 00ca7c5221e Fix #105109: Pick selection with multi object edit
- e6af81c5367 Fix #105028: No update exiting curves edit mode
March 06 - March 10 (week 5)
Due to the strike in France this week, I ended up spending Wednesday and Thursday in Amsterdam. I was also sick on Friday.
I began the work on the Grease Pencil 3.0 project this week by doing some refactoring:
- 53bb713eda7 Refactor: Rename
OB_GPENCIL
andID_GD
- PR #105597 Refactor: Rename grease pencil files to legacy
I created a local branch for adding the new data-block and object called grease-pencil-v3
. This branch might get pushed to the main repository for the initial development.
I also organized the module meeting as well as a meeting specifically on the future of LineArt:
March 13 - March 17 (week 6)
I began the week with some more refactoring.
- 2788fa915be Refactor: CurvesGeometry read/write function
- df0c2693b6b Refactor: Rename grease pencil files to legacy
Then I spent the rest of the week working on the grease-pencil-v3
branch.
Here is a summary of what I worked on:
- DNA for the new data-block (
DNA_grease_pencil_types.h
). There were a couple of decisions made here.- the map structure for the frames in a layer is stored in DNA as an array of keys and an array of values. The map will then be created at runtime.
- the layer tree is also created at runtime and stored in DNA as an array of tree nodes (pre-order serialization of the N-tree).
- Classes for the layer tree:
- There is now a
TreeNode
class that is the base class for theLayer
andLayerGroup
class. TheTreeNode
is used to store the tree data (every node owns the data of its children) and also for easy iteration and searching through the tree. TheLayer
class will give access to the frames data. TheLayerGroup
class has an API for adding layers and creating groups.
- There is now a
- Conversion between a
bGPDframe
and aGreasePencilDrawing
:- As of right now it supports the following attributes on the point domain:
positions
,radius
,opacity
,.selection
(UI attribute). And thecyclic
andmaterial_index
attributes on the curve domain. - I also began working on converting the layers, this is still WIP.
- As of right now it supports the following attributes on the point domain:
- New grease pencil data-block and object.
- Next to adding the data-block and object (still WIP), I made it possible to convert between the old and new object with the
object_convert
operator (WIP).
- Next to adding the data-block and object (still WIP), I made it possible to convert between the old and new object with the
- Tests
- I added a test file. Right now this is just testing the
TreeNode
,Layer
andLayerGroup
classes. More individual tests need to be added.
- I added a test file. Right now this is just testing the
March 20 - March 24 (week 7)
This week I spent most of my time setting up the rendering code for the new grease pencil data-block.
- Continued working on the blend read and write. This seems to be fully functional now.
- Fix the copying of the layer tree.
- Copy materials when converting to the new object type.
- Merged in the
gpencil-next
render engine. Use this render engine by default with the new object type. - Implement the initial draw caches for the new data type.