アタッチした3Dモデルが動かない。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
DELTA-Ⅲ

アタッチした3Dモデルが動かない。

#1

投稿記事 by DELTA-Ⅲ » 11年前

初めまして、DELTA-Ⅲと申します。
製作で解決できないので投稿させてもらいます。
3Dデータを表示してアタッチまでは行きましたが、
3Dデータのアニメーションが再生されません。
どうすればいいでしょうか、お願いします。

コード:

//一部
		MV1DrawModel(plc_model[p][pl_[1][p]]);
		MV1SetScale(plc_model[p][pl_[1][p]], VGet( 8.0f, 8.0f, 8.0f ) );
		MV1SetPosition(plc_model[p][pl_[1][p]],dgVGet(0,pl[p].y,pl[p].x));
		if(pl_[1][p]<=2){
			//モデル
			MV1DrawModel(pls_model[p][pls[p]]);
			MV1DrawModel(plm_model[p][plm[p]]);

			MV1SetScale(pls_model[p][pls[p]],VGet(8.0f,8.0f,8.0f));
			MV1SetScale(plm_model[p][plm[p]],VGet(8.0f,8.0f,8.0f));

			MV1SetPosition(pls_model[p][pls[p]],dgVGet(0,pl[p].y,pl[p].x));
			MV1SetPosition(plm_model[p][plm[p]],dgVGet(0,pl[p].y,pl[p].x));

			//傾き
			MV1SetRotationXYZ(plc_model[p][pl_[1][p]],	dVGet((pl[p].xya/16),(-pl[p].xya/16)+(pl[p].ay/16),(pl[p].ax/16)));
			MV1SetRotationXYZ(pls_model[p][pls[p]],		dVGet((pl[p].xya/16),(-pl[p].xya/16)+(pl[p].ay/16),(pl[p].ax/16)));
			MV1SetRotationXYZ(plm_model[p][plm[p]],		dVGet((pl[p].xya/16),(-pl[p].xya/16)+(pl[p].ay/16),(pl[p].ax/16)));

			//アニメーション
			
			MV1SetAttachAnimTime(pls_model[p][pls[p]],pl[p].a[0],pl[p].at[0]);
			MV1SetAttachAnimTime(plm_model[p][plm[p]],pl[p].a[1],pl[p].at[1]);
			
			pl[p].at[1] += 0.2f ;
			if(pl[p].at[1] >= pl[p].af[1])pl[p].at[1] = 0.0f;

		}



アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: アタッチした3Dモデルが動かない。

#2

投稿記事 by softya(ソフト屋) » 11年前

もっと単純なテストコードでの再生は出来ていますでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

DELTA-Ⅲ

Re: アタッチした3Dモデルが動かない。

#3

投稿記事 by DELTA-Ⅲ » 11年前

softya(ソフト屋) さんが書きました:もっと単純なテストコードでの再生は出来ていますでしょうか?
ここのページを実行しても動きませんでした。
また、Lat式ミクも動きません。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: アタッチした3Dモデルが動かない。

#4

投稿記事 by softya(ソフト屋) » 11年前

MMDを完全に再現出来ているわけではないので、動かない場合も有り得ます。
付属ツールのDxLibModelViewerで、まず動作を確認してみてください。

あとDXライブラリのバージョンによりバグっている可能性もありますので最新を使ってみてください。
最新でもダメなら、DXライブラリの管理人さんに相談してみるのも手です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

DELTA-Ⅲ

Re: アタッチした3Dモデルが動かない。

#5

投稿記事 by DELTA-Ⅲ » 11年前

これを打った者です。
softya(ソフト屋)さん、すみません。今度から気を付けます。
何かおかしいと思うので、プログラムをして画面を見せてくれますか?

コード:

