Blender Git Commits

Blender Git "collada2.8" branch commits.

Page: 4 / 7

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.
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021