HEXA BLOG

デザイン

HEXA BLOGデザイン2019.10.1

TA と Maya Node Editor その6

こちらに記事を書くのはこれで9回目となります。
今回も、どうぞよろしくお願い致します。

TAにとって開発上の問題点を解くのに技術的な引き出しを色々な持っておくことが必要、
について・・また少し紹介したいと思います。

前回の記事内容

TA と Maya Node Editor その5


に引き続き、Mayaの Node Editorまわりの話、その6です。

キャラクターセットアップ等に便利に使える手段の1つです。

前回は、ワールド座標値を扱う行列、
英語で言うとマトリックス(Matrix)についてまで話がすすみ、
それを使ってカーブ上を移動出来る仕組みを紹介できました。
今回は、マトリックス(Matrix)を使って更に面白い使い方について
触れてみたいと思います。

では、さっそく・・

ちょっと具体的な、面白い対処法、でもあったら『おお、使えるかも』
・・って思うようなものをまたご紹介していきましょう。

6)「Maya NodeEditor を使った マトリックス」

NodeEditor では fourByFourMatrix と2つの vectorProduct(外積)
を使うことによって 対象とするカーブに沿って
移動と回転もするように出来ました。
またこの方法でカーブに沿わせた locator は無理やり引っ張ってみても
カーブ上に留まってくれて、壊れにくい構造になりました。

モーションパス で設定したカーブ上で動くものより確実にカーブ上を
動くという確証が得られるので、例えばモーションキャプチャーの手の
動いた位置をカーブにして、手の動きを編集する
という場合などに役立つかも知れません。

さて、ここまで沿わせたターゲットとしては カーブを使いました。

そこで、今度は nurbsSphere にした場合はどうなるでしょう。
3次元的に球上を動くことが可能となるはずです。

カーブ上を移動する時に使った最初のノードは
pointOnCurveInfo でした。
では、nurbsSphere の場合は・・・・と、予想通りになるのですが、
pointOnSurfaceInfo を使います。

pointOnSurfaceInfo

pointOnSurfaceInfo の パラメーター U と V の項目の値を
変化させることで nurbsSphere のサーフェイス上を
動かすことが出来ます。

しかし、これだけですと 移動 しか設定していないので
locator はサーフェイス上に沿って回転はしてくれません。

そこで 回転 も設定する方法として
また例の 外積(vectorProduct) と

vectorProduct

fourByFourMatrix を使えば nurbsSphere のサーフェイス上を
動かすことが出来ます。

fourByFourMatrix

せっかくなのでもう一工夫してみます!
Joint は作成すると通常 X 軸方向を向いてます。

X 軸方向

そこで、サーフェイス上を沿って動くlocator の上を向く方向、
つまり、nurbsSphere の法線方向が X軸になるように
fourByFourMatrix を仕組んでみます。

nurbsSphere の法線方向

実はこのように組むと実現出来たりします。
位置のXYZの接続は簡単ですが、
法線 と 接線のU と V は接続場所を見つけるのに
一工夫いる部分です。

これで pointOnSurfaceInfo の パラメーター U と V 値を変更すると
必ず X軸が上側を向いて 移動するので
例えば X軸が上を向いている pPyramid を locator の後に
移動と回転値をつなげば、nurbsSphere サーフェイス上に沿って
動かすことが出来ます。

nurbsSphere サーフェイス上

では Joint を decomposeMatrix の後につないでみます。
pPyramid と時と同様、Jointも nurbsSphere サーフェイス上に沿って
動かすことが出来ました。

Jointも nurbsSphere サーフェイス上

因みに decomposeMatrix からは 出力クォータニオン という出力ポイントも
あるので、ここから Joint を接続出来ないか、と試しにやりますと
少しだけ複雑になりますが、可能です。
ちょっと考察してみましょう。

quatProd

quatProd というノードを使うと2つのクオータニオンを結合できるので
quatToEuler を使ってクオータニオンをエウラーに
eulerToQuat を使ってエウラーをクオータニオンに変換をかけて
上記のようにつないでも、向きが逆に計算されてしまいました。
そこで・・・・、

plusMinusAverage

のように組み
plusMinusAverage で 合計を使って

合計

調整してみるとうまく方向を合わせることができたのですが、
あまりやらないかもと・・・・。

今回は、単純はカーブよりは立体的な 球のサーフェイス に
fourByFourMatrix を使って locator を沿わせることが出来ました。
ということは、他オブジェクトにも沿わせることが出来そうです。

といったところで、今回はここまで。

また次回も、NodeEditor についての続きが出来たらと思っております。

ではでは。

*–
Ritaro

RECRUIT

大阪・東京共にスタッフを募集しています。
特にキャリア採用のプログラマー・アーティストに興味がある方は下のボタンをクリックしてください

RECRUIT SITE