マリオネット・スクリプト解説講座

第18回「NURBS曲面の操作」

ArchitectLandmarkSpotlightDesigner2021

この記事は【2021年9月28日】に公開されたもので、2年以上経過しています。
記事の内容が古くなっていたり、新機能の追加・機能の改善が図られていることがあります。

前回マリオネットでNURBS曲線を使用する方法を紹介しました。今回はNURBS曲面を扱います。オブジェクの”面”を直接コントールすることで3Dの表現の幅がグっと拡がります。

NURBS曲面はNURBS曲線と同様に3次元座標と重みの属性を持った制御点によって自由な形状を表現します。NURBS曲線との違いとして、NURBS面はU方向とV方向の2方向に制御点を持つことで3次元の面を表現することができます。

マリオネットツールではNURBS曲面をコントールするノードが搭載されているので、自由な曲面を持った3Dオブジェクトのモデリングが可能です。今回は、マリオネットでNURBS曲面を作成する方法をいくつかご紹介します。

サンプルファイルダウンロード

18-1. NURBS曲面

NURBS曲面にも、NURBS曲線と同様の原則が当てはまります。NURBS曲面は、UおよびV方向に重み付けされた制御点のグリッド(メッシュ)です。

NURBS曲面の次数をU方向やV方向に増やすと、頂点の数も増えます。これにより柔軟性と共に複雑性も増します。

NURBS曲面には方向(法線)もあり、面フィレットの作成など特定の操作の結果に影響を与えます。

曲面上の各頂点には重み付けを設定でき、曲面は重み付けされた頂点の方向に「引っ張られる」ことになります。

NURBS曲面は、制御点または補間点で定義できます。曲線または曲面は、制御点の間または補間点の上を通過します。

18-2. マリオネットでNURBS曲面を作成する

18-2-1. 座標の集合を指定して作成する

「Surface」ノードは制御点の座標のリストからNURBS曲面を作成するのノードです。制御点の数と次数のパラメータをU方向とV方向それぞれ設定します。

簡単な長方形の面を作成します。まずは座標のリストを用意します。長方形を囲む8点に中心点を加えた9点の座標のリストを作成します。

「Series」ノードを使用して、横方向に3000刻みの数列と、縦方向に2000刻みの数列を作成します。

“Cross Reference”に設定した「Mix2」ノードに入力して3×3の2次元配列に整形します。この結果を「Point 3D」に入力して座標化してリストの完成です。

「Surface」ノードに座標のリストと、制御点の数と次数を次のとおり入力します。

    • U方向の制御点の数:3
    • V方向の制御点の数:3
    • U方向の次数:2
    • V方向の次数:2

プログラムを実行すると、NURBS曲面が作成されます。

このままだとプレーンな長方形ですが、NURBS曲面ですので自由に変形することができます。変形ツールで中心の制御点をZ方向に移動してください。面が制御点に引っ張られて変形する様子が確認できます。

18-2-2. 多段曲面を作成する

「Loft Surface」ノードはNURBS曲線をもとに多段曲面を作成することができます。複数のNURBS曲線をグループ化して入力します。

練習のため、図面上にNURBS曲線を2つ作成してそれぞれ名前を設定します。

    • NURBS曲線1:curb1
    • NURBS曲線2:curb2

「Name」ノードで図面上の図形を取得します。「Ordered List」ノードと「Group」ノードでグループ化します。NURBS曲線のグループを「Loft Surface」ノードに入力します。

プログラムを実行します。多段曲面のNURBS曲面が作成されました。

18-2-3. 補間点によるNURBS曲面

通常のNURBS曲面は制御点で作成されますが、補間点でも作成することができます。制御点は曲面上に存在しないこともあるため曲面の変形に用いるのが難しくなる場合があります。補間点は曲面上に存在するため直感的に編集することができます。

「Interpolated Surface」ノードは補間点のNURBS曲線を作成することができます。ベースとなる曲面と、補間点の数および次数のパラメータをU方向とV方向それぞれ入力します。

18-2-1.で作成した制御点によるNURBS曲面を、補間点によるNURBS曲面に変換します。「Surface」ノードの結果を「Interpolated Surface」ノードに入力します。点の数と次数のパラメータは同じ設定にします。

