第8回 B-スプライン曲面

オンデマンドで受講する場合は、本題に入る前に必ず連絡の動画を見てください。

B-スプライン曲面

概要

動画の解説を参照

第6回に出てきたB-スプライン曲線についての解説を以下に再掲します。
B-スプライン曲線は、3個以上の制御点 \(\boldsymbol{P}_i\) と、ノット列 \(t_i\) で定義される曲線です。 セグメントの数が \(L\) 本、制御点の数が \(n+L\) 個の場合、曲線上の点は以下のように表されます。
\(\boldsymbol{C}(t)\) \(=\displaystyle \sum_{i=0}^{n+L-1}\) \(N^n_i(t)\) \(\boldsymbol{P}_i\)
ここで \(N^n_i(t)\) は
\(N^n_i(t) =\) \(\Large{\frac{t-t_i}{t_{i+n}-t_i}}\) \(N^{n-1}_i(t)\) \(+\Large{\frac{t_{i+n+1}-t}{t_{i+n+1}-t_{i+1}}}\) \(N^{n-1}_{i+1}(t)\)
のように、次数が1つ小さいものから再帰的に求められる関数です。最低次の関数は
\(N^0_i(t) = 1\) (\(t\) が \(t_i\) ~ \(t_{i+1}\) のとき)
\(N^0_i(t) = 0\) (\(t\) がそれ以外のとき)
で定義されます。
これを踏まえ、次数を1増やすことで曲面を定義できます。それがB-スプライン曲面です。
B-スプライン曲面は、\(n\times m\) 個の制御点 \(\boldsymbol{P}_{ij}\) と、ノット列 \(u_i\), \(v_j\) で定義されます。
\(N^n_i(u)\), \(N^m_j(v)\) の求め方はB-スプライン曲線のときと同様です。
\(0\leq u \leq 1\), \(0\leq v \leq 1\) の範囲の2つのパラメータを使い、曲面上の点は以下のように表されます。
\(\boldsymbol{S}(u, v)\) \(=\displaystyle \sum_{i=0}^{n+L-1}\) \(\displaystyle \sum_{j=0}^{m+K-1}\) \(N^n_i(u)\) \(N^m_j(v)\) \(\boldsymbol{P}_{ij}\)
B-スプライン曲線には局所性、つまり制御点を動かしたときに影響を受ける範囲が限られるという性質がありました。
B-スプライン曲面も同様に局所性を持ちます。

ベジェ曲面では1つの制御点を動かすと面のあらゆる場所が影響を受けますが、
B-スプライン曲面では動かした制御点から離れた部分は影響を受けません。

課題1

B-スプライン曲面エディター で好きな形の曲面をを作ってください。
ただし、25個の制御点のうちすくなくとも9個以上の制御点をデフォルト状態から動かしてください。
Wireframe Mode : オンにするとワイヤーフレーム表示 (オフでは面表示)
制御点をX軸に沿って移動 : Xキー + ドラッグ
制御点をY軸に沿って移動 : Yキー + ドラッグ
制御点をZ軸に沿って移動 : Zキー + ドラッグ
制御点の移動方向をX軸方向のみに制限、制限解除 : 1キー
制御点の移動方向をY軸方向のみに制限、制限解除 : 2キー
制御点の移動方向をZ軸方向のみに制限、制限解除 : 3キー
制御点の移動 (非推奨) : ドラッグ
Undo, Redo, 初期状態に戻す, ファイルに保存, ファイルから読み込み : ボタン
課題1解説

NURBS曲面

概要

動画の解説を参照

NURBS曲面は、B-スプライン曲面の制御点の影響のしかたを係数でコントロールできるように改良したものです。
ちょうどB-スプライン曲線の制御点の影響のしかたを係数でコントロールできるようにしたものがNURBS曲線であることと同様です。
以下にNURBS曲線上の点の式を再掲します。
\(\boldsymbol{C}(t)\) \(=\displaystyle \sum_{i=0}^{n+L-1}\) \(\Large{\frac{N^n_i(t)w_i\boldsymbol{P}_i}{N^n_i(t)w_i}}\)
曲面上の点は以下のように表されます。
\(\boldsymbol{S}(u, v)\) \(=\frac{\displaystyle \sum_{i=0}^{n+L-1} \displaystyle \sum_{j=0}^{m+K-1} N^n_i(u)N^m_j(v) w_{ij} \boldsymbol{P}_{ij}} {\displaystyle \sum_{i=0}^{n+L-1} \displaystyle \sum_{j=0}^{m+K-1} N^n_i(u)N^m_j(v) w_{ij}}\)
B-スプライン曲面との違いは \(w_{ij}\) があるかどうかだけです。

課題2

B-スプライン曲面エディター で好きな形の曲面をを作ってください。
ただし、25個の制御点のうちすくなくとも9個以上の制御点をデフォルト状態から動かし、重みを変更してください。
制御点の重みを変更 : 制御点にカーソルをのせてキーボードの上キー (重み増やす)、下キー(重み減らす)
課題2解説

課題

今回の課題には特に模範解答のようなものはありません。課題の条件を満たしてさえいればOKになります。