2014-01-16 2 views
0

Я загружаю анимационную модель с помощью DirectX 11. Теперь я нахожусь на этапе анализа файла модели MS3D, и я планирую использовать MS3D SDK() для загрузки модели MS3D. Но похоже, что этот SDK используется для написания плагина в Milkshape Modeling Software, а не в независимой программе. Пример прилагается в SDK представляет собой DLL, как показано ниже:с использованием milkshape3d SDK при загрузке файла MS3D

cMsPlugIn* CreatePlugIn() 
{ 
    return new cPlugIn(); 
} 

int cPlugIn::Execute (msModel *pModel) 
{ 
    //process the model here. 
} 

Проблема заключается в том, что я указатель msModel передается в DLL, и я не знаю, как создать его из MS3D файла.

Я прочитал спецификацию этой библиотеки, относящуюся к структуре msModel, так как она указана ниже.

/********************************************************************** 
* msModel 
**********************************************************************/ 

MSLIB_API void   msModel_Destroy (msModel *pModel); 

MSLIB_API int   msModel_GetMeshCount (msModel *pModel); 
MSLIB_API int   msModel_AddMesh (msModel *pModel); 
MSLIB_API msMesh*  msModel_GetMeshAt (msModel *pModel, int nIndex); 
MSLIB_API int   msModel_FindMeshByName (msModel *pModel, const char *szName); 

MSLIB_API int   msModel_GetMaterialCount (msModel *pModel); 
MSLIB_API int   msModel_AddMaterial (msModel *pModel); 
MSLIB_API msMaterial* msModel_GetMaterialAt (msModel *pModel, int nIndex); 
MSLIB_API int   msModel_FindMaterialByName (msModel *pModel, const char   *szName); 

MSLIB_API int   msModel_GetBoneCount (msModel *pModel); 
MSLIB_API int   msModel_AddBone (msModel *pModel); 
MSLIB_API msBone*  msModel_GetBoneAt (msModel *pModel, int nIndex); 
MSLIB_API int   msModel_FindBoneByName (msModel *pModel, const char *szName); 

MSLIB_API int   msModel_SetFrame (msModel *pModel, int nFrame); 
MSLIB_API int   msModel_GetFrame (msModel *pModel); 
MSLIB_API int   msModel_SetTotalFrames (msModel *pModel, int nTotalFrames); 
MSLIB_API int   msModel_GetTotalFrames (msModel *pModel); 
MSLIB_API void   msModel_SetPosition (msModel *pModel, msVec3 Position); 
MSLIB_API void   msModel_GetPosition (msModel *pModel, msVec3 Position); 
MSLIB_API void   msModel_SetRotation (msModel *pModel, msVec3 Rotation); 
MSLIB_API void   msModel_GetRotation (msModel *pModel, msVec3 Rotation); 
MSLIB_API void   msModel_SetCamera (msModel *pModel, msVec3 Position, msVec2  RotationXY); 
MSLIB_API void   msModel_GetCamera (msModel *pModel, msVec3 Position, msVec2  RotationXY); 
MSLIB_API void   msModel_SetComment (msModel *pModel, const char *pszComment); 
MSLIB_API int   msModel_GetComment (msModel *pModel, char *pszComment, int  nMaxCommentLength); 
MSLIB_API void   msModel_SetFileName (msModel *pModel, const char *pszFileName); 
MSLIB_API int   msModel_GetFileName (msModel *pModel, char *pszFileName, int nMaxFileNameLength); 

Там же функции, как:

msModel_Destroy(msModel *pModel), 

но нет никакой функции, как

msModel * msModel_Destroy(char* file_name); 

Я хочу спросить, есть ли способ обойти эту проблему?

ответ

0

Я только что узнал исходный код для загрузки MS3D модели с программным обеспечением MilkShape 3D Binary модели просмотра, который по ссылке: http://www.milkshape3d.com/

Смежные вопросы