graphics.hatenablog.com

技術系テクニカルアーティストのあれこれ

NURBS 曲面と再分割曲面の超基礎。

subdiv とか勉強したくなったから、復習がてら軽くまとめてみる。参考資料は以下の通り。


まず NURBS から。
カタカナ読みだと「ナーブス」、Non-Uniform Rational B-Spline の略。
Non-Uniform:
(ノット同士の間隔が)非一様。各制御点が曲線に与える影響が一律ではない。
Rational:
(制御点の座標定義が)有理。制御点が同次座標系で定義されていて、3次元的には、xyz が w で重み付けされるかたち。
B-Spline:
 基底関数、ノット列、制御点の3つで定義される、パラメトリック曲面。曲率が連続だからすべての位置でなめらかな曲面になる。

f:id:hal1932:20120807031717j:plain
たとえばよく使われる双3次曲面の場合、4x4 の制御点が必要になる。この制御点を頂点とする多面体を「制御多面体」と言って、NURBS の場合、曲面上のすべての点がこの制御多面体の「内側」になる。(凸閉包性, convex hull property)
数式はここには書かないけど、まぁ、みればなんとなく、B-Spline 基底と制御点の位置が重み付けされてるのがわかる気がする。


再分割曲面はざくっとわけて面を分割する face scheme と、頂点を分割する vertex scheme があるけど、とりあえず face scheme の Catmull-Clark だけみとく。計算自体は平均とかあれこれ計算するだけ。

f:id:hal1932:20120807033229j:plain

  1. 各面の重心を face point とする(Q1~4)
  2. 隣接する face point とエッジ両端点の平均値を edge point とする(R1~4)
  3. Q/n + R/n + S(n-2) を計算して新しい頂点にする
    1. Q: face point の平均値、R: ↑の図のV1/2/4/6/8 の平均値、S: V1、n: 双3次パッチの場合は4

双3次パッチを使ったときの Catmull-Clark の特徴として、

  • 生成される面はすべて四角形
  • 極限曲面(無限回分割したあとの曲面)が双3次 B-Spline に一致する
  • C^2 級連続、ただし特異点は除く。ようするに超なめらか

再分割曲面について詳しくはこのあたり。またあとで。