HEXA BLOG

デザイン

HEXA BLOGデザイン2018.2.13

TA と Maya Node Editor その2

こんにちは、Ritaro です。

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

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

前回の記事内容 https://hexadrive.jp/hexablog/others/19837/
に引き続き、Mayaの Node Editorまわりの話、その2です。

キャラクターセットアップに便利に使える手段の1つとして
Maya の Node Editor をご紹介しています。
今回もちょっとしたノードの組み合わせで、オブジェクトを
ワールド座標値で設定する方法をお見せしたいと思います。

また、このような Node Editor を使ってキャラクター制御用
の仕組みを組む時、良く使う計算のノードとして 外積 が出て来ます。
現在、ShaderFXを使ったリアルタイムシェーダーについてのビデオチュートリアルを
作成していますが、リアルタイムの光源処理で良く使う計算のノードは 内積 になります。
こちらの話は また別の機会に出来たら・・と考えています。

では、さっそく・・

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

2)「Maya NodeEditor を使った コンストレイント」

Mayaを使ったキャラクターセットアップで良く使う
Mayaがデフォルトで用意している
“方向 コンストレイント (OrientConstraint)”  や
“ペアレント コンストレイント (ParentConstraint)” を
ノードエディタで見たことはありますでしょうか?
実はかなり複雑なノードのつながりになっており、これに手を加えて改善しよう
なんて思いたくないくらいの 接続状態になっております。

MayaNodeEditor_DefaultConstrtaint

こんな状態でなくても似たような方法、もしくはもっと分りやすくて簡単に組める、
もしかしたらより軽い処理で行えないか、と考えつくようなヒントをご紹介します。

 ■ 回転 コンストレイント

クォータニオン ノードを利用する方法

前回の階層下のノードをワールド座標で扱う方法として最後のノードから
親逆行列の値を 入力行列に再度差し込む と正しく値を計算出来ていました。

これと同じことを 回転をクォータニオンのノードを使って計算させることにも
利用すると、回転コンストレイント と同じ働きになります。

decomposeMatrix を 2つ その出力クォータニオンを
quatProd(クォータニオン プロダクション) を使って乗算し
最後に quatToEuler(クォータニオンからオイラーに) を使って
入力されたクォータニオン を オイラーの回転値に戻して 回転 につないであげます。

Quaternion_RotationConstrtaint

  ■ 移動 コンストレイント

decomposeMatrix と vectorProduct の ポイント行列積 ノードを利用する方法

移動値だけのコンストレイントは vectorProduct を利用することで
親逆行列の値を 入力することも出来るので、どんな階層構造でも対応出来ます。

たったこれだけで済むのでしたら NodeEditor の利用もチャレンジし易いのではないでしょうか。

VectorProduct_TranstationConstrtaint

 ■ 移動/回転/スケール コンストレイント

multMatrix と decomposeMatrix ノードを利用する方法

こちらも 親逆行列の値 入力行列に再度差し込むことでどんな階層下でも
正しい位置を計算します。
追加の値を この例では displayPoints の値からオフセット値も設定出来ます。

SRT_OffsetConstrtaint

 ■  Jointの回転 コンストレイントの考察

multiplyDivide や ジョイントの方向

Jointのコンストレイントは主に回転値を扱いたい としたら
“方向 コンストレイント (OrientConstraint)” 以外にどんな方法があるか
色々と考察するのも面白いです。
一番下の例は回転値をジョイントの方向からクォータニオンの反転から計算しています。

Joint_RotationConstrtaint

・・・という訳で、ワールド座標値を扱えると、階層構造の影響を受けずに
移動/回転/スケール を設定出来、コンストレイント と同等の制御が出来ました。

PS
日本語の説明矢印がView上に表示していますが、これは 作成>注釈…(annotation)
ていうオブジェクトで、日本語表示対応していますので、
シーンにあるものに説明を付けたい時に便利ですよ。矢印付きです。

次回も NodeEditor ネタ として ベクター(Vector) について出来たら
と思っております。

ではでは

 

RECRUIT

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

RECRUIT SITE