NURBSとは?

NURBS 、Non-Uniform Rational B-Splines(非一様有理Bスプライン))は、単純な2次元の線、円、円弧、曲線から、最も複雑な3D有機フリーフォームサーフェスやソリッドに至るまで正確に表現することのできる3Dジオメトリの数学的表現方法です。NURBSモデルはその柔軟性と正確性から、イラストレーションやアニメーション、製造に至るまで、どのような過程にも使うことができます。

NURBSジオメトリは次に挙げる5つの理由からコンピュータ支援によるモデリングには最適です。

  • NURBSジオメトリの交換に、いくつかの業界標準の方法が使用されています。これにより、ユーザーの貴重な幾何学モデルを、いろいろなモデリング、レンダリング、アニメーション、または工学解析ソフト間でやりとりできます。
  • NURBSには正確な定義があり、その定義の方法は広く知られています。NURBSジオメトリの数学そしてコンピュータ科学はほとんどの主要な大学で教えられています。そのため、カスタムアプリケーションを作る必要のあるカスタムソフトウェアの販売者、工学チーム、工学デザイン事務所、アニメーション制作会社などは、NURBSジオメトリに精通したプログラマを容易に見つけだすことができます。
  • NURBSは、線、円、楕円、球、トーラスなどの標準幾何学オブジェクトと、車体や人体などのフリーフォームのジオメトリオブジェクトの両方を正確に表現することができます。
  • ファセットでオブジェクトを近似する一般的な方法より、NURBSの方法ははるかに少量なデータで一個分のジオメトリを表現できます。
  • 次に説明するNURBSの評価の規則は、効率的かつ正確な方法でコンピュータ上に実装することができます。

NURBSジオメトリとは?

NURBS曲線とサーフェスは同じように動作し、用語も同じものが使われています。曲線の方が説明しやすいため、ここでは曲線を取り上げて詳しく説明します。NURBS曲線は次数、制御点、ノット、そして評価公式の4つで定義されます。

次数

次数(degree)は正の整数で表されます。

この数は普通1、2、3、または5ですが、どのような正の整数でも使用できます。NURBSの線とポリラインは通常次数1、NURBSの円は次数2、そしてフリーフォームの曲線のほとんどは次数3または5です。次数1-5をそれぞれlinear、quadratic、cubic、quinticともいいます。linearは一次、quadraticは2次、cubicは3次、quinticは5次を意味します。

NURBS曲線について書かれているものには、階数(order)という用語を使用しているものもあります。NURBS曲線の階数は正の整数で、次数の数値に1を足して得られます。同じように、次数は階数の数値から1を引いて得ることができます。

NURBS曲線の次数を上げてその形を保つことはできます。しかし、一般的に次数を下げればNURBS曲線の形は必ず変わります。

制御点指定

制御点(control points、コントロールポイント)は少なくとも次数に1を足した数の点のリストです。

NURBS曲線の形状を変更する最も簡単な方法の1つは、制御点を移動することです。

制御点には重み(weight、ウェイト)と呼ばれる数値が付いています。少数の例外を除けば、重みは正の数値です。曲線の制御点の重みがすべて同じ(通常1)である場合、その曲線は非有理(non-rational)と呼ばれ、そうでない場合は有理(rational)と呼ばれます。NURBSのRは有理(rational)のRで、これはNURBS曲線が有理である可能性があることを意味します。実際は、ほとんどのNURBS曲線は非有理曲線ですが、いくつかのNURBS曲線、円とだ円は常に有理です。

ノット

ノット(knots)は次数にN-1を足した数のリストです。この場合のNとは制御点の数です。この数のリストをノットベクトル(knot vector)と呼ぶことがあります。この場合の「ベクトル」は3次元空間内の方向と関係はありません。

