我正在使用 DirectX 11 加载动画模型。现在我正处于解析 MS3D 模型文件的步骤,我计划使用 MS3D SDK ( http://www.milkshape3d.com/ ) 来加载 MS3D 模型。但是这个SDK似乎是用来在Milkshape Modeling Software中编写插件的,而不是在一个独立的程序中。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);
我想问有什么办法可以解决这个问题吗?