[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