[Bf-blender-cvs] [eed4ff2dfed] collada: Feature Collada: Added new Enum and Mappings

Gaia Clary noreply at git.blender.org
Wed Mar 28 21:30:36 CEST 2018


Commit: eed4ff2dfeda77bf2e3f5123ec37b1f952f15ce9
Author: Gaia Clary
Date:   Mon Mar 5 18:08:39 2018 +0100
Branches: collada
https://developer.blender.org/rBeed4ff2dfeda77bf2e3f5123ec37b1f952f15ce9

Feature Collada: Added new Enum and Mappings

* BC_animation_transform_type

  Enum that Contains all animation types which can be exported

* BC_ANIMATION_NAME_FROM_TYPE

  Map from transform_type to the name that is used in the exported data

* BC_ANIMATION_TYPE_FROM_NAME

  Maps to get the animation transformtype from RNA Pathes
  and from collada names (also needed for the Importer later)

These maps and Enums will later replace hard coded integer numbers
which are currently used all over the place and make it really hard
to understand what exactly is going on.

===================================================================

M	source/blender/collada/AnimationExporter.cpp
M	source/blender/collada/AnimationExporter.h

===================================================================

diff --git a/source/blender/collada/AnimationExporter.cpp b/source/blender/collada/AnimationExporter.cpp
index afb0947f506..0706ab3a0ea 100644
--- a/source/blender/collada/AnimationExporter.cpp
+++ b/source/blender/collada/AnimationExporter.cpp
@@ -24,6 +24,70 @@
 #include "AnimationExporter.h"
 #include "MaterialExporter.h"
 
