NURBS

NURBSとは

NURBS(非一様有理Bスプライン Non-Uniform Rational B-Spline)とは、以下のような曲線(曲面)のことである。

Non-Uniform
節点(ノット)の間隔が一定ではない。
(コントロールポイントによって制御できる範囲を調節できる)
Rational
同次座標系から投影された結果、有理式で表現される。
(ウエイトがある)
B-Spline
Bスプライン基底関数によってできている。

NURBSの構成要素

NURBSは以下の要素によって構成される。

NURBSの用語

階数
階数が上がれば滑らかな曲線が得られるが計算が複雑になるので、CGでは階数は4くらいで十分である。
一つの区間で階数と同じ数の基底関数を混ぜ合わせて曲線が決まる。
(次数 + 1)
次数
次数によって何次の方程式によって曲線が表されるかが決まる。
(階数 - 1)

NURBS曲線の作り方(de Boor Coxの算法)

計算に必要な要素は以下の通り。

計算の手順は以下の通り。

  1. 各制御点を同次座標に変換する。
    Qi *= wi
  2. 以下の1 〜 4 を t = tK-1 から t = tn-K-1 までくりかえす。
    1. tの存在する区間を求める [ts, ts+1]
      ts <= t && t <= ts+1
    2. B-Spline基底関数を求める
      Bi,K(t)(s - K + 1 <= i && i <= s)を計算する。
      1. 1階(0次)
        Bi,1(t) = 1 (ti <= t < ti+1)
        Bi,1(t) = 0 (t < ti && ti+1 <= t)
      2. 2階以上(K階、K-1次)
        Bi,K(t) = ((t - ti)/(ti+K-1 - ti)) * Bi,K-1(t) + ((ti+K - t)/(ti+K - ti+1)) * Bi+1,K-1(t)
    3. 曲線の計算(2次元)
      曲線上の点P(t) = (x, y, w)を求める。
      Qi = (xi, yi, wi)としてBi,K(t)(s - K + 1 <= i && i <= s)を使って以下の式を計算する。
      P(t) = ΣBi,K(t)Qi
      つまり
      x = ΣBi,K(t)xi
      y = ΣBi,K(t)yi
      w = ΣBi,K(t)wi
    4. 同次座標を一般座標に戻す。
      x /= w
      y /= w

参考


Home | Contents
Mail