suidouya(水道屋)がMMDとかメタセコとかPMDEとかで色々?
ぬっぽんで書いた何か(6)腕の角度と捩じりボーン
2013-08-23 20:20:59この記事は私が以前に「ぬっぽん」で書いていた事の転載になります。
平成25年5月5日に書いたものです。
腕の角度とかそんなに重要なのかネ?
という話があります
AスタンスとかTスタンスとかIスタンスとかの話です
Aスタンス、私は「えーすたんす」とか「あろーすたんす」とか呼んでるのですが
殆どのMMDモデルはコレですね
モデリングする場合はTスタンスが多いんじゃないかな?
Tスタンスでモデリングしておいてから最終的にAスタンスに変えているパターンが多いはず
「何でMMDモデルのデフォルトはAスタンスなんだろう」
という理由は明確で
「配布されているモーションがAスタンスモデルだから」
なんですね
MMDのモデルではモーションデータを読み込ませればそれなにり格好が付くようにAスタンスがデフォルトになっています。
ではTスタンスのモデルにAスタンスのモーションを読み込ませた場合はどうなるか?
結論としては、「動きます、でも何か変w」
当たり前すぎるのですが、単純に腕の角度が全く合っていないのが原因ですね。
では、肩と腕ボーンの間に「腕バイアス」というボーンを付けて、TスタンスモデルをMMD上で擬似的にAスタンスにした場合どうなるか
この場合は「やっぱり微妙」という結果になる筈です。
この原因は「”腕捩”、”手捩”、”腕”、”肘”を捩じるから」からなのです
捩じりを使っていないモーションもあるから確かめてみてね?
たとえばコレとか
捩じりボーンについてはこちらで説明されてます
http://www6.atwiki.jp/vpvpwiki/pages/154.html
そして、腕の角度の違いからくる捩じりボーンでの問題は既出で動画やブログなんかにも上がっていたりします
ココとかわかり易いですね
回避出来る出来ないとかコメがありますが、ボーン設定ちょこっとどうどうしただけではPMDでもPMXでも回避出来ませんw
何でこういう事が起きるのかといえば、先に上げた動画でも説明があっった通り「モーションデーダがグローバル基準で記録されているから」なのです
モデル毎の角度の違いやローカル軸設定とか軸制限とかはガン無視してグローバルで回りますw
MMD上でモデルの捩じりボーンをローカルで回してから、そのボーンを角度設定で開いてみてください。グローバルに変換されていることがわかるでしょう。
ローカルで~軸で回してみた結果がグローバルで記録されているのですね
腕の角度が違う場合の捩じりボーンの挙動は、捩じりボーンを頂点とした中心軸が元モデルの腕の角度とした円錐になります。腕やひじもです
普通は90度以上は回さないですし、のそ差もせいぜい数度なのでそう大事にはならないのですが、それでも上腕がへの字に曲がるのが解るかと思います。
モーションデータ流用時に違和感がある場合はこのあたり確認するといいかもしれません
ここからが本題になります、この「へにょん」を回避する方法は無いか、という話になります
Aスタンスモデル同士の数度の差なら、腕がへの字にならなくなる方法はありますよ、という話
「腕捩じりをヒジ、手捩じりを手首と同じ点に置く」
というもの
(腕捩とヒジの距離)×SIN(モーション元モデルの腕の角度-使うモデルの腕の角度)=ヒジの位置の狂い
なので、「腕捩」と「ひじ」の距離が0ならば「位置は狂わない」という事になります。
への字にはなりません。
ウエイトの問題も腕ボーンの延長上にあるわけで修正は容易かと思います
実際には捩じりぼーんが使いにくくなってしまうので、こんな感じになるかと思います
腕→ 腕捩じり
↓付与
腕→(捩じり付与(非表示)→ひじ)
ひじ→手首捩じり
↓付与
ひじ→(手首捩じり付与(非表示)→手首)
同色は同点
…わかりにくいかなぁ(--;
丁度 みあVer4.22 さんが腕角度キツメで変化がわかり易いかな?
未亜さんの所に配布許可を貰うか次回バージョンUPに役立ててもらうか、ふむ
(加筆:その後のやりとりで採用された様子なので是非DLなのです)
いじってみると解るかもー
への字になるよりはマシというものですから極端に角度が違う場合には問題がありますけどね。
ひじの曲がり方に腕の角度の差が出ますが、ひじの位置とねじれる角度が正しくなるのは構造によっては必須じゃないかな?
AとTでの直接の互換性確保は厳しいです
45近く狂っていると最大で90度くらいの差異になりますから(--;
でもロボとかはIKの角度制限もグローバル基準なのでTにしたいのです
私が取っている手法としては
「モーションを受け入れるAスタンスを内包したTスタンス構造にする」というのが解決方法としてはありますAスタンスとTスタンスを何らかの方法で重ねてAスタンス側から操るのです
重ねる手法等は色々ありますし、デザインや必要な構造を考えなければいけません。
私の場合は「読み込めば使える」を目指しているのでIKを使っていますが、ボーンモーフでも良いですね
ボーンモーフを使うなら
1 肩と腕の間に腕バイアスを挟む
2 ウエイトの乗ったTスタンスをボーンモーフでAスタンス側と重ねる
3モーションを受け入れるAスタンス側の付与で動かす
でも良いと思います
かなりヘンテコ構造なので意味不明かもしれませんが。出来ない事は無いという事です。
どーしても必要が無ければこんな難しい事をする必要も無いのですけどね……おや?この記事あんまり意味が無い?w
ブロマガにそようかと思ったら意味不明だったので、とりあえず日記にしてみた
ということでした…わかりにくいわこの記事(--;
P.S.
大阪の勉強会…ででさんが謎構造については「しえらさんとか水道屋さんとかね」というようなコメントがあった…
聞いてないよーw
あと参加者さんの「何でそこで水道屋さんが出てくるんだろー(ぽっかーん)」な反応が想像出来て…なんかこー微妙ですw
という話があります
AスタンスとかTスタンスとかIスタンスとかの話です
Aスタンス、私は「えーすたんす」とか「あろーすたんす」とか呼んでるのですが
殆どのMMDモデルはコレですね
モデリングする場合はTスタンスが多いんじゃないかな?
Tスタンスでモデリングしておいてから最終的にAスタンスに変えているパターンが多いはず
「何でMMDモデルのデフォルトはAスタンスなんだろう」
という理由は明確で
「配布されているモーションがAスタンスモデルだから」
なんですね
MMDのモデルではモーションデータを読み込ませればそれなにり格好が付くようにAスタンスがデフォルトになっています。
ではTスタンスのモデルにAスタンスのモーションを読み込ませた場合はどうなるか?
結論としては、「動きます、でも何か変w」
当たり前すぎるのですが、単純に腕の角度が全く合っていないのが原因ですね。
では、肩と腕ボーンの間に「腕バイアス」というボーンを付けて、TスタンスモデルをMMD上で擬似的にAスタンスにした場合どうなるか
この場合は「やっぱり微妙」という結果になる筈です。
この原因は「”腕捩”、”手捩”、”腕”、”肘”を捩じるから」からなのです
捩じりを使っていないモーションもあるから確かめてみてね?
たとえばコレとか
捩じりボーンについてはこちらで説明されてます
http://www6.atwiki.jp/vpvpwiki/pages/154.html
そして、腕の角度の違いからくる捩じりボーンでの問題は既出で動画やブログなんかにも上がっていたりします
ココとかわかり易いですね
回避出来る出来ないとかコメがありますが、ボーン設定ちょこっとどうどうしただけではPMDでもPMXでも回避出来ませんw
何でこういう事が起きるのかといえば、先に上げた動画でも説明があっった通り「モーションデーダがグローバル基準で記録されているから」なのです
モデル毎の角度の違いやローカル軸設定とか軸制限とかはガン無視してグローバルで回りますw
MMD上でモデルの捩じりボーンをローカルで回してから、そのボーンを角度設定で開いてみてください。グローバルに変換されていることがわかるでしょう。
ローカルで~軸で回してみた結果がグローバルで記録されているのですね
腕の角度が違う場合の捩じりボーンの挙動は、捩じりボーンを頂点とした中心軸が元モデルの腕の角度とした円錐になります。腕やひじもです
普通は90度以上は回さないですし、のそ差もせいぜい数度なのでそう大事にはならないのですが、それでも上腕がへの字に曲がるのが解るかと思います。
モーションデータ流用時に違和感がある場合はこのあたり確認するといいかもしれません
ここからが本題になります、この「へにょん」を回避する方法は無いか、という話になります
Aスタンスモデル同士の数度の差なら、腕がへの字にならなくなる方法はありますよ、という話
「腕捩じりをヒジ、手捩じりを手首と同じ点に置く」
というもの
(腕捩とヒジの距離)×SIN(モーション元モデルの腕の角度-使うモデルの腕の角度)=ヒジの位置の狂い
なので、「腕捩」と「ひじ」の距離が0ならば「位置は狂わない」という事になります。
への字にはなりません。
ウエイトの問題も腕ボーンの延長上にあるわけで修正は容易かと思います
実際には捩じりぼーんが使いにくくなってしまうので、こんな感じになるかと思います
腕→ 腕捩じり
↓付与
腕→(捩じり付与(非表示)→ひじ)
ひじ→手首捩じり
↓付与
ひじ→(手首捩じり付与(非表示)→手首)
同色は同点
…わかりにくいかなぁ(--;
丁度 みあVer4.22 さんが腕角度キツメで変化がわかり易いかな?
未亜さんの所に配布許可を貰うか次回バージョンUPに役立ててもらうか、ふむ
(加筆:その後のやりとりで採用された様子なので是非DLなのです)
いじってみると解るかもー
への字になるよりはマシというものですから極端に角度が違う場合には問題がありますけどね。
ひじの曲がり方に腕の角度の差が出ますが、ひじの位置とねじれる角度が正しくなるのは構造によっては必須じゃないかな?
AとTでの直接の互換性確保は厳しいです
45近く狂っていると最大で90度くらいの差異になりますから(--;
でもロボとかはIKの角度制限もグローバル基準なのでTにしたいのです
私が取っている手法としては
「モーションを受け入れるAスタンスを内包したTスタンス構造にする」というのが解決方法としてはありますAスタンスとTスタンスを何らかの方法で重ねてAスタンス側から操るのです
重ねる手法等は色々ありますし、デザインや必要な構造を考えなければいけません。
私の場合は「読み込めば使える」を目指しているのでIKを使っていますが、ボーンモーフでも良いですね
ボーンモーフを使うなら
1 肩と腕の間に腕バイアスを挟む
2 ウエイトの乗ったTスタンスをボーンモーフでAスタンス側と重ねる
3モーションを受け入れるAスタンス側の付与で動かす
でも良いと思います
かなりヘンテコ構造なので意味不明かもしれませんが。出来ない事は無いという事です。
どーしても必要が無ければこんな難しい事をする必要も無いのですけどね……おや?この記事あんまり意味が無い?w
ブロマガにそようかと思ったら意味不明だったので、とりあえず日記にしてみた
ということでした…わかりにくいわこの記事(--;
P.S.
大阪の勉強会…ででさんが謎構造については「しえらさんとか水道屋さんとかね」というようなコメントがあった…
聞いてないよーw
あと参加者さんの「何でそこで水道屋さんが出てくるんだろー(ぽっかーん)」な反応が想像出来て…なんかこー微妙ですw