ブログの女の子を作る #95 ひじと手首のねじれ過ぎ問題を補助ボーンで修正する【Blender,Unity】
前回はひざを二重関節とUnityのConstraintで修正しました。
今回は、肘と手首を同じ感じで直していきます。
手首のねじれ過ぎ問題は、補助ボーンを3つ使うことで解決しました。
目次
開発環境
・Blender 3.0.0
・CPU:AMD Ryzen 7 3700X
・グラボ:ASUS ROG-STRIX-RTX2060S-O8G-GAMING
(1) 腕をリトポロジーする
現状を確認したあとで、腕のメッシュをリトポロジーしていきます。
修正前のすがた
まずは修正前の状態です。
肘を大きく曲げているポーズにしてみました。
肘の関節がつぶれてしまってますね。
これくらいの角度になると、かなり厳しいようです。なんとか改善していきたい。
腕をリトポロジーで45度ねじる
今回も「みゅーおすしの(@miut_dayo)」様のトポロジーを参考にさせていただきました。
2021年8月24日ツイートの「45度ねじっておく」画像ですね。具体的な画像はリンク先でご確認ください。
Twitter
1 User
6 Pockets
https://twitter.com/miut_dayo/status/1430139135700848644
大変参考になりました。ありがとうございました!
いまのトポロジーです。
メッシュの流れはまっすぐにしてました。
手首の辺りでメッシュを切り離します。
切り離したフチ部分をリング選択し、プロポーショナル編集で45度ねじります。
これくらいでしょうか。
ねじることで肘の裏側が少し上に出てしまいましたので、違和感が無くなるようにメッシュを調整しておきます。
腕と手首をつなげる
あとは腕と手首の頂点をつなげて完了です。
これで良いですね。
もう少し滑らかさが欲しいですね。
「頂点をスムーズに」を実行しておきましょうか。
これでリトポロジーは完了です。
(2) 腕のボーンを修正してみる
次はボーンを修正していきます。
と言っても、まだ良い案が思いつきませんので、いろいろと試していきます。
試し1:手首をねじると細くなる
まずは今の状態で試してみます。
その前に、先ほどリトポロジーしたので頂点のウェイトも変更する必要がありますね。「ペアレント -> 自動のウェイトで」を実行しておきましょう。
これで頂点ウェイトを設定できました。
この状態で手首をねじるとこんな状態に。。。
分かってはいましたが、やはり手首部分だけをねじるとこんな感じになりますね。
試し2:ボーンを2本にしてみる
とりあえず腕のボーンを増やしてみます。
実際の体ではありえませんが。
この状態で、増やしたボーンをねじってみます。
なんか違いますね。もっと滑らかに、と言うか段階的に回転して欲しい。
試し3:腕用の補助ボーンを入れてみる
いまの腕ボーンとは別に、補助ボーンを追加してみます。
追加した補助ボーンにボーンコンストレイントを追加して、手首ボーンに連動して回転するようにしてみました。座標軸の設定では、 Y軸の1軸だけを選択してるのがポイントです。
手首をひねってみると、
やはり微妙です。なんか惜しい気もするのですが。
(3) 肘に補助ボーンを入れる
うまく行きませんね。
手首のひねり問題はいったん置いておき、確実に改善できそうな「肘を大きく曲げると関節がつぶれる」のを先に直しましょう。
補助ボーンを2本入れる
ひざや股関節と同様に、ひじの関節部分に補助ボーンを入れます。
頂点ウェイトを設定後、関節を曲げてみました。
良いですね。単純にひじを曲げるくらいであれば、この対処方法で問題なさそうです。
腕をねじると微妙になる
更に、腕を曲げた状態で腕をねじってみます。
ひじの関節部部に変な盛り上がりができてしまいました。
ウェイトを表示してみます。
腕ボーンはひじ辺りまでありますので、腕ボーン自体をねじってしまうとひじの関節がおかしくなるのは当たり前でした。
そうなると「ひじの関節をねじるのではなく、手首をねじる」必要があるんですが、今度は「手首がねじれ過ぎる問題」が発生します。困った。。
(4) 手首ねじり用の補助ボーンを3本追加する
何か良い方法がないかネットを探していると、急激なねじれを避けるために「小さいボーンを複数連結して、コンストレイントで少しずつねじる」方法があることを知りました。この記事でも試していた「試し2:ボーンを2本にしてみる」に近いですね。
さっそく補助ボーンを3本に増やし、ボーンコンストレイントを入れて試してみましたが、以前の記事で発生した「Blenderの挙動が何かおかしい?」が再発してしまいました。。。
方向性は良いはずのでいろいろと試した結果、なんとか期待通りの動きにできました!
手首ひねり用の補助ボーンを3本追加する
最終形のボーン配置です。
腕ボーンの隣に、手首ひねり用の補助ボーンが3本あります。
重なって分かりにくいので、少し移動してみました。
3本の補助ボーン(LowerArm_Const_L.101,102,103)は、手首ボーン(Hand_00_L)とは直接つながっておらず、ペアレント(親のボーン)を「腕ボーン(LowerArm_L)」に設定してます。
そして、腕ボーンの「変形」のチェックを外すことで、腕の頂点ウェイトをゼロにしています。
この2点がポイントですね。
あとは、それぞれの補助ボーンにボーンコンストレイントを設定し、「影響」の数値を変えることで、手首を回した時に少しずつ腕を回転させています。
基本的な設定は、以下の通り。
・ボーン:手首ボーン(Hand_00_L)
・順序:デフォルト
・座標軸:Yのみ選択
・反転:選択なし
・ミックス:置き換え
・ターゲット:ローカル空間
・オーナー:ローカル空間
「影響」の数値ですが、手首から一番遠い補助ボーンは 0.250。
真ん中のボーンは 0.500。
一番近い補助ボーンは 0.750 に設定しました。
ボーン配置を元の位置に戻しておきましょう。
ウェイトを確認しておく
それぞれのボーンのウェイト状態を確認しておきます。
まずは上腕ボーン(UpperArm_L)です。
腕ボーン(LowerArm_L)にはウェイトがないので紫色ですね。
補助ボーン1本目。
真ん中です。
最後の補助ボーン。
手首ボーンのウェイト範囲は小さいですね。
手首をねじっても自然になった!
この状態で肘を曲げて、手首をねじってみます。
良い感じになりました。
修正前と比べると、かなり自然になったことが分かります。
(5) Unity側で動作確認する
Blender側では問題なさそうですので、Unity側にインポートして動作確認しておきます。
ひじボーンにRotation Constraintを設定する
まずは、設定前の状態です。
腕を曲げると、ひじ裏部分がとんがってます。
ひじボーンにRotation Constraintを設定すると、大きく曲げても関節が丸いままです!
別の角度から見ても問題なさそう。
手首用補助ボーンにもRotation Constraintを設定する
まずは、設定前に手首をねじってみると、
手首がかなり細くなってしまいました。
Blender側とボーンコンストレイントと同じように、Unity側ではRotation Constraintを設定していきます。
まずは1つ目。
真ん中の補助ボーン。
3本目も同様です。「Weightの値」も変えてますよ。
腕がおかしい!
Rotation Constraintを設定した状態で、手首をねじってみます。
良い感じ?ですが、なんか腕の表面がボコボコしてるような。。。
別のポーズをとらせてみると、腕がかなりおかしいことに。。。
腕がまっすぐな状態では問題ないですね。
腕を曲げた時、補助ボーンの動きが想定外になっているようです。
軸を設定し忘れてました
設定を見直したところ、Blender側で設定していた「座標軸:Yのみ選択」を設定し忘れてました。。。
Unity側の設定は「Constraint Settings -> Freeze Rotation Axes」ですね。Y以外のチェックを外しておきましょう。
これで手首をねじっても大丈夫。
良いねじれです。
(6) 動作確認してみる
これでひじと手首の関節が直りました!
せっかくですので、いろんなポーズで動作確認しておきます。服装はメイド服で。
背伸びのポーズ
背伸びのポーズです。
手首が180度回っても大丈夫になりました。
ひじも良いですね。
キックのポーズ
キックのポーズです。
ひじの関節がかなり曲がってますが、なんとか大丈夫そう。
上を見上げるポーズ
上を見上げるポーズです。
関節の見た目は大事ですね。
ネコのポーズ
ネコのポーズです。
良いです!
しゃがみ座り
しゃがみ座りです。
これまでの記事で修正した股関節とひざに加え、今回のひじ・手首でやっと想像していたしゃがみ座りができましたよ。
光の当て方を変えると、ひざのストッキング部分の光沢で丸さが良く分かります。
まとめ
ひじと手首がねじれ過ぎるのを補助ボーンで修正しました。
これで一通りの関節の修正が完了した感じですね。
次は手を修正したい。
コメント
トラックバックは利用できません。
コメント (0)
この記事へのコメントはありません。