2006年 03月 30日
本日は、ひとつのスケルトンでFKとIKを同時に使えるリグのプロトタイプを作ってみて、その仕組みを説明してみようと思います。 リグの仕組み自体は結構簡単です。
まず始めに Animation> Skeleton> Joint ToolのオプションボックスからTool Settingのウィンドウを開いて、Orientationの選択肢の中から「None」を選びます。 「None」を選ぶことによって、それ以降に新しく作られるジョイントの回転軸が全てグローバル・オリエンテーションと同じ方向に設定されます。(下図参照) (この設定は、後にFKやIKのコントローラーと関連付けるときに必要となります。) では、4つのジョイントで下図のような腕のスケルトンを作りましょう。 次にそれぞれのジョイントにChest(胸)、UpperArm(上腕)、Elbow(肘)、Wrist(手首)と名前をつけます。 そしてElbowジョイントのX軸とZ軸の回転をロックしてY軸の回転だけが出来るように設定します。 その後UpperArmジョイントからWristジョイントにかけてRPSolverのIKを加え、同時にFKとIKのコントローラーを下図のように加えます。 それぞれのコントローラーは移動や縮小などをして位置と大きさを調節した後、Modify> Freeze Transformationをしてそれぞれのアトリビュートが0になるように設定することを忘れないでください。 そしてElbowControllerのX軸とZ軸の回転もElbowジョイントと同じくロックして動かないようにしておきます。 ちなみに下の図のようなコントローラーを作るには、Rigging101のサイトの「Free Stuff」というページの下から4つめにあるrig101 Wire ControllersというMelスクリプトをダウンロードすると、色々な種類のコントローラーを簡単に作ることができて便利です。 そして今度はikHandle1ノードをWristIKControllerノードにペアレントし、そのWristIKControllerノードをElbowControllerノードに、またEblowControllerノードとPoleVectorノードをUpperArmControllerにペアレントします。 そして最後に、UpperArmControllerノードをChestジョイントにペアレントして、FKとIKを両方同時に使えるプロトタイプ・リグの第一段階が完成です。(右図参照) UpperArmControllerやElbowControllerを回転させるとFKの要領で腕のスケルトンを動かすことができ、WristIKControllerやPoleVectorを使うとIKの要領で同じ腕のスケルトンを動かすことができます。 ところが、ここでひとつ問題が生じます。 左図を見ると一目瞭然ですが、WristIKControllerを使ってIKで腕のスケルトンを動かすと、階層の構造上WristIKControllerの親であるElbowControllerがElbowジョイントの動きに付随しません。 その上UpperArmControllerとUpperArmジョイントの回転値、そしてElbowControllerとElbowジョイントの回転値も異なってしまっています。 そこでMELスクリプトを使って以下のことをする必要がでてきます。 1)UpperArmジョイントのXYZ回転値をUpperArmControllerのXYZ回転値にコピーする // store the uppper arm joint xyz rotation float $UpperArmJointRotationXYZ[] = `getAttr UpperArm.rotate`; // apply the upper arm xyz rotation to the upper arm controller setAttr UpperArmController.rotate $UpperArmJointRotationXYZ[0] $UpperArmJointRotationXYZ[1] $UpperArmJointRotationXYZ[2]; 2)ElbowジョイントのY軸の回転値をElbowControllerのY軸の回転値にコピーする。 // get the y rotation from the elbow joint float $ElbowJointRotationY = `getAttr Elbow.rotateY`; // apply the elbow joint y rotation to the controller y rotation setAttr ElbowController.rotateY $ElbowJointRotationY; 3)PoleVectorのXYZ移動値をゼロにする。 // zero out the pole vector's trans setAttr "PoleVector.translateX" 0; setAttr "PoleVector.translateY" 0; setAttr "PoleVector.translateZ" 0; 4)WristIKControllerのXYZの移動値をゼロにする。 // zero out the wrist controller's trans setAttr "WristIKController.translateX" 0; setAttr "WristIKController.translateY" 0; setAttr "WristIKController.translateZ" 0; 5)UpperArmControllerのXYZ軸の回転値と、ElbowControllerのY軸の回転値にKeyを打つ。 // set key to fk controllers of upper arm and elbow setKeyframe "ElbowController.ry"; setKeyframe "UpperArmController.rx"; setKeyframe "UpperArmController.ry"; setKeyframe "UpperArmController.rz"; 完成したプロトタイプ・リグと専用のMELスクリプトは、下のリンクから(PCの場合)右マウスクリックで”対象を名前を付けて保存”を選ぶとダウンロードできます。 MELと一緒に使い具合を試してみてください。 FKIKArm.ma (Maya6.5) snapandkeyFkarm.mel 次回はこのプロトタイプ・リグの第二段階として、Chestジョイントが動いても手首の位置が固定されるWristStickyIKControllerをリグに加え、それに合わせてMELも改良してStickyIKとNon-StickyIKの切り替えができるようにしてみたいと思います。 #
by cgtak
| 2006-03-30 00:10
| Mayaチュートリアル
2006年 03月 27日
テクスチャー作業を相変わらず放って置いたままですが、キャラのリグ開発を開始。
リグ開発にあたって一番に思いつくのがFK・IKスイッチのシステムの構築ですが、一般的な3種類のスケルトン(FKスケルトン、IKスケルトン、モデルがスキニングされた本スケルトン)の組み合わせを使うと、FKとIKを混ぜてモーションを作ったときに、FKとIKの切り替え時にスケルトンの位置を合わせたり、スケルトン同士を補間させたりと手間がかかります。 その手間を解消するために、Highend3Dのサイトからダウンロードできる「jsIkFkSnap.mel」のようなMELスクリプトを使ってIKまたはFKスケルトンの位置をお互いに合わせると、モーション制作の作業がだいぶ楽になるのでお勧めです。 しかし今回は、もうちょっと違った試みをしてみようと思い、ひとつのスケルトンでFKとIKを同時に使えるように設定してみます。 この新しい方法も、実は専用のMELスクリプトを使いながらモーション付けすることになるのですが、3種類のスケルトンを使う方法とは別の独特な利点もあると思うので、今回のプラッド・ピッドさんのキャラクターで試してみることにしました。 (眠くなってしまったので、)基本的な設定の説明もかねたプロトタイプ・リグの作り方、及びそれに付随するプロトタイプ・MELスクリプトの詳細は次回のブログ書き込みにします。 失礼。 #
by cgtak
| 2006-03-27 19:10
| Mayaチュートリアル
2006年 03月 02日
仕事のR&Dをしつつ時間を見つけて、 今日やっとフェイシャルのコントローラー設置まで たどり着けました。 男の子のフェイシャルを作った時と比べると ブレンド・シェープの形があまり気に入っていないので 後でもう少し修正するかもしれません。 本当はGifファイルにして 動画をブログに載せたかったのですが、 そこまでする時間さえもありませんでした。 さて次はいつ更新できることやら... #
by cgtak
| 2006-03-02 16:14
| モデリング(Prad Bitt編)
2006年 02月 25日
2~3日前より再開したブレンド・シェープ作り。 今日一応全部のシェープを作り終えました。 時間があれば明日にでも フェイシャルのコントロール作りに入りたい。 まだモデルのテクスチャーを描いてないので、 このフェイシャル設定が全部終わったら 取り組もうと思っていますが、 ボーンにスキニングをした後に テクスチャー貼りをしたら ヒストリーが出来て モデルが重くなってしまうかな。 一応UVは全部設定し終わっているけれど... #
by cgtak
| 2006-02-25 14:21
| モデリング(Prad Bitt編)
2006年 01月 20日
今日は午前中に靴のスキニングを終えて、 午後はやっと待望の頭部のブレンド・シェープ作りに入った。 まずは顎を引いたときのモデルの崩れを治すためのシェープ(上図の中段)を作り エクスプレッションでHeadジョイントと関連付けをした。 これで、頭を上下したときに顎の下の部分が潰れてしまうのを 防ぐことができます。 その後に眉毛周りのブレンド・シェープを7つほど(上図下段)作り、 その次に口を大きく開けたシェープ(上図最上段)を作ったところで 今日は終わりでした。 (テクスチャーを貼ってないと、シェープ同士の区別があまり良くつかないですね。) 明日は会社の仕事で、 次のプロジェクトのR&Dを少ししなくてはいけないみたいなので、 このブレンド・シェープ作りの続きができるかどうか、 ちょっと不安。 #
by cgtak
| 2006-01-20 14:55
| モデリング(Prad Bitt編)
|
アバウト
便利リンク
カテゴリ
全体 モーション制作 リグ設定(Prad Bitt編) リグ設定(男の子編) リグ設定(犬編) モデリング(Prad Bitt編) モデリング(男の子編) モデリング(犬編) モデリング(背景編) レンダリング Mayaチュートリアル アニメーション業界関連 更新状況 ライフログ
検索
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||