Transform CHOPは、さまざまな形式の変換(トランスフォーム)を適用し、さまざまな形式(フォーマット)で出力します。 次の目的で使用できます。
- オブジェクトの位置と向きを変更します。
- ある変換形式(トランスフォーム フォーマット)を別の変換形式に変換します。
- 特定の変換順序(トランスフォーム オーダー)を持つ変換チャネルセットを、異なる変換順序を持つ同等のチャネルセットに変換します。
- モーションキャプチャデータの方向、開始点、スケールを変更します。
3つの変換形式(トランスフォーム フォーマット)が存在します。
- 回転用のオイラー角で変換します。 これらは、tx ty tz、rx ry rz、sx sy sz、およびオプションの変換と回転順序xordおよびrordのサフィックスを持つチャネルによって定義されます。
- 回転をクォータニオンで変換します。 これらは、tx ty tz、qx qy qx qw、sx sy sz、およびオプションの変換順序(トランスフォーム オーダー)xordのサフィックスを持つチャネルによって定義されます。
- 4×4または3×3のマトリックス。 これらは、m00、m10、m20、m30、m01、m11 … m33のサフィックスを持つチャネルによって定義されます。 表記はm \[row\] [col]です。 行列は列優先の順序にする必要があります。つまり、変換部分はm03、m13、m23にする必要があります。 4行目と4列目を省略して、代わりに3×3マトリックスを使用できます。 他の形式とは異なり、この形式は欠落したチャネルを持つことはできません。 3×3マトリックスの場合は9チャネル、4×4マトリックスの場合は16チャネルのいずれかを入力する必要があります。
最初の2つの 変換形式は、欠落しているチャネルを指定できます。その場合、デフォルト値が使用されます。 トランスレーションおよびローテーションの場合は0、スケールの場合は1、クォータニオンの場合は 0,0,0,1 です。
多くの場合、入力チャネルはObject CHOPまたはParameter CHOPから取得できます。 次に例を示します。
- geo1:tx geo1:ty geo1:tz geo1:rx …
- headtx headty headtz headrx
- tx ty tz rx … (Parameter CHOPから得られるもの)
- cam1:m00 cam1:m10 cam1:m20 …. cam1:m33
上記のいずれかが変換行列を定義します。 複数の変換セットは、異なるプレフィックスを持つチャネルで指定できます。 異なる形式を使用する異なる変換セットを同じCHOPに含めることができます。 ただし、セット内で形式を混在させることはできません。 各セットは、他の入力セットと組み合わされ、Transform ページの変換により、各セットの最終的な変換が決まります。
入力がCHOPに接続されていない場合、Transform ページから作成された変換を出力します。
入力が接続されている場合、出力には最初の入力と同じ数のサンプルが含まれます。 サンプルは入力間で1:1で結合されます。開始/終了範囲とサンプルレートは無視されます。 入力2 に含まれるサンプルが入力1 よりも少ない場合、そのCHOPの拡張方法を使用して、入力2 の範囲外のサンプルの値が決定されます。
複数セットが入力されている場合、それらは 入力1 から1番目のセット、入力2 から2番目のセットに一致します。 入力1 よりも 入力2 のセットが少ない場合は、セットをループします。 たとえば、第1入力が5セットで、第2入力が2セットの場合、マッチングは1対1、2対2、3対1、4対2、5対1になります。
最初に入力が結合され、次にその結果が Transform ページで定義されたトランスフォームと結合されます。
Transform CHOPのチャネルは、オブジェクトにエクスポートされることがよくあります。
このページでは、入力チャンネルの変換順序(トランスフォーム オーダー)を設定します。入力チャンネルとここで指定した変換順序を用いて、入力チャンネルの変換行列を作成します。これに Transform ページで設定した変換行列を掛け合わせて出力します。
トランスレーション、ローテーション、スケールのいずれかのチャンネルが欠けている場合は、デフォルトでゼロ(スケールの場合は1)となります。
これにより、入力オーダー(順序)が指定されている場合は無視され、以下の2つのパラメータによって選択されたカスタム オーダーによって上書きされます。
Transform Order を変更すると、街で数ブロック進んで東に曲がるのと、東に曲がって数ブロックを進むのとでは、別の場所に行くのと同じように、物事がどこに行くかが変わります。行列数学の用語では、「右にベクトルを乗算する」(列ベクトル)の規則を使用する場合、スケール、ローテーション、トランスレーションの変換順序は、T * R * S * 位置のように書かれます。
- Scale Rotate Translate / srt
- Scale Translate Rotate / str
- Rotate Scale Translate / rst
- Rotate Translate Scale / rts
- Translate Scale Rotate / tsr
- Translate Rotate Scale / trs
Transform Order(上記)と同様に、コンポーネントの Rotate Order を変更すると、コンポーネントの最終的な位置が変わります。Rx Ry Rzのローテーション オーダーは、次のような最終的な回転行列を作成します。 R = Rz * Ry * Rx
- Rx Ry Rz / xyz
- Rx Rz Ry / xzy
- Ry Rx Rz / yxz
- Ry Rz Rx / yzx
- Rz Rx Ry / zxy
- Rz Ry Rx / zyx
変換(トランスフォーム)を組み合わせる前に、入力 0の変換に適用する操作を設定します。
- None / none
操作は適用されません。
- Invert / invert
変換を反転します。
- Transpose / transpose
変換を転置します。 これは、マトリックス形式の変換に対してのみ効果があります。
- Invert Transpose / inverttranspose
変換を反転して転置します。 転置は、マトリックス形式の変換である場合にのみ行われます。
変換(トランスフォーム)を組み合わせる前に、入力 1の変換に適用する操作を設定します。
- None / none
操作は適用されません。
- Invert / invert
変換を反転します。
- Transpose / transpose
変換を転置します。 これは、マトリックス形式の変換に対してのみ効果があります。
- Invert Transpose / inverttranspose
変換を反転して転置します。 転置は、マトリックス形式の変換である場合にのみ行われます。
入力 0 と入力 1 の変換の間に適用される操作を設定します。 2 つの入力間で複数のサンプルおよび/または変換セットがどのように結合されるかについては、このノードの説明を参照してください。
- Input 0, then Input 1 / input0input1
操作はinput0 * input1になります。
- Input 1, then Input 0 / input1input0
操作はinput1 * input0になります。
このページでは、入力を組み合わせて作成した変換(トランスフォーム)と組み合わせることができる追加の変換操作を設定します。ノードに入力が接続されていない場合、このページから作成された変換は、このノードから出力されるものになります。
Transform Order を変更すると、街で数ブロック進んで東に曲がるのと、東に曲がって数ブロックを進むのとでは、別の場所に行くのと同じように、物事がどこに行くかが変わります。行列数学の用語では、「右にベクトルを乗算する」(列ベクトル)の規則を使用する場合、スケール、ローテーション、トランスレーションの変換順序は、T * R * S * 位置のように書かれます。
- Scale Rotate Translate / srt
- Scale Translate Rotate / str
- Rotate Scale Translate / rst
- Rotate Translate Scale / rts
- Translate Scale Rotate / tsr
- Translate Rotate Scale / trs
Transform Order(上記)と同様に、コンポーネントの Rotate Order を変更すると、コンポーネントの最終的な位置が変わります。Rx Ry Rzの回転順序は、次のような最終的な回転行列を作成します。 R = Rz * Ry * Rx
- Rx Ry Rz / xyz
- Rx Rz Ry / xzy
- Ry Rx Rz / yxz
- Ry Rz Rx / yzx
- Rz Rx Ry / zxy
- Rz Ry Rx / zyx
XYZトランスレーション値を設定します。
- X / tx
- Y / ty
- Z / tz
XYZローテーション値を設定します。
- X / rx
- Y / ry
- Z / rz
XYZスケールで縮小または拡大します。
- X / sx
- Y / sy
- Z / sz
上記の操作に適用するXYZピボットを設定します。
- X / px
- Y / py
- Z / pz
上記のパラメータで設定された変換(トランスフォーム)操作が他の変換と結合される前に適用する操作を指定します。
- None / none
何も操作しません。
- Invert / invert
変換を反転させます。
入力した変換(トランスフォーム)がこのページで指定した変換とどのように結合されるか制御します。以下の2つの説明では、右上のベクトル を乗算する規則(列ベクトル)を使用しています。
- Input, then Transform Page / inputxformpage
変換は、Transform Page * Inputとして結合されます。
- Transform Page, then Input / xformpageinput
変換は Input * Transform Pageとして結合されます。
このページでは、ノードから出力される形式を制御します。
オプションで最終的に作成された変換(トランスフォーム)が出力される前に、最後に1つ操作を適用します。
- None / none
何も操作しません。
- Invert / invert
変換を反転させます。
- Transpose / transpose
変換を転置します。 これは、マトリックス形式の変換に対してのみ効果があります。
- Invert Transpose / inverttranspose
変換を反転して転置します。 転置は、マトリックス形式の変換である場合にのみ行われます。
変換(トランスフォーム)が出力される形式(フォーマット)を指定します。
- Transform (Euler) / transform
標準のトランスレーション、ローテーション、スケールチャンネル。Include Order Channels パラメータがオフになっていない限り、TransformおよびRotate Orderのxordおよびrordチャンネルも含まれます。
- Transform (Quaternion) / transformquat
トランスレーション、クォータニオン(回転用)、スケールチャンネル。Include Order Channels’がオフになっていない限り、Transform Orderのxordチャンネルも含まれます。
- 4×4 Matrix / mat
4×4マトリックス用の16チャネル。 チャンネルは列ごとに出力されます。 つまり、最後の4つのチャネルがマトリックスの translate 部分になります。
- 3×3 Matrix / mat3
3×3マトリックス用の9チャネル。 これには、ローテーションとスケールは含まれますが、トランスレーションは含まれません。
- Position / position
空間内でのトランスフォームの最終位置。これには方向の情報は含まれません。
行列を出力するとき、このパラメーターを有効にすることで行列式も出力できます。
さまざまな変換形式(トランスフォーム フォーマット)の命名規則にマッチしないチャンネルの扱いを設定します。
- Warn / warn
命名規則のいずれにも一致しない変換チャネルが見つかった場合は警告を表示します。
- Ignore / ignore
命名規則に一致しないチャネルが見つかった場合は無視します。(警告を表示しません)
- Delete / delete
命名規則に一致しないチャネルを削除します。
デフォルトでは、出力した変換はTransform ページで設定された順序を使用します。 これを有効にすると、出力される変換にカスタムオーダーを使用できます。 これは変換結果自体は変わりませんが、全体的な同じ変換を取得するために異なる順序で結合されるため、チャネルの値は変更される可能性があります。
Transform Order を変更すると、街で数ブロック進んで東に曲がるのと、東に曲がって数ブロックを進むのとでは、別の場所に行くのと同じように、物事がどこに行くかが変わります。行列数学の用語では、「右にベクトルを乗算する」(列ベクトル)の規則を使用する場合、スケール、ローテーション、トランスレーションの変換順序は、T * R * S * 位置のように書かれます。
- Scale Rotate Translate / srt
- Scale Translate Rotate / str
- Rotate Scale Translate / rst
- Rotate Translate Scale / rts
- Translate Scale Rotate / tsr
- Translate Rotate Scale / trs
Transform Order(上記)と同様に、コンポーネントの Rotate Order を変更すると、コンポーネントの最終的な位置が変わります。Rx Ry Rzの回転順序は、次のような最終的な回転行列を作成します。 R = Rz * Ry * Rx
- Rx Ry Rz / xyz
- Rx Rz Ry / xzy
- Ry Rx Rz / yxz
- Ry Rz Rx / yzx
- Rz Rx Ry / zxy
- Rz Ry Rx / zyx
xord および rord チャネルをこのノードから出力するかどうかを設定します。 Transform(Euler)フォーマットとTransform(Quaternion)フェーマットでは xord が出力されます。 Transform(Euler) フォーマットでは rord が出力されます。 matrix フォーマットとposition フォーマットには次数は含まれません。
入力が複数のサンプルを持つ場合、隣り合うサンプルの回転を連続的に維持しようとします。基本的には、360度のジャンプを避けようとします。360 -> 1 の代わりに 360 -> 361(これは同じ 2 回転です。
r[xyz]度で設定する初期回転ヒント。これに対して回転を連続した状態を維持しようとします。
これをオンにしてHint パラメータを使用すると、生成される回転チャネルの開始値を設定できます。 これにより、回転チャンネルの解を特定の開始点(カメラ出力制御など)に変更することができます。
作成する回転チャンネルの開始値を指定します。
- Hint / hintx
- Hint / hinty
- Hint / hintz
これをオンにすると、チャネルが強制的に「タイムスライス」されます。 タイムスライスは、最後のクックフレームと現在のクックフレームの間の時間です。
影響を受けるチャネルを特定するために、一部のCHOPでは、Commonページの
でスコープ文字列を使用することができます。
複数の入力CHOPのサンプルレートが異なる場合を処理方法を設定します。 リサンプリングが発生すると、カーブは補間方法オプションに従って補間されます。補間オプションが使用できない場合はLinearで処理されます。
- Resample At First Input’s Rate / first
最初の入力のレートを使用して、他の入力をリサンプリングします。
- Resample At Maximum Rate / max
最も高いサンプリングレートでリサンプリングします。
- Resample At Minimum Rate / min
最も低いサンプリングレートでリサンプリングします。
- Error If Rates Differ / err
競合するサンプルレートは受け入れません。
CHOPチャンネルをパラメーターに接続する方法を設定します。 詳細については、Exportの章を参照してください。
- DAT Table by Index / datindex
ドッキングされたDATテーブルを使用し、CHOP内のチャンネルのインデックスを介してチャンネルを参照します。
- DAT Table by Name / datname
ドッキングされたDATテーブルを使用し、CHOP内のチャネルの名前を介してチャネルを参照します。
Channel Name is Path:パラメータでrelative toを設定することで、エクスポートするすべてのパスのルートノードを指定します。
DAT Table Export Methodsメソッドを使用するときにエクスポート情報を保持するために使用されるDATを指定します。