MMDを用いたアニメーションにおいて姿勢を変えずに首だけを傾ける手法について(DXライブラリ)
MMDを用いたアニメーションにおいて姿勢を変えずに首だけを傾ける手法について(DXライブラリ)
キャラクタを、現在の姿勢をそのままに首だけを傾けるという処理をしたいです。
(例えば、体は進行方向を向いて、顔は敵の方を向く。等)
その手法として以下の2つを考えました:
1:"右に90度向いているアニメーションデータ"と"左に90度向いているアニメーションデータ"の2つを用意し、
そのブレンド率を操作することで、首の傾きを表現する。
2:ある一つのアニメーションに対して、首を実際に傾けたものを別に何十パターンのアニメーションデータを用意して切り替える。
(一つのアニメーションに対して、首の傾きが、5,10,15,……,170,175,180度のものをすべて用意する。)
この2つの中で実装に現実的な1を選択し、検証してみましたが、結果は添付した動画データのようになってしまいました。 ※なお、この動画のダウンロードはこの問題の検証のためのみに用いられるものとし、
動画を何かしらの素材として、使用、公開などを行うことを禁止します。
私が作りたいのはホラーゲームではないので、もし有効な手段があれば教えていただきたいと思っています。
現在、手法2については試していません。(あまりにもこちらの負荷が大きすぎるので躊躇っています。)
それではお手数ですがよろしくお願いします。
(例えば、体は進行方向を向いて、顔は敵の方を向く。等)
その手法として以下の2つを考えました:
1:"右に90度向いているアニメーションデータ"と"左に90度向いているアニメーションデータ"の2つを用意し、
そのブレンド率を操作することで、首の傾きを表現する。
2:ある一つのアニメーションに対して、首を実際に傾けたものを別に何十パターンのアニメーションデータを用意して切り替える。
(一つのアニメーションに対して、首の傾きが、5,10,15,……,170,175,180度のものをすべて用意する。)
この2つの中で実装に現実的な1を選択し、検証してみましたが、結果は添付した動画データのようになってしまいました。 ※なお、この動画のダウンロードはこの問題の検証のためのみに用いられるものとし、
動画を何かしらの素材として、使用、公開などを行うことを禁止します。
私が作りたいのはホラーゲームではないので、もし有効な手段があれば教えていただきたいと思っています。
現在、手法2については試していません。(あまりにもこちらの負荷が大きすぎるので躊躇っています。)
それではお手数ですがよろしくお願いします。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: MMDを用いたアニメーションにおいて姿勢を変えずに首だけを傾ける手法について(DXライブラリ)
検証用のモデルとソースコードが無いと返答が難しいかと思います。
あと、DXLIBでバグの多い方面ですのでバージョンを最新にしてみて下さい。
あと、DXLIBでバグの多い方面ですのでバージョンを最新にしてみて下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: MMDを用いたアニメーションにおいて姿勢を変えずに首だけを傾ける手法について(DXライブラリ)
softyaさん
返信ありがとうございます。
ライブラリは最新の状態となっています。(Ver3.10a)
やはりこれだけの情報では難しいですよね。
しかし動画で使用したモデルに関しては、権利関係の都合上用意が難しいので、
一度トピックは閉じ、個人で検証を重ねていこうかと思います。
何か分かったらこちらに投稿するように致します。
返信ありがとうございます。
ライブラリは最新の状態となっています。(Ver3.10a)
やはりこれだけの情報では難しいですよね。
しかし動画で使用したモデルに関しては、権利関係の都合上用意が難しいので、
一度トピックは閉じ、個人で検証を重ねていこうかと思います。
何か分かったらこちらに投稿するように致します。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: MMDを用いたアニメーションにおいて姿勢を変えずに首だけを傾ける手法について(DXライブラリ)
ですよね。Priest さんが書きました:やはりこれだけの情報では難しいですよね。
しかし動画で使用したモデルに関しては、権利関係の都合上用意が難しいので、
一度トピックは閉じ、個人で検証を重ねていこうかと思います。
なので、検証用のモデルと書いたのですが、それも難しいですか?
問題が再現さえすれば、別のモデルで構わないと思うんですが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: MMDを用いたアニメーションにおいて姿勢を変えずに首だけを傾ける手法について(DXライブラリ)
では、少しお時間はかかりますが検証用モデルを探してきます。
それと同時に添付するソースコードは、動画のような動作を再現するものとなります。
それと同時に添付するソースコードは、動画のような動作を再現するものとなります。
- Dixq (管理人)
- 管理人
- 記事: 1661
- 登録日時: 13年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: MMDを用いたアニメーションにおいて姿勢を変えずに首だけを傾ける手法について(DXライブラリ)
MMD用に配布されているモデルは比較的緩い利用条件になっているモデルがありますよ。
例えばLat式ミクなんかだと
=== れあどめ.txt 引用 ===
::使用条件::
モデルデータは、版権元のキャラクター利用のガイドラインと同様になります。
その範囲内であればデータの改変・流用を含む利用・再配布等オールOKです。
======================
となっています。
例えばLat式ミクなんかだと
=== れあどめ.txt 引用 ===
::使用条件::
モデルデータは、版権元のキャラクター利用のガイドラインと同様になります。
その範囲内であればデータの改変・流用を含む利用・再配布等オールOKです。
======================
となっています。
Re: MMDを用いたアニメーションにおいて姿勢を変えずに首だけを傾ける手法について(DXライブラリ)
検証用モデルの調達とソースコードできました。
切り張りしていたらどこかでミスしてエラー吐きまくってました。
遅くなってすみません。
添付ファイルからご覧ください。
とりあえず、再配布可の所から拝借させていただきました。
【追記】
Dixqさん、情報ありがとうございます!
探せばいろいろあるものですね。
私はこのキャラクタが好きなのであえてこれを選びました。(は、嘘です
切り張りしていたらどこかでミスしてエラー吐きまくってました。
遅くなってすみません。
添付ファイルからご覧ください。
とりあえず、再配布可の所から拝借させていただきました。
【追記】
Dixqさん、情報ありがとうございます!
探せばいろいろあるものですね。
私はこのキャラクタが好きなのであえてこれを選びました。(は、嘘です
- 添付ファイル
-
- 検証用.zip
- (2.18 MiB) ダウンロード数: 129 回
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: MMDを用いたアニメーションにおいて姿勢を変えずに首だけを傾ける手法について(DXライブラリ)
アニメーション・データで首から上に回転以外のパラメータが見受けられるのですが、右と左に首を回すだけのデータを合成しても同じ事になりますか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: MMDを用いたアニメーションにおいて姿勢を変えずに首だけを傾ける手法について(DXライブラリ)
顔以外をデフォルト位置にして、顔を90度と-90度に傾けたものを用意しアニメーションさせると、右向きと左向きが交互に出ました。
そして、それぞれを45度,-45度にしてみたところ!
首が回りました!
【追記】
しかし、元のデータでうまくいかなかった原因はなんでしょうか?
回転以外のパラメータが変に影響してしまうのでしょうか。
そういった意味では、この実装は厳しそうですか?
そして、それぞれを45度,-45度にしてみたところ!
首が回りました!
【追記】
しかし、元のデータでうまくいかなかった原因はなんでしょうか?
回転以外のパラメータが変に影響してしまうのでしょうか。
そういった意味では、この実装は厳しそうですか?
- 添付ファイル
-
- 検証用 (2).zip
- (2.19 MiB) ダウンロード数: 111 回
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: MMDを用いたアニメーションにおいて姿勢を変えずに首だけを傾ける手法について(DXライブラリ)
回転以外のマトリクスデータが打ち消し合って変な変形を起こしていた可能性があります。
首を回すだけなら、ボーンの回転だけをいじるほうが良いでしょう。
こうしてはどうでしょう?
1.正面向きの上下動のモーション
2.右向きだけのモーション
3.左向きだけのモーション
1と2あるいは1と3をブレンドする。
首を回すだけなら、ボーンの回転だけをいじるほうが良いでしょう。
こうしてはどうでしょう?
1.正面向きの上下動のモーション
2.右向きだけのモーション
3.左向きだけのモーション
1と2あるいは1と3をブレンドする。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: MMDを用いたアニメーションにおいて姿勢を変えずに首だけを傾ける手法について(DXライブラリ)
返答ありがとうございます。
こちらでさらに検証したところ、
上下動のモーションは歪みに影響はないことが分かりました。
首の回転について、例えば、
x軸回転: 4.5度
y軸回転: 80度
z軸回転: 7.8度
↓
x軸回転: 5.3度
y軸回転: -80度
z軸回転: 6.2度
のように、y軸回転以外の角度が微妙に違うと変形を起こしてしまうようです。
これを、
x軸回転: 0度
y軸回転: 80度
z軸回転: 0度
↓
x軸回転: 0度
y軸回転: -80度
z軸回転: 0度
とすると、上下移動があってもうまく回ります。
つまり、複数軸の回転が重なるとおかしくなるような気がします。
こちらでさらに検証したところ、
上下動のモーションは歪みに影響はないことが分かりました。
首の回転について、例えば、
x軸回転: 4.5度
y軸回転: 80度
z軸回転: 7.8度
↓
x軸回転: 5.3度
y軸回転: -80度
z軸回転: 6.2度
のように、y軸回転以外の角度が微妙に違うと変形を起こしてしまうようです。
これを、
x軸回転: 0度
y軸回転: 80度
z軸回転: 0度
↓
x軸回転: 0度
y軸回転: -80度
z軸回転: 0度
とすると、上下移動があってもうまく回ります。
つまり、複数軸の回転が重なるとおかしくなるような気がします。
Re: MMDを用いたアニメーションにおいて姿勢を変えずに首だけを傾ける手法について(DXライブラリ)
DXライブラリってモーション適用後のフレームの行列を操作することはできませんでしたっけ?
首をターゲットに向ける回転行列を作って直接上書きした方が確実だと思うのですが・・・。
首をターゲットに向ける回転行列を作って直接上書きした方が確実だと思うのですが・・・。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: MMDを用いたアニメーションにおいて姿勢を変えずに首だけを傾ける手法について(DXライブラリ)
そうですね。
掛け合わせる順番の問題かもしれませんね。
アニメーションを適用したモデルに、首のフレームからMV1GetFrameLocalWorldMatrixでマトリクス得て、これを回転、再びMV1SetFrameUserLocalMatrixでセットするで行けるかもしれません。
掛け合わせる順番の問題かもしれませんね。
アニメーションを適用したモデルに、首のフレームからMV1GetFrameLocalWorldMatrixでマトリクス得て、これを回転、再びMV1SetFrameUserLocalMatrixでセットするで行けるかもしれません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: MMDを用いたアニメーションにおいて姿勢を変えずに首だけを傾ける手法について(DXライブラリ)
そういえば私の、この方法はどうだったんでしょうか?softya(ソフト屋) さんが書きました:回転以外のマトリクスデータが打ち消し合って変な変形を起こしていた可能性があります。
首を回すだけなら、ボーンの回転だけをいじるほうが良いでしょう。
こうしてはどうでしょう?
1.正面向きの上下動のモーション
2.右向きだけのモーション
3.左向きだけのモーション
1と2あるいは1と3をブレンドする。
2と3さえブレンドしなければ大丈夫だと思ったのですが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: MMDを用いたアニメーションにおいて姿勢を変えずに首だけを傾ける手法について(DXライブラリ)
梨樹さん
ありがとうございます!
実は行列を使った回転、移動、拡大縮小をやったことがないので、少し手間取りそうです。
softyaさん
その件については、まだ検証できていませんが、後ほど検証させていただきます。
結果は失敗した場合のみ動画でアップします。
>アニメーションを適用したモデルに、首のフレームからMV1GetFrameLocalWorldMatrixでマトリクス得て、これを回転、再びMV1SetFrameUserLocalMatrixでセットするで行けるかもしれません。
上記の通り行列になじみはありませんが、余力があれば検証してみます!
ありがとうございます!
実は行列を使った回転、移動、拡大縮小をやったことがないので、少し手間取りそうです。
softyaさん
その件については、まだ検証できていませんが、後ほど検証させていただきます。
結果は失敗した場合のみ動画でアップします。
>アニメーションを適用したモデルに、首のフレームからMV1GetFrameLocalWorldMatrixでマトリクス得て、これを回転、再びMV1SetFrameUserLocalMatrixでセットするで行けるかもしれません。
上記の通り行列になじみはありませんが、余力があれば検証してみます!
Re: MMDを用いたアニメーションにおいて姿勢を変えずに首だけを傾ける手法について(DXライブラリ)
softyaさん
検証の結果、12,13ブレンドでうまくいくことが確認できました!
長時間の検証にお付き合いいただき本当にありがとうございました。
次は行列ですか。 行列かぁ…。
検証の結果、12,13ブレンドでうまくいくことが確認できました!
長時間の検証にお付き合いいただき本当にありがとうございました。
次は行列ですか。 行列かぁ…。
Re: MMDを用いたアニメーションにおいて姿勢を変えずに首だけを傾ける手法について(DXライブラリ)
すごい細かいことですが…、
先ほどの12,13ブレンドだと、上下動モーションの比率の差が出る影響で、上下動の幅にぶれが生じて変に見えてしまうかもしれません。
先ほどの12,13ブレンドだと、上下動モーションの比率の差が出る影響で、上下動の幅にぶれが生じて変に見えてしまうかもしれません。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: MMDを用いたアニメーションにおいて姿勢を変えずに首だけを傾ける手法について(DXライブラリ)
ブレンドの特性上仕方ないかもしれませんが、確かにそっちは問題かもしれませんね。Priest さんが書きました:すごい細かいことですが…、
先ほどの12,13ブレンドだと、上下動モーションの比率の差が出る影響で、上下動の幅にぶれが生じて変に見えてしまうかもしれません。
2と3にも上下動を入れれば解決する気もしますが冗長でメンテナンス性の悪い作業ですので、オススメ出来ません。
隠しでMV1SetAttachAnimBlendRateToFrameってのがあるのを発見。
「MV1SetAttachAnimBlendRateToFrame」
http://hpcgi2.nifty.com/natupaji/bbs/pa ... ew&no=1586
これを首のフレームにだけ適用すれば解決かもしれません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: MMDを用いたアニメーションにおいて姿勢を変えずに首だけを傾ける手法について(DXライブラリ)
>冗長でメンテナンス性の悪い
そうですよね。。。
URLについてはあす以降にじっくりと拝見しようと思います。
見つけていただいてありがとうございます!
そういうの、リファレンスにどんどん乗せて欲しいところですが…w
そうですよね。。。
URLについてはあす以降にじっくりと拝見しようと思います。
見つけていただいてありがとうございます!
そういうの、リファレンスにどんどん乗せて欲しいところですが…w