スムースバインドしたスキンは意図しない変形が起こる場合がある。
スキンウェイトを調整して変形をコントロールする。
日本語インターフェース版はこちらをご覧ください。
Maya チュートリアル[日本語]:キャラクターセットアップ その②:スキンウェイト調整
■スキンウェイト調整
ジョイントによる変形はジョイントからの距離に比例する。
その変形の程度をMayaではスキンウェイトと呼び、ブラシツールで変更する。
スキンウェイトはポリゴンではVertex、NURBSではCVに割り当てられている。
調整するオブジェクトを選び
Animationメニューセット Skin > Edit Smooth Skin > Paint Skin Weights Tool ■
上図のように、選ばれたオブジェクトがモノクロ表示に変わる。
モノクロに変わらないとき、また、作業中に表示を変えたときは、ツールバー(左端)のをクリックする。
白に近いほど、そのジョイントの影響が強いことをあらわしている。
上図の場合、わきの変形が不必要なので、その部分を黒くペイントしていくことになる。
また、表示がモノクロに変わるとともに、スキンウェイトブラシのオプションウィンドウが開く。
Influenceにジョイントの一覧が表示されるので、ウェイト調整したいジョイントを選び、
次の各項目を調整する。
Radius(U) | ブラシ半径。(Rdius(L)はスタイラスで筆圧検知したときの最小半径) |
Opacity | ブラシ透明度。この場合強さ。 |
Paint Operation | Replace 置き換え。黒くするときに。 |
Add 追加。白くするときに。 | |
Scale スケール。 | |
Smooth スムース。ウェイトをなだらかにする。 | |
Value | ブラシ明度。黒・・・ウェイト小、白・・・ウェイト大 |
ワークスペースではカーソルがブラシツールのカーソルになるので、ペイントしていく。
(ペイントはポリゴンではVertex、NURBSではCVに対して行なわれる)
このウェイト調整を必要な、オブジョクトごと、ジョイントごとに行なっていく。
必要であればウェイトのミラーコピーを行なう。
Skin > Edit Smooth Skin > Mirror Skin Weights ■
X方向のミラーコピーは Mirror Across ・YZ オプションを指定する。
スキンウェイト値をキー入力する場合はコンポーネントモードで、ポリゴンのVertexを
選んでコンポーネントエディターから行なう。
Window > General Editors > Component Editor...
以上でスキンウェイトの調整が出来上がる。
この段階でモデリングの不具合が出て、モデリングから修正する必要があるかもしれない。
そのときは
①ジョイント(の一番"親")を選んでSkin > Go to Bind Pose
②モデリングデータを選んで Skin > Detach Skin
③モデリング修正。
④モデリングデータを選んでSkin > Bind Skin > Smooth Bind
⑤スキンウェイトの調整。
の手順で行なう。
デタッチされたモデリングーデータはその段階でスキンウェイトが消えるので、再調整が必要である。
■ジョイントで変形させたくないオブジェクト
キャラクターの持ち物のように、ジョイントによる変形の必要がない
オブジェクトは上図のように、ジョイントにはバインドせず、
ジョイントの"子"にする。
English article
Maya tutorials:character setup (2): adjusting skin weights
MAYAの数値入力によるキャラクターのポーズ付けはできるのでしようか?
例 右うでを上に10度あげる
3DSMAXでは数値入力で右うでを上に10度あげることはできますが、入力した10 という数値が入力した後、0 にもどってしまい、何度か数値入力で右うでを上げ下げすると、今、右うでが、上に何度、上がっているのか、わからなくなり、使いにくいです
質問2
MAYAでは エンベロープ(球状影響範囲)は 設定しなくていいのでしょうか?
まさかshadeのように、ポリゴンの頂点すべてに スキン設定しないと人間キャラはポーズ付けできないとか?(何千もポリゴンの頂点あると、やってられません(笑))
>右うでを上に10度あげる
各ジョイントのローカルでの角度しかわからないので、右うでが何度、という形ではわからないですねえ。
>MAYAでは エンベロープ(球状影響範囲)は 設定しなくていいのでしょうか?
リジッドスキンのときのフレクサの設定がそれに近いでしょうか?
3DSMAXは詳しくないのでわかりません。
うまくいきません。というのも、初期設定(スケルトンを付けた状態)から手順通り白く塗っても、ジョイントを指定し直すともとに戻ってしまいます。何度塗ったり消したりをしても同様です。何処が悪いんでしょうか?
一応MAYAを使っています。
スキンウェイトを設定しても元に戻ったり、うまくいっていても、
sceneファイルを保存して読み込みなおすと、スキンウェイトが
元に戻っているということが、ごくたまに発生します。
原因はわかりませんが、sceneデータが壊れてしまっているものと
思われます。
jointをデタッチしてバイドしなおして、もう一度やってみてください。
それでもダメなら、原因はわかりません。
黒い部分を白にする事ならできるのですが、その逆が分かりません。
(要するにオブジェクトを動かしたくない部分がある)
またブラシでこすっても塗れない場合などもあります。
機能の概要を認識できてないのかも知れませんが、何がいけないのか教えてください。
ブラシツールのPaint OperationをReplaceにし、Valueを0にして、
塗ってください。
それでもうまくいかない場合はグラッフィックボードの不具合だと
思われます。
ウェイトのブラシツールを使っているときに時々不具合が起こります。
その時は残念ながら、別のマシンで試してください・・・としか言いようがありません。