光台通信 その14.NURBS(Non-uniform rational B-spline)曲線について

 コンピュータによる設計支援ツールとしてCAD(computer aided design)アプリケーションがありますが、 高機能なCADではあらゆる3次元形状の表現を可能としています。基本的なこととなりますが、3次元の形状を 表現するためには物体の境界面のデータが必要です。そして面を表現するためには、その面の特徴を表す線の データが必要となります。多くのCADシステムではそれらの面や線のデータを表現するために NURBS(Non-uniform rational B-spline:非一様有理B-スプライン)形式を採用しています。 そしてNURBS形式で表現された線や面をNURBS曲線、NURBS曲面と呼びます。 本トピックスではNURBS曲線について紹介していきます。

1.NURBS曲線の定義
 NURBS曲線は3次元空間上では次のベクトルで表現します。
ここでは有理基底関数
で表します。更にはB-スプライン曲線の基底関数
を利用しています。(4)式の右辺の項の分母が0になる場合はその項自体を0とます。 また、は重み値、n+1は制御点の数、はノットベクトル、 は制御点ベクトル、は次数を表します。 よって制御点ベクトル、制御点ベクトルごとの重み値、 次数及びノットベクトルが決まればNURBS曲線を定義できることが分かります。 また、次の規則に従ってノットベクトル及びを設定すると制御点の始点と終点がNURBS曲線の始点と終点に一致します。
最初のk+1個と最後のk+1個のノットベクトルの値は同じ値で多重に定義されます。 また、となるように単調増加で設定されている必要があります。
このようにNURBS曲線は多くのパラメータを要しますが、様々な線を表現することができます。 次にNURBS曲線の次数と重みの変化による影響を調べていきます。

2.NURBS曲線の次数の影響
 以下の図1のように制御点9点を設定し、次数kを0から5までの6パターン変化させた場合のNURBS曲線について調べます。 また、重み値は全て1、ノットベクトルは0.0≦x≦1.0とし、多重度以外の項は単調増加となるように一定の増分値を 設定します。例えば次数2のときのノットベクトルは{0,0,0,0.143,0.286,0.429,0.571,0.714,0.857,1,1,1}となります。 なお1点目と9点目は同じ座標です。
この条件でNURBS曲線を描画すると図2のようになります。

k=0のときは制御点を直線で結んだ線となります。そして次数を上げるごとに始点と終点を除く制御点から NURBS曲線が徐々に離れていくことが分かります。各kにおける有理基底関数のグラフを図3に示します。

は矩形で表現されていますが、次数が上がるごとに非零の領域が大きくなり、 グラフの最大値が小さくなっていることが分かります。

3.NURBS曲線の重み値の影響
 次に重みによる影響を調べるため、前節のモデルにおいてk=2の場合 (ノットベクトル:{0,0,0,0.143,0.286,0.429,0.571,0.714,0.857,1,1,1})の6点目の制御点の 重み値を0.0,0.05,0.25,0.5,5.0,50.0の6パターンで変化させた場合について調べていきます。
が大きると該当制御点の影響が大きくなることが分かります。また=0の場合、 該当制御点の影響がなくなるため5点目と7点面を直線で結んだ表現となります。各における 有理基底関数のグラフを図3に示します。
茶色のグラフ線が制御点6番目の有理基底関数ですが、重み値が大きくなるにつれ6番目の制御点を中心とした 自身の影響範囲は大きくなり、他の基底関数の影響範囲は小さくなっていく様子が分かります。

4.NURBS曲線での円弧表現
 最後にNURBS曲線での円弧表現を示します。制御点モデルは今までと同じく9点設定ています。
次のようにパラメータを設定します。
この条件で円を描画しますと図8の円が得られます。
図8における有理基底関数のグラフを図9に示します。
ノットベクトルの与え方ですが、最初の3個と最後の3個以外に多重化している箇所があります。 これはノットベクトルを多重化すると制御点に一致するNURBS曲線の性質を利用したものです。 このようにノットベクトルの変化が一様でない様を許容していることから NURBS:「Non-uniform rational B-spline」のNon-uniformの由来となっています。