LightWaveで二次元キャラ系人物モデリング奮闘記 ―手指FK編―

最終更新:2016/12/05

手の指にはIK(インバース・キネマティクス)を設定しないで、FK(フォワード・キネマティクス)のままにしてある。手の指はFKにすることが多いというので盲目的にそれに倣っていたわけだけど、なぜ手の指だけはFKのほうがいいのかという理由まではよくわかっていなかった。

最近ようやくその理由がわかった。まったく合理的なもので、FKなら「5本の指をひとつのコントローラで一度に操作できる」から。具体的には、5本指の全関節のボーン旋回をまとめて、ひとつのコントローラ・オブジェクトの回転に追従させるようにする。こういった設定を3DCG分野では一般にコンストレイン(Constrain = 拘束)と言う。

手は狭い範囲に関節が集中するところなのでIKを使いたくなるんだけど、IKの場合それぞれの指先にひとつずつゴールオブジェクトが必要になる。指の折り曲げ方の加減を個別に決められる反面、手を握ったり開いたりするような単純な動作をさせる場合でも単純に5本分の手間がかかる。また、IKを設定した関節の角度はゴールオブジェクトの位置から逆算的に求められるので、ある関節だけ曲げ、ある関節だけ伸ばすといった制御が難しくなる。

コンストレインをうまく利用すると、手のおおまかな握り方はコントローラで決定し、それぞれの指の調整が必要な場合は直接指定といったことができるようになる。ただ、それを実現するためには熟慮した設定が必要になるため、IKよりも手間がかかる。リグというのは本当に奥が深くて、直感的な操作を可能にしようとすればするほど設定は複雑になっていく傾向にある。

本記事ではLightWave 2015のGENOMA2を利用しているけど、標準機能のスケルゴンやボーンを利用しても設定可能。LightWaveでいつからコンストレインができるようになったかは定かではないけど、少なくともLW 9.6の頃には既に使えていた。

ボーンの二重化

単純に5本指を握ったり開いたりするだけで良ければ、既存のボーンの「回転アイテム」にコントローラ・オブジェクトを指定すれば全部の指を同時に操作できるようになる。ただ、そうした場合は文字通り回転アイテムに完全に拘束されてしまうので、個別にヘディングやピッチを直接入力してもその値は無効となり、コントローラ以外の方法で指を操作できなくなる。

そこで、コンストレイン用のボーンを作成し、ボーンを二重化する。次の画像は初期状態。

HandFK000

いずれかのボーンを選択し、Ctrl+Cでコピーし、Ctrl+Vで同じ場所にペーストする。次の画像は中指の根元のボーンを選択した状態。

HandFK001

選択を解除しないで拡大縮小ツール(Shift+H)で適度な大きさまで縮小する。アクションの中心は「選択範囲モード」を使用する。

HandFK002

どのボーンがコンストレイン用なのか判別できればいいので、大きさは任意。あまり目立たないようにと思い、だいぶ小さくしてしまって後で選択しにくくなってしまったので、50%前後がちょうどいいかもしれない。

HandFK003

コンストレイン用のボーンを選択し、スナップドラッグ(Snap)ツール(Shift+G)の数値入力ウィンドウで「全ポイント」を指定する。

HandFK004

本来のボーンの根元にスナップさせる。スナップドラッグではポイントの結合はしないので、浮動スケルゴンになっているけど、理論上はこのままでもコンストレイン用のボーンとして機能する。もののついでなので、指の関節の長さを調節した。指の第3関節の長さを100%とした時、第2関節はその75%、第1関節は更にその75%(つまり、第3関節の56.25%)にすると美しく見えるそうだ。

HandFK005

同様にして、5本指のすべてのボーンに対してコンストレイン用のボーンを作成する。手間のかかる作業だけど、リギング作業というのは究極的にはこういう地味な作業の繰り返しなので、目的に対して作業のコストがかかりすぎると思う場合は省略してもいい。そういった割り切りもリギングのうちとも言える。

コンストレイン用のボーンを作成し終わったら、次の画像のように判別しやすいようなスケッチ色をつけておく。また、余裕があったらGENOMAプロパティの「アイテム」タブでアイテム色を「レッド」に設定しておくとレイアウトでも赤いボーンとして表示されるので視覚的に識別しやすくなる。

HandFK006

GENOMA2を使っている場合は、コンストレイン用のボーンに一括でコントローラを指定できる。上の画像で赤色のボーンを選択し、「GENOMA編集」のセットのドロップダウンメニューから「コントローラ」を選択する。

HandFK007

次の画像は5本指のもっとも手のひらに近いボーンのコントローラ設定。握ったり開いたりする他に、指を揃えたりジャンケンのパーのように開いた状態を実現するためにピッチもコンストレインしている。

HandFK008

次の画像はその他の指の関節に相当するボーンのコントローラ設定。指の途中からピッチ方向に旋回してしまうと骨折したようになってしまうので、ヘディング方向だけコンストレインしている。

HandFK009

GENOMA2を利用している場合は、モデラーでボーンの親子関係を変更しておく。これまで使っていたボーンをコンストレイン用のボーンの子になるように設定し、コンストレイン用のボーンをその前の節のボーンの子になるようにする。GENOMAは親子関係を特に指定してある場合はスケルゴンツリーを無視するので、従来のスケルゴンの接続を切り離す必要はない。

途中で頭が混乱してくるかもしれないけど、最悪レイアウトでGENOMAリグを組ませてみて確認してもいいので、地道に作業する。この親子関係を言葉で説明するとわかりにくいので、次のスケマティックビューを見てもらったほうが理解しやすいだろう。

HandFK027

右手への複製

右手は基本的に鏡面X(Mirror X)で左手を複製するんだけど、GENOMAスケルゴンの場合は内部的に様々な設定が入っているので、ただ複製してリネームしただけだと何かの設定が競合又は衝突するようで、レイアウトでGENOMAリグを編成する際にLightWaveがクラッシュする。

そこで、次の画像のようにいったんGENOMAのタグを消去して通常のスケルゴンに戻した。まさかクラッシュするとまでは思っていなかったので右手のボーンを全部削除してしまったんだけど、よくよく考えてみたらボーン・ウェイトの設定も消してしまったことになるので、従来のボーンは活かしておいて、コンストレイン用のボーンだけ鏡面複製するほうが賢明。もし、原因不明のクラッシュが頻発する場合はGENOMAタグの消去を試してみると改善するかもしれない。

HandFK010

右手のセットアップをほとんどやり直す羽目になったけど、右手も左手と同様に設定した状態が次の画像。

HandFK011

コンストレイン用のボーンにはボーン・ウェイトを設定してなくても大丈夫だとは思うんだけど、左手と重複するウェイトが設定してあるのはさすがに問題なので、スケルゴンツリーで確認しておく。

左手を右手に複製した時にポイントを共有するボーンがすべて結合されてしまったので、ツリーとしてはかなり不可解な状態になっている。GENOMA2を使わない場合は、このままレイアウトにもっていって、親子関係をSceneEditorなどで修正することになる。

HandFK012

スケルゴンツリーの「ウェイトマップ」欄をダブルクリックするとボーン・ウェイトの設定を変更できるので、左手のウェイトが割り当たっている場合は右手のものに変更する。

HandFK013

コンストレインの設定

手を握ったり開いたりする動作は人差し指から小指まで同じヘディングで制御するので設定は同様でいいんだけど、指を水平に開いたり閉じたりする動作はピッチ制御で行うので、中指を基準(0倍)にして外側に行くほど大きくなるように倍率を変えて設定する。次に例示する各設定はGENOMA2を利用した場合のもの。

中指

自分の手を動かしてみればわかると思うけど、指を水平方向に開いたり閉じたりしても中指はほとんど動かない。これを利用してピッチの基準にする。コントローラ・オブジェクトのピッチに影響を受けないように、「x / +」の「x」側を「0.0」にする。

なお、GENOMA2で「回転アイテム」を指定しておくこともできるけど、モデラー上に存在しないアイテム名を指定するとレイアウトでGENOMAリグの作成に失敗する。今回はレイアウトで後付けでコントローラを追加するので「NONE」のままにしている。

HandFK014

GENOMA2を使わない場合は、レイアウトで次の画像のように設定する。「回転アイテム」に指の制御用のNullオブジェクトを指定してある。他の設定は同様なので、中指だけ例示しておく。

HandFK028

薬指

薬指はコントローラのピッチの影響を通常通り受けるので、「x / +」の「x」側を「1.0」のままにしておく。水平方向に開く方をピッチのプラスにしているけど、マイナス方向にしたい場合は「-1.0」にすればいい。

HandFK015

小指

小指は薬指よりも更に外側に開くので、「x / +」の「x」側を「2.0」にし、コントローラのピッチの影響を2倍にする。

HandFK016

人差し指

人差し指は薬指とは反対方向に開くので、正負を反転させる。「x / +」の「x」側を「-1.0」にし、コントローラのピッチの影響を逆にする。

HandFK017

親指

親指が結構難問で、次の画像の設定でもうまくいっているかどうかは今のところなんとも言えない。親指は他の指とは異なり、握り方向がピッチに寄っているので、少なくとも追跡するコントローラの成分を入れ換える必要がある。ヘディングはコントローラのピッチを、ピッチはコントローラのヘディングを追跡するようになっている。右手の場合は更に正負を逆転させる必要が出てくることもあるので、予想しきれなくなったらレイアウトでテストしてみて影響量を判断する。

HandFK018

リグのテスト

レイアウトでGENOMAリグを作成した後、コントローラ用のNullオブジェクトを作成し、コンストレイン用のボーンに参照させる。コントローラの指定はSceneEditorで複数のボーンを一度に選択して右クリック、「操作」-「モーションオプション」でまとめて設定できるので、GENOMAの使用に関わらず片手ごとに1回で済むはず。

なお、コントローラ用のNullオブジェクトは手首のIK用のNullオブジェクトの位置にコンストレインしてある。コントローラはできれば手に近い場所にあったほうがいい。