#include <DxLib.h>

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
    ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK );

    int AttachIndex ;
    float TotalTime, PlayTime ;

    // 3Dモデルの読み込み
    int ModelHandle = MV1LoadModel( "dat/Lat式ミク/Lat式ミクVer2.3_Normal.pmd" ) ;

    //奥行0.1~1000までをカメラの描画範囲とする
    SetCameraNearFar( 0.1f, 1000.0f ) ;

    //(0,10,-20)の視点から(0,10,0)のターゲットを見る角度にカメラを設置
    SetCameraPositionAndTarget_UpVecY( VGet( -20, 10, -20 ), VGet( 0.0f, 10.0f, 0.0f ) ) ;

    // 3Dモデルの1番目のアニメーションをアタッチする
    AttachIndex = MV1AttachAnim( ModelHandle, 1, -1, FALSE ) ;

    // アタッチしたアニメーションの総再生時間を取得する
    TotalTime = MV1GetAttachAnimTotalTime( ModelHandle, AttachIndex ) ;

    // 再生時間の初期化
    PlayTime = 0.0f ;

    // 何かキーが押されるかウインドウが閉じられるまでループ
    while( !ScreenFlip() && !ProcessMessage() && !ClearDrawScreen() ){
		SetCameraNearFar(0.1f,2700.0f);
		SetupCamera_Ortho(20);

        MV1DrawModel( ModelHandle ) ;
		
		//MV1SetScale(ModelHandle,VGet(12.0f,12.0f,12.0f));
		MV1SetPosition(ModelHandle,VGet(0,-15,0));
		
		MV1SetAttachAnimTime(ModelHandle,AttachIndex,PlayTime);

		PlayTime += 0.2f ;
		if(PlayTime >= TotalTime)PlayTime = 0.0f;

		SetCameraPositionAndTarget_UpVecY( VGet(-48,0,-54), VGet(0,0,0));
    }

    // DXライブラリの後始末
    DxLib_End() ;

    // ソフトの終了
    return 0 ;
}     
書き忘れてしまいましたが使用している物はwin7、VisalC++2010、DXライブラリ VisualC++用(Ver3.11f)です。
表示状態
[thumbnail]http://delta27.sitemix.jp/picture/C++.png[/thumbnail]

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: アタッチした3Dモデルが動かない。

#6

投稿記事 by softya(ソフト屋) » 11年前

DxLibModelViewerでは正常に表示されますか? 情報が欠落すると解決が遅れることに成ります。
Log.txtも貼られたほうが良いでしょう(あちらに)。

それと相互リンクをお願いします。
ここ → DXライブラリ置き場掲示板
のリンクがありません。

ちなみに、私のPCで実行するとこんな感じです。
3d.png
問題解析にLog.txtは重要な情報となりそうです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

DELTA-Ⅲ

Re: アタッチした3Dモデルが動かない。

#7

投稿記事 by DELTA-Ⅲ » 11年前

softya(ソフト屋) さんが書きました:DxLibModelViewerでは正常に表示されますか? 情報が欠落すると解決が遅れることに成ります。
Log.txtも貼られたほうが良いでしょう(あちらに)。

それと相互リンクをお願いします。
ここ → DXライブラリ置き場掲示板
のリンクがありません。
>>softya(ソフト屋)さん
すみません、今度こそ気を付けます。
DxLibModelViewerでは正常に動作をしていました。
コードはDXライブラリ質問掲示板の方で置かせてもらいます。
http://hpcgi2.nifty.com/natupaji/bbs/pa ... ew&no=3295

あと、少々放置をさせてもらいます。
色々迷惑をかけてすみません。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: アタッチした3Dモデルが動かない。

#8

投稿記事 by softya(ソフト屋) » 11年前

あちらにあるLog.txtを見るとDXライブラリ Ver3.05で動作している様に見えます。
DXライブラリ VisualC++用(Ver3.11f)では無い様です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

DELTA-Ⅲ

Re: アタッチした3Dモデルが動かない。

#9

投稿記事 by DELTA-Ⅲ » 11年前

softya(ソフト屋) さんが書きました:あちらにあるLog.txtを見るとDXライブラリ Ver3.05で動作している様に見えます。
DXライブラリ VisualC++用(Ver3.11f)では無い様です。
ゲームの方はVer3.11fで制作していますが、http://dixq.net/g/でダウンロードしたファイルで実行していますが、
両方同じ結果になっています。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: アタッチした3Dモデルが動かない。

#10

投稿記事 by softya(ソフト屋) » 11年前

DELTA-Ⅲ さんが書きました:
softya(ソフト屋) さんが書きました:あちらにあるLog.txtを見るとDXライブラリ Ver3.05で動作している様に見えます。
DXライブラリ VisualC++用(Ver3.11f)では無い様です。
ゲームの方はVer3.11fで制作していますが、http://dixq.net/g/でダウンロードしたファイルで実行していますが、
両方同じ結果になっています。
Log.txtなど客観的なチェックをお願いします。
出来るだけ主観を交えず客観的に物事を見ることが解決のための早道です。
※ 人は間違いますし、思い込みで勘違いします。