ノットの数のリストはいくつかの技術的な条件を満たさなければいけません。この特殊な条件を満たす標準的な方法は、ノットのリストの各数値が前の数値と同じか大きくなること、そして重複するノットの数が次数の数を超えないことです。例えば、次数3で11の制御点があるNURBS曲線の場合、0,0,0,1,2,2,2,3,7,7,9,9,9はノットのリストとして認められます。しかし、0,0,0,1,2,2,2,2,7,7,9,9,9というリストには2が4つあり、この4という数字は次数より大きいため、ノットのリストとは認められません。

ノットが何回重複されているかをノットの多重度(multiplicity)といいます。前の例では、ノット値0は多重度が3、ノット値1は多重度が1、ノット値2は多重度が3、ノット値3は多重度が1、ノット値7は多重度が2、そしてノット値9は多重度が3です。ノットが次数の数だけ重複されている場合、そのノット値は完全多重度ノット(full-multiplicity knot)であるといいます。前の例ではノット値0、2、9は完全多重です。重複されていないノット値は単純ノット(simple knot)といいます。前の例ではノット値1と3は単純ノットです。

ノットリストが完全多重ノットで始まり、その後単純ノットが続いた後に再び完全多重ノットで終り、しかもこれらのノット数値の増加値が一定している場合、これらのノットは一様であるといいます。例えば、次数3で7つの制御点があるNURBS曲線に0,0,0,1,2,3,4,4,4のノットがあるとすると、この場合のノットは一様です。リストが0,0,0,1,2,5,6,6,6の場合は、そのノットは一様ではありません。均一でないノットは非一様(non-uniform、非均一)といいます。NURBSのNとUはnon-uniform(非均一)のことで、NURBS曲線のノットは非均一になることが許されていることを意味します。

ノットリストの中のノット値が重複しているとNURBS曲線は滑らかではなくなります。極端な場合、ノットリストの中に完全多重度ノットがあるということはNURBS曲線の一個所が曲げられて鋭いキンクが発生する可能性があるということを意味します。この性質を利用して、デザイナーの中には、ノットを追加または削除してから制御点を調整して曲線をより滑らかなものに、あるいはもっと鋭く尖った形にすることを好む人もいます。Nを制御点の数とすると、ノットの数はN + 次数 -1なので、ノットを追加すると制御点も追加され、ノットを削除すると制御点も削除されます。ノットはNURBS曲線の形を変更することなく追加することもできます。しかし一般的には、ノットを削除すると曲線の形も変わります。

ノットと制御点

ノットと制御点には常に一対一の関係があると思われがちですが、これは間違いです。次数1のNURBS(ポリライン)のノットと制御点には確かに一対一の関係があります。しかし次数が1より大きいNURBSの場合、2 x 次数値の数のノットと、次数値 + 1の数の制御点が対応して順番にグループ化されます。例えば制御点が7つあり、ノットが0,0,0,1,2,5,8,8,8で次数 3のNURBSの場合を例に挙げましょう。この場合まず、最初の4つの制御点が最初の6つのノットに対応してグループになります。次に2番から5番目の制御点がノット0,0,1,2,5,8に対応してグループになります。3番から6番目の制御点はノット0,1,2,5,8,8に対応してグループになります。最後の4つの制御点は最後の6つのノットに対応してグループになります。

NURBS評価に古いアルゴリズムを採用しているモデラーもあり、これらのモデラーでは、2つの余分のノット値が必要で、ノット数は次数値 + N + 1になります。NURBSジオメトリをインポートしたりエクスポートしたりする際は、Rhinoは必要に応じてこの2つの余分のノットを追加したり、削除したりします。

評価の規則

評価の規則(公式)には数値を入力して点を出力する数学式を使っています。

この式は次数、制御点、そしてノットを使用します。また、この式にはBスプライン基底関数(B-spline basis functions)も含まれています。NURBSのBとSは B-spline (Bスプライン)のことです。評価公式に入力する数値はパラメータと呼ばれます。この評価公式を数値を入れると点の位置が出てくる1つのブラックボックスと考えてみてください。次数、ノット、制御点はこのブラックボックスの働きを決定します。

数式についてよく知ってみたいという方はこちらもご覧になれます: ikipedia: Non uniform rational b spline