次の画像はGENOMAリグを作成した直後のニュートラルの状態。赤く見えるのがコンストレイン用のボーン。

HandFK019

次の画像はコントローラのピッチを「10°」に設定した状態。水平方向に指が開いているのがわかる。

HandFK020

次の画像はコントローラのピッチを「-10°」に設定した状態。水平方向に指が揃えられているのがわかる。

HandFK021

次の画像はコントローラのヘディングを「30°」に設定した状態。5本の指が一斉に握る方向に曲がっているのがわかる。

HandFK022

次の画像はコントローラのヘディングを「30°」、ピッチを「-10°」に設定した状態。5本の指が揃えられた状態で握る方向に曲がっているのがわかる。これでコンストレインのテストは終了。

HandFK023

次に、コントローラのヘディングを「80°」、ピッチを「-10°」に設定し、ジャンケンのグーの状態にした上で、コンストレインで拘束されていない青いボーンを選択し、ヘディングを「-80°」にすることで人差し指と親指を伸ばしている。コンストレインで拘束されている赤いボーンは下を向いているけど、強制的に前を向かせているのがわかる。

HandFK024

GENOMA2での親子関係の設定が正しくできていれば、SceneEditorにおけるボーンの階層構造は次の画像のような形になっている。GENOMAを使わない場合は、このようなツリーになるように親子関係を設定する。親子関係を変更することでオブジェクトの形状が崩れてしまう場合はコンストレイン用のボーンのボーン・ウェイトを削除するか、「中心点回転記録」を有効にすると改善することがある。

HandFK025

途中経過

レイアウトでの操作を簡単にするためとは言え、リグを結構本気でやろうとすると非常に手間がかかることがよくわかった。CGアニメーションの制作会社にはリグを専門に担当する技術者がいるというのも納得できる。

ただ、手間はかかるものの、このようなリギング作業を済ませておくと、コントローラ・オブジェクトをひとつ回転させるだけで手の握り具合を簡単に制御できるようになり、指の制御を億劫に感じなくなる。一度この感覚を覚えてしまうと、指を1本ずつ操作するのが非常に面倒に思えてくる。

LightWaveの欠点ともされるボーンとモデルの変更がレイアウトに即座に同期しないという特徴も、考えようによってはボーンやNullオブジェクトの設定をまったく変更しないでモデルのレイヤーだけ入れ換えることで別の人物モデルにリグをすべて移行できるということでもあるため、大変な思いをするのは一度だけでいいという長所にもなる。

HandFK026

指の関節の長さを見直してみたけど、苦労した割にはあまり変わっていない気もする。たぶん、太さや曲がり始める箇所のウェイトの見直しも同時に必要なのだろう。

関連記事

参考記事


LightWaveで二次元キャラ系人物モデリング奮闘記 ―GENOMA2編―

最終更新:2016/09/06

本記事はボーン下半身IK上半身IKの設定が済んでいることを前提としたものです。設定の詳細は各記事をご覧ください。


ボーンやIKの設定を済ませてしまってから、よくよく測ってみたら腕が短かった、胴体のバランスが悪かった、脚が長かったといった事態は常に起こりうる。全体のバランスを調整すると関節の位置も変動するので当然ながらボーンの位置や長さが変わる。

LightWaveの場合、モデラーとレイアウトが独立しているため、モデラーでスケルゴンを編集するだけではレイアウトには反映されないばかりか、スケルゴン変換やSkelegon Readerを使ってオブジェクトに組み込まれたスケルゴンからボーンを生成するとIKなどの設定はすべて消えてしまい、最初からやり直すことになる。できればそういった二度手間は避けたい。

そこで、LightWave 2015から実装されたGENOMA2を利用して極力レイアウトでのリグの組み直しの手間を減らす方法を考えた。

GENOMA「2」と言うからにはGENOMA「1」に相当するものがあったわけなんだけど、GENOMA2は厳密にはGENOMA1の単なるバージョンアップ版ではない。LightWave 11.5で実装されたGENOMAはプリセットとしてコンポーネント化されたリグパーツを組み合わせることで本来は熟練が必要な高度なリグを簡単な手順で導入できるようにしたもの。それに対し、GENOMA2はそういったリグパーツを根本から開発するためのプラットフォームという位置づけになっている。

最初からリグにGENOMAを使うことを前提としてモデリングしていた場合はいいけれど、既に従来のスケルゴンでリグを組んでしまったモデルには即座に応用できないという問題があった。GENOMAのプリセットには適当なスケルゴン名が付けられているため、それらに名前をつけ、ボーン・ウェイトを割り当てるところから始めなければならず、大幅に戻り作業が発生してしまう。何より、せっかく組んだリグを破棄しなければならないというのは精神的につらい。

GENOMA2を利用すれば、従来のスケルゴンを活かしつつボーン・ウェイトの再設定も発生させることなくリグを新しいものに入れ換えることができる。本来はこういった目的で使うものではないけど、リグを更新するための手段と割り切って使うことにする。

GENOMA2セットアップ

最初はモデラーで操作する。まず、モデルに組み込んであるスケルゴンを抽出し、別のレイヤーに移す。モデルにはスケルゴンを残さない。ポリゴン状態ウィンドウ(Wキー)を利用すると簡単に取り出すことができる。

GENOMA000

スケルゴンだけ取り出した状態が次の画像。これをGENOMA2用のスケルゴン(以下、GENOMAスケルゴン)に変換する。変換後は全部を元に戻すのは困難なので、どこか別のレイヤーにバックアップをとっておくといいだろう。

GENOMA001

すべてのスケルゴンを選択し、「セットアップ」メニューグループにある「GENOMA編集」サブグループの「セット」のドロップダウンメニューから「デフォルトタグ」を選択する。

GENOMA002

しばらく待ち時間があり、計算が終わると次の画像のような、いつものスケルゴンより太めのスケルゴンが生成される。

GENOMA003

従来はレイアウトで実施していたボーンに対する設定をここで行う。対象のスケルゴンを選択し、「プロパティ」を選択すると設定ウィンドウが表示される。一部の設定を除き、一度にひとつのスケルゴンしか設定できない。レイアウトで行える設定はすべて実施できると考えていい。

各所のボーンに上半身IKや下半身IKで行った設定とまったく同じ設定を施す。ここだけはどうしても二度手間が発生してしまうけど、これが最後と思えば少しはやる気にもなるだろう。

「アイテム」タブではアイテム種別(Item Type)の他、ボーンの色や見え方を設定できる。「モデラー形状を無処理(Leave Modeler Shape Intact)」という設定は標準タイプのくさび形のボーンではなく、特殊な形状のボーンとして表示させたい場合に使用する。

GENOMA004

「ギズモチャンネル有効(Active Gizmo Channels)」はレイアウトでアイテムを選択した時に当たり前のように出る移動を示す矢印、回転を示す円といった3軸のGUIコントローラを表示し有効にするかどうかの設定。ゴールオブジェクトをはじめとするコントローラ系のオブジェクトには設定しておかないと直接数値を入力することでしか制御できなくなる。逆に言えば、従来のNullオブジェクトを使ったリグで邪魔だったギズモを表示されないように制限することができるということ。

GENOMA026
位置用ギズモチャンネルの例。特定の軸だけ表示することもできる。

表示にあるとおり、Nullオブジェクトもモデラーで作ってしまえるんだけど、レイアウトでのNullオブジェクトが1点だけの方向のない座標なのに対し、2点を指定するスケルゴンとして作成する必要があり、三次元的なベクトルができる。詳しく調べていないのでなんとも言えないけど、レイアウトに移した時にXYZの3軸が入れ替わってしまうローカルな座標系になってしまい、プラス方向が上なのか下なのかわからなくなってしまってコントローラやゴールオブジェクトとして役に立たないという事態が起きた。

次の画像の「形状」タブではレイアウトでのボーンの表示のされ方を設定する。通常のボーンの場合は変更する必要はない。レイアウトで見やすいようにラベルをつけたり、特別な色を着けたりすることもできるけど、リグに熟達してから使うようにしても遅くない。

なお、上の「アイテム」タブで「モデラー形状を無処理」を選択した場合か、Nullオブジェクトを選択した場合に限り「アイテム形状」で指定した形で表示される。ボーンの場合はレイアウトでのみ形状が変わるというちょっとクセのある仕様。

GENOMA005

次の画像の「ボーン」タブでは、レイアウトでのボーンの「アイテムプロパティ」とほぼ同じ設定ができる。うっかりすると忘れてしまいそうになるウェイト関連の設定をあらかじめしておけるのは助かる。

GENOMA006

次の画像の「IK」タブではレイアウトの「モーションオプション」の「IKとモディファイヤ」タブに相当する設定ができる。ゴールオブジェクトも設定できるんだけど、上でも書いたとおりNullオブジェクトの座標系がいまひとつわかりにくく、レイアウトとは感覚が異なるので、慣れないうちはここで設定してしまわないほうがいい。存在しないゴールオブジェクトを指定するとリグ作成の際にエラーになるので、「NONE」のままにしておく。

GENOMA007

次の3つの画像の「位置」、「回転」、「スケール」タブではレイアウトの「モーションオプション」の「制御と制限」タブに相当する設定ができる。

GENOMA008

次の画像の「回転」タブは重要。IKに関係するボーンの場合は必要に応じてピッチ制御とヘディング制御に「インバースキネマティクス」を忘れずに設定しておく。

GENOMA009

シンプルな人物モデルの場合は次の画像の「スケール」タブで設定することはほとんどないだろう。

GENOMA010

次の画像の「エクスプレッション」タブでは特殊な制御を数式として登録したい場合に使用する。構文が決まっていて、ほぼプログラムと言ってもいいレベルなので、よほど難しいリグを組む場合でない限り使うことはないだろうけど、参考までに。

GENOMA011

次の画像の「スクリプト」タブではGENOMAを利用してリグを編成する際に実行させたいスクリプトを指定できる。これも高度なので利用する機会は少ないと思うけど、GENOMAが実行されている間だけ存在していて、編成が完了したら当該スケルゴンを自己消滅させてレイアウトには表示されないようにするスクリプトなんかを置いておくことができる。

