トップページ > 記事閲覧
vmdファイルをMMDと別ディレクトリで管理する方法
名前:108EAA0A 日時: 2017/11/14 23:11

複数のvmdファイルを別のフォルダにまとめて管理しているDXライブラリ製のソフトを見かけたので、ぜひその仕組みが知りたいと思い挑戦してみたのですが、上手く行きませんでした。 最初はMV1SetLoadModelAnimFilePathでやればいいのかと思ったのですが、複数読み込む方法がわからず… そこでDXライブラリのソースコードを拝見したところMV1LoadModelでvmdファイルを読み込めそうと思ったので、 MV1LoadModelで読み込んだものをMV1AttachAnimの第3引数に渡してみたところ、-1は帰って来なかったのですが初期ポーズから動きませんでした。 MV1GetAttachAnimTotalTimeで正しい値が取得できたため、アタッチ自体は成功しているようです。 pmxを使っているのが原因かとも思ったのですが、MMD付属のあにまさ式ミクを使っても改善しませんでした。 方法は合っているものの何か間違えているのか、他にやり方があるのかがわからず、質問させて頂いた次第です。 VSC++版及びC#版で確認しています。 お忙しいとは思いますが時間のある時にでもお願いいたしますm(_ _)m
メンテ

Page: 1 |

Re: vmdファイルをMMDと別ディレクトリで管理する方法 ( No.1 )
名前:管理人 日時:2017/11/15 01:31

> 最初はMV1SetLoadModelAnimFilePathでやればいいのかと思ったのですが、複数読み込む方法がわからず… 複数のフォルダから vmdファイルを読み込みたいのでしょうか? フォルダが一つだけでしたら MV1SetLoadModelAnimFilePath で vmdファイルがあるフォルダを指定すれば良いのですが… > そこでDXライブラリのソースコードを拝見したところMV1LoadModelでvmdファイルを読み込めそうと思ったので、 > MV1LoadModelで読み込んだものをMV1AttachAnimの第3引数に渡してみたところ、-1は帰って来なかったのですが初期ポーズから動きませんでした。 > MV1GetAttachAnimTotalTimeで正しい値が取得できたため、アタッチ自体は成功しているようです。 すみません、DXライブラリのアニメーションシステムは MikuMikuDance のアニメーションシステムとは構造が異なるので、 pmx( 又は pmd ) と vmd の読み込みでは、MikuMikuDance のアニメーションデータを無理矢理DXライブラリ方式の アニメーションデータに変換している関係で 『pmx( 又は pmd ) と vmd を別々に読み込んでおいて後から MV1AttachAnim で vmd のアニメーションを pmx( 又は pmd ) に適用する』 ということが現状ではできません m(_ _;m
メンテ
Re: vmdファイルをMMDと別ディレクトリで管理する方法 ( No.2 )
名前:108EAA0A 日時:2017/11/15 01:43

> 複数のフォルダから vmdファイルを読み込みたいのでしょうか? いえ、1つのフォルダにまとめておき、管理しやすくなればと思いました。 MV1SetLoadModelAnimFilePathでフォルダ指定をすることで読み込めるはずとのことなので最初に試した際に何か間違ったのかもしれません。 もう一度試してみようと思いますm(_ _)m ちなみに、 最初に挙げさせて頂いたソフトでは、vmdファイルの名前は「vmdファイルのあるフォルダ名+000から始まる連番(ループはLを最後に追加)」という制約があったのですが、 関数自体にこういった決まりはあったりするのでしょうか?
メンテ
Re: vmdファイルをMMDと別ディレクトリで管理する方法 ( No.3 )
名前:108EAA0A 日時:2017/11/15 11:12

以下のようなプログラムを組んでみたのですが、MV1GetAnimNumで0が返ってきてしまいました。 アタッチにも失敗しているようで、MV1AttachAnimで-1が返ってきてしまいます。 MV1SetLoadModelAnimFilePathの使い方が間違っているのでしょうか? モーションファイル名はMotion000L.vmdとMotion001.vmdにしてあります。 #include "DxLib.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { ChangeWindowMode(TRUE); SetDrawScreen(DX_SCREEN_BACK); if (DxLib_Init() == -1) return -1; SetUseZBuffer3D(TRUE); SetWriteZBuffer3D(TRUE); SetCameraPositionAndTarget_UpVecY({ 0,0,-50 }, { 0,0,0 }); MV1SetLoadModelAnimFilePath("Resource/Motion"); int modelHandle = MV1LoadModel("Resource/Model/初音ミク.pmd"); int N = MV1GetAnimNum(modelHandle); // 0が返ってくる int attachIndex = MV1AttachAnim(modelHandle, 0); // -1が返ってくる float playTime = 0; float totalTime = MV1GetAttachAnimTotalTime(modelHandle, attachIndex); while (!ProcessMessage() && !CheckHitKey(KEY_INPUT_ESCAPE)) { ClearDrawScreen(); playTime += 0.5f; if (playTime >= totalTime) playTime = 0; MV1SetAttachAnimTime(modelHandle, attachIndex, playTime); MV1DrawModel(modelHandle); ScreenFlip(); } DxLib_End(); return 0; }
メンテ
Re: vmdファイルをMMDと別ディレクトリで管理する方法 ( No.4 )
名前:管理人 日時:2017/11/15 23:46

> MV1SetLoadModelAnimFilePathの使い方が間違っているのでしょうか? > モーションファイル名はMotion000L.vmdとMotion001.vmdにしてあります。 はい、pmdファイル名が『初音ミク.pmd』でしたら、vmdファイルは 『初音ミク000L.vmd』『初音ミク001.vmd』である必要があります よろしければお試しください m(_ _)m
メンテ
Re: vmdファイルをMMDと別ディレクトリで管理する方法 ( No.5 )
名前:108EAA0A 日時:2017/11/16 00:00

vmdファイルを『初音ミク000L.vmd』『初音ミク001.vmd』に変更してみたのですが同じく失敗してしまいました… 他に何か修正すべき点はありますでしょうか?
メンテ
Re: vmdファイルをMMDと別ディレクトリで管理する方法 ( No.6 )
名前:管理人 日時:2017/11/16 00:15

失礼しました vmdファイルのファイル名は Motion000L.vmd と Motion001.vmd のままで大丈夫でした orz MV1SetLoadModelAnimFilePath に渡す文字列を MV1SetLoadModelAnimFilePath("Resource/Motion/Motion"); にしてみてください m(_ _;m ( 000L.vmd や 001.vmd などの数字の部分の直前までのファイル名を含める、が正しかったです… )
メンテ
Re: vmdファイルをMMDと別ディレクトリで管理する方法 ( No.7 )
名前:108EAA0A(解決) 日時:2017/11/16 19:11

無事再生できました! 本当にありがとうございます m(_ _)m
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存