ケモ足の作り方(ローテーションコンストレイント)

はじめに

今回はケモ足のウェイトやボーン配置、設定について解説します。
ここで解説するのはあくまで1例であり、正解ではありません。
ケモ足の形状や好みなどによって別の方法がいい場合もあることをご了承ください。
今回は2パターン紹介します。

実装結果

パターン①
FootボーンにUpperLegのコンストレイントを入れた方式。

パターン①

メリット:リアルめなケモ足の動き
デメリット:実際の足の動きに連動してないので違和感を感じる

パターン②
ボーン構成そのままにコンストレイントを入れた方式。

パターン②

メリット:足の動きに連動する
デメリット:細い足だとかかとが足を貫いてしまうことがある

主にLowerLegの動きが違うのがわかるかと思います。
撮影に使ったモデルはパターン②をもともと使用しているのでパターン①で少々おかしな点はご容赦ください。

ケモ足の構造

それぞれの作り方を解説する前にケモ足の構造について解説します。
これを理解してモデルを作らないとボーンがあっていても動きが合わないということになりますので注意してください。
また、ケモ足と一口に言ってもいろいろありますが、本稿では以下に解説するものを指します。

人とケモの足

図を見てわかる通り、ケモ足はLowerLegがとても短いです。
対してFootが長く、かかとがUpperLegの近くまであります。
そのためこれに当てはめてボーンを入れるとうまく動作しません。
ケモ足がうまく想像できない人はつま先立ちをし膝を落としてみてください。
モデルを作るときにここはこの部分だなというのを意識して作ることでウェイトを塗るときに迷いません。

なぜうまくいかないのか

ケモ足の構造に沿ってボーンを入れるとうまく動きません。
なぜなのか、答えはunityはHumanoidBoneに準拠しているからです。
それがどういうことなのかというと、足が曲がっていると判断しまっすぐにしようとしたり、曲がる向きがわからなくて変な曲がり方をしたりするわけです。
じゃあHumanoidBoneで作ったらどうなるか、これもなかなかうまくいきません。
(ケモ足度合いによってはそれで行ける場合もあります)
ここで出てくるのがローテーションコンストレイント(RotationConstraint)です。

ローテーションコンストレイントとは

簡単に言えば回転のコピーです。
Aのボーンの回転をBのボーンにコピーする技術になります。

←コンストレイントなし あり→

コンストレイントにはほかにも種類がありますが今回は回転のみを使います。
コンストレイントを使うデメリットとしては若干滑る感じがするという点があります。
またVRM0.xではコンストレイントは使用できません。

作り方

工程は以下の通りです。
①ボーン配置
②ウェイト
③コンストレイント用ボーンの配置
④コンストレイント設定
今回コンストレイント設定に関してはBlenderとUnity両方解説しますが、Blnderの設定をunityに持っていくことはできないのと多少どうしても動作が違ってしまう点にご注意ください。

①ボーン配置

まず先ほどのケモ足の解説通りにボーンを入れます。

こんな感じになってればOK

②ウェイト

続いてこのボーンに沿ってウェイトを付けます。
ケモ足の構造通りにウェイトを入れてください。

パターン①だとLowerはこれよりもう少し下の部分削ってよい

③コンストレイント用ボーンの配置 

パターン①の場合
画像の通りに新しくHipから人足のボーンを配置します。
ポイントとしてはケモ足と人足ボーンのUpperLeg~LowerLegがひし形になるように配置します。
(人足UpperLegがケモ足Footと並行になるように)
また、LowerLeg~Footの関節部分はケモ足ボーンのFoot~Toeの関節に重なるようにします。

このひし形を平行リンク機構というらしいです

簡単な配置方法としては、
①ケモ足UpperLeg~Toeボーンをコピー>Shift+Hでコピーしたボーン以外を非表示に
②LoweLegを選択してぐーと下に
③LowerLeg~Foot関節をケモ足ボーンと重ならなさそうなとこに置く
④Alt+Hで非表示のものを表示
⑤LowerLeg~Foot関節を選択しスナップ機能を使ってケモ足ボーンのFoot~Toeの関節につける
⑥UpperLegの位置を調整
これが比較的やりやすい方法かと思います。

パターン②の場合
画像の通りに新しくHipから人足のボーンを配置します。
こっちの配置は簡単で、ボーンをコピーしてLowerLeg~Footの関節を移動するだけです。

④コンストレイント設定

先に書いた通りBlenderでの設定はUnityに引き継がれません。
Blenderの設定はあくまでウェイトやボーンの位置の確認用です。
またパターン①と②でボーンの振り当てが違いますのでご注意ください。

コンストレイントの設定(Blender)
①ポーズモードに入り、ケモ足ボーンを選択します。
②右側の色々マークが並んでいるところの下から二番目(卵に骨が刺さってるみたいなの)を選択
③回転コピーを追加

これがコンストレイントの設定場所

④それぞれ設定
ターゲット:使用するアーマチュア
ボーン:対応するボーン(画像参照)
ターゲット・オーナー:パターン①=ワールド空間
           パターン②ローカル空間

色々試した結果ターゲット・オーナーは変えないとできませんでした

パターン①に関しては配置がうまければ問題ないですが、ちょっとのずれで足がちょっと傾きます。
ちょっとなら大丈夫ですが、大きくずれる場合は配置を見直してみてください。
(又はコピーしないでボーンを追加した場合はうまくいかないかも)
とりあえずの動作確認用なのでずれを完璧になくそうというのは考えなくて大丈夫です。

コンストレイントの設定(unity)
こちらが本番
①Hierarchyからケモ足ボーンを選択します。
②AddComponent>RotationConstraint
③isActiveにチェック
④Sourcesの+を押してそこに対応するボーンを追加

パターン①お間違えなく

これで完了です。
unity上でチェックする場合はplayを押してから人足ボーンを動かしてチェックしてくさい。

最後に

今回は初心者向けというよりは中級向けの内容でした。
コンストレイントはケモ足のほかにも補助ボーンを使って肘やお尻の丸みを出したり、小物を追従させたり、四足を作ったりなどいろいろできます。
今回紹介した以外にもいろいろなボーンの配置の仕方があります。
再度になりますが、ケモ足の形状や好みによって正解は変わります。
ぜひ自分好みの設定を探してみてください。

VRCにて年に一回「ケモノアバター合同試着会」だいたい三か月ごとに「ケモアバ制作交流会」それぞれ開催しています。

もしご興味ある方がいましたらXアカウントで情報を発信していますのでフォローお願いします。

https://twitter.com/kemo_gou

この記事が気に入ったらサポートをしてみませんか?