GENOMA012

GENOMAスケルゴンの設定が済んだら、それをコピーしてモデルのあるレイヤーにペーストして組み込む。その後、オブジェクトを保存(Sキー)し、レイアウトに移る。

GENOMAリグの作成

「アイテム」タブの「置き換え」を利用して既存のモデルをGENOMAスケルゴンを組み込んだモデルと入れ換える。既存のボーンを綺麗に削除しておかないとGENOMAでリグを編成する際にエラーの元になる。SceneEditorを開き、Rootボーンの配下に子オブジェクトがないか確認する。

GENOMA013

Rootボーンの配下にオブジェクトがある場合はモーションオプションでモデルの直下に移動させる。上の画像の場合はスカートのオブジェクトがそれにあたる。スカートは物理演算で自然な形になるように設定してあるため、人物モデル本体とは独立している。

GENOMA014

Rootボーンの配下にボーン以外のアイテムがないことが確認できたら、Rootボーンを選択して「選択アイテム消去(-キー)」を実行する。

GENOMA015

次の画像のように確認ダイアログが表示されるので、「はい」を選択する。

GENOMA016

子階層のアイテムをどうするか更に尋ねられるので、同様に「はい」を選択し、Rootボーン以下のすべてのボーンを削除する。

GENOMA017

準備が整ったら、シーンを別名で保存しておく。GENOMAを一度走らせてしまうと不可逆的な変更が加えられてしまい、最悪手がつけられなくなる事態になることもあるため。

ボーンを作成したいオブジェクトを選択し、「リグ作成」をクリックする。ボーンがそれほど多くなくても結構計算に時間がかかる。次の画像のように「GENOMAリグが正常に作成されました」と表示されればひとまず問題なく処理が終了したことになる。

GENOMA018

GENOMAでリグの編成中にエラーが出ると、GENOMAは途中で処理を終了してしまう。次の画像は、存在していないオブジェクトを指定したために出たエラー。仮にシーン内に同名のオブジェクトがあったとしてもGENOMAはそれを識別してくれない。あくまでもGENOMAスケルゴンとして組んだものしか処理の対象にならないという点に注意しなければならない。ゴールオブジェクトをGENOMAスケルゴンにあえて組み込まなかったのはシーンに既に存在するNullオブジェクトを利用したかったから。

GENOMA019

GENOMAの処理が途中で終わってしまうと、ボーンの階層化まで処理が進まずにモデルの配下に同一階層のボーンが並んでしまうこともある。他にもありとあらゆる物が中途半端な状態になるため、手のつけようがなくなる。モデラーに戻ってエラーの原因になった設定を見直す。

GENOMA020

無事にGENOMAリグの作成が済むと、次の画像のようにスケルゴンの階層どおりの整然とした親子関係が築かれる。MASTERオブジェクトというNullオブジェクトが原点位置に必ずできてしまうので、それに相当するオブジェクトが既にあって必要なければ削除しても構わない。

GENOMA021

元のリグに戻すため、モデルをTOP_Nullオブジェクトの配下に配置し直す。

GENOMA022

同様にリグの復元のため、RootボーンをWaist_Nullオブジェクトに追従するように設定する。詳しくは下半身IKの記事を参照のこと。

GENOMA023

次の画像はRootボーンにフォロワーモディファイヤを追加した状態。

GENOMA024

最後に、IKで使用する各ボーンにゴールオブジェクトを指定して完了。IKで屈伸する関節などその他の設定はモデラーで済んでしまっているので、そんなに大した作業ではないはず。

GENOMAリグの更新

モデラーでリグの設定のほとんどを済ましてしまえるのだから、動的にリグを更新できるようになった、と言いたいところなんだけど、実はそれほど簡単でもない。

モデラーでスケルゴンを編集してリグを変更したら、レイアウトにある、その名もズバリの「リグ更新」で変更箇所を反映させられるんだろうかと思うのが人情なんだけど、リグ更新ツールを使うとリグとはまったく関係なくても「オブジェクト」と名のつく物はすべて消去されて最初から構築し直されてしまう(ライトやカメラは残る)。つまり、当該ツールはモデルに組み込んだリグを何もないシーンでテストする時にしか使えないということ。リファレンス・マニュアルにもそのように書いてあり、LightWaveの仕様なのでこればかりはどうしようもない。

そうかと言って、既に組んでしまったシーンに存在するモデルのリグこそ更新したいと思うのは自然な欲求。そういう場合は、リグ更新ツールを使うのではなく、モデルを新しいものに入れ換え、再度「リグ作成」を実施する。その際に、ボーンはもちろんのこと、MASTERオブジェクトも削除しておかなければならないし、GENOMAを使用すると自動的に追加される次のような名前のオブジェクトも削除しておく必要がある。実態は把握していないけど、おそらくコントローラやエクスプレッションに関する設定が入っているか、他のソフトウェアとの互換を図るためにあるものだと思う。

  • Anima_Data_Counter_FK@0
  • Anima_Data_Counter_SaIControl@0
  • Animation_Data_Counter

GENOMAが自動的に作成したものをすべて削除してしまえば、再度リグ作成を実行できる。頻繁にリグを見直す可能性がある場合は、素直に新規シーンで個別にテストしたほうが無難。

途中経過

この画像だけではわかりにくいと思うけど、腕を少し長くした。本文ではまったく触れなかったけど、GENOMAプリセットに用意されている人物用のリグは構造があまりにも複雑でちょっと使う気にならなかった。本気でアニメーション完全対応のリグを組むとこうなるよ、という教材としては参考になりそうなんだけど。

GENOMA025

関連記事


LightWaveで二次元キャラ系人物モデリング奮闘記 ―上半身IK編―

最終更新:2016/09/06

上半身のIKを設定する。上半身系のボーン構造は次のとおりになっていることを前提とする。手首から下のボーンは今回のIKには関係ないけど、すべて記載した。

  •  Root
    • Spine
      • Breast
        • Chest_L
          • ChestIK_L(IK用)
            • Upper_Arm_L
              • Lower_Arm_L
                • Wrist_L(IK用)
                  • Hand1_L
                    • Finger11_L
                      • Finger12_L
                  • Hand2_L
                    • Finger21_L
                      • Finger22_L
                        • Finger23_L
                  • Hand3_L
                    • Finger31_L
                      • Finger32_L
                        • Finger33_L
                  • Hand4_L
                    • Finger41_L
                      • Finger42_L
                        • Finger43_L
                  • Hand5_L
                    • Finger51_L
                      • Finger52_L
                        • Finger53_L
        •  Chest_R
          • ChestIK_R(IK用)
            • Upper_Arm_R
              • Lower_Arm_R
                • Wrist_R(IK用)
                  • Hand1_R
                    • Finger11_R
                      • Finger12_R
                  • Hand2_R
                    • Finger21_R
                      • Finger22_R
                        • Finger23_R
                  • Hand3_R
                    • Finger31_R
                      • Finger32_R
                        • Finger33_R
                  • Hand4_R
                    • Finger41_R
                      • Finger42_R
                        • Finger43_R
                  • Hand5_R
                    • Finger51_R
                      • Finger52_R
                        • Finger53_R
        • Neck
          • Head

以下、特に断りがない限り、0フレームで操作する。

左腕IKの設定

腕のIK設定のおおまかな流れは足とほぼ同様で、ゴールオブジェクトになるNullオブジェクトの作成、IK用のボーンからゴールオブジェクトを参照する設定、IKで動くボーンの指定、及びIKが及ぶ範囲の限定という4つの手順からなる。

まず、胸の位置に新しいNullオブジェクト「Breast_Null」を作成する。

IK046

Breast_Nullを下半身IKで作成したWaist_Nullの子オブジェクトにする。

IK047

Altキーを押しながらBreast_Nullを移動させ、Neckボーンの根元にスナップさせる。位置が決まったら、モーションキーを作成しておく。

IK048

左腕ゴールオブジェクト

次に、左肩コントロール用のNullオブジェクトを作成する。名称は「ChestIK_Null_L」とした。腕はX軸方向に伸びているので、向きがわかりやすいように「Axis」を「X」にした。

IK049

ChestIK_Null_LをChestIK_Lボーンの根元にスナップさせ、モーションキーを作成する。

IK050

ChestIK_Lボーンを選択する。IK用のボーンでモデルのボーン・ウェイトに極力影響を与えないように短くしているため少しわかりにくいけど、次の画像の位置にある。

IK051

モーションオプション(Mキー)を開き、「ゴールオブジェクト」をChestIK_Null_Lに指定する。

IK052

「Wrist_Null_L」オブジェクトを作成し、Wrist_Lボーンの根元にスナップさせる。

IK053

Wrist_Lボーンを選択し、モーションオプション(Mキー)で、「ゴールオブジェクト」をWrist_Null_Lに指定する。

IK054

左腕IKの屈伸設定

IKで自動的に屈伸するボーンを指定する。左上腕にあたるUpper_Arm_Lボーンを選択する。

IK055

モーションオプション(Mキー)で「制御と制限」タブを選択し、「ヘディング制御」と「ピッチ制御」を「インバースキネマティクス」に指定する。バンク制御は変更しない。肩関節にあたる部分の設定で、腕の垂直方向に上げ下ろしする方向と、水平方向に広げる方向の両方についてIKを有効にする。

IK056

続けて左下腕にあたるLower_Arm_Lボーンを選択する。

IK057

モーションオプション(Mキー)の「制御と制限」タブで「ピッチ制御」のみを「インバースキネマティクス」に指定する。ヘディング制御及びバンク制御は変更しない。肘は曲がる方向が決まっているので、前後に曲げる方向だけに制限する。

IK058

最後に左肩に相当するChest_Lボーンを選択する。

IK059

