NURBS

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
3次元のNURBS曲面は複雑で有機的な形状をとることができる。制御点は曲面の方向と位置を支配する。最下部の四角形はこの曲面のXY平面上への投影である
NURBS曲線の例
Animated version

NURBSはNon-Uniform Rational Basis Spline(非一様有理Bスプライン) の略で、曲線や曲面を生成するためにコンピュータグラフィックスで一般的に採用される数学的モデルである。その柔軟性と正確性からモデリング用の形状にも、解析的な用途にも向いている。

歴史[編集]

NURBSは1950年代船体航空機自動車の外表面形状に使われるような自由曲面を数学的に正確に表現する必要のあったエンジニア達によって開発された。必要に応じていつでも完璧に同一の形状が再生成されるような仕組みはそれ以前にはなく、曲面を表現するにはデザイナーによって形作られた物理的な模型を用いる他なかった。

この開発におけるパイオニアは、共にフランス出身のルノーのエンジニア ピエール・ベジェシトロエンポール・デ・カスティリョ英語版 がいる。ベジエとデ・カスティリョはほとんど同時に開発を進めており、そのことを互いに知らなかった。このモデルが一般的にコンピュータグラフィックスのユーザ間でスプライン曲線のひとつであるベジェ曲線として知られているのは彼が自分の研究を出版したからである。いっぽうデ・カスティリョは彼の開発したパラメトリック曲面を評価するためのアルゴリズムとして知られるのみにとどまる。1960年代にNURBSはベジェ曲線の一般化されたモデルであることがわかった。NURBSがその名の通り非一様有理Bスプラインであるのに対し、ベジェ曲線は一様非有理Bスプライン(uniform non-rational B-splines、ただし一様非有理BスプラインとかUNRBSと呼ばれることはない)といえる。

当初はNURBSの利用は自動車メーカー内で用いられるプロプライエタリCADソフトのみに限定されていた。その後標準的なコンピュータグラフィックスソフトにも採用されていった。 1989年Silicon Graphicsワークステーション上で初めてリアルタイムでインタラクティブなNURBSのレンダリングが可能になった。1993年にはCAS Berlinというベルリン工科大学と共働関係にあった小さなスタートアップ企業がNöRBSという名のパーソナルコンピュータ上で動作するNURBSモデラが開発された。こんにちほとんどのプロフェッショナルなデスクトップCGソフトはNURBSの技術を採用している。そのうちのほとんどはそれ専用の企業からNURBSエンジンを購入している。

使用[編集]

モーターヨットのモデリング

NURBSはCADやCAMCAEで一般的に用いられており、IGESSTEPACIS英語版PHIGSなど数々の世界標準に採用されている。コンピュータグラフィックスソフトやアニメーションソフトウェアパッケージにも採用されていることがある。MayaCinema 4Dが有名である。 民生品では2004年発売のSONY製携帯ゲーム機のPSPにも搭載されている。PSPの発売当時はSONYの主力据え置きゲーム機であったPS2にすら搭載されていない新機能であるとして話題になった。

NURBSはコンピュータプログラムにとって都合がよいだけでなく、人間による編集にも向いている。NURBS曲線を布の縦糸と横糸に使ったものがNURBS曲面と いえる。その形状は制御点(control point)により定義され、制御点を編集し移動することによって曲面形状を変化させられる。 NURBS曲面は特に、やや単純な幾何形状をコンパクトに表現するのに強みがある。俗に有機的曲面と呼ばれるキャラクタなどのモデリングにはサブディビジョンサーフェスが向いており、実際ゲーム業界やアニメーション業界ではNURBSよりもこちらのほうが普及している。サブディビジョンサーフェスは全体が柔らかい生物的な モデルには無類の強さを誇るが、数学的に尖った角のある形状はどうしても表現できないためCADでの利用はまずない。NURBSの数学的な正確性という強 みとサブディビジョンサーフェスの柔らかな形状という強みを併せ持った新しいスプラインが T-splinesである。これらはNURBSの2分の1の制御点数で柔らかな形状を表現できる。

