December 4, 2014, 13:20 (GMT) |
Tidy up code for attaching drivers/params to transforms * Previous object-level hack for transform drivers is now done only if the driver isn't affecting a posechannel instead * Remove debug prints |
December 4, 2014, 13:20 (GMT) |
Drivers interleaved with bones seem to work now More testing is needed, but for now, it seems that this finally works. Other cases will need to be manually added later, but for a proof of concept, this is working well already. TODO: The drivers -> object transform link is superflous in this case... |
December 4, 2014, 12:52 (GMT) |
Depsgraph: Update armatures when leaving edit mode The idea is to have proper operation nodes after editing the armature. This isn't so trivial as it sounds to be, because: - Dependency graph is being built from the pose channels, which means adding/deleting bones are not visible to the depsgraph because those operations doesn't rebuild pose. - Updating pose after every topology change is rather costy and better to be avoid. Currently experimenting with rebuilding dependency graph when leaving edit mode. This way i can work on partial graph rebuild which would be really handy for such relations edits. For now this partial update is rather a place holder and it invokes full dependency graph rebuild. Actual partial rebuild brains would be implemented as one of the next steps. However all this work unleashed rather fundamental questions: - it is already known that dependency graph uses pose channels for building. - Pose channels are being passed to the callback functions as arguments. - One of operation nodes rebuilds the pose when it's missing or when it's tagged for update. - Hrm, ok. Now, what if the pose is tagged for update and some topology changed? This could change some pose channel pointers leading to the bad memory access in the callback. How do we solve this? - A bit easier question: What should operations do if armature is edit mode? Simplest answer would be to copy matricies from bones, skipping pose rebuild, eval init, pose callbacks and eval flush callbacks. |
December 4, 2014, 11:15 (GMT) |
Depsgraph: Add check for whether graph was properly tagged for rebuild Currently it's more like a preliminary check to catch obvious errors based on comparing number of operations in current depsgraph and correct one. Ideally relations and nodes themselves should be checked deeper,but that's NP-complex problem which probably doesn't worth solving for now. This check is commented out by default, uncomment it in BKE_scene_update_tagged if needed. |
December 4, 2014, 03:41 (GMT) |
Fix for typo |
December 4, 2014, 03:41 (GMT) |
Drivers and their relationships are now included in the depsgraph * Each driver now gets added as a separate opnode * ID-block targets (e.g. object ref for Transform Channel/Location Diff/Rot Diff) now get included when building the links (TODO: local space vs world space may be able to benefit from getting special exceptions for depending on intermediate results instead) * Added temporary hook from "parameters" component (where drivers live) to "transform" component, as is done for animation now. This will need to change, to have greater granularity for bones, but at least this works now. * Copied over the logic for evaluating drivers in full from the animsys code. (This stuff should eventually go back into blenkernel though) |
December 3, 2014, 23:21 (GMT) |
Use just a single combined blackbox opnode for Action + NLA |
December 3, 2014, 13:12 (GMT) |
Depsgraph: Add scene.depsgraph_rebuild() This could be handy for the time being all the areas does proper tag for relations rebuild. |
December 3, 2014, 13:05 (GMT) |
Depsgraph: Remove simulation API It was only needed for the time being no callbacks were filled up, and this API was only running dummy operations which i basically sleep for random number of milliseconds. Now we've got real callbacks and don't need simulation any more. |
December 3, 2014, 11:55 (GMT) |
A counter-kludge to work around linking problems our __finite() wrapper not being found |
December 3, 2014, 11:36 (GMT) |
More mingw64 & c++11 - Python vs Math (::hypot) issue |
December 3, 2014, 11:14 (GMT) |
More mingw64 & c++11 fixes - Compiler didn't like isnan() -> _isnan() |
December 3, 2014, 11:12 (GMT) |
More mingw64 & c++11 math fixes M_PI was undefined for some reason - probably one of the headers undefines it or something. Nevertheless, this is the quickest fix to get this working |
December 3, 2014, 11:11 (GMT) |
Silence compiler warning about unclosed comments |
December 3, 2014, 11:00 (GMT) |
More compile fixes for mingw64 Swapping order of Python and cmath includes again for audaspace |
December 1, 2014, 11:28 (GMT) |
More mingw64 and c++11 fixes - hypot() is not defined Fix is from the following thread(s): * http://bugs.python.org/issue11566 * http://boost.2283326.n4.nabble.com/Boost-Python-Compile-Error-s-GCC-via-MinGW-w64-td3165793.html#a3166760 I haven't managed to fix this for all files here yet (this only fixes half of the files for the freestyle module), so in the meantime, it'll be necessary to disable the freestyle module. The same goes for Audaspace, which fails on the C APi currently. |
December 1, 2014, 05:46 (GMT) |
Hacky kludge fixes to get mingw64 to compile - "finite()" issues * finite() is not defined on mingw64 when using c++11 * isfinite() can be used instead, but, to use it, you need to #include <cmath> and using std::isfinite; to each offending file where finite() may get called, which is basically every file that includes BLI_math.h ==> math_vector_inline.c * In this patch, we define our own wrapper for finite() (via the C code in blenlib, which is free of all this C++ crapiness), which the C++ code can then feast on. The name though needs 2 underscores, as the single-underscore version (_finite) causes conflicts with symbols from dll's (i.e. most likely conflicting with the MSVC _finite(), which mingw-C++11 *still* doesn't see either). |
November 28, 2014, 11:57 (GMT) |
Compile fixes for mingw64 Need to set flags to use c++11 features, or else the std::bind stuff isn't available |
November 28, 2014, 10:42 (GMT) |
Depsgraph: Code cleanup, fix typos |
November 28, 2014, 10:18 (GMT) |
Merge branch 'master' into depsgraph_refactor |
|