モーションオプション(Mキー)で「制御と制限」タブを選択し、「ヘディング制御」と「ピッチ制御」を「インバースキネマティクス」に指定する。バンク制御は変更しない。鎖骨にあたる部分の設定で、腕に連動して肩を動かすことができるようになる他、肩で息をするような肩だけ上下させるような動作が可能になる。

IK060

左腕IKの停止設定

再びChestIK_Lボーンを選択し、モーションオプション(Mキー)で「子孫のIK効果を及ぼさない」にチェックする。これでWrist_Null_Lの移動によるIKの影響範囲は肩までに限定される。

IK061

親子関係の設定

作成したNullオブジェクトに親子関係を結ばせる。次の画像をとおり、Waist_Nullの配下にBreast_Nullを配置し、Breast_Nullの子にChestIK_Null_LとWrist_Null_Lを配置する。

IK062

足と異なるのは、肩と手首のNullオブジェクトに親子関係を結ばせないという点。足の場合は足首に必ず爪先が追随してくることを前提としているけど、手首が必ずしも肩に追随しない設定になっている。

右腕IKの設定

左腕の設定を右腕にも設定する。ChestIK_Null_LとWrist_Null_Lをそれぞれひとつずつ複製(Ctrl+C)し、X座標を反転させて右腕のゴールオブジェクトを作成する。名称をそれぞれChestIK_Null_RとWrist_Null_Rに変更し、モーションキーを作成しておく。

IK063

右腕ゴールオブジェクト

右腕のゴールオブジェクトは未設定なので、ChestIK_LボーンとWrist_Lボーンを選択し、それぞれ次の画像のように複製したNullオブジェクトをゴールオブジェクトに設定する。

IK064
ChestIK_Rボーン
IK065
Wrist_Rボーン

右腕IKの屈伸設定

左腕と同様に右腕の各ボーンにIKで自動的に屈伸する設定をする。

IK066
Upper_Arm_Rボーン
IK067
Lower_Arm_Rボーン
IK068
Chest_Rボーン

右腕IKの停止設定

左腕と同様に、肩関節のボーンにIKの及ぶ範囲を設定する。

IK069
ChestIK_Rボーン

上半身IKのチェック

すべての設定が終わったら、シーンを保存する。Wrist_Null_L又はWrist_Null_Rを選択し、XZ平面方向に動かしてみる。肩を軸にして肘が曲がってくれたら成功。手首のNullオブジェクトの移動につられて肩のボーンも動いてしまう場合は肩のIK停止設定を忘れている可能性が高い。

IK070

チェックが終わったら、フレームを0から1に移し、再び0に戻すとWrist_Null_L/Rは初期位置に戻っている。モーションキー自動作成モードにしていると移動したNullオブジェクトの位置に0フレームのキーが作成されてしまうので、別のフレームでチェックする。

スケマティックビューの整理

オブジェクト本体から読み込まれたボーン構造は、最初はスケマティックビューで一列の直線状に並んでいるので、左右にわけて階層構造がわかりやすいように並べ替えておくと後でモデルに動きをつけたい時にボーンやオブジェクトを視覚的に探すのが容易になる。

IK071

ウェイトの正規化

チェックが済んだら一時退場させていたオブジェクト本体を表示し、0フレーム以外の任意のフレームに移動する。一連の操作で作成した各ゴールオブジェクトを動かすとモデルに様々なポーズをとらせることができるようになっているはずだ。

ただ、肩関節など大きく動く箇所でモデラーのVertex Paintで設定したボーン・ウェイトのとおりに変形してくれないことがある。そういう場合は、対象のボーンのアイテムプロパティを開き、次の画像のように「フォールオフ種」が「反比例 ^ 32」になっているか確認し、「ウェイトのみ使用」と「ウェイト正規化」にチェックを入れると大抵の場合改善する。

IK072

回避方法はあるとしても、レイアウトの独立という特徴を持ちながら、モデラーの設定と同期できていないという難点がある。また、標準機能のボーンを使用していると、リグを途中で変更したくなった時に一度すべてのボーンを入れ換えてから再設定しなければならないという問題もある。これらの問題がLightWaveをアニメーション制作用のツールとしての第一線から遠ざけている要因にもなっている。これらの問題を解決するリグ用ツールとしてLightWave 11からGENOMA/GENOMA2が追加されたけど、実用例が少ない上に、詳細に解説した書籍がないため、一般に広く知られた機能とまでは言い難い。

途中経過

IKの効果を端的に示しているかどうかは微妙だけど、背骨にもIKを組み込み、胸を反らした姿勢ができるようになった。また、腰コントロールにより足にポーズをつけても地面との距離の調整が容易になった。今までは何もない空白の空間に立たせていたけど、地面と背景に相当するオブジェクトを追加してみた。足下に影が落ちてようやくCGらしくなってきた。

IK073

補足

今回のIKでは指に関する設定をしていない。指は関節が集中する箇所なので、5本の指にそれぞれIKを設定すれば指先のゴールオブジェクトを動かすだけで良くなり、キーフレームの操作が楽になるだろうと考えるのが人情というもの。しかし、指の関節は他の指の動きによっても動きを制限されたり、力の入れ具合によってはすべての関節が均等に曲がるとは限らないため、IKに適さないことが多い。もちろん、目的によりけりの部分も大いにあるため、アニメーションを作る上で指の動きが大きなウェイトを占めるのであれば、指のモーションの効率化が課題になるので指のIK設定に挑戦してみてもいいかもしれない。

それから、背骨に関するIKの設定もしていない。Breast_Nullオブジェクトはゴールオブジェクトに指定されていないため、上半身をWaist_Nullに追従させることと両肩をリンクさせて同時に動かすためだけにしか使われていない。背骨にもIKを設定すればBreast_Nullをゴールオブジェクトとして胸を反らしたり前屈みの姿勢をとらせることもできるようになる。

手順は多いけど、ボーン単位でテクニカルに設定できるので、一度慣れてしまえばボーン・ウェイトをポリゴン単位で緻密に設定するよりは精神的疲労は少ない。惜しむらくは片側の設定を反対に対称コピーする方法がLightWave標準機能にはないことくらいか。各関節の可動角度の制限も特にしていないので、あまり極端なポーズをとらせると関節が逆に曲がることもあり、これでも必要最小限。

もちろん、IKにも欠点はある。FKは特に何も設定しなくてもモデルをとりあえず動かすことができるのに対し、あらかじめIKを使う設定を一定の手続きに従って済ませておかなければならないし、上位階層の構造が制作者の思ったように動いてくれないケースもある。

IKを設定したからといって万全というわけでもなく、膝を外に向けて歩く「がに股」歩行やバトルシーンのような大胆なアクションには対応できないこともある。爪先のゴールオブジェクトが邪魔に思えることもあるだろう。リギングのみを専門に担当するエンジニアがいると言われるくらいなので、目的に応じたIKの設定が必要になるわけだけど、基礎さえおさえておけば工夫のしようもある。LightWaveではIKで実現できない部分にFKをブレンドすることもできるけど、高度なのでここでは割愛する。

そういった短所があるとしても、部分的にでもIKを取り入れると後の作業効率は劇的に改善する。

関連記事


LightWaveで二次元キャラ系人物モデリング奮闘記 ―下半身IK編―

最終更新:2016/09/12

次はレイアウトに移っていよいよIKを設定する。一般には略してIKと呼ばれるけど、正式にはインバース・キネマティクス(Inverse Kinematics)と言い、関節等によって多重階層構造を持つモデルの末端部分の位置を先に決めることによってその上位階層の要素の位置を逆算的に求める技法。

普通、階層構造を持っているモデルの場合は上位の要素から順に位置を決めていかないと末端要素の位置は決まらないものなんだけど、例えば人間の足のように全長が決まっていて基本的に伸び縮みしないものである場合、目測を誤ると足が宙に浮いてしまったり、逆に地面に埋まってしまったりといった事態が起こる。すると、上位階層に戻って調整をやり直すことになり、単に歩くだけの動作ひとつにも非常に手間がかかる。

上位階層から順に位置を決めていく方法をIKに対してFK(Forward Kinematics)と言う。FKはアクション・フィギュアのような人形や人型ロボットのプラモデルにポーズをとらせる時に手足の関節を上から順に曲げていく感覚に近い。ただし、CGの世界には物理演算を使わない限り重力がないため、重心の位置や左右の荷重バランスをとらなくても立ってしまい、作品として捉えた時に違和感のないポーズをとらせるのが逆に難しい。

一方、実際の人間は自分の手を差しだそうとした場合や、足を一歩踏み出そうとした場合に、手や足の未来位置を意識することはあっても、その時に肩、肘、股や膝の関節をどのくらい曲げようかということまでは通常意識しない。IKは「足を持ち上げて50cm前へ進ませる」といった人間にとっては当たり前の動作を上位階層を必要以上に意識せずに実現するものだと思ってもらえれば一番わかりやすい。動画などで反復運動が多い作品を作る際に非常に役立つものだけど、静止画の場合でも有用なことが多い。

準備と前提

IK000前置きはこのくらいにして、レイアウトを起動する。まず最初に、「その場でペアレント(Parent in Place)」がオンになっているかどうかを確認する。オフになっている場合はボタンをクリックし、トグルしてオンにしておく。

これがオンになっていないと、2つのオブジェクトに親子関係を結ばせた時に親オブジェクトの座標を基準とした相対座標が計算されず、子オブジェクトの絶対座標がそのまま相対座標に代入されるため、子オブジェクトの位置が動いて定まらなくなってしまう。親子双方のオブジェクトが原点から離れている場合、子オブジェクトが画面外へ飛んでいってしまうこともあるので、親子関係を設定したと同時にオブジェクトの挙動がおかしくなったらまずこの設定を疑う。

また、普段からモーションキーを手動で作成するのを習慣にしているため、新しいオブジェクトを配置するたびにモーションキーを作成している。自動作成モードにすればモーションキーを作成する煩わしさから解放されるけど、常に自動にしているとモーションキーのことを意識しなくなることがあるので要注意。不自然な動きをする時はキーを手動で作成し直すとオブジェクトの挙動が改善することがある。

