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

第17回「NURBS曲線の屋根」

ArchitectLandmarkSpotlightDesigner2021

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

Vectorworksでの3Dモデリングにおいて、自由な曲線・曲面の表現ではNURBS曲線・曲面が力を発揮します。今回はマリオネットでのNURBS曲線の使い方を解説しながら簡単な屋根のモデリングをご紹介します。

NURBSは3D空間で曲線および曲面を幾何学的に表現するための数式です。柔軟性と正確性の両方を高いレベルで保ちながら、自由な形状の曲線と曲面を作成および編集することができます。NURBS曲線では制御点をコントロールして自由な形状を作っていきますが、制御点の操作も自由度が高く複雑になりがちです。

マリオネットツールにはNURBS曲線・曲面をコントロールするノードが標準で搭載されています。マリオネットでは制御点の位置やパラメータをネットワークの中で管理することができるので、より効率的で正確なモデリングを実現することができます。

17-1. NURBS曲線

NURBS曲線は次数および重み付けされた制御点(頂点)で構成されます。曲線は頂点の間を通過し、次数は曲線に影響を与える点の数を決定します。方向は、描画した曲線の始点と終点を示し、特定の操作の結果に影響を与えることがあります。

頂点の1つの重み付けを他の頂点より大きくすると、その頂点が曲線に及ぼす影響が高まり、曲線がその頂点の方向に「引っ張られる」ことになります。

NURBS 曲線の次数を増やすと、それに比例して頂点の数も増え、曲線を描画する際の柔軟性が高まります。ただし、曲線に影響を与える重み付けが多くなるため複雑さも増します。

17-2. マリオネットのNURBS曲線

17-2-1. Curveノード

「Curve」ノードは制御点の座標のリストからNURBS曲線を作成するのノードです。作成と同時に制御点のタイプと次数のパラメータを設定します。

「bByCtrlPts」ポートには制御点のタイプを入力します。補間しない通常の制御点のタイプとする場合にTrueを、補間するタイプの場合はFalseを入力します。補間点タイプに設定すると、曲線が頂点の上を通ります。

「nDeg」ポートには次数のパラメータを入力します。

3点の座標からNURBS曲線を作成するプログラムを作成してみましょう。

3Dモデリングですので3次元の座標を用意します。「Point3D」を3つ配置してしてそれぞれ座標値を入力します。

    • 1点目:(x,y,z) = (500,0,0)
    • 2点目:(x,y,z) = (750,0,3500)
    • 3点目:(x,y,z) = (3000,0,4000)

「Ordered List」ノードに1,2,3点の順に入力してリスト化します。

「Curve」ノードに3点のリストと、補間点でない制御点タイプを示す”True”、次数の”3″を入力します。

プログラムを実行します。入力した点を制御点としたNURBS曲線が作成されました。

17-2-2. 重みの設定

「Set Weight」ノードはNURBS曲線の制御点に対して重みのパラメータを設定することができます。

17-2-1.で作成したNURBS曲線の制御点(2点目)の重みを変更してみましょう。「Curve」ノードの出力からNURBS曲線のハンドルを取得して、「Set Weight」ノードに入力します。「index」には、0番目(1本目)のセグメントの1番目(2点目)の制御点を指定します。

「nWeight」ポートに重みのパラメータを入力します。1〜5まで順に入れて曲線の変化を確認しましょう。

17-3. 屋根オブジェクト

17-2.で作成した、L字にカーブしたNURBS曲線を水平面で回転しながら複製することで屋根を作っていきます。制御点の重さは2に設定します。

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

17-3-1. 回転複製

L字のNURBS曲線をポールと呼ぶことにします。今回作成する屋根は12本のポールで構成します。

次の手順で回転複製のプログラムを作っていきます。

    1. その場で12本に複製
    2. 0〜360度まで角度を大きくしながら回転

まずは複製です。後々の都合のため、12本複製して元の図形は削除することにしましょう。「Duplicate Object」ノードに元のポールと、「nDeps」ポートに複製の個数”12″を入力します。

次に複製したポールを回転します。回転の中心は(0,0,0)とします。ポールの下端のx座標は”500″ですので、z軸で回転すると(0,0,0)を中心に半径500の円ができるイメージです。

1区間の角度の刻みは”360÷12″で30度です。30度ずつ角度が大きくなるリストを作成します。「Series」ノードに次のとおり入力します。

    • 開始角度:0度
    • 刻み角度:30度
    • 繰り返し数:12

デバッグモードで角度のリストを確認しましょう。

問題なければ「Rotate」ノードにポールと角度のリストを入力します。角度のリストはz軸の情報になりますので、Point3Dノードでデータを整形したあとに「Rotate」に入力します。

プログラムを実行します。角度をつけながら回転複製することができました。これで屋根のベースの骨組みは完成です。

17-3-2. 3Dパス図形

NURBS曲線は3Dパス図形のパスとして使用ことができます。ポールを3Dパス図形に変換して厚みを持たせます。

「Path Extrude」にパスのNURBS図形と、断面となる半径30mmの円図形を入力します。

プログラムを実行して結果を確認します。

17-3-3. 円筒のリング

このままではポールがバラバラに倒れてしまいますのでフレームで補強しましょう。円形のリングを始点の高さ、終点の高さ、それとポールの途中の高さに設置します。

始点と終点の位置のリングは簡単です。

最初にNURBS曲線を作成したときに使用した3次元座標の情報からリング状の3Dパス図形を作成していきます。

「Path Extrude」ノードに、リングのパスとして制御点のx座標を半径とした円図形、リング断面として半径30mmの円図形を入力します。

リングが作成できたら「Move」ノードを使用して制御点のz座標の分だけ高さ方向に移動しましょう。

終点の制御点(3000,0,4000)の場合だと、次のようなリングになります。

始点でも同様のリングを作成するので、リングのプログラムはラッパーノード化して再利用しましょう。

始点の座標データもラッパーノード「pt3D to ring」にを渡してリングを作成します。

途中の高さにリングを設置するには、長さ方向の任意の位置でのNURBS曲線上の座標を知る必要があります。

「Get Curve Point」ノードはノット値を指定してNURBS曲線上の座標を取得することができます。

「Get Knot」ノードで調べると、ノット値は0〜1.0で変化しているようです(ここのプログラムはオブジェクトのネットワークには含みません)。

セグメント途中のノット値 “0.25”,”0.5″,”0.75″ の3箇所でリングを作成します。「Get Curve Point」ノードにノット値を入力して座標を取得します。そのあと、作成しておいたリングのラッパーノードに入力します。

プログラムを実行します。途中の高さにリングが作成されました。

17-4. パラメータスタディ

制御点の位置や、重みなどパラメータを変更して屋根の形状を比較します。スタディしやすいようにパラメータの入力を「Slider」ノードに変更したあと、マリオネットオブジェクトに変換しましょう。
    • 制御点の座標
    • 重み
    • 複製の数

複雑な図形が増えてくるとどうしても処理が遅くなってしまいます。スタディの間はポールの3Dパス図形への変換を解除してもいいかもしれません。気に入ったパラメータの組み合わせが決まったら3Dパス図形を復活させることにしましょう。

スライダーでパラメータを変更して形状を確認します。

気に入ったところで、3Dパス図形を復活させて再描画します。

17-5. 見た目を整える

最後にテクスチャを設定して、光源やレンダリングで見た目を整えて完成です。

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

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

Architect

Vectorworks Architect

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

Landmark

Vectorworks Landmark

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

Spotlight

Vectorworks Spotlight

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

Designer

Vectorworks Design Suite

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