使用milkshape3d SDK加载MS3D文件



我正在使用DirectX 11加载一个动画模型。现在我正在解析MS3D模型文件,并计划使用MS3D SDK(http://www.milkshape3d.com/)用于加载MS3D模型。但这个SDK似乎是用来在Milkshape建模软件中编写插件的,而不是在一个独立的程序中。SDK中附带的示例是一个DLL,如下所示:

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);

我想问一下有没有办法解决这个问题?

我刚刚从软件MilkShape 3D二进制模型查看器中找到了加载MS3D模型的源代码,该软件位于链接:http://www.milkshape3d.com/

最新更新