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

第27回「ボロノイ図を描く」

ArchitectLandmarkSpotlightDesigner2022

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

アルゴリズミックデザインのためのカスタマイズノード第3弾として、Pythonの外部ライブラリを活用してボロノイ図を生成するVoronoiノードをA&Aノードライブラリに追加しました。今回はこのVoronoiノードを使用して、ボロノイ図をプロダクトデザインに取り入れる方法をご紹介します。

ボロノイ図は、自然界にみられるパターンの一つで、平面状に複数の点が配置されているとき、各点から最も近い領域を囲んだ線で構成される領域分割図です。その境界線は隣り合う2点の垂直二等分線となる特徴があります。

ボロノイ図は近傍探索としても応用可能で、建築の分野では幾何学的な模様を利用したプロダクトデザインをはじめとして、都市計画の区画分けなどでも活用されています。

A&Aノードライブラリ2022 ダウンロード

27-1. Voronoiノード

A&AノードライブラリにVoronoiノードを追加しました。指定した枠内にある点の集合を対象にボロノイ分割を実行して、分割した各領域を囲む多角形の一覧を出力します。

27-2. 準備:外部ライブラリのインストール

VoronoiノードではPythonの外部ライブラリSciPyを使用してボロノイ分割のアルゴリズムを実装しています。Voronoiノードを使用するには、外部ライブラリSciPyをVectorworksにインストールする必要があります。

※外部ライブラリのインストールについては「第8回:外部ライブラリの使い方(対象VW2020)」でも解説しています。

SciPyのインストールにはまずはVectorworksに内包されたPython環境のアップデートが必要です。

< Windowsの場合 >

1. コマンドプロンプトを起動します。

2. VectorworksPythonのパスに移動するコマンドを入力します。

>cd "C:¥Program files¥Vectorworks2022¥Python39"

3. pipバージョンアップのコマンドを入力します。

>python -m pip install --upgrade pip

4. 以上でアップデート作業が完了しました。

< MacOSの場合 >

まずは、A&AノードライブラリをDLして解凍します。解凍後のフォルダ直下にpipアップデートインストーラー.vwlibraryが配置されていることを確認してください。

    1. Vectorworks 2022を起動します。
    2. ツール > プラグイン > プラグインマネージャー を選択します。
    3. サードパーティプラグイン タブを選択し、インストール ボタンを選択します。
    4. ファイル階層ダイアログが表示されます。pipアップデートインストーラー.vwlibraryを選択します。
    5. pipのアップデートを確認するダイアログが表示されます。OKボタンを選択します。
    6. インストール完了後、Vectorworksの再起動を促すダイアログが表示されます。Vectorworks を再起動 を選択します。
    7. 以上で必要なアップデート作業が完了しました。

それではSciPyをVectorworksにインストールします。

Voronoiノードには初回実行時にSciPyをインストールする仕組みを組み込んでいますのでこれを利用します。Voronoiノードを配置して、オブジェクト情報パレットからscipy_whlパスフィールドにscipyのwhlファイルのパス(url)を入力します。

whlファイルのパスはPyPIサイトから取得します。Vectorworks2022の場合、以下のwhlファイルのパスをコピーしてご利用ください。

Windows:

https://files.pythonhosted.org/packages/ba/a1/a8fa291b8ae6523866dd099af377bc508c280c8ca43a42483c76775ce3cd/scipy-1.8.1-cp39-cp39-win_amd64.whl

Mac(Intelチップ):

https://files.pythonhosted.org/packages/b0/de/e8d273063e1b21ec82e4a09a9654c4dcbc3215abbd59b7038c4ff4272e9e/scipy-1.8.1-cp39-cp39-macosx_10_9_x86_64.whl

Mac(M1チップ):

https://files.pythonhosted.org/packages/66/d0/faf1d69525836cd4b6a51407b39836f77de266777d073ce5698b3a5244e3/scipy-1.8.1-cp39-cp39-macosx_12_0_arm64.whl

