| On this page | |
| Since | 20.0 |
一連のサンプル値を与えると、このノードは、ポーズウェイト補間を用いて、(サンプルと同じ空間内で)指定された目標値に対するウェイトを計算します。
このメソッドはrig::RBFInterpolationに似ていますが、
より少ないサンプル数でオーバーシュートが発生しにくい制御可能な結果が得られます。
ただし、 target のサイズが3を超える場合やサンプル数が非常に多い場合、処理が非常に遅くなる可能性があります。
ポーズウェイト補間を実行するには、2つの段階を踏みます:
-
まず、サンプルに拘束される(指定した最大グリッド間隔の)ラティス“メッシュ”を平滑化して、近似値を算出します。
-
次に、局所補間法を用いて、ラティスメッシュ内のセルの四隅から最も近いセルを検索し、ターゲットウェイトを計算します。
入力 ¶
target:
FloatArray
サンプル値の範囲内のどの位置にあるかを指定してウェイトを計算するための入力値。
examples:
FloatArray
補間を実行するために1行float配列に連結されたサンプル target 値。 examples の長さは、 target の長さの倍数でなければなりません。
maxcellsize:
Float
ラティスメッシュの最大セルサイズ。 この値を小さくすると、解の精度を向上させることができますが、解くのに必要な時間が長くなります。
smoothingmode:
Int
ウェイト計算の1つ目の段階で使用される平滑化モード。
smoothingmode |
意味 |
説明 |
|---|---|---|
0 |
Taubin |
Taubin95に基づいた反復的なメッシュ平滑化の実装。 このメソッドは、ラプラシアン拘束をサポートしておらず、常にボックス拘束を適用します。 |
1 |
Quadratic Program |
メッシュエネルギーの最小化を 二次計画法 として定式化します。 このメソッドは、ボックス拘束およびラプラシアン拘束をオプションでサポートしています。 |
2 |
Sparse Solve |
最適性条件を用いて、メッシュ平滑化を疎な線形システムに縮約します。 このメソッドは、ラプラシアン拘束をサポートしていますが、ボックス拘束はサポートしていません。 |
passband:
Float
smoothingmode が Taubin に設定されている場合、ここには、ラティスメッシュポイントを平滑化する時のノイズカットオフ周波数を設定します。
iterations:
Int
smoothingmode が Taubin に設定されている場合、ここには、ラティス上で実行する平滑化の反復回数を設定します。 smoothingmode が Quadratic Program に設定されている場合、これは解法に使用される最大反復回数となります。
secondordersmooth:
Bool
Trueに設定すると、その結果の滑らかさが増します。 これは、 smoothingmode が Taubin の場合にのみ推奨されています。
boxconstraints:
Bool
Trueに設定すると、出力されるウェイトが0から1の範囲に制限されます。 これによって、補間結果がサンプル値の範囲外にならなくなるので、たいていの場合はこの設定が望ましいです。
laplacianconstraints:
Bool
Trueに設定すると、サンプルポイントの影響力を強くさせる拘束が適用されます。 その影響力は、 influencestrength で設定されます。
influencestrength:
Float
laplacianconstraints がTrueに設定されている場合、ここには、サンプルポイントの局所的な影響力を設定します。 スケール係数を大きくすると、サンプルポイントが隣接ポイントに及ぼす局所的な影響力が増大します。
interpmode:
Int
ウェイト計算の2つ目の段階で使用される局所補間モード。
interpmode |
意味 |
説明 |
|---|---|---|
0 |
Inverse Weight |
各頂点でのウェイトに反比例するウェイトを用いて、周辺メッシュセルからポイントを補間します。 このメソッドは、特に最大セルサイズが大きい場合に揺れが生じる可能性があるため推奨されていません。 |
1 |
Multi-Linear |
周辺セル頂点におけるウェイトに基づいて、ウェイトを線形補間します。 |
2 |
Multi-Spline |
上記と同様ですが、Catmull-Romスプラインが使用されます。 これによって、若干のオーバーシュートを伴うものの、最も滑らかな結果が得られます。 |
distancepow:
Float
ラティスセル内での Inverse Weight 補間に使用される指数。
reload:
Bool
Falseに設定すると、 target および examples の入力のサイズに応じて内部キャッシュが行なわれ、 target および examples 内の値のみが変更された場合、再計算は行なわれません。 キャッシュを無効にするには、これをTrueに設定してください。
出力 ¶
weights:
FloatArray
サンプル間で target に対して補間されたウェイト。 これらのウェイトは、散在補間を実行するための値の線形結合(または加重平均)に使用されるべきものです。 値としては、ブレンドシェイプの位置(例えば、ポーズ空間の変形用)やサンプルに呼応した他の値のセットなどが該当します。
| See also |