利用者:Aligorith/DevFund-Depsgraph2014
< 利用者:Aligorith
2015年1月24日 (土) 08:43時点におけるwiki>Aligorithによる版 (→Weeks 7 (Jan 12 - Jan 23))
目次
Fortnightly Updates on Depsgraph Refactor Dev Fund Work
Weeks 7 & 8 (Jan 12 - Jan 23)
Summary of past 2 weeks:
- Rigidbody sims now work
- Grease Pencil animation is updated by the depsgraph
- Worked on overhauling how IK chains get added/handled (for fixing issues when there are dependencies between two bones within the same IK chain). This is proving to be tougher than expected to crack, with Koro continuing to be a hotbed of weird and wonderful bugs!
- Did some preliminary investigations into alternatives to graphviz for graphical debugging of the graphs, since it's currently impossible to debug what's going on in the production rigs when they fail. OGDF seems to be promising...
- Inserting keyframes for the first time on a datablock tags the depsgraph for rebuilding now (so that animation works, as it needs a link to the timesource node)
Non-Depsgraph (Gooseberry Fixes):
- Better volume preservation for Spline IK
- Fix for joining armatures not retaining (3df93d0) and fixing up drivers (a730cda)
Weeks 5 & 6 (Dec 29 - Jan 9)
Summary of past 2 weeks:
- Removed redundant verify_entry_exit_operations() in favour of manually defined entry/exit points per component where needed
- Fixed problem where the keys for driver operations were not unique enough to identify array elements (e.g. location.x and location.y were treated as the same)
- Drivers for armature bone settings now work
- Shapekey drivers and animation now work
- Pole targets for IK chains now work
- Finished reviewing how pose bones are added to the depsgraph
- Various code cleanups - Removing redundant code, and started checking on all places where geometry drivers are needed
- Created some more test cases + testing various open movie rigs to check for bugs
General Development:
- Spent a day looking into Grease Pencil bugs for the 2.73 release
Next Targets:
- Finish checking on all geometry refs to ensure that they are being set up correctly
- Review RNAPathKey lookups
- Get rigidbody sims working in depsgraph
- Check that animation and drivers on materials/lamps/shading datablocks gets handled correctly
- Try to get all openmovie rigs and shot files properly functional
Weeks 3 & 4 (Dec 15 - Dec 27)
Highlights of past 2 weeks:
- Refactored the way that lookups for OperationNodes was getting done to make the code easier to maintain and hopefully perform better too.
- Replaced strings with enum constants, and adjusted OperationKey/etc.
- Fixed all the existing code to use these identifiers
- Refactored in/outlink relationship lists back to the DepsNode base class where it belongs
- Object-level (transforms) are now done using granular callbacks. The constraint stack is still evaluated as a single operation for now though, since we don't have temp storage for that stuff.
- Fixed bug with normal non-ik bone chains not being built correctly
- Drivers affecting modifiers not get hooked up properly
- Various improvements to make it easier to debug what's going on
- Added operators in header to quickly refresh/rebuild, dump summary stats (i.e. number of nodes/relations), and for exporting graphs
- Added more meaningful debug print info for various node types and their lookup keys, making it easier to figure out what is failing and why
- Christmas holidays/short break/fuzzy-headed-days/checking-on-2.73-release-things
Next Targets:
- Finish reviewing/refactoring code for building graphs for armatures. There's still some confusing weirdness going on here (especially regarding IK vs non-IK chains) that isn't that nice
- Get RNAKey lookups working, and fix how that integrates with drivers (e.g. for shapekeys, and a few other similar areas)
- Fix how drivers for obdata-level bone drivers get hooked up
- Review and fix the way that geometry updates are handled
- Double check verify_entry_exit_ops() concerns raised by Sergey
- Review where/how "path" data gets calculated for curves
- Split more of the code out from the ubereval
- Check on which component these operations should belong to
Weeks 1 & 2 (Dec 4 - Dec 12)
- Got the
depsgraph_refactor branch compiling on mingw64, after working through heaps of compatibility issues with needing to compile the code with C++11 extensions.
- With Sergey's assistance, got tools/workflow for testing whether the graphs are getting built correctly
- Fixed the way that animation is represented in the depsgraph. Action + NLA need to be evaluated/considered as a black box
- Fixed bugs with some driver targets not getting hooked up correctly (e.g. objects for transform channels)
- Got interleaved bone <-> driver evaluation working. For example, it is now possible to have one bone in an armature driving the constraint influence of another bone in the same armature.
- Tried to test koro.blend and Pataz caterpillar.blend (from Gooseberry teaser), and export the graphs of these.
- There are still many broken things in these files: missing relationships, sluggish updates (hopefully just due to the amount of logging we're doing), some malfuncting updates, memory leaks with IK solver trees not getting freed.
- As a word of warning, the graphviz graphs for these cannot be drawn using
dot and must instead be drawn using
neato, or else it will just take over half and hour of intensive processing before it crashes. Even with neato, this is quite slow.
- Improved debugging/error logging messages to make it easier to track down bugs
- Spent time trying to understand the whole ComponentKey/OperationKey/RNAKey system and how that relates to some oddities surrounding some cases where relationships are not getting built. Began investigating some cleaner alternatives (e.g. restoring the enum for operation types instead of using dynamic/mutable strings for these kinds of lookups)
- Also spent time trying to double check the core code in many places. Identified a number of confusing areas which need some attention/cleanup, as the current state will likely pose maintenance issues in future.
- Spent time trying to track down a bug where simple bone chains aren't getting added correctly (but those with IK chains so far still seem to work ok). This exercise revealed the confusing nature of some of the code currently there, along with a number of other small todo's to investigate.