00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __FBX_Translator_h__
00021 #define __FBX_Translator_h__
00022
00023 #include <UT/UT_StringArray.h>
00024 #include "FBX_Common.h"
00025 #include "FBX_ErrorManager.h"
00026
00027 class FBX_IntTranslator;
00028 class GU_Detail;
00029 class OP_Node;
00030
00031 class FBX_API FBX_LoadCallbacks
00032 {
00033 public:
00034 virtual ~FBX_LoadCallbacks() { }
00035 virtual int onFbxFileLoaded(GU_Detail *gdp, FBX_IntTranslator *ptranslator) = 0;
00036 };
00037
00038 class FBX_API FBX_CookGeoCallback : public FBX_LoadCallbacks
00039 {
00040 public:
00041 virtual ~FBX_CookGeoCallback() { }
00042 virtual int onFbxFileLoaded(GU_Detail *gdp, FBX_IntTranslator *ptranslator);
00043 };
00044
00045 class FBX_API FBX_LoadAnimCallback : public FBX_LoadCallbacks
00046 {
00047 public:
00048 FBX_LoadAnimCallback()
00049 {
00050 myTargetHdNode = NULL;
00051 myHdParmIndex = 0;
00052 myFbxComponent = -1;
00053 myResampleAnimation = false;
00054 myResampleFrequency = 1.0;
00055 }
00056 virtual ~FBX_LoadAnimCallback() { }
00057 virtual int onFbxFileLoaded(GU_Detail *gdp, FBX_IntTranslator *ptranslator);
00058
00059 void setHdNode(OP_Node* node) { myTargetHdNode = node; }
00060 void setTargetParm(const char* parm_name, int idx)
00061 {
00062 if(!parm_name)
00063 return;
00064
00065 myHdParmName = parm_name;
00066 myHdParmIndex = idx;
00067 }
00068 void setFbxProperty(const char* pname, int icomp)
00069 {
00070 if(pname)
00071 myFbxPropertyName = pname;
00072 myFbxComponent = icomp;
00073 }
00074
00075 void setFbxTakeName(const char* pname)
00076 { myFbxTakeName = pname; }
00077 void setResampleAnimation(bool value)
00078 { myResampleAnimation = value; }
00079 void setResampleFrequency(double freq)
00080 { myResampleFrequency = freq; }
00081
00082 private:
00083 OP_Node* myTargetHdNode;
00084 string myHdParmName;
00085 int myHdParmIndex;
00086 string myFbxPropertyName;
00087 int myFbxComponent;
00088
00089 string myFbxTakeName;
00090
00091 bool myResampleAnimation;
00092 double myResampleFrequency;
00093 };
00094
00095 #ifdef FBX_SUPPORTED
00096
00097 class FBX_API FBX_Translator
00098 {
00099 public:
00100
00101 FBX_Translator();
00102
00103
00104 virtual ~FBX_Translator();
00105
00106
00107
00108 static void init(void);
00109
00110
00111
00112 static void uninit(void);
00113
00114 const FBX_ErrorManager* getErrorManager(void) const;
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130 bool importScene( const char *fileURI, bool is_merging,
00131 FBX_ImportOptions *options = NULL,
00132 FBX_ObjectTypeFilter *filter = NULL,
00133 const char* password = NULL);
00134
00135 static int importGeo(GU_Detail *gdp,
00136 const char *fileURI, const char* fbx_node_name, bool convert_surfaces);
00137
00138 static int ensureFileLoaded(GU_Detail *gdp, const char *fileURI, const char* fbx_node_name, bool convert_surfaces, FBX_LoadCallbacks* pcallbacks);
00139
00140 static int exportGeo(const GU_Detail *gdp,
00141 const char *fileURI);
00142
00143 static bool isSupported(void)
00144 { return true; }
00145
00146 private:
00147 static void installCommands();
00148
00149 private:
00150
00151 FBX_ErrorManager myErrorManager;
00152
00153 };
00154
00155 #else
00156
00157 class FBX_API FBX_Translator
00158 {
00159 public:
00160
00161 FBX_Translator() { }
00162
00163
00164 virtual ~FBX_Translator() { }
00165
00166
00167
00168 static void init(void) { }
00169
00170
00171
00172 static void uninit(void) { }
00173
00174 const FBX_ErrorManager* getErrorManager(void) const { return NULL; }
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190 bool importScene( const char *fileURI, bool is_merging,
00191 FBX_ImportOptions *options = NULL,
00192 FBX_ObjectTypeFilter *filter = NULL,
00193 const char* password = NULL) { return true; }
00194
00195 static int importGeo(GU_Detail *gdp,
00196 const char *fileURI, const char* fbx_node_name, bool convert_surfaces) { return 0; }
00197
00198 static int ensureFileLoaded(GU_Detail *gdp, const char *fileURI,
00199 const char* fbx_node_name, bool convert_surfaces,
00200 FBX_LoadCallbacks* pcallbacks) { return false; }
00201
00202 static int exportGeo(const GU_Detail *gdp,
00203 const char *fileURI) { return 0; }
00204
00205 static bool isSupported(void)
00206 { return false; }
00207 private:
00208 static void installCommands() { }
00209 };
00210 #endif
00211
00212
00213 #endif // __FBX_Translator_h__
00214