From BlenderWiki

Jump to: navigation, search

Weekly Reports

Week 1: 23rd - 29th May 2016

Spent quite some time reading docs and Alembic example source code from other software (Maya/Houdini code shipped in the Alembic library) to see how they write data and expect data to be written.

  • Alembic Work
    • Added an empty object reader (creates an empty object for transform matrices)
    • Removed dependencies on the boost library
    • Put import/export operator inside of jobs, reporting percentage of progress to the UI
    • Fix thread safety issues from old patch
    • Added a new constraint type to look up transform matrix animations from Alembic caches
    • Added initial support to import curves and hair system as curves
    • Made import operator to automatically add a mesh cache modifier or transform cache constraint to the objects if necessary
    • Various other cleanups, re-factors and typos fixes

Week 2: 30th May - 5th June 2016

Wasted a bit of time on trying a few different approaches to properly import Alembic hierarchies, ended up using a brute force way for now; will revisit this if it's too slow. (Also spent time learning/reading more about the Blender code base to fix issues instead of asking questions to get the answers directly.)

  • Alembic Work
    • Fixed various missing dependency graph updates (both for old and new depsgraphs)
    • Fixed exported objects' bounding box issues found while rendering Alembic archives in Guerrilla render (reported on
    • Fixed multiple typos in camera reader, also fixing cameras imported from some Autodesk software
    • Start work on correctly importing Alembic transform hierarchy, and recreating the object hierarchy on the Blender side
    • Added particles/points reader and writer
    • Added support to stream objects with a varying number of vertices/points (rigid bodies, liquid sims...)
    • Added support to stream data from file sequences
    • Added the Alembic version information to the generated Blender system info file.
    • Various other cleanups, API consistency, simplify code a bit...

Week 3: 6th - 12th June 2016

Week was mainly dedicated to fix bugs and prepare patch for a first round of review.

  • Alembic Work
    • Use a hash map to store object reader / object path pair to be able to reconstruct the object hierarchy more easily.
    • Added a data block for easier handling of references and properties attached to an Alembic archive.
    • Cleanup CMake files, and build options.
    • Fix missing UI updates when opening a file.
    • Fix for accumulated camera specific transformations in a camera hierarchy.
    • Fix for objects not being written when exporting a flattened hierarchy.
    • Various other cleanups, API inconsistency fixes, small bugs and crashes fixes.

Week 4: 13th - 19th June 2016

Same as previous week was mainly dedicated to fix bugs (mostly regressions) and prepare patch for a first round of review, work on documentation. Also added quick support to import, export and stream some metadata attached to a given object (such as UVs, vcols...); although those metadatas are application specific (and Alembic has no notion of them), there is a convention between DCCs to read and write them so we can know what is what in an Alembic. So far such metadatas can be read properly between Blender, Maya and Houdini (and 3DS Max can, but some issues reading the data (but that's their problem)).

  • Alembic Work
    • Added support to import stream UVs, vertex colors and loop normals, following Alembic's conventions.
    • Complete refactor of the custom data reading/writing code (split from mesh reading/writing code).
    • Export velocities of liquid meshes in the OPolyMeshSchema instead of as a arbitrary parameter (to follow Alembic's conventions).
    • Fix reading vertex normals.
    • Fix issues with relative paths to an Alembic archive.
    • Started working on documentation.

Week 5: 20th - 26th June 2016

Slow week, moved patch to code review (D2060), started working on supporting motion blur for dynamic meshes (from liquid simulation e.g.) in Cycles, which will be useful for Alembic caches too.

  • Alembic Work
    • Implement more data-block handling code for the new CacheFile block (copy, library path renaming...).
    • Add support to animate CacheFile properties (frame offset, object scale...).
    • Fix custom datas being deleted (not recreated) when creating a new object during data streaming (liquid caches e.g.).
    • Add support to export curve objects.
    • Made changes according to first round of code review, and other various cleanups and refactor.
  • Cycles
    • Start working on a patch to support motion blur for dynamic meshes from liquid simulation and such. D2063

Week 6: 27th June - 3rd July 2016

Mostly done bug fixing/user support. Also had personal things to do.

  • Alembic Work
    • Add support to read edge crease data.
    • Curves/NURBS: read/write orders, knots, weights and radiuses.
    • Evaluate drivers added to CacheFiles during scene update.
    • Fix various issues regarding NURBS import, export and viewport rendering.
    • Modify the way time offset and scaling works, now using a single property instead of two.
    • Report messages in the UI in case reading/writing Alembic files fails.
    • Update Alembic library to version 1.6, remove support for HDF5, cleanup CMake modules.

Week 7: 4th - 10th July 2016

Mostly spent time doing test render for the Cycles motion blur patch I'm also working on (D2063).

  • Alembic Work
    • Fix for missing UVs (in Cycles) when creating a new DerivedMesh in the cache modifier.
    • Fix hierarchical issue where scaling was applied to both some parents and their children.
    • Fix some linking and library dependencies issues.
    • Implement CacheFile in the new dependency graph, to make sure object depending on caches (through cache modifiers) are updated when changing cache properties.
    • Implement velocity vector reading for motion blurring in Cycles similar to D2063.
    • Start making Curve and NURBS import/export code aware of existing conventions for data exchange between DCCs.

Week 8: 11th - 17th July 2016

  • Alembic Work
    • Expose paths of the objects in the Alembic archive in a collection to be accessed through a drop down menu.
    • Fix parenting issue when objects have both mesh and curves (hair) data.
    • Fix crash constructing dependency graph with missing objects.
    • Fix various crashes opening Blender files with saved cache data block.
    • Rework modifier/constraint UI and tooltips.
    • Rework normals reading code to address most of the issues reported in the alembic thread on blenderartists.
  • Bug-tracker
    • Fix T48845: Crash when right-clicking on a curve property.

Fixed: 1, Closed: 3

Week 9: 18th - 24th July 2016

Some time was spent on some more or less thorough code review, did a bit of bug tracker work.

  • Alembic Work
    • Cycles: sync motion vectors when syncing the mesh, not as an extra step.
    • Delete objects when cancelling an import.
    • Fix crash loading a file with an invalid archive.
    • Fix dependency graph updates, cleanup implementation.
    • Implement granular data reading, so we only read data that is needed.
    • Various changes and fixes from code review.
  • Cycles
    • Add support for motion blurring of fluid meshes.
  • Bug-tracker
    • Fix T48663: The Soft Light blend type layer make the color darker in the 3D view
    • Fix T48397: Can not bake tweaked NLA

Fixed: 2, In Review: 2