|
イラストとか、3DCGとか、日々感じたこととか、いろいろごったに〜
|
||
|
05/14(Wed) 19:22
意外と準備に手間取りました。今回の内容は説明しようとすると、難しいのよね、、、ハハハfq^- ^;p
今日はLightWaveのボーン入れの肝、ボーンの中心点回転について、お勉強します。 これを解ってると、解ってないとでは、仕上がりが10倍(当社比)!、、、、いや5倍、、、、3倍くらい?、、、、2倍?、、、、5割増し?、、、、2割増しくらい_┬○は違います。多分。 ちょこっとややこしいですが、出来るだけ丁寧にやるので、心してマスターしてくださいな。 まず、LightWaveのレイアウトで中心点(Pivot)とは? ![]() ローカル原点を指します。オブジェクトやボーンなど各ジオメトリの移動、回転、拡大縮小の基点になります。 それぞれのオブジェクトやボーンの持ってる座標の基準点ってことですね。 ボーンでいうと、デフォルトで上の画像の黄色の丸の場所にあります。 この中心点は、移動・回転できるのですが、ボーンでは中心点移動はあまり使いません。少なくとも私は使いませんq><p では、ボーンの中心点回転について解りやすいように、画像多目で順を追って説明していきます。 中心点回転の効用は、主に2つあるのですが、1つはジンバルロックの回避です。
ジンバルロックの用語については後述することにして、まずは具体的に作業してみましょう。 1. ![]() Nullオブジェクトを配置して、これにボーンを追加しましょう。 2. ![]() NullオブジェクトのZ+方向に、ボーンが追加されました。 ボーンはデフォルトで、親のNullと同じ回転軸を持っています。 このボーンは胴に見立て、Y座標に向けて使用したいので、緑のハンドルのP(ピッチ:Y回転軸)を90度回転させます。 3. ![]() これでボーンがY座標の方を向きました。 しかし良く見ると、赤のハンドルのH(ヘディング:X回転軸)と、青のハンドルB(バンク:Z回転軸)が重なってしまい、X座標へ回転できない状態になっています。 このように、回転軸が重なって、事実上回転軸が1つ失われた状態をジンバルロックと言います。 この状態でX座標へ回転させるには、作業座標系をデフォルトの親座標からローカル座標やワールド座標に切り替えてやることで動かせるのですが、回転角度の入力自体は親座標系で行われるので、親座標で使い勝手のよいようにしてやる事がボーン組みでは大切です。 そこで登場するのが、中心点回転です。 中心点の向きを変えることで、親から引き継いでいる回転軸を動かして、そのボーン独自の回転軸を設定し、今のジンバルロック状態を回避します。 イメージとしては、親があり、その子にボーンの中心点があり、更にその中心点の子にボーン本体がある、みたいな感じです。でも、ボーンの中心点とボーン本体で1つジオメトリなので、あくまでイメージねъd'ー' p 具体的には、現在の状態で、「中心点回転記録」*1を実行します。 4. ![]() そうすると、現在のボーン状態で、回転がHPBとも0度になるように、中心点の回転が記録されます。 これで、HのハンドルがBのハンドルと交差して、回転できるようになり、ジンバルロック状態がひとまず回避されました。 もう1つの効用をみていきましょう。 先程のボーンに子ボーンを作ります。 5. ![]() 新規の子ボーンは中心点がデフォルトのままなので、親ボーンと同様の回転軸を持ちます。 ここでは、この子ボーンを肩に見立て、横に向けて使いたいので、 6. ![]() H軸で90度回転させ、使い勝手が良くなるように「中心点回転記録」を実行し、 7. ![]() 回転がHPBとも0度になるようにしました。 ここで、可動の状況を確認します。 8. ![]() H軸で45度上に傾け、Pのハンドルを動かしてみます 9. ![]() このように、ボールを投げる腕のような、振り下ろす動きになりました。 ではもう1つ試してみましょう。 今度は画像6からさらにB軸を90度回転させて「中心点回転記録」を実行します。 10. ![]() 先の画像7と比べると、HとPのハンドルの位置が入れ替わっています。 同様に可動状況を確認しましょう。 11. ![]() 今度はP軸で45度上に傾け、Hのハンドルを動かしてみます。 12. ![]() 今度は肩を上げたまま回転しています。 挙動の違いわかりますよね? 例えば、 13. ![]() 画像8をP軸45度動かしたものと、 14. ![]() 画像11のH軸を45度動かしたものとでは、同様な数値が入っていますが、座標が違ってきます。 この動きの違いは、HPBに親子関係があり、優先度が異なるためにおこります(ワールドやローカル座標では、優先度の違いはありません)。 優先度はH>P>Bの順になっており、Hハンドルを動かすと、PとBが追従しますが、Pハンドルを動かしたときは、Bは追従しますが、Hは追従しません。 この動きの癖を活かして、バンク軸をコントロールし、HハンドルメインかPハンドルメインか、、、その箇所に合ったボーンを組んでいく事がコツです。 更に理解を深めるために、肩に上腕がついたイメージで、子ボーンを追加してみます。(親の肩ボーンは画像10にしてます) 15. ![]() 上腕は横に広げている状態でモデリングされてると思いますので、腕を下ろして、腕を前後に振ってみましょう。 16. ![]() そのままP軸で腕を下ろすと、ジンバルロックが起こり、腕を前後に振る事が出来ません。 そこで腕を上げた状態に戻り、先程の応用でバンク軸を90度回転して「中心点回転記録」を実行し、 17. ![]() HハンドルとPハンドルの位置を替えます。 再び腕を下ろしてみましょう。今度はH軸で腕を下ろします。 18. ![]() 今度はPハンドルで腕を前後に振る事が出来るようになりました。 HPBと優先度のある回転方式では、P軸が90度回転することで、ジンバルロックが発生します。ただ、3Dソフト一般に使用されてる方式でもあるので、そういうものが内包されたものだと頭にいれておいてください。 その上で、上手く回転軸をコントロールして、ジンバルロックを防ぎ、癖を活かしたボーン組みを目指しましょう!q≧∇≦pノ では、コアな中心点回転の話はこれくらいで〜。次回は基本ボーン入れをやりたいと思います。 <補足> *1 LightWaveのver.9以降では「DS Record Pivot Rot」が使えます。同様の機能ですが、「DS Record Pivot Rot」の方が挙動が安定しています。 * コメント *
雪野ユウ | こんなスクリプトも
Poly to Polyさん(http://www.neko.ne.jp/~asagi/P2P/index.html)のReturnPivotRotateも、複数ボーンの中心点回転を一括で(0,0,0)にできるので便利ですよ。(既知のスクリプトだったらすんません)。
Moch | 雪野さんへ
お〜、こんなものも作られてたのですね。いつも浅妓さんのブログは拝見してるのですが、気付いてませんでしたfq^- ^;p
どちらかと言うと、中心点を記録する「Record_PivotRotate」の方が良く使いそうな感じですね。 LightWaveの階層鏡面(hierarchy mirror)は中心点を反映してくれないので、階層鏡面を実行した後に、一括で中心点を記録できると、楽になりますね〜。
雪野ユウ | ありゃりゃ
間違いでした〜
モチさんの言ってる「Record_PivotRotate」を紹介するつもりがぁ〜 面目ない!
浅妓 | お邪魔します(_ _)
始めまして、らきすたの動画で知ってからRSSチェックさせて頂いてます。
ミクなんかもそうですが、キャラのホワ〜ンとした可愛さが出せていて羨ましいですorz それに解説類を丁寧に書かれていて良いですね。 昔にこういうページがあれば・・・o..rz pivotRotationプラグインですが、多分大丈夫だとは思いますがベクトルや行列への理解が完全では無いのであまり信用しないで下さいね(^^; それでは失礼しました〜(_ _)
Moch | 浅妓さんへ
はじめまして〜。
こちらこそ、いつもROMさせていただいてます。コメントいただけて嬉しいです!q≧∇≦p LightWave購入したと同時に、このブログを始めて、初心者目線で書いていたのですが、そろそろ初期の記事は恥ずかしくて消したい気分ですが、なかなか当時の目線にはもう戻れないので、あれはあれで貴重なのかもとか、思ってみたりfq^- ^;p 自分勝手な理解の上で記事書いてるので、間違ってるところあったら、ドンドン突っ込んでくださいませ! LightWaveつながりで知り合った方が、LightWaverのポータルサイトを立ち上げようとしてるので、それに向けてTips関連を書きためようと思ってるのですが、記事のこと考えながら作業してると倍以上時間掛かっちゃうので、遅々として進んでません。ほとんど言い訳ですがq´∀`p もし良かったら浅妓さんもご参加いただけると光栄です。 それではこれからも、よろしくお願いします⊆d_ _b⊇
Maxima | 全然分かってませんでしたっ
仕事でやってるときもなんで上手くいかないんだろうって
思うところだったの目から鱗が出まくりでした。ありがとうございますっ。 最近使うようになったXSIだと中心点回転の記憶と同じようなものとして ニュートラルポーズと設定と変換のフリーズっていうのがあるのですが、ろくにわかってないのでいろいろ問題起こりまくりです。僕の方もモチさんを見習ってそのあたりのことを勉強して記事書けるように頑張りますっ。使うソフトが違うものになってしまいましたが、これからもよろしく御願いします。
Moch | Maximaさんへ
LightWaveで理解できれば、どのソフトでも使えるのではないかと思いつつ、色々弄ってます。
中心点回転については、他の件の問い合わせでD-STORMサポートとやり取りしてるうちに、何となく理解しました。 でも、今回記事にするにために、書こうとするとなかなか難しくて、もう一度勉強しなおしましたfq^- ^;p 私もどちらかと言うと、MayaやXSIの記事を参考にすること多いので、また記事楽しみにしてますね。 |
||