LoginSignup
6
3

More than 5 years have passed since last update.

曲げ回転をaimConstraintノードで取得する

Last updated at Posted at 2018-12-23

Maya Advent Calendar 2018 12月23日の記事です。

明日24日分の投稿予約を済ませました!
時間もあるのでライトなリグのTipsを載せておきます。

曲げ回転を得る

三次元回転は分解ができます。
三次元回転をそのまま利用するといろいろ難しい問題が出てきます。
この辺を細かく解説する力量は私にはないので、
回転は曲げ/捻りに分解できるよ!ということだけにしておきます。

詳しくは、ryusas氏のmaya_rotationDriverが参考になります。
上記は高度なので一旦は回転から曲げ回転だけ抽出してみましょう。

シーン構築

以下のようなシーンを構築しました。
スクリーンショット 2018-12-23 17.58.36.png

利用するのは以下のノードのみです。

ノード名 説明
src_joint コントローラーとなるノード。自由な三次元回転。原点に作成。
src_jointEnd src_jointの子供。TranslateXに5が入っています。
dst_jointBend src_jointから曲げ回転だけ抽出したもの。同じく原点に作成。
src_jointBendEnd src_jointBendの子供。TranslateXに5が入っています。

aimConstraintノードを作る

抽出するにはaimConstraintノードを利用します。
aimConstraintは目標物を追いかけるような挙動にしてくれるノードです。
aimConstraintの回転には捻りが含まれていないので、aimConstraintを使えばサクッと実現できます。

ちなみにMayaのメニューにあるaimConstraintコマンドは利用しません。
ノードエディターからtabキーでクリエイトして作ってコネクションしていきましょう。

作ったaimConstraintノードは「bendConstraint」という名前に変更しました。

コネクションの作成

コネクションの全体像は以下です。
スクリーンショット 2018-12-23 22.05.53.png

SetAttr

bendConstraint.worldUpType.set(4)
bendConstraint.target[0].targetTranslate.set(1,0,0)

コネクション

src_joint.matrix >> bendConstraint.target[0].targetParentMatrix
bendConstraint.constraintRotate >> dst_jointBend.rotate

結果

わかりにくいですが…。
src_jointBendが一緒に動いています。
Test.gif

次のステップに向けて

曲げ回転を抽出できたので、捻り回転も取り出したいですよね。
捻りは「元の回転 - 曲げ回転 = 捻り回転」です。
次のAdventCalenderの時にでも…ってかなり先だー!

それでは!

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3