[Maya Binding] FK Skeleton Stretching 実装のアイデア - 2020 年の新機能に基づく

このメモは個人的な蓄積のためのものであり、説明は専門的ではありません。間違いがあれば修正してください

序文

3 点 IK スケルトンのプロポーショナル ストレッチの実現では、前のセクション [Maya バインディング] で3 点 IK ジョイントのストレッチを実現しました。IK ジョイントのコントローラは 1 つだけです (手首には親コンストレイントが表示されます)。そのため、ストレッチ エフェクトを実現するために各ボーンの長さを計算しました。
FK ジョイントは 3 セグメント コントローラーをストレッチし、3 セグメント コントローラーの変換ノード内のローカル変換マトリックス Matrix はコントローラー自身の変換情報を記録するため、各セグメントのボーンの長さを計算する必要はありません。
ここに画像の説明を挿入

  • コントローラーの移動方法
    親コントローラーのロケーター** (ロケーターには回転の変更は含まれません)** を使用して、サブジョイントの位置を特定し、そのマトリックスをサブジョイントに渡します。コントローラーは、parentOffsetMatrix関節のプロセス中に引き伸ばされ、ロケーターが移動し、コントローラーはその動きに追従しますが、明示的な変換には影響しません。
    parentOffsetMatrixこれは、maya2020 の新機能であり、暗黙的な変換です。
  • なぜ特別な FK ストレッチ メカニズムを作成する必要があるのでしょうか
    ? コントローラーはペアレント コンストレイントを使用してドリブンの位置を変更できるのに、この一見無意味なアクションをなぜ追加するのでしょうか。
    説明の便宜上、2 つの例を見ることができます:
    ケース 1: コントローラーを直接使用してストレッチする、
    ここに画像の説明を挿入
    ケース 2: 増加したアトリビュート ストレッチ スケール ファクターを使用する:
    ここに画像の説明を挿入
    これら 2 つの例の違いは、コントローラーがゼロ状態のままかどうかです。コントローラーがジョイントに追加されているが、ジョイントの位置を変更したい場合、通常の考え方は、ジョイントを予想される位置に移動し、コントローラーからコンストレイントを解放し、コントローラーをフリーズして、再度コンストレイントすることです。2 番目のケースは、このような状況を効果的に回避し、異なる縮尺モデルの再利用を実現できます。前のセクションの目的についても同じことが言えます。

ジョイントとそのコントローラー階層

ここに画像の説明を挿入
↑上のアウトラインで選択されたコンテンツは、ジョイントとそのロケーターを示しています。ジョイントのロケータは、親ジョイントに対するサブジョイントの相対位置を特定するため、ロケータに“关节名称_OFF_LOC”サブジョイントの相対位置を表す名前を付けます (元の 2 つのボーンの長さは L1、L2 であることに注意してください)。
ここに画像の説明を挿入
↑上記概要で選択した内容 コントローラーの上下関係とは。コントローラーと関節は点拘束関係にありますが、ノードエディターでコントローラーの回転を関節の回転に結び付けます。これは、関節が原則としてコントローラに従って移動および回転されることを意味します。

擬似コードの実装

# stretch the bone
shoulder_FK.scaleX = shoulder_FK_CTRL.stretch * shoulder_FK.scaleX
elbow_FK.scaleX = elbow_FK_CTRL.stretch * elbow_FK.scaleX

# translate the off_loc
shoulder_FK_OFF_LOC.transX = shoulder_FK_CTRL.stretch * L1 # at elbow
elow_FK_OFF_LOC.transX = elbow_FK_CTRL.stretch * L2 # at wrist 

# fill the parentOffsetMatrix of the Ctrl
elbow_CTRL.parentOffsetMatrix=shoulder_FK_OFF_LOC.matrix
wrist_CTRL.parentOffsetMatrix=elbow_FK_OFF_LOC.matrix

利用可能なノード:multDoubleLinear

おすすめ

転載: blog.csdn.net/qq_43544518/article/details/129667560