August 2, 2018, 16:31 (GMT) |
Refactor Collada: Major rewrite of the AnimationExporter * Mostly reorganized the classes and made them more readable. * The animation sampler now can be used for any animation curve. Before the sampler only looked at curves which are supported by Standard Collada 1.4. However the Collada exporter currently ignores all animation curves which are not covered by the 1.4.1 Collada Standards. There is still some room for improvements here (work in progres) * Removed some unnecessary dependencies and cleaned up many functions which have become unnecessary and no longer used. * moved functions between classes to better match the class responsibilities. * took care that the functions are kept small and understandable * removed intermediate structures which are no longer needed * cleanly separated the Animation sample part from the Collada part so that they can be treated independently from each other Known issues: * Some exports do currently not work reliably, among those are the camera animations, material animations and light animations those animations will be added back next (work in progres) * Exporting animation curves with keyframes (and tangents) sometimes results in odd curves (when parent inverse matrix is involved) This needs to be checked in more depth. * Export of "all animations in scene" is disabled because the Collada Importer can not handle this reliably at the moment (work in progres). |
August 2, 2018, 16:19 (GMT) |
Fix Collada: replaced nullptr by NULL at various places To remain compatible with the c++ version used in master |
August 2, 2018, 16:19 (GMT) |
Cleanup Collada: Renamed Enum entries for consistency Minor change: indentation of BC_ANIMATION_TYPE_FROM_NAME was wrong |
August 2, 2018, 16:19 (GMT) |
Cleanup Collada: Removed no longer needed method |
August 2, 2018, 16:19 (GMT) |
Fix Collada: Import of animations for objects with multiple materials When importing multiple materials for one object, the imported material animation curves have all been assigned to the first material in the object. This fix also improves the console logging whenever the importer finds a consistency problem with the imported animation data. |
August 2, 2018, 15:58 (GMT) |
Fix Collada: Export of sampled animations exports nothing When exporting animations as matrix data, the exporter did not create anything. This was because i forgot to copy the sampled object matrix to the BCSample while decomposing the matrix. The fix makes sampled animation export work again |
August 2, 2018, 15:58 (GMT) |
Refactor Collada: Renamed files to better match class names: * Renamed files: old names: BCAnimationCurveContainer.* new names: BCAnimationSampler.* * Adjusted the include files to the new names |
August 2, 2018, 15:58 (GMT) |
Refactor Collada: simplified API replaced methods from BCAnimationCurveContainer: BCSample &add(Object *ob, Matrix &mat); BCSample &add(Object *ob, Bone *bone, Matrix &mat); BCSample &add(Object *ob, Matrix &mat, int frame_index); BCSample &add(Object *ob, Bone *bone, Matrix &mat, int frame_index); by much simpler methods: BCSample &add(Object *ob); BCSample &add(Object *ob, int frame_index); |
August 2, 2018, 15:58 (GMT) |
Refactor Collada: BCMatrix is now decomposed on init Previously the BCMatrix object was decomposed when needed the first time. But since the decomposition is done always for every single Matrix, we can do it right upon construction with the additional benefit that we can handle euler rotations nicer, see void BCMatrix::set_transform(Object *ob) There we now can use quat_to_compatible_eul() to avoid axis flipping during exporting of object transforms. (todo: apply this also for bone animations) |
August 2, 2018, 15:58 (GMT) |
Fix Collada: added missing private: to CBSample declaration |
August 2, 2018, 15:58 (GMT) |
Refactor: Added useful typedefs to BCSample.h |
August 2, 2018, 15:58 (GMT) |
Cleanup Collada: Change variable name from sample to matrix this was a leftover from a previous cleanup where i separated the old BCSample into 2 classes BCSample and BCMatrix |
August 2, 2018, 15:58 (GMT) |
Refactor Collada: reorganized the BC classes for easier use * Made many changes to make the usage of the BCAnimationSampler much easier. * Reorganized the header files * renamed methods for better reading * Added Matrix typedef to replace float mat[4][4] * simplifdied the construction of BCSampleData entries * Added BCCamera BCLamp and BCMaterial classes * Added support for Camera xfov export * Added supprot for easier FCurve modifications through the BCAnimationCurve API * Added comments * Removed unnecessary code * Simplified code wherever possible |
August 2, 2018, 15:49 (GMT) |
cleanup Collada: renamed method, removed not needed method * renamed get_matrices() to get_samples() Because the returned list no longer contains a set of matrices * removed is_flat() test method on BCSamples becasue it actually makes no sense here. |
August 2, 2018, 15:49 (GMT) |
Cleanup: Collada: Changed comment on BCSample |
August 2, 2018, 15:49 (GMT) |
Cleanup: Collada: Removed no longer needed methods |
August 2, 2018, 15:49 (GMT) |
Refactor: Collada: Moved matrix functions from BCSample to BCMatrix The affected methods: rotaiton() location() scale() quad() decompose() These methods really did not belong to the BCSample itself. That was just a left over from previous changes to the BCSample class. Moved to BCMatrix where they belong to. |
August 2, 2018, 15:49 (GMT) |
Refactor: Collada: Moved collada related function out of the BCAnimationCurve class I want to make BCAnimationCurve more general so it potentially can later also be used from other exporters as well. |
August 2, 2018, 15:49 (GMT) |
Refator: Collada: replaced BCSampleKey by Object* After doing some simplifications BCSampleKey has degraded to alwasy be ob->id.name So i replaced the key by the object pointer itself. |
August 2, 2018, 15:49 (GMT) |
Refactor: Collada: Added classes for Lamp and Camera After i needed to add extra structure for Material and Armature it is now time to have also Camera and Lamp objects. those objects are pretty muchg just data at the moment. However this makes the code more readable without loosing anything. |
|