DxLibModelViewerで正常に見れるならなにか違いが有るはずです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

DELTA-Ⅲ

Re: アタッチした3Dモデルが動かない。

#11

投稿記事 by DELTA-Ⅲ » 11年前

把握はしましたが、
さっきのデバックでは動いていました。しかしメインの方では動いていませんでした。
とりあえずメインの方を見てくれますか?Releaseのみです。 http://kie.nu/1Ti1
見えづらいですがガトリングガンが回転するようにしています。(多分ゆっくり回っておる。)
これで最後にします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: アタッチした3Dモデルが動かない。

#12

投稿記事 by softya(ソフト屋) » 11年前

STGの様ですが、とりあえず起動します。
問題点を教えてくれないと何を確認してよいか分からないです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

DELTA-Ⅲ

Re: アタッチした3Dモデルが動かない。

#13

投稿記事 by DELTA-Ⅲ » 11年前

softya(ソフト屋) さんが書きました:STGの様ですが、とりあえず起動します。
問題点を教えてくれないと何を確認してよいか分からないです。
忘れていました。すみません。
今の問題はガドリングが回転しない。
のみです。
また、付属の.exeも起動して下さい。
プロジェクト自体に問題が有るのかと思いまして

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: アタッチした3Dモデルが動かない。

#14

投稿記事 by softya(ソフト屋) » 11年前

「DXライブラリ置き場 3D関係関数リファレンスページ」
http://homepage2.nifty.com/natupaji/DxL ... .html#R1N1
ここに有るとおりモーションのファイル名にルールが有りますが、ガトリングガンはルールから外れているようです。
そこを直しても動かないのですが、プログラム自体の問題は2010がうまく動かない状況のため確認できておりません。
ビューアでは自動的に読み込まれてアニメが動くことは確認しました。
時間があったら自分でコードを書いてみますが、明日までお待ちください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

DELTA-Ⅲ
記事: 21
登録日時: 11年前

Re: アタッチした3Dモデルが動かない。

#15

投稿記事 by DELTA-Ⅲ » 11年前

突然のコメントですみません。DELTA-Ⅲです。
ユーザーを登録しました。お世話になると思いますのでよろしくお願いします。
softya(ソフト屋) さん、コードはどうでしょうか?
まだ原因が分からないのでお願いします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: アタッチした3Dモデルが動かない。

#16

投稿記事 by softya(ソフト屋) » 11年前

すいません。忙しくて忘れておりました。
データも行方不明です。
申し訳ないですがガトリングガンがちゃんと動かない事のテストプログラム(それだけに特化した物)とガトリングガンデータだけ、ここの添付機能で添付してもらえますか。
アップローダだと消えてしまいますので。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

DELTA-Ⅲ
記事: 21
登録日時: 11年前

Re: アタッチした3Dモデルが動かない。

#17

投稿記事 by DELTA-Ⅲ » 11年前

softya(ソフト屋) さんが書きました:すいません。忙しくて忘れておりました。
データも行方不明です。
申し訳ないですがガトリングガンがちゃんと動かない事のテストプログラム(それだけに特化した物)とガトリングガンデータだけ、ここの添付機能で添付してもらえますか。
アップローダだと消えてしまいますので。
テストプログラムが上手く作れなかったので、自分なりにテストプログラムぐらい簡略化した物を用意します。
しかし「ファイル添付」でファイル選択した後、ファイルの追加を押しても添付ができないです。どうすれいいですか?
申し訳ありません。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: アタッチした3Dモデルが動かない。

#18

投稿記事 by softya(ソフト屋) » 11年前

zipにすれば添付できるはずです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
へにっくす
記事: 634
登録日時: 13年前
住所: 東京都

Re: アタッチした3Dモデルが動かない。

#19

投稿記事 by へにっくす » 11年前

softya(ソフト屋) さんが書きました:zipにすれば添付できるはずです。
ただし8MB以内のようですね(下の画像のように投稿時のファイル添付タグでzipにマウスをあてると許可サイズがツールチップで出ます)。
20140702_dixq_t15014_image_01.png
許可サイズがみれる。
20140702_dixq_t15014_image_01.png (63.35 KiB) 閲覧数: 11381 回
ふつうソースだけなら、そこまで行くことはないはずですが。
written by へにっくす

DELTA-Ⅲ
記事: 21
登録日時: 11年前

