August 2, 2018, 15:49 (GMT) |
Cleanup: Collada added a clarifying comment |
August 2, 2018, 15:49 (GMT) |
Refactor: Now only one Sample per frame and per object Previously the Bone aniumations where stored in separate BCSample instances. Now the BCSample class has one more entry for the animated bones (a matrix map) I am now ready for final cleaning up and testing. |
August 2, 2018, 15:49 (GMT) |
Cleanup: Collada removed unneeded methods from Animation Exporter |
August 2, 2018, 15:49 (GMT) |
Fix: Collada: Added back the handling of Armature animation export. The previous commit removed also the Export of bone animations. This is now fixed. |
August 2, 2018, 15:49 (GMT) |
Cleanup: Collada removed special handling of Object->Data animations The export of Object->Data curves is no longer a Special case but now included in the normal operation of the Animation exporter. |
August 2, 2018, 15:49 (GMT) |
Feature: Collada Object->data FCurves can now also be sampled |
August 2, 2018, 15:40 (GMT) |
Refactor: Collada: Renamed BCMatrix to BCSample Since the BCSample Objects will contain either Matrix data for Object animation or other data for Lamp, Material, and Camera animation. |
August 2, 2018, 15:37 (GMT) |
Cleanup: Collada reordered and commented BC_animation_transform_type |
August 2, 2018, 15:37 (GMT) |
Refactor: Use more general appraoch to get data from BCMatrix Added virtual function get_value_for() that can pick the correct data from a Matrix (and later also for a vector or a float array) (wip) this is in preparation for adding Sample data for Materials, light and camera Those animations do not need matrix values, but either simple float arrays or float vector arrays. I still want to handle those animation samples in the same way as the Matrix samples. So i try to use a class hierarchy here with the base class BCSample and derived classes where BCMatrix is the only implemented subclass so far. (wip) |
August 2, 2018, 15:37 (GMT) |
Renamed the file BCMatrix.* to BCSampleData.* BCMatrix is still used, but i intend to setup a class hierarchy wher BCSampleData is the parent of all sampled data in the BCAnimationCurveContainer (wip) |
August 2, 2018, 15:37 (GMT) |
Cleanup: Fixed '#ifndef xxx' brakets in hjeader files Due to renaming classes and files the initial #ifndef brakets have got possibly misleading values for xxx |
August 2, 2018, 15:37 (GMT) |
Removed the "See Also" line from the license comments |
August 2, 2018, 15:37 (GMT) |
Fixed File Copyright blocks in file headers |
August 2, 2018, 15:37 (GMT) |
Added separate functions to get curve data for sampling and keyframes For Materials, Camera, Lamp actions it turned out that the sampler can not sample the data at the moment. So for those curves i need to get the data from the original curves for now. I Added a getter that would retreive the data from the FCurve instead from the sampled data if no sampled data is available. This will change (wip) Known limitation: the Material,Lamp,Camera actions are always exported with linear interpolation (wip) |
August 2, 2018, 15:37 (GMT) |
First stable version of new Collada Animation Exporter. This still needs cleanup and fixing (wip) |
August 2, 2018, 13:04 (GMT) |
Feature: Collada added new User interface options keep_keyframes: When sampling the distance between 2 keyframes is defined by the sampling rate. Furthermore the keyframes defined in the FCurves are not exported. However when this option is enabled then also the defined keyframes will be added to the exported fcurves keep_smooth_curves: When sampling we do not use FCurves. So we also have no Curve handles for smooth exporting. However when this option is enabled, Blender does its best to recreate the handles for export. This is a very experimental feature and it is know to break when: - the exported animated objects have parent inverse matrices different from the unit matrix - The exported objects have negative scaling There may be many other situations when this feature breaks. This needs to be further tested. It may be removed later or replaced by something less wonky. |
August 2, 2018, 13:04 (GMT) |
refactor: Collada: removed trivial function The function get_joint_id(Object *ob, Bone *bone) was so simple I replaced the function by a one line statement. Now you can see directly what happens and no longer need to lookup what the function does. |
August 2, 2018, 13:04 (GMT) |
Feature Collada: Export also not selected intermediate objects Problem: When we export an Object Hierarchy, then we must export all elements of the hierarchy to maintain the transforms. This is especially important when exporting animated objects, because the animation curves are exported as relative curves based on the parent-child hierarchy. If an intermediate animated object is missing then the exported animation breaks. Solution: If the "Selected" Optioon is enabled, then take care to also export all objects which are not selected and hidden, but which are parents of selected objects. |
August 2, 2018, 12:50 (GMT) |
Cleanup: Collada added indentation, changed variable names Just for better reading, no functional change here. |
August 2, 2018, 12:34 (GMT) |
Refactor Collada: Moved Classes into separate files Renamed AnimationCurveCache to BCAnimationCurveContainer because this is really not a cache but just a set of Data that prepares the export of FCurves. This container only lives during export and is otherwiose not used for anything else. The BCAnimationCurveContainer is not depending on Collada in any way. Theoretically it could be used also from Python, but this is another story. Additions in more detail: Classes: * BCAnimationCurve a wrapper for handling FCurves tied to an object within the Animation Exporter * BCAnimationCurveContainer A container to keep all FCurves in one place. It also maintains creation and deletion of temporary FCurves needed to export data without interfering with the User's production data in Blender. * BCMatrix Handy class for making float mat[4][4] a primetime resident in the code. Not necessary but nice. Support functions: * bc_get_children(std::vector<Object *> &child_set, Object *ob, Scene *scene) returns the immediate children of an object into a set * bc_string_after(const std::string& s, const char c) returns the string after the last occurance of char * bc_startswith(std::string const & value, std::string const & starting) returns true if the string starts with the starting sequence * bc_endswith(std::string const & value, std::string const & ending) returns true if the string ends with the ending sequence |
|