まとめ
オブジェクトをターゲットに制約する場合、ユーザーは制約が解決された後にターゲット オブジェクトを操作したい場合があります。ただし、この場合、コンストレイント対象オブジェクトは、ConstraintResolve の下流で適用されるターゲット オブジェクトの変換には従わなくなります。
この記事では、コンストレイントされたオブジェクトを変換する方法を説明し、 Katanaプロジェクトの例を使用してセットアップを説明します。
詳しくは
添付のサンプル プロジェクトでは、 CameraScreenWindowConstraintを使用して平面をカメラの視野に制約する制約オブジェクトのセットアップを示します。制約が解決された後にカメラが操作されると、制約された平面はカメラの変換に従わなくなります。
ConstraintResolveノードの前に、 CameraScreenWindowConstraintノード レベルでオブジェクトの位置を表示すると、制約されたオブジェクトには、カメラを制約ターゲットとして参照するxform.constraint属性が表示されます。
ConstraintResolveノードにビュー フラグを設定した後、 xform.constraint属性がxform.resolvedConstraint.matrix属性に解決されることを確認します。
これにより、この時点でコンストレイントされたオブジェクトに適用される変換が計算されます。
ノード グラフのさらに下流にあるターゲット オブジェクト (つまりカメラ) の変換は、この時点までに行列がすでに計算され適用されているため、制約にはもう影響しません。
コンストレイントされたオブジェクトを変換したい場合は、次のようにConstraintResolveノードの上流にTransform3Dノードを作成します。
これにより、コンストレイントされたオブジェクトを変換できるようになります。この設定を示すサンプルKatanaプロジェクトが添付されています。
添付ファイル
私たちはそれを聞いて申し訳ございません
理由をお聞かせください