toFlameAnimation method
Implementation
ModelAnimation toFlameAnimation() {
final controllers = <int, List<AnimationController>>{};
for (final channel in channels) {
final path = channel.target.path;
final sampler = samplers[channel.sampler];
final times = sampler.input.get().typedData();
final values = sampler.output.get();
final spline = switch (path) {
AnimationPath.translation => TranslationAnimationSpline.from(
interpolation: sampler.interpolation,
times: times,
values: values.asVector3().typedData(),
),
AnimationPath.scale => ScaleAnimationSpline.from(
interpolation: sampler.interpolation,
times: times,
values: values.asVector3().typedData(),
),
AnimationPath.rotation => RotationAnimationSpline.from(
interpolation: sampler.interpolation,
times: times,
values: values.asQuaternion().typedData(),
),
AnimationPath.weights => throw UnimplementedError(),
} as AnimationSpline;
final nodeIdx = channel.target.node.index;
(controllers[nodeIdx] ??= []).add(
AnimationController(
animation: spline,
),
);
}
final nodes = controllers.map(
(key, value) => MapEntry(
key,
NodeAnimation(
channels: value,
),
),
);
return ModelAnimation(
name: name,
nodes: nodes,
);
}