なお、記述が煩雑になるのを防ぐため、下半身系のボーン構造は次のとおりになっていることを前提とする。

  • Root
    • Hip
      • Coxa_L
        • Upper_Leg_L
          • Lower_Leg_L
            • Ankle_L(IK用)
              • Foot_L
                • Toe_L
                  • FootIK_L(IK用)
      • Coxa_R
        • Upper_Leg_R
          • Lower_Leg_R
            • Ankle_R(IK用)
              • Foot_R
                • Toe_R
                  • FootIK_R(IK用)

以下、特に断りがない限り、0フレームで操作する。

スケルゴンからボーンへの変換

モデラーでスケルゴンとしてボーンを組み込み、ボーン・ウェイトを設定したオブジェクト本体を呼び出す。体や髪の毛はもちろん、服装も含むオブジェクトのすべての構成要素がひとつのレイヤーにまとめられていて、更にボーンも同一レイヤーに組み込まれていることが前提。

IK001

オブジェクト本体のプロパティを開き、「表示サブパッチレベル」を「1」又は「0」にする。マシンパワーに余裕のあるPCの場合は「3」のままでも問題ないけど、ボーンの旋回などの結果が反映されるまでに時間がかかるので、表示品質は落ちるけど表示サブパッチレベルは下げておいたほうが能率は良くなる。「サブディビジョン手順」は「一番終り」に設定する。サブディビジョン手順をボーンによる変形などの後にすることによって、まっすぐなストローを無理に折り曲げた時のような関節の潰れを防止できる。

IK002

オブジェクトを選択した状態で、「ユーティリティ」メニューグループからプラグインを選択し、「SkelegonReader」を選択する。普通は「スケルゴン変換」を使うんだけど、ボーンを組んだ時にスケルゴンエディターでバンクをZ軸方向に揃えた操作が反映されないため、SkelegonReaderを使う。

IK003

次の画像のようなダイアログが表示されるけど、「Yes」で問題ない。

IK004

ボーンがオブジェクト本体に完全に埋まっている場合は見た目にはわかりにくいかもしれないけど、組み込まれたボーンはモデラーで組んだ階層構造のとおりにすべてオブジェクト本体の配下に設定されている。

IK005

ボーンが読み込まれたら、オブジェクト本体は一時的に必要なくなるので、Scene Editorを使ってオブジェクト本体を「Hidden」に設定して、レイアウト画面に表示されないようにする。

腰コントロールの設定

次に、すべてのオブジェクトの頂点に位置する最初のNullオブジェクトを作成する。「アイテム」メニューグループの「追加」から「Null」を選択する。名称はなんでもいいけど、「TOP_Null」とした。「Shape」は「Ring」、「Axis」は「Y」に設定する。「Scale」はモデルの大きさに対して見やすい大きさにしておく。後でアイテムプロパティの「ジオメトリ」で変更することもできるので、間違ってデフォルト設定で作成してしまっても削除してやり直す必要はない。

IK007

次の画像のように足下にNullオブジェクトが作られた。

IK006

作成したNullオブジェクトをひとつ複製(Ctrl+C)し、名称を変更する。腰の高さに設定するものなので、「Waist_Null」とした。

IK008

Rootボーンを選択し、Y座標をコピーする。コピーした座標をWaist_NullのY座標にペーストする。次の画像はRootボーンを横から見た図。

IK009

Waist_NullがRootボーンと同じ高さになったら、Enterキーを何回か押し、モーションキーを作成する。更に、RootボーンのZ座標をコピーし、同様にWaist_NullのZ座標に貼り付ける。再度モーションキーを作成するのを忘れずに。

IK010

モーションキーを自動作成モードにしている場合は逐一キーを作成する必要はないけど、何か操作する度に勝手にキーが作られてしまうので、操作すべきフレームを間違えた時にキーを削除しなければならず、どちらが便利とは一概には言い難い。

Waist_Nullの座標が決まると、次の画像のようになっている。

IK011

再びRootボーンを選択し、モーションオプション(Mキー)を開く。「モディファイヤ追加」をクリックし、ドロップダウンメニューから「Follower」を選択する。追加できたら、名称欄を右クリックして「プロパティ」を選択する。

IK012

Followerコントロールを開くと、次の画像のように表示される。

IK013

「After IK」のチェックを外し、「Item to Follow」に「Waist_Null」を指定する。また、Z PositionにRootボーンのZ座標を入力する。左下に表示されているので、それをそのまま入力すればいい。メートル単位なので、600mmならば「0.6」と入力する。回転角度やスケールの設定は三角をクリックし、「(none)」を選択して無効にしておく。

IK014

「続行」をクリックすると、RootボーンはWaist_Nullの動きに追随するようになる。

左足IKの設定

足のIK設定のおおまかな流れは、ゴールオブジェクトになるNullオブジェクトの作成、IK用のボーンからゴールオブジェクトを参照する設定、IKで動くボーンの指定、及びIKが及ぶ範囲の限定という4つの手順からなる。

左足ゴールオブジェクト

まず、ゴールオブジェクトになるNullオブジェクトを追加する。くるぶしに当たる箇所に使うので、名称は「AnkleIK_Null_L」とした。形状は「Ball」にしたけど、好みで変更して構わない。後で選択しやすいように大きさは足の幅よりも大きくなるようにする。

IK015

原点に作成されたAnkleIK_Null_LをAnkle_Lボーンの根元に配置する。矢印を掴むとひとつの軸方向にしか動かせなくなってしまうので、中間の円弧あたりをAltキーを押しながら掴み、ボーンの根元にスナップさせる。Ankle_Lボーンは短いので、根元にスナップできているかわかりづらい時は拡大して確認する。位置が決まったらモーションキーを作成する。

IK016

同様にして「FootIK_Null_L」オブジェクトを作成し、Altキーを押しながらFootIK_Lボーンの根元にスナップさせる。しつこいようだけど、モーションキーも忘れずに作成する。

IK017

Ankle_Lボーンを選択し、モーションオプション(Mキー)を開く。「ゴールオブジェクト」に先ほど作成したAnkleIK_Null_Lを指定する。

IK018

同様にFootIK_Lボーンを選択し、モーションオプション(Mキー)で「ゴールオブジェクト」をFootIK_Null_Lに指定する。

IK019

左足IKの屈伸設定

次に、IKで自動的に屈伸するボーンを指定する。太ももにあたるUpper_Leg_Lボーンを選択する。

IK021

モーションオプション(Mキー)で「制御と制限」タブを選択し、「ヘディング制御」と「ピッチ制御」を「インバースキネマティクス」に指定する。バンク制御は変更しない。股関節にあたる部分の設定で、足を前後に持ち上げる方向と、足を左右に広げる方向の両方についてIKを有効にする。

IK020

続けてふくらはぎ又は脛にあたるLower_Leg_Lボーンを選択する。

IK023

モーションオプション(Mキー)の「制御と制限」タブで「ピッチ制御」のみを「インバースキネマティクス」に指定する。ヘディング制御及びバンク制御は変更しない。膝は曲がる方向が決まっているので、前後に曲げる方向だけに制限する。

IK022

足首から下にもIKを設定する。足首から下の足にあたるFoot_Lボーンを選択する。

IK025

モーションオプション(Mキー)の「制御と制限」タブで「ピッチ制御」のみを「インバースキネマティクス」に指定する。ヘディング制御及びバンク制御は変更しないけど、ピッチ制御だけだと足首は曲げ伸ばしの方向にだけしかIKが効かないことになるため、足を大きく投げ出すようなダイナミックなポーズをとらせたい場合などはヘディング制御にもIKを有効にしておく。

IK024

爪先にあたるToe_Lボーンを選択する。

IK027

モーションオプション(Mキー)の「制御と制限」タブで「ピッチ制御」のみを「インバースキネマティクス」に指定する。ヘディング制御及びバンク制御は変更しない。

IK026

左足IKの停止設定

太もものUpper_Leg_Lボーンの更に上位に位置する、腰骨にあたるCoxa_Lボーンを選択する。モーションオプション(Mキー)で「子孫のIK効果を及ぼさない」にチェックする。これは、IKによる足の屈伸が腰から上のボーンに影響を及ぼさないようにするための設定。IKでは「IKによる自動変形をどこで止めるか」という情報が必要になる。言い換えると、IKの固定軸をどこにするかの指定ということになる。

IK028

再びAnkle_Lボーンを選択し、モーションオプション(Mキー)で「子孫のIK効果を及ぼさない」にチェックする。

IK029

親子関係の設定

作成したNullオブジェクトに親子関係を結ばせる。TOP_Nullの配下にWaist_Null、ボーンを含むオブジェクト本体、AnkleIK_Null_Lを配置し、AnkleIK_Null_Lの子にFootIK_Null_Lを配置する。次の画像を見てもらったほうが早いだろう。

IK030

オブジェクトの親子関係の設定にはScene Editorを使うと簡単だけど、うっかり既存の親子関係を壊してしまうと修復に苦労することにもなりかねないため一長一短。モーションオプションの「親アイテム」でも設定できるので、数が少ない場合はこちらを利用したほうが間違いが少なく、結果的に早い場合もある。

IK031

これまでは各Nullオブジェクトが独立していたので何の効果もなかったけど、親子関係を結ばせることにより、TOP_Nullを動かせば全体が移動するし、Waist_Nullを動かせばTOP_Nullに重心は拘束されるもののAnkleIK_Null_Lによって足を地面方向に拘束させて胴体を動かせるようになる。

右足IKの設定

左足の設定を右足にも設定する。AnkleIK_Null_Lを選択し、「階層の複製(Clone Hierarchy)」でFootIK_Null_Lと一緒に複製する。

IK032

TOP_Nullとの親子関係は維持されるので、Scene Editorで確認するだけでいい。

IK033

