トップページ > 記事閲覧
一部のMMDモーションについて物理演算を無効にする
名前:みや 日時: 2016/04/05 20:04

3Dゲームを作っています。 他のモーション(歩く、立っているなど)のときは大丈夫なのですが、ジャンプしたときにスカートがめくれあがってしまいます。 物理演算の影響だと思われるのですが、これを直す良い方法はないでしょうか。 一つ自分で考えたのは、ジャンプのモーションのみ物理演算を無効で読み込むという方法です。 これは出来るのでしょうか? ちなみにモデルはMV1LoadModel("test.pmd")で読み込んでおり、同じフォルダ内にtest000.vmd、test001.vmdなどの モーションデータを入れて同時に読み込ませています。 また、ジャンプモーションではスカートがめくれあがる以外の物理演算の影響(髪が揺れる)はあっていいので、 出来れば、物理演算を有効のままスカートがめくれあがるのだけを何とかする方法があればそちらを教えていただきたいです。 何卒よろしくお願いします。
メンテ

Page: 1 |

Re: 一部のMMDモーションについて物理演算を無効にする ( No.1 )
名前:管理人 日時:2016/04/11 03:21

> 一つ自分で考えたのは、ジャンプのモーションのみ物理演算を無効で読み込むという方法です。 > これは出来るのでしょうか? あるモーションだけ物理演算を無効にするということは可能です > また、ジャンプモーションではスカートがめくれあがる以外の物理演算の影響(髪が揺れる)はあっていいので、 > 出来れば、物理演算を有効のままスカートがめくれあがるのだけを何とかする方法があればそちらを教えていただきたいです。 うーんどうやってスカートの剛体かどうかを判断しましょうか… 「スカート」という語句が入っている剛体の動きを無効にするといったことなら可能そうですが、 それで良いでしょうか?
メンテ
Re: 一部のMMDモーションについて物理演算を無効にする ( No.2 )
名前:みや 日時:2016/04/11 21:28

> あるモーションだけ物理演算を無効にするということは可能です すみませんが、その方法を簡単に概略だけでも教えていただけないでしょうか? もしくは参考になるサイトがありましたら教えてください。 > 「スカート」という語句が入っている剛体の動きを無効にするといったことなら可能そうですが、 『「スカート」という語句が入っている剛体』というのはフレームのことでしょうか? フレームのことでしたら、DXLibのモデルビューワで見てみたところ、次のURLの画像のように スカートという名前の入ったフレームがありました。 www13097uf.sakura.ne.jp/images/sukato.bmp このフレームの動きを無効にするというのが可能であれば、すみませんがそれも簡単に教えていただけないでしょうか。 いろいろと教えていただきたいことが多くてすみませんが、何卒よろしくおねがいします。
メンテ
Re: 一部のMMDモーションについて物理演算を無効にする ( No.3 )
名前:管理人 日時:2016/04/12 02:51

