T0R0のブロマガ
スカートベルト埋まり対策
2014-08-18 17:40:37
EndressStormさんのタカオにいれたスカートベルト埋まり対策構造の説明です。
タカオさん衣装もちでこの赤で囲んだ部分のベルトが足動かすとがんがんめり込むのでその対策の構造を入れました。

対策済みの動きはこちら(右側が対策済みの構造を入れています。)
■構造の説明
使用ボーン:以下の選択されたボーンを使用しています。

基本的な考えとしては
①足を前方に上げた場合
「右足R・右足軸1・右足軸2」の回転を移動に変換する構造で
ベルトIKを上方に移動させます。
②足を真横に上げた場合
「右足B・右足B先・右足BIK」でIKでZ軸の回転を取り出しその回転で
ベルト親を回転させベルトIKを上方に移動させます。
①はKAWARAの徒然備忘草【つれつれわすれそう】にある「直線往復機構」を利用しています。
②はIKの回転制限を利用した回転の各X/Y/Z値を取り出す仕組みを利用しています。
■①の構造について
以下のボーンが①の構造で構成されるボーンになります。

「右足R・右足軸1・右足軸2」に「右足D」の回転を渡し「右足軸2」をY軸上方に移動するようにしています。
各ボーンの設定値は以下のとおりとなります。
・右足R
このボーンに「右足D」の回転を渡します。
位置などは右足Dと同じ値です。

・右足軸1
このボーンに「右足D」の「-2」の回転を渡します。
このボーンのZ座標を調整するとY方向の最大移動量が決定します。

・右足軸2
このボーンに「右足D」の「1」の回転を渡します。

・ベルト親
ベルトIKの親ボーンです。このボーンの親を「右足軸2」とすることで「右足D」から取り出した回転を利用してベルトIKを上に移動しています。

・ベルトIK
角度制限で「Z:-40度から5度」とし余計な角度まで動かないように制限しています。

動作例としては以下のようになります。
動作前

↓
IKで前方上方に足を動かした場合。

■②の構造について
以下のボーンが②の構造で構成されるボーンになります。

「右足B・右足B先・右足BIK」から「右足D」のZ軸回転を取得し「ベルト親」に回転値を渡しています。
各ボーンの設定値は以下のとおりとなります。
・右足B
「右足」もしくは「右足D」のコピーです。

・右足B先
「右ひざ」もしくは「右ひざD」のコピーです。
右足Bが親ボーンとなります。

・右足BIK
「右ひざ」もしくは「右ひざD」のコピーです。
右足Dが親ボーンとなります。
IKLink:右足B
IKTarget:右足B先
右足Bの角度制限は「Z:-60から0」
Loop・単位角については特に意味はありません。
これで右足の動きをZ回転で「-60度から0度」まで取り出します。

・ベルト親
右足BIKから取り出した右足Dの角度を回転連動にて渡します。
連動ボーン:右足B
付与率:0.11(この値は実際に動かして微調整しています。この値でなければならないわけではありません。)

動作例は以下の様になります。
動作前

↓
右足を横上方に動かした場合。

■ベルトのウェイトについて
ベルトのウェイトは以下の様になっています。全ての頂点にウェイトを塗っているわけではありません。

以上です。
タカオさん衣装もちでこの赤で囲んだ部分のベルトが足動かすとがんがんめり込むのでその対策の構造を入れました。

対策済みの動きはこちら(右側が対策済みの構造を入れています。)
■構造の説明
使用ボーン:以下の選択されたボーンを使用しています。

基本的な考えとしては
①足を前方に上げた場合
「右足R・右足軸1・右足軸2」の回転を移動に変換する構造で
ベルトIKを上方に移動させます。
②足を真横に上げた場合
「右足B・右足B先・右足BIK」でIKでZ軸の回転を取り出しその回転で
ベルト親を回転させベルトIKを上方に移動させます。
①はKAWARAの徒然備忘草【つれつれわすれそう】にある「直線往復機構」を利用しています。
②はIKの回転制限を利用した回転の各X/Y/Z値を取り出す仕組みを利用しています。
■①の構造について
以下のボーンが①の構造で構成されるボーンになります。

「右足R・右足軸1・右足軸2」に「右足D」の回転を渡し「右足軸2」をY軸上方に移動するようにしています。
各ボーンの設定値は以下のとおりとなります。
・右足R
このボーンに「右足D」の回転を渡します。
位置などは右足Dと同じ値です。

・右足軸1
このボーンに「右足D」の「-2」の回転を渡します。
このボーンのZ座標を調整するとY方向の最大移動量が決定します。

・右足軸2
このボーンに「右足D」の「1」の回転を渡します。

・ベルト親
ベルトIKの親ボーンです。このボーンの親を「右足軸2」とすることで「右足D」から取り出した回転を利用してベルトIKを上に移動しています。

・ベルトIK
角度制限で「Z:-40度から5度」とし余計な角度まで動かないように制限しています。

動作例としては以下のようになります。
動作前

↓
IKで前方上方に足を動かした場合。

■②の構造について
以下のボーンが②の構造で構成されるボーンになります。

「右足B・右足B先・右足BIK」から「右足D」のZ軸回転を取得し「ベルト親」に回転値を渡しています。
各ボーンの設定値は以下のとおりとなります。
・右足B
「右足」もしくは「右足D」のコピーです。

・右足B先
「右ひざ」もしくは「右ひざD」のコピーです。
右足Bが親ボーンとなります。

・右足BIK
「右ひざ」もしくは「右ひざD」のコピーです。
右足Dが親ボーンとなります。
IKLink:右足B
IKTarget:右足B先
右足Bの角度制限は「Z:-60から0」
Loop・単位角については特に意味はありません。
これで右足の動きをZ回転で「-60度から0度」まで取り出します。

・ベルト親
右足BIKから取り出した右足Dの角度を回転連動にて渡します。
連動ボーン:右足B
付与率:0.11(この値は実際に動かして微調整しています。この値でなければならないわけではありません。)

動作例は以下の様になります。
動作前

↓
右足を横上方に動かした場合。

■ベルトのウェイトについて
ベルトのウェイトは以下の様になっています。全ての頂点にウェイトを塗っているわけではありません。

以上です。