「AnkleIK_Null_L (2)」と「FootIK_Null_L (2)」をそれぞれ「AnkleIK_Null_R」と「FootIK_Null_R」に名称を変更し、AnkleIK_Null_RのX座標を正負反転させると右足のボーンの上に配置されるので、モーションキーを作成しておく。

IK034

右足ゴールオブジェクト

右足のゴールオブジェクトは未設定なので、複製したNullオブジェクトをゴールオブジェクトに設定する。

IK035
Ankle_Rボーン
IK036
FootIK_Rボーン

右足IKの屈伸設定

左足と同様に右足の各ボーンにIKで自動的に屈伸する設定をする。

IK037
Upper_Leg_Rボーン
IK038
Lower_Leg_Rボーン
IK039
Foot_Rボーン
IK040
Toe_Rボーン

右足IKの停止設定

左足と同様に、股関節と足首のボーンにIKの及ぶ範囲を設定する。

IK041
Coxa_Rボーン
IK042
Ankle_Rボーン

下半身IKのチェック

すべての設定が終わったら、シーンを保存する。Waist_Nullを選択し、Y軸方向に動かしてみる。マイナス方向に動かすと足首の位置はほぼそのままに腰を落とし、膝を曲げてしゃがむような姿勢になる。この時点で足を構成するボーン群の動きが左右で食い違っていたり、膝が逆に曲がったり、爪先の方向がおかしかったりした場合はIKの設定をどこか忘れている可能性が高い。

IK043

Waist_NullをY軸プラス方向に動かすと足を伸ばし、爪先を下に向けてジャンプする。足首と爪先のボーンはゴールオブジェクトのほうを常に向いているけど接着はしていないので、ゴールオブジェクトを離れることができる。MMDで人物オブジェクトが基幹ボーンをY軸方向に動かすだけでジャンプできたりするのもこれと原理は同じ。

IK044

チェックが終わったら、フレームを0から1に移し、再び0に戻すとWaist_Nullは初期位置に戻っている。モーションキー自動作成モードにしていると移動したWaist_Nullの位置に0フレームのキーが作成されてしまうので、別のフレームでチェックする。

途中経過

下半身IK設定完了。下半身のIKが設定されているだけでもポーズはとりやすくなるし、歩行アニメーションを作る時に足が地面から離れないように腰の高さを調節することもできるようになる。

IK045

関連記事


LightWaveで二次元キャラ系人物モデリング奮闘記 ―ボーンウェイト編―

最終更新:2016/09/06

ウェイト・マップと一口に言っても用途は多岐にわたるので、ボーンが移動又は旋回することによってモデルが変形する影響範囲を決めるウェイト・マップをボーン・ウェイトと呼ぶことにする。

ウェイトの設定には「マップ」メニューグループにあるVertex Paintを使用する。簡単なウェイト・マップの設定の場合は同じグループのエアブラシツールやMAP値指定などを使用して設定していくこともできるんだけど、それらのツールは結果がプレビューに反映されるまでに時間がかかり、関節が多く多数のボーン・ウェイトを調整しなければならない人物モデルの場合は作業効率が悪く、微調整くらいにしか使えない。

Vertex PaintがあるおかげでLightWaveはなんとか実用的な3DCGソフトウェアとしての地位を保っていられると言っても過言ではない。古いLightWaveではボーンの組み込みはレイアウトで一発勝負だったため、左右の足のボーンの影響範囲がお互いに干渉し合わないように保険をかける意味で大の字型に人物モデルを作らなければならなかったりなど、今では笑ってしまうような苦労が多かった。

もっとも、そのVertex Paintも動作を軽くするためにサブパッチを適用した状態での表示ができず、厳密を期そうとすればするほど熟練を必要とし、最後にはやはり勘に頼らざるを得ないところが欠点と言えば欠点。サブパッチ適用後の状態を想像しつつトライ・アンド・エラーで補うより他にない。それでも、Vertex Paintがなかった頃よりはセットアップは遥かに楽になった。

ボーン・ウェイトの自動算出

何はともあれVertex Paintを起動する。表示モードは「Weight Value」にし、「Weight」タブを選択する。透視投影の「Pers」モードよりは平行投影の「Ortho」モードのほうが細部は見やすいかもしれない。モデルにはまだウェイトが設定されていないので全体が灰色で表示される。

Weight000

今回扱っているモデルにはIK用のものも含めて68本のボーンが組み込まれていて、ひとつひとつ手作業でウェイトを設定していくのは非常に骨が折れる。そこで、ある程度まではボーンの情報を元にVertex Paintに自動でウェイトを計算してもらう。「Calc」タブでフォールオフを「Distance ^ 32」に設定し、「Calculate Weights」ボタンをクリックするとすべてのボーンのウェイトが計算され、ボーンと同数だけのウェイト・マップが作成される。

Weight001

ウェイトが設定された箇所は赤く染まる。ただし、ウェイトを算出するとすべてのボーンのウェイトが再設定され、手動で設定したウェイトは失われてしまうという点には注意しなければならない。

ボーン・ウェイトの手動修正

まずは小手調べにRootボーンのウェイトを変更する。

Weight002

Rootボーンはモデルの変形には関係がないので、ウェイトを消してしまう(消さなくても特に問題にはならないけれど)。「Paint」タブを選択し、「Operation」を「ERA」にして赤い部分をマウスでなぞってみる。ウェイトは頂点に設定されるものなので、頂点付近をなぞると赤い部分の面積が少なくなっていく。グラデーションはあくまでも目安で結構いい加減なので、面の色よりもどの頂点までウェイトの範囲が及んでいるかに注目してペイントするようにする。

Weight003

ペイント・オペレーションには5種類あり、動作は次のとおり。

  • ADD
    加算オペレーション。元のウェイト値にValueで設定したウェイト値を足す。
  • SUB
    減算オペレーション。元のウェイト値からValueで設定したウェイト値を引く。
  • REP
    置換オペレーション。元のウェイト値に関係なく、Valueで設定したウェイト値で置き換える。100%など一定の値で塗りつぶしたい時に便利。
  • ERA
    消去オペレーション。元のウェイト値に関係なく、Valueで設定したウェイト値で塗りつぶす。普通は「0%」に設定して使う。REPオペレーションで「0%」を指定しても同じ。
  • OVR
    上書きオペレーション。Valueで設定したウェイト値が元のウェイト値を上回っている場合だけValueのウェイト値で上書きする。使いどころがあまりない。

Strengthなどの設定はエアブラシのように少しずつペイントしていくためにあるものだけど、RGBAの4チャネルで設定した色をブレンドしていくカラー頂点マップとは異なり、ボーン・ウェイトではパラメータがひとつなのであまり意味がない。

なお、「Brush Size」の隣りにある「Front」ボタンをトグルしてオンにしておくと表面に見えている側だけペイントされる。オフにしていると直接見えていなくてもブラシの範囲内に入った頂点はすべてペイントされる。

「Object」の隣りにある「Save」ボタンをクリックすると実際にモデルのボーン・ウェイトに反映される。ウェイトを変更している状態でVertex Paintを終了しようとすると次の画像のような確認ダイアログが表示される。ここで「Yes」を押せば同様にボーン・ウェイトに反映されるけど、変更の反映は「Save」ボタンで、変更を破棄したい時はダイアログで、と使い分けるようにしておくとうっかり大事な変更を破棄してしまったり、必要ない変更を反映してしまったりするミスを防げる。

Weight004

Vertex Paintが終了したら、モデラーウィンドウ右下の「W」ボタンを押し、頂点マップ名を選択するとボーンと同名のマップが大量にできているはず。

可動部分のボーン・ウェイトの修正例

ひとまずボーン・ウェイトはできたけれど、あくまでも自動算出なので必ずしも想定どおりのウェイトになっていないことがある。ここでは左肩を例にあげてウェイトを修正する。

左上腕のボーンを選択し、スケルゴン回転(Rotate Skelegon)でヘディングを適当な角度まで回して腕を降ろしてみる。サブパッチ適用状態でマウスのドラッグで回転させようとすると動作が重いので、数値入力ウィンドウ(Nキー)を利用するといい。

Weight005

左腕を降ろしてみたところ、次の画像で赤い矢印で示した部分に不具合があった。まず、髪の毛にも左上腕のボーン・ウェイトが影響してしまっていて、想定外の膨らみができている。次に、肩章にあたる部分が強く引っ張られて伸びきってしまっている。伸縮性の高い素材という設定なのであればこれでも問題ないけど、制服のようにほとんど伸び縮みしない服装の場合は型崩れと捉えられる。更にもっと問題なのは、ジャケットの脇に大きな陥没が生じていてインナーが見えてしまっている。重ね着はこのような問題を生じることがあるため、できる限り避けたほうがいい。場合によってはインナーは襟と裾を残して際どいところは削除してしまったほうがいいかもしれない。

Weight006

アンドゥ(Ctrl+Z)でスケルゴン回転を元に戻し、再度Vertex Paintを起動する。スケルゴン回転を元に戻さないとスケルゴンが回転したままのモデルが表示されるので注意。左上腕のボーンを選択し、Shift+Aで当該ボーンを中心にして拡大する。確かにボーン・ウェイトの範囲がかなり広いことがわかる。髪の毛にもうっすらではあるけど赤い範囲がある。

Weight007

Ctrlキーを押しながら赤いリングを掴んでボーンを回してみる。LightWaveでは赤リングはヘディング(H)、緑リングはピッチ(P)、青リングはバンク(B)と統一されているので、この際レイアウトに移る前に覚えてしまったほうがいい。

プレビューで確認済みだけど、肩章が肩に食い込むように大きく沈み込んでいるのがわかる。髪の毛の変形やジャケット脇の陥没も見受けられる。この状態でサブパッチがかかった状態を容易に想像できるようになれればいいんだけど、慣れが必要なのでVertex Paintの起動と終了を繰り返すことになるのは最初のうちは仕方がない。

Weight008

ひとまず、肩章の端に設定されているウェイトを消去して所定の場所に戻す。ボーン・ウェイトを消去する度に変形が復元されていく様子は少し面白い。

Weight009