+std::map<BC_animation_transform_type, const char*> BC_ANIMATION_NAME_FROM_TYPE = {
+	{ BC_ANIMATION_TYPE_ROTATION_EULER, "rotation_euler" },
+	{ BC_ANIMATION_TYPE_ROTATION_QUAT, "rotation_quaternion" },
+	{ BC_ANIMATION_TYPE_SCALE, "scale" },
+	{ BC_ANIMATION_TYPE_LOCATION, "location" },
+
+	/* Materials */
+	{ BC_ANIMATION_TYPE_SPECULAR_HARDNESS, "specular_hardness" },
+	{ BC_ANIMATION_TYPE_SPECULAR_COLOR, "specular_color" },
+	{ BC_ANIMATION_TYPE_DIFFUSE_COLOR, "diffuse_color" },
+	{ BC_ANIMATION_TYPE_ALPHA, "alpha" },
+	{ BC_ANIMATION_TYPE_IOR, "ior" },
+
+	/* Lamps */
+	{ BC_ANIMATION_TYPE_COLOR, "color" },
+	{ BC_ANIMATION_TYPE_FALL_OFF_ANGLE, "fall_off_angle" },
+	{ BC_ANIMATION_TYPE_FALL_OFF_EXPONENT, "fall_off_exponent" },
+	{ BC_ANIMATION_TYPE_BLENDER_DIST, "blender/blender_dist" },
+
+	/* Cameras */
+	{ BC_ANIMATION_TYPE_XFOV, "xfov" },
+	{ BC_ANIMATION_TYPE_XMAG, "xmag" },
+	{ BC_ANIMATION_TYPE_ZFAR, "zfar" },
+	{ BC_ANIMATION_TYPE_ZNEAR, "znear" },
+
+	{ BC_ANIMATION_TYPE_UNKNOWN, "" }
+};
+
+std::map<const char*, BC_animation_transform_type> BC_ANIMATION_TYPE_FROM_NAME = {
+	{ "rotation_euler", BC_ANIMATION_TYPE_ROTATION_EULER },
+	{ "rotation_quaternion", BC_ANIMATION_TYPE_ROTATION_QUAT },
+	{ "scale", BC_ANIMATION_TYPE_SCALE },
+	{ "location", BC_ANIMATION_TYPE_LOCATION },
+
+	/* Materials */
+	{ "specular_hardness", BC_ANIMATION_TYPE_SPECULAR_HARDNESS },
+	{ "specular_color", BC_ANIMATION_TYPE_SPECULAR_COLOR },
+	{ "diffuse_color", BC_ANIMATION_TYPE_DIFFUSE_COLOR },
+	{ "alpha", BC_ANIMATION_TYPE_ALPHA },
+	{ "ior", BC_ANIMATION_TYPE_IOR },
+
+	/* Lamps */
+	{ "color", BC_ANIMATION_TYPE_COLOR },
+	{ "fall_off_angle", BC_ANIMATION_TYPE_FALL_OFF_ANGLE },
+	{ "fall_off_exponent", BC_ANIMATION_TYPE_FALL_OFF_EXPONENT },
+	{ "blender/blender_dist", BC_ANIMATION_TYPE_BLENDER_DIST },
+	/* Lamp  RNA to animation type */
+	{ "spot_size", BC_ANIMATION_TYPE_FALL_OFF_ANGLE },
+	{ "spot_blend", BC_ANIMATION_TYPE_FALL_OFF_EXPONENT },
+	{ "distance", BC_ANIMATION_TYPE_BLENDER_DIST },
+
+	/* Cameras */
+	{ "xfov", BC_ANIMATION_TYPE_XFOV },
+	{ "xmag", BC_ANIMATION_TYPE_XMAG },
+	{ "zfar", BC_ANIMATION_TYPE_ZFAR },
+	{ "znear", BC_ANIMATION_TYPE_ZNEAR },
+	/* Camera RNA to animation type */
+	{ "lens", BC_ANIMATION_TYPE_XFOV },
+	{ "ortho_scale", BC_ANIMATION_TYPE_XMAG },
+	{ "clip_end", BC_ANIMATION_TYPE_ZFAR },
+	{ "clip_start", BC_ANIMATION_TYPE_ZNEAR }
+
+};
+
 template<class Functor>
 void forEachObjectInExportSet(Scene *sce, Functor &f, LinkNode *export_set)
 {
diff --git a/source/blender/collada/AnimationExporter.h b/source/blender/collada/AnimationExporter.h
index f73c3e8ffd4..e7f9184e74b 100644
--- a/source/blender/collada/AnimationExporter.h
+++ b/source/blender/collada/AnimationExporter.h
@@ -82,7 +82,33 @@ extern "C"
 #include <vector>
 #include <algorithm> // std::find
 
-
+typedef enum BC_animation_transform_type {
+	BC_ANIMATION_TYPE_UNKNOWN = -1,
+	BC_ANIMATION_TYPE_ROTATION_EULER = 0,
+	BC_ANIMATION_TYPE_ROTATION_QUAT = 1,
+	BC_ANIMATION_TYPE_SCALE = 2,
+	BC_ANIMATION_TYPE_LOCATION = 3,
+
+	/* Materials */
+	BC_ANIMATION_TYPE_SPECULAR_HARDNESS = 4,
+	BC_ANIMATION_TYPE_SPECULAR_COLOR = 5,
+	BC_ANIMATION_TYPE_DIFFUSE_COLOR = 6,
+	BC_ANIMATION_TYPE_ALPHA = 7,
+	BC_ANIMATION_TYPE_IOR = 8,
+
+	/* Lamps */
+	BC_ANIMATION_TYPE_COLOR,
+	BC_ANIMATION_TYPE_FALL_OFF_ANGLE,
+	BC_ANIMATION_TYPE_FALL_OFF_EXPONENT,
+	BC_ANIMATION_TYPE_BLENDER_DIST,
+
+	/* Cameras */
+	BC_ANIMATION_TYPE_XFOV,
+	BC_ANIMATION_TYPE_XMAG,
+	BC_ANIMATION_TYPE_ZFAR,
+	BC_ANIMATION_TYPE_ZNEAR,
+
+} BC_animation_transform_type;
 
 class AnimationExporter: COLLADASW::LibraryAnimations
 {



More information about the Bf-blender-cvs mailing list