このごろ3Dに手を出したのですが・・・
モーションのことがよくわかりません。
説明があったりするのですが・・・・まったくわかりません(少しは、わかる)。
ということで、こんな人でもわかるように説明していただけないでしょうか・・・。
あとコードも載せてくれたらうれしいです。
モーションを再生したい!(DxLib)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: モーションを再生したい!(DxLib)
モーションがあるモデル+モーションのファイルは、MMD(ミクミクダンス)などで作成することができます。
で、DXライブラリであれば、リファレンスの真似をしてもらえばアニメーションします。
「MV1AttachAnim」
http://homepage2.nifty.com/natupaji/DxL ... .html#R4N1
【追記】
ここの記事の解説が詳細です。
「わくわくプログラミング自習室 Blogs - 3D Archive」
http://i-libro.net/wpmu/blog/archives/category/3d
【DXライブラリ3D入門】モデルをアニメーションさせよう(前編)と(後編)をお読み下さい。
で、DXライブラリであれば、リファレンスの真似をしてもらえばアニメーションします。
「MV1AttachAnim」
http://homepage2.nifty.com/natupaji/DxL ... .html#R4N1
【追記】
ここの記事の解説が詳細です。
「わくわくプログラミング自習室 Blogs - 3D Archive」
http://i-libro.net/wpmu/blog/archives/category/3d
【DXライブラリ3D入門】モデルをアニメーションさせよう(前編)と(後編)をお読み下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: モーションを再生したい!(DxLib)
MV1AttachAnim関数の説明のとうりにやったのですが、
モーションが再生されませんでした・・・。
どういうことでしょうか?
モーションが再生されませんでした・・・。
どういうことでしょうか?
#include"DxLib.h"
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode(TRUE),SetWindowText("Motion"),DxLib_Init(),SetDrawScreen(DX_SCREEN_BACK);
SetUseZBuffer3D(TRUE);
SetWriteZBuffer3D(TRUE);
int Model=MV1LoadModel("Motio/とげりんご.pmd");
MV1SetPosition(Model,VGet(320.0f,180.0f,0.0f));
MV1SetScale(Model,VGet(5.0f,5.0f,5.0f));
int AttachIndex,TotalTime,PlayTime;
AttachIndex=MV1AttachAnim(Model,0,-1,FALSE);
TotalTime=MV1GetAttachAnimTotalTime(Model,AttachIndex);
PlayTime=0.0f;
while(ProcessMessage()==0&&ScreenFlip()==0&&ClearDrawScreen()==0){
PlayTime+=100.0f;
if(PlayTime>=TotalTime)
PlayTime=0.0f;
MV1SetAttachAnimTime(Model,AttachIndex,PlayTime);
MV1DrawModel(Model);
}
DxLib_End();
return 0;
}
Re: モーションを再生したい!(DxLib)
コードみにくくなっていたので・・
以下がコードです
以下がコードです
#include"DxLib.h"
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode(TRUE),SetWindowText("Motion"),DxLib_Init(),SetDrawScreen(DX_SCREEN_BACK);
SetUseZBuffer3D(TRUE);
SetWriteZBuffer3D(TRUE);
int Model=MV1LoadModel("Motio/とげりんご.pmd");
MV1SetPosition(Model,VGet(320.0f,180.0f,0.0f));
MV1SetScale(Model,VGet(5.0f,5.0f,5.0f));
int AttachIndex,TotalTime,PlayTime;
AttachIndex=MV1AttachAnim(Model,0,-1,FALSE);
TotalTime=MV1GetAttachAnimTotalTime(Model,AttachIndex);
PlayTime=0.0f;
while(ProcessMessage()==0&&ScreenFlip()==0&&ClearDrawScreen()==0){
PlayTime+=100.0f;
if(PlayTime>=TotalTime)
PlayTime=0.0f;
MV1SetAttachAnimTime(Model,AttachIndex,PlayTime);
MV1DrawModel(Model);
}
DxLib_End();
return 0;
}
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: モーションを再生したい!(DxLib)
codeタグの使い方が間違っていますよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: モーションを再生したい!(DxLib)
そのエラーの直接的な回答になるか分かりませんが、
PlayTime+=100.0f;
って進めすぎではないですか?
totaltimeを一瞬で上回って、Playtime=0;になっている可能性があります。
PlayTime+=1.0f;
位にしておきましょう。
PlayTime+=100.0f;
って進めすぎではないですか?
totaltimeを一瞬で上回って、Playtime=0;になっている可能性があります。
PlayTime+=1.0f;
位にしておきましょう。
Re: モーションを再生したい!(DxLib)
動きました!!
ありがとうございました!!
原因は、PlayTimeを一回で100進めていたことでした!
本当にありがとうございました
ありがとうございました!!
原因は、PlayTimeを一回で100進めていたことでした!
本当にありがとうございました