- 自動バインド
- ウエイトペイント
- スキンウィンドウでスコープを指定して、自動バインドを絞り込み
- スキンウィンドウでの数値指定
前回はボーンとスキンの関係性を説明し、蟻にボーンを与えていきました。
今回は、蟻を構成する2つのポリゴンメッシュ「蟻」「脚と触角」に対してスキンを割り当てていきます。
前回説明したスキンの「自動バインド」「ウエイトペイント」「スキンウィンドウの表」の3つの割り当て手段を試すことになります。
スキンの自動バインド
ブラウザで「蟻」のポリゴンメッシュを選択します。
形状編集モード+頂点選択モードに移行し、すべての頂点を選択しました。
メインメニューの「表示」-「スキン」を選択し、スキンウィンドウを表示します。
「頂点ブレンド」ボタンを選択すると、指定のポリゴンメッシュにスキンが適用されました。
この段階ではまだ頂点に対してスキンの割り当ては行われていません。
スキンウィンドウの左上の「バインド」ボタンを押すと、自動的に選択頂点に対して近くのボーン(ジョイント)がウエイト付きでバインドされます。
この操作は「ボーンのモーション要素としての回転とオフセットが0の状態」で行うようにしてください。
ボーンをブラウザで選択し、形状情報ウィンドウの「ボーンジョイント属性」でモーション要素を確認できます。
ここが0ではない状態で、スキンを割り当てる形状に対してバインドを行おうとすると、
「バインド対象にリセットされていないジョイントが含まれています」というメッセージが表示されます。
そのまま続行した場合はすべてのジョイントのモーション要素はいったんリセットされ、それに対してスキンが自動バインドされます。
スキンのバインドを確認
ボーンとスキンの自動バインドができたので、ボーンによるポリゴンメッシュの変形を確認していきます。
メインメニューの「表示」-「モーション」を選択し、モーションウィンドウを表示します。
モーションウィンドウ左上の「シーケンス」チェックボックスをオンにします。
「シーケンス オフ」の役割
モーションを与える場合、初期状態の「姿勢」(ジョイントのモーション要素としての位置や回転など)は「シーケンス オフ」で指定します。
これは基準となる姿勢(ポーズ)です。
今回の蟻は、ボーンのスキンをバインドした直後のボーンの回転とオフセットが0となったものを、「シーケンス オフ」時の姿勢としています。
「シーケンス オフ」ではモーションを与える際のキーフレームの情報を持つわけではなく、1つだけの姿勢を持ちます。
この「シーケンス オフ」時の姿勢は、人体の場合はTポーズ(両腕と地面と水平に伸ばした姿勢)、もしくはAポーズ(両腕と地面と水平から少し下げた姿勢)、
今回の蟻のような昆虫の場合は、脚や触角が直線上に配置されている姿勢の方が好ましいです。
そうしないと、スキン変形後に見た目として不格好になってしまう場合があります。
なお、fbx/glTFファイルでエクスポートして他ツールに持って行く際は「シーケンス オフ」時の姿勢を基準としてモーションが与えられることになります。
そのような理由で基本の姿勢は「シーケンス オフ」で行い、
ポージングやモーション付けを行う作業は「シーケンス オン」で行うようにします。
ジョイントモードでスキンでの変形を確認
モーションウィンドウでは「シーケンス オン」にした状態で進めます。
コントロールバーで「ジョイント」を選択するとジョイントモードに移行します。
ジョイントモードでは、図形ウィンドウの選択はジョイントだけを選択できる状態になります。
また、マニピュレータの操作は「ジョイントのモーション要素としての値」が割り当てられます。
ボーンの場合は「オフセット」(移動)と「回転」を割り当てることができます。
現在は「蟻」のポリゴンメッシュ+ボーンのスキン割り当てのみ行っているため、体部分の変形を確認できました。
触角と脚はまだスキン割り当てを行っていないため、変形についてきていません。
姿勢をリセットしたい場合はUNDOを行うか、モーションウィンドウの「シーケンス」をオフにしてからオンにします。
※ 「シーケンス オン」のときは、キーフレームに登録しない限りは姿勢は確定されません。
ジョイントモードでポリゴンメッシュのワイヤフレームを非表示にしたい
これは透視図での操作になります。
ジョイント操作時はポリゴンメッシュのワイヤーフレームを非表示にして、ジョイントのみ見えている状態にしたい場合が多々あります。
図形ウィンドウで「テクスチャ+ワイヤーフレーム」ではポリゴンメッシュのワイヤーフレームも表示されるため、
いったん「テクスチャ」表示にします。
ジョイントモードに移行しているのを確認し、図形ウィンドウのメニューから「表示オプション」-「ジョイントを表示」を選択します。
こうすることでジョイントはワイヤーフレームで表示されることになるため、ジョイントが見やすくなります。
ジョイントモード時のマニピュレータの向き
ジョイントモード時のマニピュレータの向きは、初期状態ではシーンのワールド座標でのXYZ軸に常に平行となっています。
この状態では、ボーンを回転させた場合にどれくらい傾いているのかを判断しにくいです。
コントロールバーの「マニピュレータ座標系」を「ローカル」に変更することで、ジョイントのローカル座標上でのマニピュレータの向きとなります。
ボーンは、「マニピュレータ座標系」を「ローカル」としておくほうが操作しやすいです。
以上で、ジョイントモードでスキン変形を確認できました。
ウエイトペイントでスキン変形を調整
アゴ部分のボーンを回転させたときアゴの回転によって眼も変形してしまいます。
これは自動バインドでは対応できなかった箇所になります。
そこでウエイトペイントを使用してこの部分を修正します。
ウエイトペイントの使い方は前回説明したため、概要は前回の内容もご参照くださいませ。
ウエイトペイントでアゴのボーンである「bone_jaw_left」を確認します。
Shiftキーを押しながら眼付近の頂点をドラッグしウエイト値を下げていきました。
アゴの反対側の「bone_jaw_right」も同様にウエイト値を調整しました。
この調整で、ジョイントモードでアゴを回転させてもアゴと口付近だけが変形するようになりました。
他のボーンもジョイントモードで回転させて、変形で気になるところがないか確認していきます。
以下は「bone_body2」と名前を付けた胴体部と腹の関節部分のボーンを回転させています。
脚のボーンの影響か、腹の下側に窪みができてしまっています。
ウエイトペイントで「bone_body2」を選択して確認すると、腹の下側は青色になっていました。
ここは「bone_body2」の影響をほぼ100%受けるようにし、ウエイトペイントでは赤色になっている必要があります。
そこで、ウエイトペイントのブラシを使って赤色になるように塗っていきました。
間違えた場合はUNDO処理で1つ前の塗りに戻ります。
また、[Shift]キーを押しながらドラッグすることでウエイトを減算します。
ウエイトペイントから抜け、ジョイントモードで「bone_body2」をマニピュレータを使って回転させて意図した変形が行われているのを確認します。
触角の影響が出ないように調整
ジョイントモードで触角のボーンを回転させると、顔部分が大きくひっぱられてしまっています。
この部分もウエイトペイントでウエイト値を視覚化し調整します。
このときのボーンのウエイト値の調整は、少し工夫が必要になります。
触角部は「bone_antennae_left」でその親として「bone_antennae」、さらにその親として「bone_head」で構成されます。
それぞれのボーンについて、ウエイトペイントでウエイトを表示すると以下のようになっていました。
ウエイトの状態により、「bone_antennae_left」の動きにより顔部分が大きく変形するというのが把握できます。
そこで、ウエイトペイントで「bone_antennae_left」でのウエイトを小さくして0にします。
このとき、「bone_antennae_left」でのウエイト値が下がったことで、ボーンの前後にそのウエイトが移ることになります。
「bone_antennae」のウエイト値を見ると、ウエイト値が大きくなっているのを確認できます。
「bone_antennae」のウエイト値を下げると、「bone_antennae_left」のウエイト値が上がり結局元の状態に戻ってしまいました。
このままだと「bone_antennae_left」と「bone_antennae」にウエイト値が相互に移るだけで、堂々巡りになります。
このような場合は、もう1つ親の「bone_head」のウエイト値を調整します。
上流のボーンである「bone_head」のウエイト値を大きくしたため、それより下流の「bone_antennae」「bone_antennae_left」へのウエイト値を抑えることができました。
これにより、ジョイントモードで触角の「bone_antennae_left」を回転させても頭部分が変形することは抑えられました。
脚の影響が出ないように調整
脚も触角と同様に、ジョイントモードで脚のボーンを回転させると胴体部に影響が出てしまっています。
ボーン構成として、「bone_root」-「bone_legs」から「bone_legs_left_1_1」のように親子関係になっています。
「bone_legs」は脚を取りまとめるボーンになり、このボーンは移動も回転もしません。
そのため、「bone_legs」のウエイト値を大きくすることにしました。
ウエイトペイントで「bone_legs_left_1_1」のウエイト値を見ると、胴体部への影響が大きいことが分かります。
この親の「bone_legs」は以下のようになっているため、ウエイトペイントで影響を大きくしました。
以上で、脚のボーンをジョイントモードで回転させても胴体部や腹部に影響が出なくなりました。
再度ジョイントモードでボーンを回転させて不正な変形になる箇所はないか確認していき、
微調整をウエイトペイントで行っていきました。
これで、頭-胴体-腹部の「蟻」ポリゴンメッシュのスキンの調整が完了しました。
「脚と触角」のスキン割り当て
次にもう一つのポリゴンメッシュ「脚と触角」のスキンを割り当てていきます。
ボーンは「bone_root」を先頭にしている1組のボーンをそのまま利用します。
胴体部と同じように、スキンの自動バインドをまず行います。
ブラウザで「脚と触角」を選択し、形状編集モード+頂点選択モードに移行。
頂点は選択していてもしていなくてもかまいません。
スキンウィンドウを表示し「頂点ブレンド」を選択。
自動バインドを行う前に、「どのボーンを使ってバインドを行うか」を指定します。
この影響するボーンをあらかじめ指定/絞り込むことを「スコープ」と呼びます。
スキンウィンドウの「スコープ」をクリックするとポップアップでウィンドウが表示されます。
初期状態では、シーンに存在するすべてのジョイントが対象になっています。
触角や脚の場合はどのボーンが影響を与えるか分かっているため、それをスコープで明示していくほうが効率がいいです。
触角は「bone_antennae」からが対象ボーンになります。
脚は「bone_legs」からが対象ボーンになります。
これをスキンウィンドウの「スコープ」で指定しました。
なお、触角と脚の2つがあるためスコープ指定+バインドを2回行うことになります。
まず、スコープのルートにある「bone_root」の左端のアイコンをクリックしてすべてのスコープを解除します。
その後、「bone_antennae」の左端のアイコンをクリックしてこのボーンの子のスコープを有効にします。
左端のアイコンとその右の黄色のアイコンの両方が「bone_antennae」とその子のみオンとなっているのを確認します。
図形ウィンドウの正面図で、触角の頂点だけを選択します。
この後「バインド」ボタンを押すと、選択頂点に対してスコープ範囲のボーンのみが自動バインドに参加することになります。
次に、スキンウィンドウの「スコープ」で「bone_legs」のみアクティブにします。
図形ウィンドウの正面図で、脚の頂点だけを選択します。
スキンウィンドウの選択された各頂点はまだ何も割り当てられていない状態です。
スキンウィンドウのスコープで、「bone_legs」の左端のアイコンをクリックしてこのボーンの子のスコープを有効にします。
スクロールして、2回「bone_legs」を選択しないとアクティブにならないです。
「bone_legs」の左端のアイコンとその右の黄色のアイコンの両方がオンとなっているのを確認します。
「bone_antennae」の左端のアイコンをクリックしてスコープをオフにします。
これで「bone_legs」とその子ボーンのみがスコープ対象になりました。
「バインド」ボタンを押すと、選択頂点に対してスコープ範囲のボーンのみが自動バインドに参加することになります。
スキンウィンドウで右にスクロールしていくと、選択頂点は「bone_legs」以降にウエイト値が入っているのを確認できました。
ジョイントモードでボーンによる変形を確認
ジョイントモードに移行し、触角のボーンを回転させてスキン変形がついてきているか確認します。
触角は問題なく変形についてきているようです。
脚のボーンを回転させてスキン変形がついてきているか確認します。
脚も問題なく変形についてきているようです。
脚の細かい調整
脚はそれぞれ関節ごとに固い物質になるため、自動バインド後は少しだけ変形が気になる箇所があります。
関節部のボーン(ここでは「bone_legs_left_3_3」)をジョイントモードで回転させた場合、わずかに上の形状が変形しています。
この部分はボーンの影響を受けないようにしておきたいです。
そこで、スキンウィンドウで数値で確認して値を直接編集するようにしました。
図形ウィンドウで、「bone_legs_left_3_2」のボーンを参照しているポリゴンメッシュの頂点を選択します。
これは、頂点選択モードで透視図で頂点を一部選択後、ツールボックスの「編集」-「メッシュ」-「選択」-「連続面選択」を選択。
これにより、陸続きのメッシュの頂点のみが選択できます。
スキンウィンドウのヘッダ部で「bone_legs_left_3_3」のところにマウスカーソルを合わせてしばらくすると、ツールチップでボーン名が出てきます。
選択頂点(「bone_legs_left_3_2」の範囲)において、「bone_legs_left_3_3」のウエイトが一部入っているのを確認できます。
これがわずかな変形に影響を与えているようです。
なお、これ自身はスキンの「自動バインド」としては自然な動きです。
脚は機械的な変形にしたいため、この部分のウエイト値を0にすることにしました。
ヘッダ部の「bone_legs_left_3_3」をクリックすると、表の列が選択された状態になります。
表として、選択頂点は行/選択ボーンは列、となる交差がある状態です。
交差したところでウエイト値がある箇所をクリックすると編集できます。
0を入力してEnterキーを押しました。
これで、表の交差したところのウエイト値は0に変更されます。
ジョイントモードに移行して、再度「bone_legs_left_3_3」のボーンを回転させました。
これで、「bone_legs_left_3_3」の回転で脚の上側が変形することはなくなりました。
この処理をすべての脚に対して行いました。
ジョイントモードでボーンを回転させてスキンを検証していきます。
気になる変形があった場合は「ウエイトペイント」で対処できる場合はペイントで対応、
スキンウィンドウの表で直接編集したほうがいい場合は数値指定で対応、というのを繰り返していくと
どう編集すれば効率がよさそうかというのはつかめてくるかと思います。
ジョイントモードでポーズを決めてみる
以上で、蟻のすべてのスキン割り当てが完了しました。
一通りの割り当ての工程は押えるようにしました。
最後に、ジョイントモードで各ボーンを回転させてポーズを決めてみます。
8倍速で動画にしてみました。
ポージングできるようになるとより虫らしくなりました。
今回はここまでです。
スキンはShade3Dの編集作業では難易度が高い箇所になり覚えることも多く、かつ慣れが必要になります。
次回は、ポージングとモーションに入っていきます。