一般的に言って、NURBS曲線やNURBS曲面の編集は極めて直観的で予想を裏切らないものである。制御点は曲線や曲面の上を通っているか、そうでなければゴムバンドで繋いであるかのように曲線・曲面を引っ張っているように感じられる(非一様有理でない単純なBスプラインでは、一般に制御点が曲線・曲面上を通らない)。モデリングはベジェ曲線のように要素の制御点をいじって編集することもできるし、より高度なスプラインモデリングの ような階層状の制御を行うこともできる。スプラインモデリングとは、NURBS曲面の四角い「布」のうち数辺のみをNURBS曲線で定義して曲面そのもの の生成はソフトに任せる方法である。こうすることで本来無数の制御点が必要になるような複雑な形状をずっと少ない制御点で表現されるスプライン数本で滑ら かに表すことができる。

曲線・曲面の連続性[編集]

例 えばモーターヨットの船体の表面をモデリングしていると仮定しよう。大抵の場合、モデルはNURBS曲面1枚では表しきれない(モーターヨットを一枚の伸 縮自在の布で包むことは相当無理をすれば不可能ではないが、NURBSの性質上避けるべきである)。そのため「パッチ」と呼ばれる何枚かのNURBS曲面 をつなぎあわせて継ぎ接ぎをすることになる。モーターヨットの船体を滑らかにしたい場合、継ぎ接ぎの跡は残したくない。複数のNURBS曲面を滑らかに、 あたかも一枚の曲面であるかのように溶け込ませあうためには、数学的な幾何的連続性を確保しなければならない。

NURBSの特徴を活かし、高度なモデリングツールでは幾何的連続性を様々なレベルで実現することが可能である。

位置連続Positional continuity (G0): 2つの曲線・曲面が当該部分で「接続」されていることを保証する。接続しているだけなので、尖ったコーナーやエッジが生じる可能性がある。こういった接続ではハイライトは繋がっておらずトリップする。また製造過程で問題を起こすことがある。

接線連続Tangential continuity (G1): 当該部分でのベクトルが平行で、同じ方向を向いていることを保証する。この接続ではハイライトは繋がっているが滑らかでないことがある。ただネジやエンジ ン内部など審美的な要素の低い一般的な工業製品では十分な滑らかさである。このレベルの滑らかさを持っているサーフェスをクラスBサーフェスClass-B Surfaceと呼ぶことがある。エッジに単純な角丸(フィレット)をかけた場合、そのエッジは接線連続になる。

曲率連続Curvature continuity (G2): 接線連続G1よりさらに厳しく、当該部分でのベクトルが同じ長さ、かつ同じ変化率であることを保証する。曲率連続なエッジに落ちるハイライトは滑らかであ るため、それら2つのサーフェスはあたかもひとつであるかのように見える。そのため人目に触れやすい外面の表面はこのレベルで表現されていることが望まし い。このレベルの滑らかさを持っているサーフェスをクラスAサーフェスClass-A Surfaceと呼ぶことがある。iPhoneなどのApple製品や一般的な自動車は曲率連続のサーフェスでモデリングされている。

技術的な定義[編集]

NURBS曲線はその次数とウェイトの指定された複数の制御点のセット、そしてノットベクトルで構成される[1]。前述のとおりNURBSはB-スプラインとベジエ曲線の一般化された表現だが、最大の違いは制御点がウェイトを持つことである。ウェイトを持つことを表すのが有理rationalであるということで、NURBSはB-スプラインの有理である特別なケースである。

Surface modelling.svg

ベジエやNURBS曲線に含まれるパラメータ(媒介変数)を様々な値に変化させるとその曲線は2,または3次元の直交座標系上で表せる。同様にベジエやNURBS曲面に含まれるパラメータ(媒介変数)を様々な値に変化させるとその曲面は直交座標系上で表せる。 NURBS曲線/曲面は以下の点で有用である:

  • アフィン変換を行っても不変である[2]。 そのため回転や移動(これらは代表的なアフィン写像である)といった変換を各制御点ごとに行えばNURBS曲線や曲面もそっくりそのまま変換される
  • 自由曲面と、円錐円柱などの幾何的で標準的な形状の両方を表せる。例えばベジエ曲面は正確な円を表せないという致命的な欠陥があるがNURBSは可能である
  • あらゆる性質の表面を表現できる柔軟性。生物的な形状もサブディビジョンサーフェスなどに比べればやや難度が高いだけで可能だし、ベジエでは難しい曲率連続の曲面も作れる
  • ポリゴンメッシュなどのより単純な方法に比べ、少ないメモリ消費で形状を表現できる
  • 数値的に安定で正確なアルゴリズムを用いてかなり速く形状を評価できる

以下の節では2次元上のNURBS曲線に限定して記述するが、全ての記述は3次元上、またはそれ以上の次元においても適用可能であることに留意してほしい。

