NURBS
(NURBS曲線 から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/09/26 17:53 UTC 版)


Animated version
NURBSはNon-Uniform Rational B-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やCAM、CAEで一般的に用いられており、IGES、STEP、ACIS、PHIGSなど数々の世界標準に採用されている。コンピュータグラフィックスソフトやアニメーションソフトウェアパッケージにも採用されていることがある。MayaやCinema 4Dが有名である。
NURBSはコンピュータプログラムにとって都合がよいだけでなく、人間による編集にも向いている。NURBS曲線を布の縦糸と横糸に使ったものがNURBS曲面といえる。その形状は制御点(control point)により定義され、制御点を編集し移動することによって曲面形状を変化させられる。 NURBS曲面は特に、やや単純な幾何形状をコンパクトに表現するのに強みがある。俗に有機的曲面と呼ばれるキャラクタなどのモデリングにはサブディビジョンサーフェスが向いており、実際ゲーム業界やアニメーション業界ではNURBSよりもこちらのほうが普及している。サブディビジョンサーフェスは全体が柔らかい生物的なモデルには無類の強さを誇るが、数学的に尖った角のある形状はどうしても表現できないためCADでの利用はまずない。NURBSの数学的な正確性という強みとサブディビジョンサーフェスの柔らかな形状という強みを併せ持った新しいスプラインがT-スプラインである。これらはNURBSの2分の1の制御点数で柔らかな形状を表現できる。
一般的に言って、NURBS曲線やNURBS曲面の編集は極めて直観的で予想を裏切らないものである。モデリングはベジェ曲線のように要素の制御点をいじって編集することもできるし、より高度なスプラインモデリングのような階層状の制御を行うこともできる。スプラインモデリングとは、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-スプラインの有理である特別なケースである。

ベジエやNURBS曲線に含まれるパラメータ(媒介変数)を様々な値に変化させるとその曲線は2, または3次元の直交座標系上で表せる。同様にベジエやNURBS曲面に含まれるパラメータ(媒介変数)を様々な値に変化させるとその曲面は直交座標系上で表せる。 NURBS曲線/曲面は以下の点で有用である:
- アフィン変換を行っても不変である[2]。そのため回転や移動(これらは代表的なアフィン写像である)といった変換を各制御点ごとに行えばNURBS曲線や曲面もそっくりそのまま変換される
- 自由曲面と、円錐や円柱などの幾何的で標準的な形状の両方を表せる。例えばベジエ曲面は正確な円を表せないという致命的な欠陥があるがNURBSは可能である
- あらゆる性質の表面を表現できる柔軟性。生物的な形状もサブディビジョンサーフェスなどに比べればやや難度が高いだけで可能だし、ベジエでは難しい曲率連続の曲面も作れる
- ポリゴンメッシュなどのより単純な方法に比べ、少ないメモリ消費で形状を表現できる
- 数値的に安定で正確なアルゴリズムを用いてかなり速く形状を評価できる
以下の節では2次元上のNURBS曲線に限定して記述するが、全ての記述は3次元上、またはそれ以上の次元においても適用可能であることに留意してほしい。
制御点
制御点は一般に曲線上の点ではなく、曲線の形状を決定するために用いられる[3]。曲線上のとある点の位置は、その前後に配置されたいくつかの制御点の位置の重み付き線形和で表現される。制御点が曲線上の各点に与える影響は、その点と制御点の間の距離によって定義され、一般には距離が短いほど影響が大きくなる。次数
ノットと制御点の違い
![]() |
この節の加筆が望まれています。
|
次数と階数
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-スプラインの一族に属する)。ふつう
NURBSオブジェクトには様々な変形をほどこすことができる。例えばある曲線が次数
- Piegl, Les; Tiller, Wayne (1995–1997). “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.”. The NURBS Book (2nd ed.). Springer-Verlag. OCLC 319637975
- Thomas Sederberg (Semester 2011) NURBS, Chapter 6: B-splines (PDF) , BYU, Syllabus Builder.
- Ramshaw, Lyle (June 1987). “Blossoming: A connect-the-dots approach to splines” (PDF). Research Report 19, (Palo Alto, CA: Compaq Systems Research Center) .
- Rogers, David F. (2001). An Introduction to NURBS with Historical Perspective. Morgan Kaufmann Publishers. OCLC 319637975 Good elementary book for NURBS and related issues.
- Gershenfeld, Neil A. (1999). The nature of mathematical modeling. Cambridge university press. ISBN 0521570956
- Gerald E. Farin:「NURBS 射影幾何学から実務まで(第2版)」、共立出版、ISBN 978-4-320016798(2001年8月10日).
関連項目
外部リンク
- Clear explanation of NURBS for non-experts
- Interactive NURBS demo
- About Nonuniform Rational B-Splines - NURBS
- An Interactive Introduction to Splines
- http://www.cs.bris.ac.uk/Teaching/Resources/COMS30115/all.pdf
- http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/AV0405/DONAVANIK/bezier.html
- http://mathcs.holycross.edu/~croyden/csci343/notes.html (Lecture 33: Bézier Curves, Splines)
- http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/notes.html
- A free software package for handling NURBS curves, surfaces and volumes in Octave and Matlab
- NURBSのページへのリンク