利用者:Aligorith/DevFund-2017

提供: wiki
移動先: 案内検索

DevFund 2017 - Weekly Logs

Week 6 - (30 Oct - 3 Nov)

This week was mostly spent refactoring the GP branch to get it into shape for production ASAP. As the Hero open-movie production is now underway (AFAIK, work on animating the shots is now in progress), it is getting important to get the branch ready for merge/merged so that production can take place using the Blender 2.8 branch proper.

Grease Pencil:
As per last week's update, I've been working on implementing the proposed fixes (mentioned on the patch review), and fixing/refactoring problematic code as I came across it. Although I initially planned to implement the modifier fixes first before making the ob.data changes, it turned out that it was easier to do the latter first, as a lot of stuff (e.g. depsgraph support) almost came for free once that happened (or rather, once the appropriate standard bits and pieces were plugged in)

The (short-ish) list of important changes made:

  • GP Objects now store their data in ob.data instead of ob.grease_pencil, to bring them more in line with other object types.
    • Note: This ended up taking longer than originally expected, as it turned out there were quite a few "standard object type" support things missing in various places that had to be found and implemented. (Emphasis here is on the "needed to be found" part, as it wasn't always obvious in a few cases what was missing)
  • Refactored the way that GP Modifiers were implemented
    • Added callbacks for GP modifiers into ModifierTypeInfo
    • Moved the implementation for each modifier into its own file
    • Cleaned up the implementation of each modifier to resolve various problems (e.g. G.main access, evil_C access, bugs, re-implementation of existing lib functions/data-structures/math/etc.)
    • Reimplemented and merged the implementations for the Array/Duplication modifiers. The two modifiers were effectively duplicating functionality (it's kindof ironic even) but with different implementations and subtle bugs between them.
  • Cleaned up most of the calls used to ensure GP objects updated the draw cache correctly
    • Removed all uses of the BKE_gpencil_batch_cache_alldirty() function (which used G.main) in favour of the version that takes a Main *bmain arg, OR eliminating these althogether.
    • Removed many of the superfluous BKE_gpencil_batch_cache_dirty() or alldirty() variants in various places - They should only be reintroduced if/when not having them causes a legitimate problem after depsgraph fixes were performed.
    • Made Lattice modifier make proper use of the Depsgraph for triggering updates, instead of hacking in support in various places
    • Fixed various update bugs for modifier properties (no refresh) and dopesheet layer toggles (crash)
    • Note: Most problems here went away once I implemented Depsgraph support for GP objects, and removed all the old calls
  • Implemented missing support for various things
    • Outliner now displays icons for all GP Modifiers
    • Outliner indicates active layer (instead of displaying them all with the same useless dot icon)
    • Apply Transforms for Objects
  • General code refactoring to fix duplicate definitions, style, etc.


General Dev/Tracker:

  • Fixed: 1, Closed: 2, Triaged/Investigated: 1
  • Reviewed and approved D2884 and D2796

Week 5 - (24 Oct - 27 Oct)

Short week - Monday was a national holiday here in NZ (Labour Day). Also had a nasty migrane that day, so didn't get much done.

General Dev/Tracker:

  • Fixed: 2, Closed (Invalid/Support Requests): 6, Triaged: 5
  • Spent time reviewing D2884, D48988. Both should be ready for merging next week

Grease Pencil:

  • After spending a good chunk of time digging through both the standard modifier system, and the GP-branch drawing code and modifier system, I *finally* understood the full nature of what's going on here with GP Modifier + Depsgraph concerns raised in the code review ([1]). Basically, the GP branch just seems to be using various callbacks for the wrong purposes, leading to all the confusion we've been having. For further details, see my comment on the Diff Revision ([2]).
  • I then started work implementing these changes (during the week and over the weekend). Progress as of Sunday night:
    • Implemented proper depsgraph support for GPencil and GP modifiers
    • Changed all old code using ob->gpd to use ob->data instead. This turned out to take a lot more work than expected (e.g. finding all the places where ob->data handling is required but was missing). However, on the other hand, doing so has simplified all the code a lot, and has allowed removing a few hacks.
    • Removed last instances of BKE_gpencil_batch_cache_alldirty() (which uses G.main) in favor depsgraph/supplied-args.

Week 4 - (16 Oct - 20 Oct)

Most of this week was spent on code/patch review work.

General Dev/Tracker:

  • Reviewed D2783, and started reviewing D2884
  • Spent time looking into how we can represent different keyframe handle/interpolation types
  • Tracker - Fixed: 1, Investigated: 4, Closed: 4, Triaged: 2

Grease Pencil:

  • Prepared branch for merge/review - tidied up various todos (e.g. plan for how the version patching would be handled)
  • Uploaded patch for review ([D2889 | https://developer.blender.org/D2889])

Non-DevFund Week (9 Oct - 13 Oct)

This week I was busy with uni stuff (yay! I successfully defended my PhD thesis!)

Non-DevFund Week (2 Oct - 6 Oct)

This week I wasn't officially working for the devfund.

That said, I spent most of the week working on wrapping up some of the most pressing issues before the greasepencil-object branch could be merged:

  • Finished up the Palette Slots implementation
  • Fixed the slow compilation/gcc compile errors in the gpencil_add_monkey.c file, caused by having too many large arrays within a single function (there were ~35 of them, totalling around 150-180kb of code).

Week 3 - (25 Sep - 29-Sep)

General Dev/Tracker:

  • Fixed: 2, Closed: 6, Triaged/Investigated: 4
  • Patches Reviewed: 2
  • Unreported Bugs Fixed: 1 (ported over from GP branch)

Grease Pencil:
This week I worked on addressing the most critical issues identified in the review doc, and reviewing all aspects of the code, with the target of getting the branch ready for review & merged/stable by mid-October.

  • Fixed the problem where new GP datablocks were getting created each time you start drawing when the active object isn't a GP object
  • Fix long-standing bug where GP strokes are obscured when transforming in "local" mode
  • Reviewed the file IO code and fixed a number of bugs there (e.g. missing calls to datablock pointer relinking functions, make single user/scene full copy not working)
  • Code cleanup/reshuffling (e.g. moved Monkey primitive (with > 180 kb of code/defines) to its own file)
  • Started implementing "Palette Slots" system (equivalent to the Material Slots for standard objects) to make it easier to manage GP objects using multiple palettes.

Week 2 - (18 Sep - 22 Sep)

General Dev/Tracker:

  • Fixed: 2, Triaged: 10, Closed: 4, Investigated (Unresolved): 3 - Total: 19
  • Also spent time trying to figure out how to get the "Pose Propagate" operator working with NLA tweakmode


Grease Pencil:

  • Worked on a fix for the problem where new GP objects get created when starting to draw when the active object isn't a GP object. However, I ran into some difficulties setting the active object. More investigation needed.


Week 1 - (11 Sep - 15 Sep)

General Dev/Tracker

  • Reviewed assigned bugs in the tracker
  • Fixed: 2, Triaged: 11 (5 incomplete), Closed: 6 - Total: 19


Grease Pencil
I spent time this week getting up to speed with the current state of the Grease Pencil branch (i.e. reviewing current design, pending tasks/todos, figuring out what needs to happen for a 2.8 branch merge, testing the branch).

  • Started work on integrating Grease Pencil keyframes into standard DopeSheet
  20170913-gpencil ds integration-sneak peak-01.png
  • Attended Grease Pencil meeting with Antonio, Dalai, Daniel, and Matias discussing pending issues for 2.8 merge