whlパスを入力したVoronoiノードを実行します。SciPyをインストールするかどうか確認するメッセージが表示されますのでOKを選択します。

しばらく待つとインストールの完了を知らせるメッセージが表示されますのでOKを選択して閉じます。

Vectorworksを再起動してSciPyの準備は完了です。

27-1-2. 使い方

Voronoiノードは枠の図形と複数の母点(座標)を入力して使用します。ここでは四角形の内側に5点の母点が配置される場合のボロノイ図を作成します。

次のとおり枠となる四角形(RectAngle)と、5点の座標のリスト(Point2)をVoronoiノードに入力します。母点の座標が四角形の枠の内側となるように注意して設定します。

プログラムを実行します。四角形の枠内にボロノイ図が生成されました。

グループの中に入ると、分割された領域ごとに多角形が作図されています。

27-2. ボロノイシェルフ

ボロノイ図を活用した棚状の3Dパネルを作成します。厚みのあるパネルに対して立面方向にボロノイ分割を実行し、分割した領域に穴を開けるイメージでプログラムを作成していきます。また、母点の位置をランダムとすることで実行のたびに異なるパターンを生成して検討できるように設計します。

今回は次の手順でプログラムを作成します。

    1. 枠となる図形を作成する
    2. ランダムな座標を複数作成する
    3. Voronoiノードでボロノイ分割を実行する
    4. 分割した領域の多角を3Dパス図形に変換して厚みを与える
    5. ボロノイ図の面が立面となるように3D回転する

枠の図形は自由に変形できるように手作業で2Dの多角形を作図します。後ほどコントロールジオメトリに登録することを視野に入れつつ、ここでは図形に名前を設定してNameノードでハンドルを取得します。

枠の内側にランダムな座標を生成します。A&Aノードライブラリに登録されているRandoms Nノードを使用しましょう。

座標のx用とy用それぞれのランダム値を30個生成します。値の範囲は枠の図形のバウンダリングボックスのサイズで指定します。

30のランダムな座標をIs In or On Polyノードを通過させて枠内の座標だけを抽出します。多角形の形状にもよりますが20個程度の座標値が生き残るはずです。

枠の図形のハンドルと、枠内に収まった座標のリストをVoronoiノードに入力してプログラムを実行します。

2Dの枠内がボロノイ分割されました。

分割した領域を囲むように多角形が生成されていますので、Path Extrudeに入力してそれぞれ3Dパス図形に変換します。パス図形の断面には厚みに対応する四角形を指定します。

    • 四角形の幅(断面の厚み):20mm
    • 四角形の高さ(断面の奥行き):200mm

実行して確認します。ボロノイ図に厚みが出ました。

3D回転してパネルを起こしましょう。Rotate 3Dノードを使用して、x軸を90度回転します。回転の基準は枠の左下の座標を指定します。

本棚や飾り棚として活用できそうな3Dオブジェクトが出来上がりました。

最後に、母点の数をパラメーターとするパラメトリックオブジェクトに変換します。オブジェクトノードに変換する前に次の通り少し修正します。

    • 枠図形のハンドルNameContorolGeometoryに置き換え
    • 母点の生成数Randoms NintSliderノードに置き換え

枠の多角形とラッパーノードを選択してオブジェクトノードに変換を選択します。

マリオネットオブジェクトに変換されました。(※ここではネットワークの最後にTextureノード繋いでテクスチャを設定しています。)

母点の数をスライダーで変更するたびに異なるパターンが生成されます。

母点の数:15

母点の数:50

母点の数:100

ボロノイシェルフサンプルダウンロード

A&Aノードライブラリ2022 ダウンロード

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

Architect

Vectorworks Architect

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

Landmark

Vectorworks Landmark

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

Spotlight

Vectorworks Spotlight

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

Designer

Vectorworks Design Suite

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