Re: アタッチした3Dモデルが動かない。

#20

投稿記事 by DELTA-Ⅲ » 11年前

>>へにっくすさん、
気がつきませんでした、すみません。

コードは容量オーバーは無かったのですが、他のデータでオーバーをしていた様なので
それを落としてzipにしました。
STG_sv_00 - コピー.zip
(1.14 MiB) ダウンロード数: 199 回
コードというよりプロジェクトですが見てください。

ガトリングガンが動いていません。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: アタッチした3Dモデルが動かない。

#21

投稿記事 by softya(ソフト屋) » 11年前

結論から言えば、ほとんどのアニメ関数で引数が間違っています。
まぁ、配列の添字がすごくてバグらずに書く自信は私にもないですが、もっと書き方を考えないとバグが取れる方が不思議です。
で答えを書いても良いのですが、ご自身でまずリファレンスの確認とデバッガで各アニメ系関数の戻り値の確認をしてもらったほうが勉強になりそうです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

DELTA-Ⅲ
記事: 21
登録日時: 11年前

Re: アタッチした3Dモデルが動かない。

#22

投稿記事 by DELTA-Ⅲ » 11年前

>>softya(ソフト屋) さん、
一部のコードが間違っていました。
そのコードの修正したものを上げますので見てください。
► スポイラーを表示
報告失礼しました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: アタッチした3Dモデルが動かない。

#23

投稿記事 by softya(ソフト屋) » 11年前

まだ、間違っているので再確認を。
戻り値って本当に確認されてますか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

DELTA-Ⅲ
記事: 21
登録日時: 11年前

Re: アタッチした3Dモデルが動かない。

#24

投稿記事 by DELTA-Ⅲ » 11年前

softya(ソフト屋) さんが書きました:まだ、間違っているので再確認を。
戻り値って本当に確認されてますか?
すみませんでした。確認をし忘れていました。
しかし、お手上げの状態です。
リファレンスを見ても戻り値を確認をしても
戻り値が-1では無と思っていますがガトリングガンが回りません。

今の状態
plm_model[0][0] = MV1LoadModel("dat/mdl/pl/mg.pmx");
pl[0].a[1] = MV1AttachAnim(plm_model[0][0], 0, -1, FALSE);
pl[0].af[1] = MV1GetAttachAnimTotalTime(plm_model[0][0],pl[0].a[1]);

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: アタッチした3Dモデルが動かない。

#25

投稿記事 by softya(ソフト屋) » 11年前

それで回りませんか? 私の所ではゆっくり回転してます。pl[0].af[1]などの値も正常ですよね?
それと pl[0]だったり、pl[p]だったり混在します。ご本人が間違いやすいプログラムの構造は再検討したほうが良いでしょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

DELTA-Ⅲ
記事: 21
登録日時: 11年前

Re: アタッチした3Dモデルが動かない。

#26

投稿記事 by DELTA-Ⅲ » 11年前

すみません、最新の3.12aにしたら、ちゃんと動くようになりました。
しかし、メインではアタッチの変数が0x0b1de778と言うのが入っているらしく、きちんと動作しません。

コード:

plsa[p][0] = MV1AttachAnim(pls_model[p][pls[p]],0, -1, FALSE );
pl[p].af[0] = MV1GetAttachAnimTotalTime(pls_model[p][pls[p]],plsa[p][0]);

plsa[p][1] = MV1AttachAnim(plm_model[p][plm[p]],0, -1, FALSE );
pl[p].af[1] = MV1GetAttachAnimTotalTime(pls_model[p][pls[p]],plsa[p][1]);

もし足りなければ教えてください。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: アタッチした3Dモデルが動かない。

#27

投稿記事 by softya(ソフト屋) » 11年前

とりあえず引数の配列の添字の関係がややこしすぎでバグらないほうが不思議って感想でしょうか。
pl[p].af[1] = MV1GetAttachAnimTotalTime(pls_model[p][pls[p]],plsa[p][1]);
って間違ってません?
こんなトコでつまずいてるよりも、もっと分かりやすくしないとバグ出すために組んでいるようなものですよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

DELTA-Ⅲ
記事: 21
登録日時: 11年前

Re: アタッチした3Dモデルが動かない。

#28

投稿記事 by DELTA-Ⅲ » 11年前

>>softya(ソフト屋) さん、
単純なミスでした。すみません。
今後は混在しない様に構造を考えます。
色々、ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る