制御点[編集]

制御点は曲線の形状を決定する[3]。曲線上のあらゆる点の位置は、その前後に配置された数個の制御点により計算され決定される。それら制御点にはいわば重要さ・影響力に差がある。制御点がその曲線上の点に近ければ近いほどその点の位置への影響は大きくなる。次数dの曲線においては、その点から数えてd+1個離れた制御点はその点に全く影響を及ぼさない。逆に言えばd個離れたところまでの制御点はその点の位置に影響を大なり小なり及ぼすことになる。次数dのある多項式関数(基底関数である)によってその影響力は計算される。

ある曲線(例えばペンで紙にスケッチしたカーブ)に近似させたい場合、理論上は制御点は多ければ多いほどより近似させることができる。ただ有限個数の制御点ではある一定の階数の曲線までしか近似させられない。 NURBS曲線の制御点には個々にウェイトというスカラー量が設定されており、ユーザはこれを任意に変更できる。デフォルトは1であるが、例えば2にすればその制御点の影響力が2倍になる。ゴムバンドで引っ張る比喩でいえばゴムバンドの強さが2倍になり、より強く曲線を自分のほうに引き寄せるような働きをする。ウェイトが0であれば影響力はなくなる。このように影響力を点ごとに変えられることが有理rationalであるという意味である。ただこのウェイトは主に円や楕円などの円錐曲線を数学的に厳密に表現するために導入されたものであり、日常のモデリングでは殆ど意識されずデフォルトのまま利用することになる。

ノットベクトル[編集]

ノットと制御点の違い[編集]

次数と階数[編集]

NURBS曲線の階数orderは、その曲線上の任意の点へ影響をおよぼす制御点の数である。次数degreeはその曲線の項の数である。階数=次数+1であり、曲線は次数(つまり階数−1)個の項をもつ多項式であらわされる。階数2のNURBS曲線の次数は1であり、つまりy=ax+bのような直線である。次数2のNURBS曲線の階数は3となり、2つの項で構成される線形多項式で表現される。そのため二次曲線と呼ばれる。同様に階数4であれば次数3,3次関数を表す。制御点の数は階数以上である必要がある。大抵のCADではそれ以下の制御点で曲線描画が終われないか、そうでなければとりうる最高の階数に置き換えられる(例えばRhinoceros 3Dで次数5に指定して曲線を描く場合、ほんとうに次数5の曲線にしたいのならば初点と終点を含めて6点以上制御点をうてばよく、4点しか打たなかった場合は次数が3、3点しか指定しなかった場合は次数が2の曲線になる)。

定義上は階数5や階数7のものも問題ないが、実際のCADでは2,3,4,6,8(それぞれ次数が1,2,3,5,7)、特にほとんどの用途がこなせる階数4=次数3の曲線が多く用いられる。高い階数のものはより滑らかになるが、高すぎる階数は内部的に数値的問題を引き起こしやすく、しかも計算が無意味に遅くなるため実用上意味がない。

基底関数[編集]

NURBSの基底関数はB-スプラインの基底関数と同じものを使う(NURBSはB-スプラインの一族に属する)。ふつうN_{i,n}(u)で表される。ここでii番目の制御点に対応し、nは基底関数の次数である[4]。媒介変数の依存性(u)はしばしば問題にならないためN_{i,n}と表されることが多い。

次数n=0の関数N_{i,0}定数関数となる。対応するノットの範囲で1であり、それ以外のノットでは0になる。 同様に考えていくと、N_{i,n}N_{i,n-1}N_{i+1,n-1}の線形近似である。

NURBS曲線の一般式[編集]

前節で説明した基底関数N_{i,n}を用いて、NURBS曲線Cは一般に次のような式で表すことができる[5]

C(u) = \sum_{i=1}^{k} {\frac
{N_{i,n}w_i}
{\sum_{j=1}^k N_{j,n}w_j}}
\bold{P}_i = \frac
{\sum_{i=1}^k {N_{i,n}w_i \bold{P}_i}}
{\sum_{i=1}^k {N_{i,n}w_i}}

ここで、 kは制御点の個数。制御点\bold{P}_iはウェイトw_iを持つ。分母は正規化係数であり、全てのウェイトが1である場合1になる。この式は通例次のように記述される:

C(u)=\sum_{i=1}^k R_{i,n}(u)\bold{P}_i

