createKeyframeTracks method
List<KeyframeTrack>
createKeyframeTracks(
- Map<String, dynamic> animation,
- List<KeyframeTrack> tracks
)
Implementation
List<KeyframeTrack> createKeyframeTracks(Map<String,dynamic> animation, List<KeyframeTrack> tracks ) {
final keyframes = animation['keyframes'];
final name = animation['name'];
final List<num> times = [];
final List<num> positionData = [];
final List<num> quaternionData = [];
final List<num> scaleData = [];
for (int i = 0, l = keyframes.length; i < l; i ++ ) {
final ColladaKeyFrame keyframe = keyframes[ i ];
final time = keyframe.time;
final value = keyframe.value;
matrix.copyFromArray( List<double>.from(value.values.toList())).transpose();
matrix.decompose( position, quaternion, scale );
times.add( time );
positionData.addAll([ position.x, position.y, position.z ]);
quaternionData.addAll([ quaternion.x, quaternion.y, quaternion.z, quaternion.w ]);
scaleData.addAll([ scale.x, scale.y, scale.z ]);
}
if ( positionData.isNotEmpty) tracks.add(VectorKeyframeTrack( name + '.position', times, positionData ) );
if ( quaternionData.isNotEmpty) tracks.add(QuaternionKeyframeTrack( name + '.quaternion', times, quaternionData ) );
if ( scaleData.isNotEmpty) tracks.add(VectorKeyframeTrack( name + '.scale', times, scaleData ) );
return tracks;
}