左上の「Edit」ドロップダウンメニューから「Reset All Bones」を選ぶか、Shift+Rでボーンを最初の位置に戻せる。ジャケット脇を陥没させた原因になっていたウェイトも消去すると同時に、左上腕のボーン・ウェイトの範囲を狭くする。ボーンを回してみて、様子を見ながら袖のポリゴンがジャケットにめり込まない程度にウェイトを少し足しておく。ほんの10%程度なので、スクリーンショットではわかりづらい。

Weight010

右側へのボーン・ウェイトの複製

左上腕のボーン・ウェイトが設定できたので、右上腕にウェイトを複製する。「Edit」ドロップダウンメニューから「Copy」を選ぶか、Cキーでボーン・ウェイトをコピーする。

Weight011

右上腕のボーンを選択する。ボーンを回すまでもなく、左上腕のボーン・ウェイトと同様の問題が起こっているのがわかる。

Weight012

左上腕のボーン・ウェイトを左右反転してペーストする。「Edit」ドロップダウンメニューから「Paste -X」を選ぶか、Shift+VでX軸対称ペーストができる。

Weight013

左上腕のボーン・ウェイトが右上腕のボーン・ウェイトにも反映された。ただ、右上腕のボーン・ウェイトはジャケットの襟も巻き込んでいるようなので、ERAオペレーションで消去しておく。

Weight014

ボーン・ウェイト修正の確認

「Save」でボーン・ウェイトをモデルに反映し、Vertex Paintを終了する。再度、スケルゴン回転で左腕を降ろしてみる。今度は髪の毛の変形、肩章の異常な伸長、ジャケット脇の陥没は見られなくなった。脇が若干苦しいけど、これ以上はボーン・ウェイトでなんとかするのは難しそうなので、どうにもならなくなった時はジャケットのオブジェクトを再検討して修正したほうが良いような気がする。

Weight015

このような作業を繰り返して全身のボーン・ウェイトを設定していくわけだけど、慎重な設定を要求されるのは可動範囲の広い肩関節と股関節くらいで、膝、肘、指など曲げ伸ばしが特定の方向のみに決まっている部分は最初の自動算出の時点で大体できてしまっている。

途中経過

ボーン・ウェイトの設定が終わってしまえばリギングはほとんど終わったようなもの。レイアウトでのIKの設定をしなくても次の画像のような簡単なポーズをとらせることはできる。ひとまず両手を水平に広げて両足を揃えた棒立ちの状態からは卒業できた。

Weight016

補足

話が混乱するのでボーン・ウェイトのみに絞って書いたけど、ウェイト・マップの応用範囲は広い。これまでにも軽く触れてきたエッジ・ウェイトやサブパッチ・ウェイトの他にも、軟体シミュレーションであるSoftFXを利用してプルプル震えるゼリーを作ったり、布地シミュレーションであるClothFXを利用して足の動きには影響されるけどボーン・ウェイトだけでは実現が難しいスカートの「裾捌き」の再現などの物理演算の影響範囲をウェイト・マップで文字通り「重み付け」することができる。

また、グラディエント・マップにウェイトを入力してサーフェースの各種パラメータに変化を加えることもできる。例えば、自己発光度にウェイトを入力することで、同一のサーフェースを割り当てられた平面上にありながら自己発光度の輝度が異なる部分を作ることができる。そうすることによって、電球のような発光体を奥に仕込んだり、半透明のポリゴンの屈折率を設定したりといった微細な加工を簡略化できる。大きく拡大して見ることが少ない灯火類や人型ロボットの目などの細かな部分に有効。

関連記事

参考記事


LightWaveで二次元キャラ系人物モデリング奮闘記 ―ボーン編―

最終更新:2016/09/06

これからリギング作業を始める。一口にリギングと言ってもどこからどこまでをそう呼ぶのか解釈のわかれるところだろうけど、ボーンの作成、ウェイト・マップの設定、IKの設定などをひとまとめにしてリギングと呼ぶことにする。

最初に、ボーンを組み込む。LightWaveではモデラーにおけるボーンを「スケルゴン(Skelegon)」と呼んでいて、スケルトン(Skeleton)とポリゴン(Polygon)を合わせた造語らしい。スケルゴンはLightWaveモデラーではポリゴンの扱いになっていてポリゴン選択モードで選択でき、また、2頂点の線ポリゴンに分類されている。モデラーでのボーンの呼称が別に必要になったというのが主な理由なんだろうと思うけど、古いバージョンのLightWaveでは決して操作性がいいとは言えないレイアウトでボーンを目分量で組み込んでいく職人技のような作業が必要だったため、ボーンの精密な設計をある程度モデラーでしておくことができるようになったのは大幅に改善された点と言える。

LightWaveでは「ボーン」と「スケルゴン」は厳密な意味では異なる概念だけど、一般的な呼称ではないのでコマンドなどの固有名詞を除いては極力ボーンで統一していく。

首の接合

これまでずっと保留にしてきた頭と首の接続を行う。頭か体のどちらかに問題が出た場合を想定していたわけだけど、結局大きな問題は発生しなかった。もっとも、深く考えずに頭をボールから作ったことによって顎の先端にトポロジーが集中してしまっている問題は残っているけど、これといった解決策も見つからなかったし、ここへ来ての作り直しというのも気が向かなかったというのもある。

Bone000

首側と頭側のエッジの数が合わなかったので、少々強引だけど首側のエッジを分割して接続してある。なお、頭側と首側の接続部にある向かい合わせのポリゴンは削除してある。

Bone001

基幹ボーンと背骨から頭のボーンの組み込み

体のオブジェクトがあるレイヤーを背景レイヤーに設定し、新しい前景レイヤーにスケルゴンを作成する。最終的には体のオブジェクトのレイヤーと統合するので同一レイヤーにスケルゴンを追加していってもいいんだけど、体のオブジェクトが邪魔になることが多いし、LightWaveの仕様上、体のオブジェクトをマスクすることもできないので別のレイヤーで作成して後で統合したほうが操作性は良い。

最初にすべてのボーンの中心になる基幹ボーンを組み込む。「セットアップ」メニューグループにあるスケルゴン作成(Draw Skelegons)でX軸方向からYZ平面を見るビューで背中側の任意の点から左ドラッグで体の中まで引く。最初のボーンだけはドラッグで作らないと長さが0のスケルゴンができてしまうことになるので、細かい調整は後ですることにして一気に引き切る。

Bone002

後は、左クリックで連続してボーンを作成していくことができる。まずは背骨にあたるボーン群を下から順に組み込む。背骨は胴体の後ろ寄りにあることをイメージしながら位置を決めていく。

人体の背骨は全部で30個の椎骨から成り立っていて、ボーンの数を増やせば増やすほど滑らかな旋回が可能になるけど、ヘビやタコのようなモデルを作る場合でない限り、実際にはそこまで細かくする必要はない。あまりボーンの数を多くするとウェイト・マップの設定が大変になるので、首、胸、背中の3つか4つくらいで十分。首の先に頭に相当するボーンを加えてひとまずスケルゴンの作成を終了する。

なお、頭のボーンは頭のモデルを貫通するくらい長くしておく。ウェイト・マップの範囲はボーンの長さに影響を受けるので、頭のギリギリの長さにしてしまうと、頭の一部や髪の毛などがボーンの旋回に追従してこなくなることがある。

Bone003

すぐに手足のボーンの作成に移っていってもいいんだけど、練習の意味も兼ねてボーンに名前を付けるためにスケルゴンエディターを起動する。スケルゴンエディターは重要な機能の割に「その他」のサブグループに入っているので、メニュー編集で表に出しておくか、元のメニューを変更したくない場合はユーザーメニューグループに追加していつでも使えるようにしておく。

スケルゴンエディターを起動すると、親子関係を持ったボーンが5つできている。名前はモデラーが機械的につけたものなので、これを右クリックで「名称変更」を選択し、ひとつずつ名前をつけていく。

Bone004

ひとまず、次の画像のように名前をつけた。ボーンの名称に限った話ではないんだけど、LightWaveで日本語用の2バイトや3バイト文字を使用すると文字化けを起こしてトラブルの元になるので、必ず半角英数字で名前をつける。英語が苦手ならローマ字でも問題ない。要は後で自分がわからなくならないような命名を心がけるということ。

Bone005

腕から手のボーンの組み込み

腕のボーンを追加していく。枝分かれさせる箇所の親になる胸のボーンを選択し、スケルゴン作成を選択する。

Bone006

次の画像のように左クリックで肩のボーンを枝分かれさせて追加できる。肩口と手首にごく短いボーンをひとつずつ追加しておく。これらはIKに使用するもので、モデルの動きには直接影響しない。

Bone007

肩、肩口IK、上腕、下腕、手首IK、手(小指の根元)、小指1、小指2、小指3と関節ごとにボーンを追加していく。

Bone008

ここまで作成できたら、胸のボーンを枝分かれさせた時と同様の方法で手首IKのボーンを選択し、薬指のボーンを枝分かれさせて追加していく。小指のボーンをコピーして薬指から人差し指までのボーンを作成し、後で手首IKのボーンにポイントの統合ツール(Ctrl+W)で接続してもいいけど、指の長さや位置はそれぞれ少しずつ異なり調整が必要になるため、一本ずつボーンを作成していくのとそれほど手間は変わらない。

Bone009

次の画像が腕から指先までのボーンを作成し終わった状態。画像では上から見た状態しか示していないけど、パースビューを利用してちゃんと腕や指の中にボーンが入っているかどうかよく確認する。親指は関節が他の指よりひとつ少ないので余計なボーンを作ってしまわないように注意。

Bone010

片腕のボーンの作成が済んだら、再びスケルゴンエディターで各ボーンに名前をつける。左腕なので、すべてのボーンの名称の末尾に「_L」をつける。

