From BlenderWiki

Jump to: navigation, search
Note: This is an archived version of the Blender Developer Wiki. The current and active wiki is available on wiki.blender.org.

GSoC 2016: Weekly Reports

This page contains my weekly reports for my GSoC 2016 project, the layer manager.

Week 1: 23 - 27 May

Ton (my mentor) just found the time to review my layer manager UI design doc this weekend. To get the design into a more final shape and to get some face-to-face feedback from artists with production experience, I'm going to visit the Blender Institute for a little design sprint next week.
There are some issues to be solved still, but I personally think we're almost there :)))

What I did this week

Layers demo 01.png

Since UI design isn't completely done yet, I mostly experimented with general features that shouldn't conflict heavily with further decisions.

  • Added an own Editor "Layer Manager" for now, this gives room for experiments.
  • Added an initial code infrastructure for layer management and display.
  • Added basic layer list drawing
  • Added (initial?) support for selecting, adding, renaming and grouping layers/layer-groups

While things started as experiments, I'm confident they're working out quite well, so that I can mostly continue with what I have so far.

If you want to get an idea of what I'm going for, best look at:


Next week

  • Come up with a more final UI design (design sprint at the BI)
  • Start creating a relation between objects and layers (which they don't have yet)
  • Smaller changes to new code infrastructure to fix issues I found
  • Communicate technical ideas with other devs (will try to finish my technical design doc, but can't promise anything)


Week 2: 28 May - 3 June

What I did this week

Layers settings.png
  • Visited Blender Institute for layer manager design sprint Sunday to Tuesday.
  • Prepared a doc on results of the design sprint, needs some work still but should come really soon!
  • Refactored parts of the new layer manager code to fix some annoyances.
  • Improved layer manager editor drawing a bit.
  • Added support for expanding layers to display layer settings.
  • Added support for removing layers.

Next week

  • Finish design doc(s)!
  • Start creating a relation between objects and layers (was already planned for this week).
  • Add support for reordering layers.
  • Add a couple of initial layer properties.


Week 3: 4 - 10 June

What I did this week

  • Kept working on my UI design doc. I think it's ready now, but needs review by my mentor.
  • Added support for assigning objects to layers.
  • Added option to delete layer with or without objects.
  • Made viewport draw objects by iterating over objects per layers, rather than iterating over objects directly (will possibly play an important role in future).
  • Refactored layer storage and iterators (to improve performance for layer iterations).
  • Added undo/redo and file read/write support (which is broken again right now :S).
  • Had some working code for layer reordering but first wanted to make further changes to allow drag 'n drop too.
  • Spent one day working on bug tracker and HMD_viewport branch.

Next week

  • Finish reordering support (ideally with drag 'n drop).
  • Improve layer drawing.
  • Add a couple of initial layer properties (was already planned for this week).
  • Work on an initial API for render engines to register custom layer properties.

Week 4: 11 - 17 June

Layers dragdrop 02.gif

What I did this week

  • Refactored how we store objects in layers: Now using arrays which should give us some viewport drawing speedup as arrays are more efficient than the lists we used before (wouldn't be surprised if speedup is quite huge in big scenes). Will do some benchmarks at some point.
  • Spent quite some time on getting undo/redo and file write/read to work. Reading objects assigned to layers still doesn't work, everything else should be okay.
  • Added support for reordering layers using drag & drop (see .gif).
  • Started working on API/Storage for custom layer properties, but missed a majorish thing in the code design idea so I might need to start over again.

Next Week

  • Continue working on initial layer property management support
  • Add a couple of initial layer properties using layer property API
  • Improve layer drawing
  • Midterm evaluation! :)


Week 5: 18 - 24 June

Layers colors 03.png

What I did this week

  • Added support for custom layer properties (either for all layers or for single layer types)
  • Refactored how different layer types are handled
  • Added layer color-set from theme as a object layer property
  • Added support for wireframe/outline color from layer color-set
  • Added temporary hack for compatibility with old .blend files

Next Week

  • Give objects information about the layers they are in.
  • Bring back old visibility bits as layer property.
  • Fix layer re-ordering with groups.
  • Maybe start reducing usage of old system by replacing layer bit access with API functions from the new system.

Week 6: 25 June - 1 July

Animated .gif available here.

Didn't manage to spend much time on Blender this week, mainly due to an upcoming exam. This will likely keep me busy beginning of next week as well.

What I did this week

  • Support collapsing/expanding layer groups (see .gif)
  • Create new layer groups just before first selected element, not at end of list.
  • Make layer drag & drop work with layer groups
  • Fixed a couple of minor issues with layer groups
  • Talked quite a bit with other devs on general design and viewport integration.

Next Week

Going to have some fun at the German BlenderDay next week :) Should be able to do some work still.

  • Give objects information about the layers they are in.
  • Fix undo and file read/write of object layers (which is still not working)
  • Start reducing usage of old system by replacing layer bit access with API functions from the new system.


Week 7: 2 - 8 July

What I did this week

  • Dropped support for objects on multiple layers for now. I can bring it back if we decide to keep it, it'd simply take some effort to keep it working which would be wasted if we end up dropping it.
  • Added layer information to bases (to find the layer of an object without iterative lookups). Could later also work with support for objects on multiple layers.
  • Introduced concept of an active layer.
  • Add new, linked or appended objects to the active layer.
  • Replaced most Scene.base iterations with a new layer based iterator.

Next Week

  • Get undo and file read/write to work (grr... I keep postponing this)
  • Add visibility and selectability toggles.
  • Continue updating data usage of old layer system to fit new system.
  • Try to get local view separated from layer visibility bits.


Week 8: 9 - 15 July

Animated .gif available here.

What I did this week

  • Fix file read/write and undo/redo... finally :S
  • Implemented layer visibility toggle.
  • Removed WITH_ADVANCED_LAYERS build option - Wasn't really useful after all.
  • Added iterator for visible bases.
  • Changes everywhere in the source code to replace old visibility checks and Scene.base iterations with new API calls and iterators.
  • Started working on patch to split local view off from old visibility-bits.

Next Week

Got another exam next week, but I should be able to do some work still

  • Finish local view split patch.
  • Create/share a rough code design overview to get feedback.
  • Freeze design details (= make decisions!).
  • Continue updating old code for new system (will try to deprecate Scene.base completely).



Week 9: 16 - 22 July

Exam preparations took most of the time again. One more to come on Monday, then I can go back to work full steam on Blender.

What I did this week

  • Started creating a rough code design overview doc. Already got feedback from my mentor for it.
  • Continued working on patch to split off local view from layer visibility bits. Wanted to finish today but found two crashes in master that I needed to fix first.
  • Reviewed first half of Grease Pencil V2 patch (D2115).

Next Week

Mostly same as last week:

  • Finish local view split patch.
  • Finish code design overview doc.
  • Freeze design details (= make decisions!).
  • Continue updating old code for new system (will try to deprecate Scene.base completely).
  • If time allows it, start adding visibility bits as layer property.


Week 10: 23 - 29 July

What I did this week

  • Continued working on patch to split off local view from layer visibility bits, turned out to be more work than I hoped :S However, even if this is dragging a bit, I realize this will make future layer work much easier. Rough progress:
    • Committed initial patch to branch
    • Increased max number of local views from 8 to 32
    • Make a big chunk of Blender use the new system (including Blender Internal and viewport)
    • Added compatibility for old local view system
  • Continued review and committed a bunch of changes for Grease Pencil V2 patch (D2115).
  • Found quite a few bugs in master while working on local view and GPencil:
    Fixed 3, have fixes ready for 2 more (want to check with other devs first), investigated & reported one (T48951) and found nice DNA bug :) (didn't investigate yet)

Next Week

Same as last week:

  • Finish local view split patch (shouldn't take much longer - mainly need to replace usage of old system now).
  • Finish code design overview doc.
  • Freeze design details (= make decisions!). Couldn't really do last week as my mentor has been at Siggraph.
  • Continue updating old code for new system (will try to deprecate Scene.base completely).
  • If time allows it, start adding visibility bits as layer property.


Week 11: 30 July - 5 August

What I did this week

Didn't manage to spend *that* much time on layer manager related stuff, due to upcoming 2.78 Bcon3 switch my attention was needed in general development.

  • Finished and submitted local view refactor patch (D2138). Its benefits are:
    • Separated layer and local view data (separate bit-fields)
    • New API and storage for local view handling (more future proof solution).
    • Less hacky than old system.
    • Support for up to 32 local views (used to be 8).
    • Compatibility with old system.
  • Made final review and edits to Grease Pencil V2 branch, merged into master Wednesday.
  • Made HMD_viewport branch ready-ish for review and submitted patch (D2133)
  • Other general development (review, fixes, cleanups, etc).

Next Week

Local view stuff is mostly done for now, so I should be able to move back to layer manager branch itself.

  • Finish code design overview doc.
  • Continue updating old code for new system (will try to deprecate Scene.base completely).
  • Add visibility bits as layer property.


Week 12: 6 - 12 August

Click here for animated .gif

What I did this week

  • Some more polish and fixes for local view refactor patch
  • Deprecated Scene.base list, now everywhere layer based storage for bases is used (a base is used to store an object in a scene).
  • Refactored base iterators to be simpler to use and understand.
  • Exposed new base storage in RNA - old scripts/Add-ons should be compatible now.
  • Initially added visibility bits as layer property (see .gif).
  • General development.

Next Week

  • Fix a couple of bugs with new base storage.
  • It's wrap-up time! Write down documentation and open TODOs, do final evaluation, ...