HEXA BLOG
ヘキサブログ
デザイン
TA と Maya Node Editor その3
こちらに記事を書くのはこれで6回目となります。
今回も、どうぞよろしくお願い致します。
TAにとって開発上の問題点を解くのに技術的な引き出しを色々な持っておくことが必要、
について・・また少し紹介したいと思います。
前回の記事内容
に引き続き、Mayaの Node Editorまわりの話、その3です。
キャラクターセットアップ等に便利に使える手段の1つです。
コンストレイント>作成下にあるペアレントやポイントといった
機能以外にも制御する方法があるということで、
今回も ノードの組み合わせでオブジェクトをワールド座標値で設定する方法や
更にベクター(Vector)についても話をしてみようと思います。
では、さっそく・・
ちょっと具体的な、面白い対処法、でもあったら『おお、使えるかも』
・・って思うようなものをまたご紹介していきましょう。
3)「Maya NodeEditor を使った ワールド座標のベクター」
前回のところまでで、幾つかコンストレイントの方法を紹介しています通り
multMatrix と decomposeMatrix を使って pSphere1 と pCone1 間をつなぎ、
またコンストレイントされているオブジェクト(pCone1)から
親逆行列を multMatrix の2つ目の行列に入力してあげることで
ワールド座標で計算している為、
pCone1 がいかなる階層化にあっても 常に pSphere1 に
くっ付いている状態を構築できます。
しかも、上図では decomposeMatrix から 移動/回転/スケール/シア 全てを
つないでいるので、全部のトランスフォームに対応しています。
それでは、今回は ベクター(Vector) にも触れるということで
pointMatrixMult と plusMinusAverage というノードを使っていきます。
いわゆるベクターとは 2点間を結ぶ方向(良く矢印で表す)と理解できます。
pointMatrixMult は その点の位置を求める のに使い、
plusMinusAverage は 点と点の差を求める のに使うと理解すれば
2点間の差が ベクターを導く となります。
先に進む前に先程のワールド座標のコンストレイントと階層下の例に
あてはめて使って見ましょう。
pSphere1 の移動を pointMatrixMult の入力ポイントに接続、
pointMatrixMult の出力を plusMinusAverage の入力3D[0]に
plusMinusAverageの出力3Dを pCone1 の移動に接続しました。
今、plusMinusAverage は 合計 にしてあります。
その 入力3D[1] には変な任意の値が入っていますが、
それは 下図のような階層の時に pSphere1 の横に
pCone1が来るように入れた値になります。
この例では、移動値のみを扱っていますが、これでは
pSphere1 が階層のどの位置にあるかで、
pCone1 が階層のどの位置にあるかで、
どんどん変わっていってしまいます。
それはどこもグローバル値で計算をしていないからです。
そこで先に pSphere1 のグローバル値対応をして見ましょう。
それは pSphere1 親行列を pointMatrixMult の入力行列につなぎます。
これで pSphere1 がどこの階層下にあってもワールド座標です。
では、pCone1の方は というと、そうです最初の接続例とおなじ、
pCone1 の親逆行列をdecomposeMatrixを通じて接続する あれです。
今回は decomposeMatrix から出力されてる移動を
plusMinusAverage の3つ目 入力3D[2] に接続します。
接続ポイントの追加は plusMinusAverage のアトリビュートエディタで
▼入力3D 項目で [新規項目の追加] を押すといくらでも追加できます。
逆に削除の時は消したい入力項目横にあるゴミ箱アイコンを押すとなくなります。
plusMinusAverage の 入力3D[1] にはまた任意の値が入っていますが
それは前述の通り、pSphere1の横に来るように入れた値ですが、
これで全てグローバル値で設定できたので、どんな階層下にあろうとも
pCone1 は その任意の値で pSphere1 の横に位置します。
さて、ベクターの話を進めます。
pointMatrixMult の入力値がグローバルで設定できようになったので
2点間の位置からベクターをって部分が理解しやすい例を紹介します。
2点のLocatorからpointMatrixMultでグローバル値を得てplusMinusAverageに
それぞれ接続しますが、操作を 合計ではなく 平均にします。
すとる 2点を色々と動かした中間位置に pCone2 が位置するという例です。
動作が理解しやすいものです。
で、ベクターの話なので、plusMinusAverageの操作は 減算 にします。
すると、今度は Locator1 を中心に Locator2 を移動した先に
pCone2 が来るようになります。
実はこのようにして使うものではなく、
通常、ベクターはノーマライズして使うことがほとんどでしょう。
ベクターのノーマライズの仕組みを知る上で距離と除算から導く方法を
書いてみます。
下図のように distanceBetween を使って2点間の距離を求め
multiplyDivide で その距離値で 操作を 除算 にします。
すると、今度は locator2 をどんなに動かしても
displayPoints1 という見えやすくしたターゲットが
1を超えない範囲で動くようになります。
では、このベクターのノーマライズを距離と除算ではなくて
1つのノードで行う方法として登場して来ますのは、
vectorProduct というノードになります。
この中の 操作を ベクトル行列積 に
その下にある [レ] 出力の正規化 にチェックを入れて有効にします。
すると先ほどの動作と同じ ターゲットの displayPoints2 が
1を超えない範囲で動くようになります。
さー vectorProductノードを使ってより本格的な計算例を・・・
と思いましたところ、随分書いてしまったようなので、
また次回、ベクター(Vector) についての続きが出来たらと思っております。
ではでは。
*—–
Ritaro
CATEGORY
- about ヘキサ (166)
- 部活動 (6)
- CG (18)
- プロジェクトマネジメント (1)
- 研修 (5)
- 美学 (1)
- いいモノづくり道 (230)
- 採用 -お役立ち情報も- (149)
- プログラム (188)
- デザイン (99)
- ゲーム (274)
- 日記 (1,104)
- 書籍紹介 (113)
- その他 (875)
- 就活アドバイス (20)
- ラーメン (3)
- ライフハック (25)
- イベント紹介 (10)
- 料理 (23)
- TIPS (7)
- 怖い話 (3)
- サウンド (5)
- 子育て (1)
- 筋トレ (1)
- 商品紹介 (21)
- アプリ紹介 (31)
- ソフトウェア紹介 (33)
- ガジェット紹介 (12)
- サイト紹介 (10)
- 研究・開発 (34)
- 回路図 (4)
- アナログゲーム (40)
- 交流会 (21)
- 報告会 (3)
- インフラ (25)
- グリとブラン (6)
- カメラ (9)
- クラフト (27)
- 部活 (14)
- 画伯 (15)
- カレー (6)
- 音楽(洋楽) (6)
- 映画・舞台鑑賞 (43)
- 飼育 (5)
- いぬ (8)
- ねこ (19)
ARCHIVE
- 2024年
- 2023年
- 2022年
- 2021年
- 2020年
- 2019年
- 2018年
- 2017年
- 2016年
- 2015年
- 2014年
- 2013年
- 2012年
- 2011年
- 2010年
- 2009年
- 2008年
- 2007年