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

第40回「リストのリストを作る」

ArchitectLandmarkSpotlightDesigner2023

今回はマリオネットの解説です。座標データなど複数のデータをまとめて処理したいときに活躍する「リスト型のデータのリスト」について考え方と作成方法を紹介します。

マリオネットで扱うデータは、基本的にリスト型のデータです。ワイヤーをリスト型のデータが流れ、ノードではワイヤーから入力されたリストのデータをひとつずつ取得して、順番に処理を実行します。

例えばサイズの異なる円を3つ作図したい場合は、サイズのデータが3つ入ったリストを作成してCircleノードに入力します。Circleノードはリストのデータを順番に取り出して、それぞれのサイズの円を作図します。

一方、多角形など複数の座標データを扱う必要がある場合には、入力されたデータをリスト型のひとつのデータとして受け取ることで、複数の座標をまとめて処理しています。

このようにマリオネットではワイヤーを流れるデータのリストの値を一つずつ取得するのか、まとめて取得するかによってデータの処理を分けていますが、例えば多角形を複数作成したいときなど、座標データをまとめて処理したいけど、すべてまとめられると困るといった場面がでてきます。

次のような3つの三角形の作図する場合を考えます。

三角形の座標をそれぞれ定義して、そのままCreate 2D Polyノードに入力するとどうなるでしょうか。

すべての座標がひとつの多角形に属する座標値として認識されてしまいました。

このときに有効なのが、リスト型のデータをリスト化する方法です。

40-1. Chunk List ノード

Chunk Listノードはリストを分割してn個ずつのリストを作成します。Chunk Listを使用して、先ほどのプログラムで使用した座標のリストを分割します。

分割されたリストのリストをCreate 2D Polyノードに渡すことで、分割されたリストごとに多角形が作成されます。

40-2. Collateノード

Collateノードはリストから、1〜nの倍数ごとに要素を抽出して新しいリストを作成します。

説明だけでは動きが分かりにくいので、フォーラムで共有されているこちらのサンプルを用いてデータの流れを確認してみましょう。

このサンプルは、事前に作図した3つのNURBS曲線から、それぞれの分割地点を結んだ新しいNURBS曲線のパス図形を作成するものです。

プログラムを見ていきます。

最初に3つのNURBS曲線をn等分にして、分割した地点の座標のリストを取得します。

一旦ひとつのリストにまとめて、そのあとCollateノードに入力します。

Collateノードでは、それぞれの座標のリストから、1つ目の分割地点の座標のリスト、2つ目の分割地点の座標のリスト、のように同じ分割地点の座標をまとめたリストを作成します。Collateノードの出力は分割地点ごとの座標リストのリストとなっています。

Curveノードは座標リストのリストを受け取り、座標リストをひとつずつ読み込んで、それぞれ処理します。座標リストの数だけNURBS曲線が作成されパス図形に変換されます。

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

Architect

Vectorworks Architect

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

Landmark

Vectorworks Landmark

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

Spotlight

Vectorworks Spotlight

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

Designer

Vectorworks Design Suite

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