> すみませんが、その方法を簡単に概略だけでも教えていただけないでしょうか? > もしくは参考になるサイトがありましたら教えてください。 あ、すみません『現在はできませんが、そのような機能を作成することは可能です』という意味です なので現在の機能ではそのような処理は実現できません > このフレームの動きを無効にするというのが可能であれば、すみませんがそれも簡単に教えていただけないでしょうか。 すみません、こちらも『現在はできませんが、このような機能を作成すれば希望の処理となりそうでしょうか?』 といった意味でした、なので現時点ではまだ『スカート』の語句が入った剛体を無効にする機能はありません 次の週末に作業できればと思いますが、既に一つお待たせしてしまっている機能があるのでもしかしたら 次の週末では実装が終わらないかもしれません… ともあれ、申し訳ありませんが少しお時間をください m(_ _;m
メンテ
Re: 一部のMMDモーションについて物理演算を無効にする ( No.4 )
名前:みや 日時:2016/04/12 07:56

実装して頂けるのであればとてもありがたいですが、申し訳ないです。 もし、このような機能の要望が少ないと思われるのであれば、無理に実装していただかなくてもなのですが、 実装してもらえるのであれば、一つ目のあるモーションだけ物理演算を無効にするという機能だけの実装でも大丈夫です。 あと、こちらとしても急いでいるわけではないので、管理人さんの時間の都合で実装していただいて結構です。 ご迷惑をおかけして申し訳ありません、いろいろとありがとうございます。
メンテ
Re: 一部のMMDモーションについて物理演算を無効にする ( No.5 )
名前:管理人 日時:2016/04/18 00:23

すみません、この週末に作業を完了することが出来ませんでした 申し訳ありませんが次の週末までお時間をいただければと思います m(_ _;m > 実装してもらえるのであれば、一つ目のあるモーションだけ物理演算を無効にするという機能だけの実装でも大丈夫です。 恐らくDXライブラリでのvmdモーションのループ指定のようにvmdのファイル名で物理無効の指定をする形になると思います > あと、こちらとしても急いでいるわけではないので、管理人さんの時間の都合で実装していただいて結構です。 わかりました ただ、「何時でも良い」となると何時までも実装作業を行わないままになってしまうことが多いので、 次の週末に( バグ対応などを除いて )最優先で実装作業をしようと思います
メンテ
Re: 一部のMMDモーションについて物理演算を無効にする ( No.6 )
名前:みや 日時:2016/04/19 20:44

返信が遅くなり申し訳ありません。 > 恐らくDXライブラリでのvmdモーションのループ指定のようにvmdのファイル名で物理無効の指定をする形になると思います はい、大丈夫です。 > 次の週末に( バグ対応などを除いて )最優先で実装作業をしようと思います 大変恐縮ですが、よろしくお願いします。
メンテ
Re: 一部のMMDモーションについて物理演算を無効にする ( No.7 )
名前:管理人 日時:2016/04/24 02:43

お待たせしました、物理演算を一部無効にする機能を作成しましたので、 よろしければこちらをダウンロードしてください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_DevCppTest.exe // Dev-C++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) まず、vmdのファイル名に L を付けるとループモーションになるのと同じ感覚で、 NP の2文字を付けるとそのモーションの物理演算が『全て』無効になります 『全て』無効ではなく、『一部の剛体についてのみ』無効にするには今回追加した以下の関数を使用します // 読み込むモデルの物理演算を特定の剛体のみ無効にするための名前のワードを追加する // ( 追加できるワード文字列の最大長は 63 文字、追加できるワードの数は最大 256 個 ) int MV1AddLoadModelDisablePhysicsNameWord( const TCHAR *NameWord ) ; // MV1AddLoadModelDisablePhysicsNameWord で追加した剛体の無効ワードをリセットして無効ワード無しの初期状態に戻す int MV1ResetLoadModelDisablePhysicsNameWord( void ) ; // MV1AddLoadModelDisablePhysicsNameWord で追加した剛体の無効ワードの適用ルールを変更する int MV1SetLoadModelDisablePhysicsNameWordMode( int DisableNameWordMode /* DX_LOADMODEL_PHYSICS_DISABLENAMEWORD_ALWAYS 等 */ ) ; // モデルファイル読み込み時の物理演算無効名前ワードのモード #define DX_LOADMODEL_PHYSICS_DISABLENAMEWORD_ALWAYS (0) // 全てのファイルに対して無効名ワードを適用する #define DX_LOADMODEL_PHYSICS_DISABLENAMEWORD_DISABLEPHYSICSFILEONLY (1) // vmdファイル名に NP を含めた「物理演算無効」のファイルに対してのみ無効名ワードを適用する( この場合、無効名ワードが適用されない剛体については物理演算が行われる ) まず、例えば「スカート」という単語が含まれる剛体の物理演算を無効にしたい場合は MV1LoadModel で読み込む前に MV1AddLoadModelDisablePhysicsNameWord( "スカート" ) ; を実行しておきます、そして、もし全角文字列の「スカート」も無効にしたい場合は MV1AddLoadModelDisablePhysicsNameWord( "スカート" ) ; も実行しておきます、このように幾つも「無効ワード」を登録することができます( 最大 256 個 ) そして MV1ResetLoadModelDisablePhysicsNameWord() ; を実行することで登録したワードをリセットすることができます あと、上記の関数で登録した無効ワードは初期状態では全てのモーションに対して有効なので、 それを前述の NP を vmd のファイル名に含めたファイルにのみ効果を適用するには、 MV1LoadModel でモデルファイルを読み込む前に MV1SetLoadModelDisablePhysicsNameWordMode( DX_LOADMODEL_PHYSICS_DISABLENAMEWORD_DISABLEPHYSICSFILEONLY ) ; を実行して、無効ワードを適用する対象を NP を vmd のファイル名に含めたファイルにのみに 限定するように設定を変更してください
メンテ
Re: 一部のMMDモーションについて物理演算を無効にする ( No.8 )
名前:みや 日時:2016/05/03 17:02

またまた返信が遅くなり申し訳ありません。 機能を追加してくださり本当にありがとうございます。 また、実装の時間を割いていただいたことにとても感謝しています。 その後、自分のゲームの機能の追加削除があり、ちょっと今すぐは実行確認できなくなっているのですが、多分うまくいくだろうと思います。 もうちょっと実装が進めば、実行確認できて報告できると思うので、それまでもうしばらくお待ちください。 管理人様、今回実装していただいて本当に感謝しています。ありがとうございました。 このスレッドで報告しようと思いますので、まだ解決にはしないでおきます。
メンテ

Page: 1 |

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

   クッキー保存