Kochanek–Bartelsスプライン曲線

提供: testwiki
ナビゲーションに移動 検索に移動

Kochanek-BartelsスプラインまたはKochanek-Bartels曲線は、接線の動作を変更するために定義されたtension、bias、およびcontinuityパラメータを持つ3次エルミートスプラインである。コンピュータアニメーション制作において、キーフレームの補間モーションに対してアニメーターが望む効果の実現を自動化し、追加情報の入力の手間を削減する目的で、カナダ国立映画庁のKochanekと同国ウォータールー大学のBartelsにより考案された。 [1] [2]

定義

各キーフレームのキー位置(データ点)を 𝐩i, 𝐩i+1,… とし、3次エルミートスプラインにより補間する。

2つのキー位置のincomingおよびoutgoing接ベクトルの例[3]

各 𝐩i について、incoming接ベクトル 𝐃𝐒 とoutgoing接ベクトル 𝐃𝐃 を、以下の通り定義する。

𝐃𝐒i=(1−t)(1+b)(1−c)2(𝐩i−𝐩i−1)+(1−t)(1−b)(1+c)2(𝐩i+1−𝐩i) 𝐃𝐃i=(1−t)(1+b)(1+c)2(𝐩i−𝐩i−1)+(1−t)(1−b)(1−c)2(𝐩i+1−𝐩i)

開始点 𝐩i、終了点 𝐩i+1 の区間について、開始接ベクトル 𝐦i=𝐃𝐃i、終了接ベクトル 𝐦i+1=𝐃𝐒i+1 として、3次エルミートスプラインの定義式にあてはめることにより、Kochanek-Bartelsスプラインを得る。

パラメータと作用

パラメータ 作用、用途
デフォルト(t=b=c=0)
適用例
接ベクトルは隣接する2つの弦(点𝐩iについては 𝐩i−𝐩i−1 と 𝐩i+1−𝐩i)の平均であり、Catmull-Rom splineが得られる。
t テンション
適用例(赤: 0.5, 青: −0.5)
キー位置における曲線の曲がり具合を調節する。

テンションパラメータはキー位置におけるincoming接ベクトルとoutgoing接ベクトルの長さを同様に変化させるスケール係数として作用する。 t>0 の場合、接ベクトルの長さが短くなり、曲線が引き締まる。t<0 の場合、接ベクトルの長さが長くなり、曲線のたるみが大きくなる。

b バイアス
適用例(赤: 0.5, 青: −0.5)

アクション時にキー位置を「オーバーシュート」してフォロースルーしたり、「アンダーシュート」して動きを誇張したりするアニメーション効果を表現する。

接ベクトルは隣接する2つの弦の平均だが、バイアスパラメータは2つの弦に異なる重みを割り当てることで、補間パスがキー位置を通過する際の方向を制御する。 b<0 の場合、前方の弦(𝐩i+1−𝐩i)の重みが大きくなり、b>0 の場合、後方の弦(𝐩i−𝐩i−1)の重みが大きくなる。

c 連続性
適用例(赤: t=1, 青: c=−1)

木に当たって跳ね返るボールの動きなど、事前に減速することなく衝突点で運動方向を変える急激な変化についてリアルな効果を生み出す。

c<0 の場合、incoming接ベクトルについては後方の弦(𝐩i−𝐩i−1)の重みが大きくなり、outgoing接ベクトルについては前方の弦(𝐩i+1−𝐩i)の重みが大きくなる。
この場合の動作の経路は t を大きくした場合と似ているように見えるが、動作のダイナミクスは異なる。 t を大きくした場合は、接ベクトルの長さ、つまり速度はキー位置に接近するにつれて低下するため、不連続性は生じない。 一方、c を小さくした場合は、速度は低下せず一定のままで、キー位置で運動方向が急激に変化する。

実装例

1996年のSteve Noskowiczのソースコードは、実際にこれらの値が描画されたカーブに与える影響を記述している。

Tension T = +1→ Tight T = −1→ Round
Bias B = +1→ Post Shoot B = −1→ Pre shoot
Continuity C = +1→ Inverted corners C = −1→ Box corners

コードには、これらのスプラインをBASICダイアレクトで生成するために必要なマトリックスサマリーが含まれている。

脚注

テンプレート:Reflist

外部リンク

関連項目

  1. ↑ テンプレート:Cite journal
  2. ↑ テンプレート:Cite book
  3. ↑ Kochanek, Bartels (1984), p.36, Figure 6 に基づき作成