手は人間の骨格の中でもっとも複雑な動きをする場所でもあり、3DCGでも細かい部分の割にもっとも多くのボーンを必要とする箇所。指のボーンが非常に多くて名前に困るかもしれないけど、ここは番号で管理したほうが簡便。医学的には親指を「第一指」、人差し指を「第二指」、中指を「第三指」、薬指を「第四指」、小指を「第五指」と呼ぶので、それぞれ「Finger1」、「Finger2」、「Finger3」、「Finger4」、「Finger5」と名付けた。指の関節は医学的には指先のほうから第一関節、第二関節、第三関節と呼ぶけど、スケルゴンツリーで並べた時に数字が逆転してしまうので、手首に近いほうから1、2、3と付けた。

Bone011

足のボーンの組み込み

片腕のボーンの命名が済んだら、足のボーンを組み込む。左腕のボーンを作成したならば左足のボーンを作る。最初に作成した基幹ボーンを選択する。

Bone012

次の画像のようにスケルゴン作成で下向きにボーンを追加する。これが腰のボーンになる。

Bone013

更に股関節、大腿(ふともも)、脛(すね)、足首IK、足、爪先、爪先IKと連続してボーンを追加していく。足の指を個別に管理する必要が発生することは滅多にないため、足首から下のボーンは1本のツリーで簡単に設定する。

Bone014

この時注意しなければならないのは、膝にあたる、ふとももとすねのボーンの接続部には少しでもいいので角度をつけておくこと。完全にまっすぐに接続してしまうとIKを使おうとした時に関節が反対側に曲がってしまって骨折したようになってしまうことがある。これはLightWaveに限った話ではなく、すべての3DCGソフトウェアで共通とされているボーン設定の注意事項のひとつ。

実は肘にも同じ事が言えるんだけど、手は実質上宙に浮いていてIKの設定次第でどうにかなるのに対し、地面と胴体の位置関係でしゃがんだりジャンプしたりといった動作にIKを使う足は設定だけではどうにもならないことがある。IKなんて面倒くさい機能は使わないということであれば問題ないんだけど、関節の多い人体モデルをFK(キーフレーム)だけで管理するのはそのうち嫌になってくるはず。

スケルゴンエディターで足のボーンにも名前をつける。左足なので左腕と同様に末尾に「_L」をつけるのを忘れないように。最後にスケルゴンツリーで名前のつけ忘れがないか確認する。

Bone015

反対側の手足のボーンの複製

左腕と左足ができたら、それらに属するすべてのボーンを選択し、鏡面Xで右側に複製する。

Bone016

右側のボーンは背骨のボーンに接続されていないので、胸のポイントを選択し、ポイントの結合ツール(Mキー)か統合ツール(Ctrl+W)で肩のボーンの根元と胸のボーンの先端を接続させる。背骨は横から見たビューで作成しているのでX座標は0になっているはずだけど、何らかの理由で0になっていない場合は整列ツールで揃える。

Bone017

同様に、右股関節を腰のボーンに接続する。

Bone018

右腕と右足のボーンは左側のものをコピーして作ったものなので、ボーンの名前は左と同じになっている。そこで、スケルゴンエディターを使って一括で名前を変更する。右腕にあたるボーン群をすべて選択し、「操作」タブから「接尾辞を削除」を選択し、番号に「2」を入力する。「適用」ボタンをクリックすると、末尾2文字の「_L」が選択したすべてのボーンの名称から削除される。

Bone019

ボーンの選択を解除せずに、「接尾辞を追加」を選択し、名称に「_R」を入力する。「適用」ボタンをクリックすると、選択したすべてのボーンの名称に「_R」が追加される。

Bone020

同様にして右足のボーンも改名しておく。「接頭辞」と「接尾辞」を間違いやすいので注意したい。

スケルゴンエディターはこのように大量のボーンを操作するのに非常に有用で強力なツールなんだけど、逆にボーンひとつだけを改名したい時に現在の名称を表示してくれなくてファイルの改名のようにちょっとした追加や削除ができなかったり、少々不便なところもある。スケルゴン名変更ツールではそういった問題はないので微妙なところでかゆいところに手が届かない感じもするんだけど、スケルゴンツリーを眺めながらミスがないかを確認しながら操作できるという点ではスケルゴンエディターのほうがやはり便利ということになる。

ねじれ補正

最後に、すべてのボーンを選択し、「バンク」タブを選択する。「種類」を「-Zに整列」に設定し、「OK」ボタンをクリックする(「+Zに整列」でも可)。作成したばかりのボーンはバンク角がまちまちで、これをやっておかないと、レイアウトでヘディングやピッチを同じ角度だけ旋回させたのに左右で違う方向に向いてしまうといったトラブルが起こる。そのトラブルを回避するための手順。

Bone021

以上でボーンの作成は終了。せっかく作ったボーンの情報が失われてしまわないうちに、ファイルを保存する。

オブジェクトの準備

次に、ボーンで変形させたいオブジェクトを加工する。ウェイト・マップの設定が煩雑になるため、基本的に見えていないポリゴンはバッサリ削る。重ね着になっているところなどもできる限り二重や三重にならないようにする。ゲーム用のローポリゴン・モデルなどで体のラインにピッタリのボディスーツ状の衣装がよく用いられるのはポリゴンの節約と同時にウェイト・マップの簡略化の意味合いが強い。

Bone022

もったいないようだけど、次の画像のように上半身のほとんどと上腕まで、足首から下を削除する。もちろん、後で調整が必要になった場合のことを考え、完全な状態の体のモデルのバックアップは別のレイヤーにとっておくようにしたい。

Bone023

ボーンを作成したレイヤーから主ボーンをコピーし、加工済みのモデルに貼り付ける。切り取りはしないほうがいい。場合によっては複数のレイヤーに分けてウェイト・マップを設定したほうがいいこともあるため、主ボーンの本体をいきなりモデルに埋め込んでしまわないほうがいい。

体の一部がないのでなんとも間抜けな姿だけど、体のオブジェクトにボーンを組み込んだのが次の画像。レイアウトではモデルと同一レイヤーに存在するボーンが読み込まれるので、必ずボーンとモデルは同じレイヤー上に存在しなければならない。

Bone024

服を加工し、同一レイヤーにコピーする。服の裏地はほとんど要らなくなるので、見えるか見えないかギリギリのところまで削る。場合によっては袖口などは適当なポリゴンで塞いでしまう。髪の毛や靴など必要なものはすべてコピーして同一レイヤーにまとめる。

Bone025

以上でウェイト・マップの設定の準備ができた。ここまでできたところでボーンの作成完了。

最後に、足りないボーンがないかどうかよく確認する。と言うのは、レイアウトでスケルゴンをボーンに変換してしまった後でボーンが足りなかったことに気付いたとしても、モデラーでスケルゴンを編集しただけではレイアウトには反映されないばかりか、再度スケルゴン変換を行うとまったく同じ位置にボーンが二重にできてしまうことになり、非常に面倒なことになる。IKは面倒だからとIKを考慮しないボーンを組んでおいて、後でやっぱりIKを使いたくなったから追加したいというのは困難だということ。不可能とまでは言わないけど、せっかく設定したボーンやウェイト・マップをすべて破棄しなければならず二度手間になる。モデラーにおけるスケルゴンとレイアウトにおけるボーンの概念が独立していることによる最大の問題点がここにあり、アニメーション作成におけるLightWaveの地位が大幅に後退した原因になっているわけだけど、人体モデルの関節が急に増えたり減ったりすることはないのでボーンの設計は周到にしておくに越したことはない。

ボーンの分割

ボーンを作成していて、うっかり必要なボーンを作り忘れてしまった場合は、ボーンの分割を行うと解決できる。次の画像で示している例は、手首IKのボーンを作り忘れてしまった場合。分割したいボーンを選択し、「セットアップ」メニューグループにあるスケルゴン分割(Skelegon Split)を選択する。

Bone026

スケルゴンの分割を行うと、ちょうど半分のところに新しいボーンが作成されるので、位置や長さを調整する。ボーンの名称は両方とも分割前とまったく同じになっているので、足りなかったボーンが根元側だとしても、先端側だったとしてもスケルゴンエディターで改名してしまえば親子関係を崩すことなくボーンを追加できる。

Bone027

なお、画像のように左右の区別があるボーンを追加しなければならなくなった場合は、反対側を一度削除してから再度鏡面複製して接尾辞を一括改名したほうが無難。

途中経過

Bone028

参考までに、今回のボーンのリスト。

  • Root
    • Spine
      • Breast
        • Neck
          • Head
        • Chest_L
          • ChestIK_L(IK用)
            • Upper_Arm_L
              • Lower_Arm_L
                • Wrist_L(IK用)
                  • Hand1_L
                    • Finger11_L
                      • Finger12_L
                  • Hand2_L
                    • Finger21_L
                      • Finger22_L
                        • Finger23_L
                  • Hand3_L
                    • Finger31_L
                      • Finger32_L
                        • Finger33_L
                  • Hand4_L
                    • Finger41_L
                      • Finger42_L
                        • Finger43_L
                  • Hand5_L
                    • Finger51_L
                      • Finger52_L
                        • Finger53_L
        • Chest_R
          • ChestIK_R(IK用)
            • Upper_Arm_R
              • Lower_Arm_R
                • Wrist_R(IK用)
                  • Hand1_R
                    • Finger11_R
                      • Finger12_R
                  • Hand2_R
                    • Finger21_R
                      • Finger22_R
                        • Finger23_R
                  • Hand3_R
                    • Finger31_R
                      • Finger32_R
                        • Finger33_R
                  • Hand4_R
                    • Finger41_R
                      • Finger42_R
                        • Finger43_R
                  • Hand5_R
                    • Finger51_R
                      • Finger52_R
                        • Finger53_R
    • Hip
      • Coxa_L
        • Upper_Leg_L
          • Lower_Leg_L
            • Ankle_L(IK用)
              • Foot_L
                • Toe_L
                  • FootIK_L(IK用)
      • Coxa_R
        • Upper_Leg_R
          • Lower_Leg_R
            • Ankle_R(IK用)
              • Foot_R
                • Toe_R
                  • FootIK_R(IK用)

関連記事