グッゲンハイム美術館ビルバオ
物理模型を3Dデジタイズし、航空機用NURBS CAD「CATIA」で曲面化して施工図まで一気通貫。 建築における自由曲面時代の幕開けとされる。ゲーリー事務所はこの手法を Digital Project として体系化した。
Curve Geometry for Architectural Design · Spline / Bézier / B-spline / NURBS
Illustratorのペンツールで引くパスも、Rhinoでモデリングする曲面も、 中身は同じひとつの数学 — スプラインです。 この教材では、船大工の「しなる板」から現代CADの共通言語NURBSまで、 約80年の発明の歴史を順にたどります。 使う数学は、高校で習う内分点だけ。 すべてのデモは制御点をドラッグして操作できます。
学習を始める ↓しなる板の形を、どうやって数値にするか
20世紀半ばまで、船や飛行機の滑らかな曲線は実物大の製図場(ロフト)で引かれていました。 使う道具は、しなやかな木や金属の細長い板 — 英語で spline(スプライン)。 これを「ダック」と呼ばれる鉛の重りで数カ所を押さえてしならせると、 板は自然に曲げのエネルギーが最小になる滑らかな形に落ち着きます。 机の上では、同じ役割を雲形定規が担っていました。
1960年代、自動車のボディを数値制御(NC)工作機械で削る時代が来ると、 「職人が板でつくった形」を数値データとして機械に伝える必要が生まれます。 最初の素直な発想は、決めた点をすべて通る滑らかな曲線を数式でつくること — これを補間(スプライン補間)と呼びます。 数学者シェーンバーグが1946年に理論化した「スプライン関数」は、しなる板の性質(区分的な3次式)をそのまま数学に写したものでした。
ところが補間には、設計道具として致命的な癖があります。 1点を直すと、離れた場所まで曲線全体が波打ってしまうのです。 下のデモで点をひとつ動かして、変化がどこまで及ぶか観察してください。 デザイナーが本当に欲しいのは「思い通りに操れて、直した所の近くだけが変わる」曲線。 この要求が、以降すべての発明の出発点になります。
点(ダック)をドラッグ — 灰色の破線が動かす前の曲線。動かした点から遠い場所まで形が変わる(赤いほど大きく変化)ことに注目。
高校数学の内分点から、放物線が生まれる
これから登場する曲線はすべて、たったひとつの部品からできています。 高校で習う内分点です。2点 A, B を t : (1−t) に内分する点は
t = 0 で A、t = 1 で B、t = 0.5 でちょうど中点。 「A と B を (1−t) : t の配合比で混ぜる」と読んでください。 t を 0 から 1 まで動かすと、点 P は A から B まで直線上を滑っていきます。 これを線形補間(lerp)とも呼びます。
点が3つあると、面白いことが起きます。 辺 AB 上の内分点 Q₀ と、辺 BC 上の内分点 Q₁ を同じ t で取り、 さらに Q₀ と Q₁ を同じ t で内分した点 R を考えます。 t を動かしたときの R の軌跡は — 放物線になります。 「直線を引く」操作を2回重ねただけで、曲線が生まれました。 この内分の入れ子こそ、次のセクションで登場するベジェ曲線の心臓部です。
A・B・C をドラッグ、t スライダーか再生ボタンで内分点の動きを観察。「3点」モードで内分の入れ子から放物線が生まれる。
1960年代、制御点という発明が曲線を「操れる」ものにした
1959年、シトロエンの数学者ポール・ド・カステリョは、 内分の入れ子を何段でも繰り返して曲線を定義する方法を確立しました(社外秘とされ、長く公表されず)。 1962年、ルノーの技術者ピエール・ベジェが同じ曲線に独立に到達し、 設計システム UNISURF として公開します。曲線には、公開した側の名前が残りました。
この発明の核心は制御点という考え方です。 セクション1の補間とちがい、ベジェ曲線は途中の点を通りません。 制御点は曲線の外側から、磁石のように形を引っ張って操るための点です (両端の点だけは正確に通ります)。 「点を通す」から「点で操る」へ — この転換が、思い通りに扱える曲線を実現しました。
数式も内分の入れ子から自然に出てきます。制御点4つ(3次)の場合:
4つの係数は、恒等式 ((1−t) + t)³ = 1 を展開したときの4つの項そのもの。 つまりどの t でも係数の合計はぴったり 1 です。 曲線上の各点は「4つの制御点の加重平均」であり、係数は各制御点の影響力の配分を表します (この係数の関数をバーンスタイン基底と呼びます)。 下のデモで「影響力グラフ」をONにすると、t が進むにつれ影響力が P₀ から P₃ へ移り変わる様子が見えます。
制御点をドラッグ。「作図線」は de Casteljau の内分の入れ子(同じ t で各辺を内分し続けると曲線上の1点に到達する)。
1970年代、局所制御の実現。Rhinoの曲線編集の正体
便利なベジェ曲線にも、2つの弱点がありました。 第一に、次数が制御点の数で決まってしまうこと(次数=点数−1)。 複雑な形を作ろうと点を増やすほど式の次数が上がり、計算が重く、形が暴れやすくなります。 第二に、影響力がどの t でも0にならないため、 1点動かすと曲線全体がわずかに動くこと。補間の悪夢の再来です。
1970年代、ド・ブーア、コックス、リーゼンフェルドらが実用化したB-splineは、 この2つを一挙に解決しました。アイデアは 「最初から短い低次の曲線をなめらかに継いだものとして定義する」こと。 各制御点の影響力を、限られた区間だけで正になる山型の関数にするのです。 すると影響は局所的になり(動かした点の近くだけ変わる)、 点をいくら増やしても次数は3のまま — 次数と点数が独立になります。
では、B-splineの次数とは結局何なのでしょうか。数式を思い浮かべる必要はありません。 実感としては「曲線の各部分が、同時にいくつの制御点から影響を受けるか」を決める数です(その個数は次数+1個)。 次数1なら各部分は2点で決まる — つまり点をそのまま結んだ折れ線。 次数3なら、曲線上のどこを見ても、形を決めているのは近くの4点だけです。 次数を上げるほど多くの点が混ざり合ってなだらかになり(そのぶん曲線は制御点から離れ)、 下げるほど制御点に忠実な形になります。
継ぎ目のパラメータ位置を並べた表をノットベクトルと呼びます。 端でノットを重ねる(クランプ)と曲線は端点を正確に通り、 途中でノットを重ねると、そこに折り目(キンク)を作ることさえできます。 ノットは普段は意識しなくてよい裏方ですが、「曲線がどこで継がれているか」を決める設計図です。
同じ8つの制御点で「1本の7次ベジェ」と「3次B-spline」を切り替えて、点をドラッグ。曲線の色は動かしている点の影響力(赤いほど強い)。
1975年、重みの発明。CADの共通言語が完成する
B-splineで曲線設計はほぼ完成に見えました。しかし最後にひとつ、意外な問題が残ります。 円が描けないのです。 実は「多項式でつくったパラメトリック曲線は、真円を正確には表せない」ことが数学的に証明できます。 どんなに次数を上げても近似止まり。 ところが建築や機械の図面は円と円弧だらけです。 自由曲線と円を別々の仕組みで持つのは、CADの基礎としては美しくありません。
解決のアイデアは重み(weight)でした。 各制御点に「引力の強さ」w を与え、影響力に w を掛けてから加重平均を取り直します。 割り算(分数式=有理式)が入ることで、多項式には不可能だった円・楕円・双曲線などの 円錐曲線が厳密に表現できるようになります。 たとえば90°の円弧は、制御点3つ — 真ん中の点の重みを w = 1/√2 ≈ 0.707 にするだけで、 誤差ゼロの真円弧になります。
この曲線の名前を分解すると、ここまでの歴史が全部入っています。
1975年、K. フェルスプリルの博士論文でNURBSは定式化され、 ボーイングの提案でCADデータ交換の国際標準(IGES、のちSTEP)に採用されます。 以来、Rhino・CATIA・Alias など、自由曲面を扱うCADの共通言語であり続けています。 直線も円弧も自由曲線も、すべてNURBSという1つの形式で書ける — これが標準になった理由です。
制御点をクリックで選択し、重みスライダーで「引力」を変える。「誤差×500」で3次ベジェ近似の円との差を拡大表示 — NURBSの円は誤差ゼロ。
G0・G1・G2 — 「滑らかさ」には等級がある
ここまでの知識を、日々使う道具に対応づけてみましょう。
| 概念 | Illustrator | Rhino |
|---|---|---|
| 曲線の正体 | 3次ベジェの連なり(パス) | NURBS(既定は次数3) |
| 制御点の操作 | ハンドルをドラッグ | F10(_PointsOn)で制御点をドラッグ |
| 次数 | 常に3次 | _Degree で自由に変更(1〜) |
| 重み | なし(非有理) | _Weight で編集(円は w=1/√2) |
| 点数の整理 | アンカーの追加・削除 | _Rebuild(点数・次数を指定して作り直し) |
| 滑らかさの検査 | 目視 | _CurvatureGraph/ゼブラ解析(_Zebra) |
曲線どうしをつなぐとき、「滑らかさ」には等級があります。
G1とG2の違いは、線がつながって見えるだけでは分かりません。 Rhinoの _CurvatureGraph(曲率グラフ)は、曲線の各点の「曲がり具合」を櫛状に可視化する道具で、 継ぎ目で櫛の高さが跳ねていればG1止まり、つながっていればG2です。 下のデモは2本の3次ベジェの継ぎ目で、まさにこれを体験するものです。
継ぎ目まわりの点をドラッグしながら G0 → G1 → G2 を切り替え。櫛(曲率グラフ)の高さが継ぎ目で跳ねるか、つながるかに注目。
NURBSが建築の形を変えた30年
自動車と航空機のために生まれたこの数学は、1990年代に建築へ流れ込み、 「図面に描けないから建たない」だった自由曲面を現実のものにしました。
物理模型を3Dデジタイズし、航空機用NURBS CAD「CATIA」で曲面化して施工図まで一気通貫。 建築における自由曲面時代の幕開けとされる。ゲーリー事務所はこの手法を Digital Project として体系化した。
大地から立ち上がる連続曲面。NURBSサーフェスの流動性を建築言語にまで高めた代表例。 曲率の連続性(G2)が、あの「折り目のない」外皮の印象を支えている。
水滴のような自由曲面コンクリートシェル。デジタルな曲面定義と構造解析の往復から形が決められ、 型枠は盛土でつくられた。滑らかさそのものが空間の主役になった建築。
今日では Grasshopper のカーブ・サーフェス操作はすべてNURBS演算ですし、 3Dプリントやロボット施工へ渡すデータの多くもNURBSを経由します。 最後に、ここまでの発明の系譜を年表で振り返ります。
Spline → Bézier → B-spline → NURBS を1画面で行き来する
仕上げに、4種類の曲線を切り替えながら比較できる統合デモです。 ステップを切り替えても制御点は引き継がれるので、同じ点配置での性質の違いを観察できます。 ノットのカスタム編集(ドラッグで移動・重ねて折り目)、基底関数の表示、重みの編集など、 ここまでの全要素が入っています。右上の ⚙ から各ステップの設定を開けます。
左上のStepメニューで Spline / Bezier / B-spline / NURBS を切替。⚙ で設定パネル、↺ でリセット。
道具の「なぜ」に、数学で答えられるか
スムーズポイントが保証するのはG1(接線の向き)まで。曲率(G2)は継ぎ目で跳んでいることが多く、 面に映り込むハイライトや太らせた線の輪郭に「折れ」として現れます。 両側のハンドルの長さのバランスを調整すると曲率の跳びが減り、印象が柔らかくなります。
制御点は「曲線を通る点」ではなく「外から操る点」だからです(Section 3)。 Rhinoの円は次数2・制御点9個(角の点は円の外)のNURBSで、 斜め位置の制御点の重みが 1/√2 に設定されています。だから誤差ゼロの真円です(Section 5)。
_Rebuild は「指定した点数・次数のB-splineで元の形を近似し直す」操作です。自由度が変わるので厳密には同じ形になりません。 特に円は、_Rebuild で重みが1(非有理)に戻ると厳密な円ではなくなります。 寸法が効く円・円弧は有理のまま扱うのが原則です。
高次ベジェは①1点の修正が全体に波及する②数値計算が不安定③ほかのソフトへ渡しにくい、と三重苦です。 3次B-splineなら影響は局所的で、次数は3のまま点をいくら増やせます(Section 4)。 CADの既定が次数3なのは、滑らかさ(曲率まで連続)と扱いやすさのバランス点だからです。
2次は計算が軽く、大量の文字を高速に描くのに向きます。 3次は1セグメントでS字(変曲点)を表せる表現力があり、少ないアンカーで滑らかな輪郭を描けます。 「必要な滑らかさに応じて次数を選ぶ」— これもこの教材で学んだ設計判断のひとつです。