From ffbac847efcb6e9eb1def6251033ccc53c2d8702 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Fri, 10 Aug 2012 22:58:54 +0200 Subject: [PATCH] - fbx: add DOM classes for light and camera node attachments. Devise a new macro-based system to easily define dynamic fbx properties. --- code/FBXDocument.cpp | 8 +- code/FBXDocument.h | 56 + code/FBXNodeAttribute.cpp | 28 + workspaces/vc9/assimp.vcproj | 2790 +++++++++++++++++----------------- 4 files changed, 1486 insertions(+), 1396 deletions(-) diff --git a/code/FBXDocument.cpp b/code/FBXDocument.cpp index 1398bdf81..1151b5786 100644 --- a/code/FBXDocument.cpp +++ b/code/FBXDocument.cpp @@ -506,9 +506,15 @@ const Object* LazyObject::Get(bool dieOnError) } } else if (!strncmp(obtype,"NodeAttribute",length)) { - if (!strcmp(classtag.c_str(),"CameraSwitcher")) { + if (!strcmp(classtag.c_str(),"Camera")) { + object.reset(new Camera(id,element,doc,name)); + } + else if (!strcmp(classtag.c_str(),"CameraSwitcher")) { object.reset(new CameraSwitcher(id,element,doc,name)); } + else if (!strcmp(classtag.c_str(),"Light")) { + object.reset(new Light(id,element,doc,name)); + } } else if (!strncmp(obtype,"Deformer",length)) { if (!strcmp(classtag.c_str(),"Cluster")) { diff --git a/code/FBXDocument.h b/code/FBXDocument.h index 6c0f3606b..dfdc3b3c3 100644 --- a/code/FBXDocument.h +++ b/code/FBXDocument.h @@ -48,6 +48,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include +#include "FBXProperties.h" + namespace Assimp { namespace FBX { @@ -210,6 +212,60 @@ private: }; +#define fbx_stringize(a) #a + +#define fbx_simple_property(name, type, default_value) \ + type name() const { \ + return PropertyGet(Props(), fbx_stringize(name), (default_value)); \ + } + + +/** DOM base class for FBX cameras attached to a node */ +class Camera : public NodeAttribute +{ +public: + + Camera(uint64_t id, const Element& element, const Document& doc, const std::string& name); + ~Camera(); + +public: + + fbx_simple_property(Position, aiVector3D, aiVector3D(0,0,0)); + fbx_simple_property(UpVector, aiVector3D, aiVector3D(0,1,0)); + fbx_simple_property(InterestPosition, aiVector3D, aiVector3D(0,0,0)); + + fbx_simple_property(AspectWidth, float, 1.0f); + fbx_simple_property(AspectHeight, float, 1.0f); + fbx_simple_property(FilmWidth, float, 1.0f); + fbx_simple_property(FilmHeight, float, 1.0f); + + fbx_simple_property(FilmAspectRatio, float, 1.0f); + fbx_simple_property(ApertureMode, int, 0); + + fbx_simple_property(FieldOfView, float, 1.0f); + fbx_simple_property(FocalLength, float, 1.0f); + +private: +}; + + +/** DOM base class for FBX lights attached to a node */ +class Light : public NodeAttribute +{ +public: + + Light(uint64_t id, const Element& element, const Document& doc, const std::string& name); + ~Light(); + +public: + + fbx_simple_property(Color, aiVector3D, aiVector3D(1,1,1)); + fbx_simple_property(Intensity, float, 1.0f); + +private: +}; + + /** DOM base class for FBX models (even though its semantics are more "node" than "model" */ class Model : public Object { diff --git a/code/FBXNodeAttribute.cpp b/code/FBXNodeAttribute.cpp index 2960f83c7..0b8cb94ce 100644 --- a/code/FBXNodeAttribute.cpp +++ b/code/FBXNodeAttribute.cpp @@ -104,6 +104,34 @@ CameraSwitcher::~CameraSwitcher() } + +// ------------------------------------------------------------------------------------------------ +Camera::Camera(uint64_t id, const Element& element, const Document& doc, const std::string& name) +: NodeAttribute(id,element,doc,name) +{ + +} + + +// ------------------------------------------------------------------------------------------------ +Camera::~Camera() +{ +} + + +// ------------------------------------------------------------------------------------------------ +Light::Light(uint64_t id, const Element& element, const Document& doc, const std::string& name) +: NodeAttribute(id,element,doc,name) +{ + +} + + +// ------------------------------------------------------------------------------------------------ +Light::~Light() +{ +} + } } diff --git a/workspaces/vc9/assimp.vcproj b/workspaces/vc9/assimp.vcproj index de667511b..999d6cdaf 100644 --- a/workspaces/vc9/assimp.vcproj +++ b/workspaces/vc9/assimp.vcproj @@ -1,7 +1,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2311,6 +2319,14 @@ UsePrecompiledHeader="0" /> + + + @@ -2335,22 +2351,6 @@ UsePrecompiledHeader="0" /> - - - - - - @@ -2485,6 +2485,14 @@ PrecompiledHeaderThrough="AssimpPCH.h" /> + + + @@ -2512,6 +2520,14 @@ PrecompiledHeaderThrough="AssimpPCH.h" /> + + + @@ -2539,22 +2555,6 @@ PrecompiledHeaderThrough="AssimpPCH.h" /> - - - - - - @@ -2862,62 +2862,6 @@ UsePrecompiledHeader="0" /> - - - - - - - - - - - - - - - - - - - - - @@ -2926,6 +2870,14 @@ UsePrecompiledHeader="0" /> + + + @@ -2934,6 +2886,14 @@ UsePrecompiledHeader="0" /> + + + @@ -2942,6 +2902,14 @@ UsePrecompiledHeader="0" /> + + + @@ -2950,6 +2918,14 @@ UsePrecompiledHeader="0" /> + + + @@ -2958,6 +2934,14 @@ UsePrecompiledHeader="0" /> + + + @@ -2966,6 +2950,14 @@ UsePrecompiledHeader="0" /> + + + @@ -2974,6 +2966,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3006,62 +3006,6 @@ UsePrecompiledHeader="0" /> - - - - - - - - - - - - - - - - - - - - - @@ -3070,6 +3014,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3078,6 +3030,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3086,6 +3046,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3094,6 +3062,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3102,6 +3078,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3110,6 +3094,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3118,6 +3110,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3138,62 +3138,6 @@ UsePrecompiledHeader="0" /> - - - - - - - - - - - - - - - - - - - - - @@ -3202,6 +3146,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3210,6 +3162,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3218,6 +3178,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3226,6 +3194,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3234,6 +3210,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3242,6 +3226,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3250,6 +3242,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3278,62 +3278,6 @@ UsePrecompiledHeader="0" /> - - - - - - - - - - - - - - - - - - - - - @@ -3342,6 +3286,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3350,6 +3302,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3358,6 +3318,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3366,6 +3334,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3374,6 +3350,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3382,6 +3366,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3390,6 +3382,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3418,62 +3418,6 @@ UsePrecompiledHeader="0" /> - - - - - - - - - - - - - - - - - - - - - @@ -3482,6 +3426,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3490,6 +3442,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3498,6 +3458,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3506,6 +3474,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3514,6 +3490,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3522,6 +3506,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3530,6 +3522,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3554,62 +3554,6 @@ UsePrecompiledHeader="0" /> - - - - - - - - - - - - - - - - - - - - - @@ -3618,6 +3562,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3626,6 +3578,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3634,6 +3594,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3642,6 +3610,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3650,6 +3626,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3658,6 +3642,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3666,6 +3658,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3690,62 +3690,6 @@ UsePrecompiledHeader="0" /> - - - - - - - - - - - - - - - - - - - - - @@ -3754,6 +3698,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3762,6 +3714,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3770,6 +3730,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3778,6 +3746,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3786,6 +3762,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3794,6 +3778,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3802,6 +3794,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3826,62 +3826,6 @@ UsePrecompiledHeader="0" /> - - - - - - - - - - - - - - - - - - - - - @@ -3890,6 +3834,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3898,6 +3850,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3906,6 +3866,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3914,6 +3882,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3922,6 +3898,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3930,6 +3914,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3938,6 +3930,14 @@ UsePrecompiledHeader="0" /> + + + @@ -3974,62 +3974,6 @@ UsePrecompiledHeader="0" /> - - - - - - - - - - - - - - - - - - - - - @@ -4038,6 +3982,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4046,6 +3998,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4054,6 +4014,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4062,6 +4030,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4070,6 +4046,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4078,6 +4062,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4086,6 +4078,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4114,62 +4114,6 @@ UsePrecompiledHeader="0" /> - - - - - - - - - - - - - - - - - - - - - @@ -4178,6 +4122,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4186,6 +4138,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4194,6 +4154,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4202,6 +4170,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4210,6 +4186,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4218,6 +4202,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4226,6 +4218,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4254,62 +4254,6 @@ UsePrecompiledHeader="0" /> - - - - - - - - - - - - - - - - - - - - - @@ -4318,6 +4262,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4326,6 +4278,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4334,6 +4294,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4342,6 +4310,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4350,6 +4326,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4358,6 +4342,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4366,6 +4358,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4390,62 +4390,6 @@ UsePrecompiledHeader="0" /> - - - - - - - - - - - - - - - - - - - - - @@ -4454,6 +4398,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4462,6 +4414,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4470,6 +4430,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4478,6 +4446,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4486,6 +4462,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4494,6 +4478,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4502,6 +4494,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4530,62 +4530,6 @@ UsePrecompiledHeader="0" /> - - - - - - - - - - - - - - - - - - - - - @@ -4594,6 +4538,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4602,6 +4554,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4610,6 +4570,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4618,6 +4586,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4626,6 +4602,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4634,6 +4618,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4642,6 +4634,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4666,62 +4666,6 @@ UsePrecompiledHeader="0" /> - - - - - - - - - - - - - - - - - - - - - @@ -4730,6 +4674,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4738,6 +4690,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4746,6 +4706,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4754,6 +4722,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4762,6 +4738,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4770,6 +4754,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4778,6 +4770,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4802,62 +4802,6 @@ UsePrecompiledHeader="0" /> - - - - - - - - - - - - - - - - - - - - - @@ -4866,6 +4810,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4874,6 +4826,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4882,6 +4842,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4890,6 +4858,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4898,6 +4874,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4906,6 +4890,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4914,6 +4906,14 @@ UsePrecompiledHeader="0" /> + + + @@ -4946,62 +4946,6 @@ UsePrecompiledHeader="0" /> - - - - - - - - - - - - - - - - - - - - - @@ -5010,6 +4954,14 @@ UsePrecompiledHeader="0" /> + + + @@ -5018,6 +4970,14 @@ UsePrecompiledHeader="0" /> + + + @@ -5026,6 +4986,14 @@ UsePrecompiledHeader="0" /> + + + @@ -5034,6 +5002,14 @@ UsePrecompiledHeader="0" /> + + + @@ -5042,6 +5018,14 @@ UsePrecompiledHeader="0" /> + + + @@ -5050,6 +5034,14 @@ UsePrecompiledHeader="0" /> + + + @@ -5058,6 +5050,14 @@ UsePrecompiledHeader="0" /> + + + @@ -5233,4 +5233,4 @@ - \ No newline at end of file +