+ curves.push_back(new ValueCurve<N>(target, knots));
+}
+
+bool Animation::extract_position(const KeyFrame &kf, Vector3 &value)
+{
+ value = kf.get_transform().get_position();
+ return true;
+}
+
+bool Animation::extract_euler(const KeyFrame &kf, Vector3 &value)
+{
+ const Transform::AngleVector3 &euler = kf.get_transform().get_euler();
+ value = Vector3(euler.x.radians(), euler.y.radians(), euler.z.radians());
+ return true;
+}
+
+bool Animation::extract_scale(const KeyFrame &kf, Vector3 &value)
+{
+ value = kf.get_transform().get_scale();
+ return true;