ここで関数R_{i,n}(u)

R_{i,n}(u) = {N_{i,n}(u)w_i \over \sum_{j=1}^k N_{j,n}(u)w_j}

有理基底関数と呼ばれる。

NURBS曲面の一般式[編集]

NURBS曲面はNURBS曲線のテンソル積で得られる。2つの独立媒介変数uv で表される。(それぞれijに対応する):[6]

S(u,v) = \sum_{i=1}^k \sum_{j=1}^l R_{i,j}(u,v) \bold{P}_{i,j}

またこの場合有理基底関数は

R_{i,j}(u,v) = \frac {N_{i,n}(u) N_{j,m}(v) w_{i,j}} {\sum_{p=1}^k \sum_{q=1}^l N_{p,n}(u) N_{q,m}(v) w_{p,q}}

となる。

NURBSオブジェクトの変形[編集]

NURBSオブジェクトには様々な変形をほどこすことができる。例えばある曲線が次数dでありn個の制御点で表されているとしよう。全く同じ曲線が次数dでありn+1個の制御点で表すことができる。ただそのためには複数の制御点の位置が変更され、またノットがひとつノットベクトルに追加されることになる。

こういった変形はデザインの過程で様々な方法で用いられている。以下に変形の例を示す[7][8]

ノットの追加[編集]

As the term suggests, ノットの追加 はノットをノットベクトルに追加する変形。曲線の次数がdであるとき、d-1個の制御点が新しいd個の制御点で置き換えられる。ノットの追加は曲線の形状自体は変更しないが、制御点は移動する。ノットは複数回追加できる。

曲率[編集]

微分幾何学において最も重要なのは曲率\kappaである。曲率はその曲線のエッジやコーナーなど局部的な様子を示すのに最適である。1次と2次の導関数の関係性を示すものでもあるため、曲線の形状を正確に知るためにも有用である。一度導関数がわかれば簡単な計算で曲線全体の曲率がわかる。

\kappa=\frac{|r'(t) \times r''(t)|}{|r'(t)|^3} または近似式で2次導関数の弧長で計算することもできる: \kappa=|r''(s_o)|. このような曲率の直接的な計算ができることは、ポリゴンによる表現に対するNURBSのような媒介変数曲線の大きな強みである。

関連項目[編集]

参考文献[編集]

  • Les Piegl & Wayne Tiller: The NURBS Book, Springer-Verlag 1995–1997 (2nd ed.). The main reference for Bézier, B-Spline and NURBS; chapters on mathematical representation and construction of curves and surfaces, interpolation, shape modification, programming concepts.
  • Dr. Thomas Sederberg, BYU NURBS, http://cagd.cs.byu.edu/~557/text/ch6.pdf
  • Dr. Lyle Ramshaw. Blossoming: A connect-the-dots approach to splines, Research Report 19, Compaq Systems Research Center, Palo Alto, CA, June 1987, http://www.hpl.hp.com/techreports/Compaq-DEC/SRC-RR-19.pdf
  • David F. Rogers: An Introduction to NURBS with Historical Perspective, Morgan Kaufmann Publishers 2001. Good elementary book for NURBS and related issues.
  • Gershenfeld, Neil A. The nature of mathematical modeling. Cambridge university press, 1999.

脚注[編集]

  1. ^ Bio-Inspired Self-Organizing Robotic Systems. p. 9. http://www.springer.com/engineering/computational+intelligence+and+complexity/book/978-3-642-20759-4 2014年1月6日閲覧。. 
  2. ^ David F. Rogers: An Introduction to NURBS with Historical Perspective, section 7.1
  3. ^ Gershenfeld: The Nature of Mathematical Modeling, page 141, Cambridge-University-Press 1999
  4. ^ Les Piegl & Wayne Tiller: The NURBS Book, chapter 2, sec. 2
  5. ^ Les Piegl & Wayne Tiller: The NURBS Book, chapter 4, sec. 2
  6. ^ Les Piegl & Wayne Tiller: The NURBS Book, chapter 4, sec. 4
  7. ^ Les Piegl & Wayne Tiller: The NURBS Book, chapter 5
  8. ^ L. Piegl, Modifying the shape of rational B-splines. Part 1: curves, Computer-Aided Design, Volume 21, Issue 8, October 1989, Pages 509-518, ISSN 0010-4485, http://dx.doi.org/10.1016/0010-4485(89)90059-6.

外部リンク[編集]