コミュニティ
3ds Max - 日本語
製品テクニックや情報を共有、質問、解答したり、情報を検索など使い方は様々です。お役立てください。
キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

【スクリプト】 ツリー内でコンストレインの掛かっているオブジェクトの親回転値を取得する方法について

2件の返信2
解決済み
返信
メッセージ1/3
Anonymous
11408 件の閲覧回数, 2 件の返信

【スクリプト】 ツリー内でコンストレインの掛かっているオブジェクトの親回転値を取得する方法について

3dsmax2012及び2013についてお聞きしたいと思います。

 

下図のような親子構造で、Box003の方向コンストレイントがかかっているBox002から親回転値を取得したいと思います。

 

通常の場合は in coordsys parent ($.rotation.x_rotation) とスクリプトを書けば、選択オブジェクトの親回転値を

取得できるとおもいます。実際Box003にこれを実行すると-25.0という値が返ってきます。

 

しかしBox002にこれを実行すると、Box004とBox001の回転値の影響を受けた-40.0という数値が帰ってきてしまいます。

Box002のトランスフォームパネルにはきちんと-25.0という親回転値が表示されるのですが、

表示と同じ値を取得するにはどのような書き方をすればよいでしょうか。

 

よろしくお願いします。
Untitled-2.jpg

タグ(2)
2件の返信2
メッセージ2/3
Anonymous
次のアカウントへの返信: Anonymous

この掲示板へ質問を投稿後、いくつかのフォーラムを探し、指針となるような以下のスレッドを見つけました。

 

http://area.autodesk.com/forum/autodesk-3ds-max/maxscript/does-quattoeuler24041-work/

http://forums.cgsociety.org/showthread.php?f=98&t=947428

 

とても興味深い内容だったのですが、未だに解決を得ることができておりません。

スレッド内で見つけた以下のスクリプト文をBox003とBox002に試してみました。

確かにBox003にはきちんと-25.0が返ってくるのですが、コンストレイントの掛かっているBox002には

 

coordsys parent ($.rotation.x_rotation)
-40.0
in coordsys gimbal $ . rotation . x_rotation
-40.0
quatToEuler $.rotation.controller.value
(eulerAngles -40 3.41588e-006 1.41563e-006)
quattoeuler2 $.rotation.controller.value
(eulerAngles -40 3.41588e-006 1.41563e-006)

と親の数値の影響がある値が返ってきてしまい、本来取得したい-25.0とならず、

コンストレイントのかかっているオブジェクトの数値を取得する方法については見つかりませんでした。

 

引き続き表題の件につきまして回答いただけないかとおもいます。

よろしくお願いします。

 

メッセージ3/3
Anonymous
次のアカウントへの返信: Anonymous

コンストレイントの掛かっているBox002から直接親回転値を取得する方法については未だに不明ですが、

 

A = $Box001.transform.rotation
B = $Box002.rotation.controller.Orientation_Constraint.rotation

quattoeuler (inverse A-B)

というように、取得したいオブジェクトの親子関係を使ってやることで取得できました。

この方法ですと、仮にAが他のオブジェクトに対してコンストレイントが掛かっていた場合でも

きちんと親回転値を取得できました。

 

一応やりたいことができましたので、これにてスレッドを閉じようと思います。

自己完結でスレッドを使ってしまいすみません。

ありがとうございました。

お探しの情報が見つからないときは、コミュニティで質問しましょう。困っている人がいたら、情報を教えてあげましょう。

フォーラムに投稿