プログラムを実行します。補間点によるNURBS曲面が作成されました。

制御点のときと同じように中心の補間点をZ方向に操作します。制御点のときと違い、曲面が補間点を通って変形する様子が確認できます。

18-3. 屋根の骨組みに膜をつける

前回NURBS曲線を使用して屋根の骨組みを作成しました。今回はこのオブジェクトにNURBS曲面を使用して膜状の屋根面を設置します。

前回作成したマリオネットネットワークを利用してプログラムを作成します。

この屋根のように回転体に沿った曲面では「Revolve With Rail」ノードが便利です。軸(ガイドとなる曲線)に沿って輪郭(断面)を回転することで、複雑な NURBS曲面を作成できます。回転は、輪郭となる曲線と回転の中心になる軸を含む平面に対して、垂線上の平面に位置する曲線(軸)をガイドとして行われます。

「Revolve With Rail」ノードには、輪郭、軌跡、軸の3種のNURBS曲線のハンドルを入力します。

18-3-1. 輪郭のNURBS曲線

骨組みのポールのパスになっているNURBS曲線を輪郭にします。

「Set Weight」ノードの結果のハンドルがこれに該当します。”hNURBS”ポートからワイヤーを引っ張って「Revolve With Rail」ノードの”hProf”ポートに入力します。

18-3-2. 軌跡のNURBS曲線

回転する時に通る軌跡をNURBS曲線で指定します。屋根の一番外側を囲う円を軌跡とします。

「GetXYZ」ノードを使用してパスのNURBS曲線の終点で使用している座標から円の半径を抽出します。

この半径を使用して円を作成し、「Convert to NURBS」ノードによりNURBS曲線に変換します。

変換したNURBS曲線を「Revolve With Rail」ノードの”hRail”ポートに入力します。

18-3-3. 軸のNURBS曲線

軸はオブジェクトの中心から鉛直方向に伸びる直線とします。

中心の下端(0,0,0)から上端(0,0,3500)を結ぶNURBS曲線を作成します。

作成したNURBS曲線を「Revolve With Rail」ノードの”hAxis”ポートに入力します。

これで「Revolve With Rail」ノードの準備できましたので、プログラムを実行します。屋根の骨組みに沿ってNURBS曲面が作成されました。

18-3-4. 不要部分の削除

膜屋根面を作成することができましたが、根本の部分は不要です。削り取りを実行して不要部分を削除します。削り取りに使用する図形は上面が平らであればなんでも良いのですが、今回は入力の少ない円筒を使用します。

ポールのノット値0.75の地点までの高さ円筒を作成します。「Get Curve Point」ノードで取得した座標からZ値を抽出して「Cylinder」ノードに入力します。

膜屋根のNURBS曲線と柱状体を「Solid Boolean」ノードに入力して削り取りを実行します。削り取りの場合”operation”パラメータを「Subtract」に設定します。

プログラムを実行します。根本部分を削除した膜屋根のNURBS曲面が作成されました。

テクスチャを適用して完成です。

この機能を利用できる製品

Architect

Vectorworks Architect

建築設計や内装、ディスプレイデザインに対応した先進的なBIM・インテリア設計支援機能、拡張機能、さらには豊富な建築向けのデータライブラリを搭載した建築/内装業界向け製品
詳細情報 購入ページ

Landmark

Vectorworks Landmark

地形モデルや多彩な植栽、灌水設備計画等に対応するランドスケープデザイン機能、さらには豊富な造園向けのデータライブラリを搭載した都市計画/造園業界向け製品
詳細情報 購入ページ

Spotlight

Vectorworks Spotlight

ステージプランニングやライティング計画に対応した先進的な舞台照明計画支援機能、さらには各種メーカー製のトラスや照明機材、音響機器等の豊富なデータライブラリを搭載したエンタテインメント業界向け製品
詳細情報 購入ページ

Designer

Vectorworks Design Suite

専門分野別(建築設計/ディスプレイデザイン、ランドスケープデザイン、ステージデザイン&スポットライトプランニング)の設計支援機能、拡張機能、さらには豊富なデータライブラリを搭載した最上位の製品
詳細情報 購入ページ