0

DirectX 11 を使用してアニメーション モデルを読み込んでいます。現在、MS3D モデル ファイルを解析する段階にあり、MS3D モデルを読み込むために MS3D SDK ( http://www.milkshape3d.com/ ) を使用する予定です。しかし、この 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);

この問題を回避する方法はありますか?

4

1 に答える 1

0

リンクにあるソフトウェアMilkShape 3D Binary Model ViewerからMS3Dモデルをロードするためのソースコードを見つけました:http: //www.milkshape3d.com/

于 2014-01-16T09:22:08.367 に答える