Grasshopperの数列についてお探しですね。
広告
Grasshopperの「Series」と「Range」、どっちを使えばいいの?数値リストの作り方を分かりやすく解説
RhinocerosのプラグインであるGrasshopperでパラメトリックデザインを始めると、多くの人が最初につまずくのが「数値リストの作り方」です。
特に、等差数列を作る「Series」と、範囲を分割する「Range」というコンポーネントは、どちらも規則正しい数値を並べるものなので、「これって何が違うの?」と混乱してしまいがちです。
この記事では、SeriesとRangeの違いを基礎から丁寧に解説していきます。
それぞれの入力端子が何を意味しているのか、実際のモデリングでどう使い分けるべきなのか、初心者の方でも分かるように説明しますので、ぜひ最後まで読んでみてください。
数値リストをきちんとコントロールできるようになると、Grasshopperでできることが一気に広がりますよ。
SeriesとRange、何が違うの?
Grasshopperでパラメトリックなモデリングをするとき、オブジェクトを一定の間隔で並べたり、サイズを少しずつ変えたりするには「数値のリスト」が必要になります。
その代表的なツールがSeriesとRangeなんですが、この2つの一番の違いは「何を基準にして数値を決めるか」という考え方の違いなんです。
**Seriesは「積み上げ型」**です。
スタート地点の数値を決めて、「次は○○ずつ増やす」「全部で○個作る」という風に指定します。
つまり、1個1個の間隔と個数が決まっていて、最終的にどこまで数値が大きくなるかは計算した結果として決まります。
個数を増やせば増やすほど、全体の範囲はどんどん広がっていくイメージですね。
**Rangeは「切り分け型」**です。
最初に「ここからここまで」という範囲をガッチリ決めて、その範囲を何等分するかを指定します。
全体の範囲は絶対に変わらなくて、分割数を増やすと1個1個の間隔が狭くなっていくという仕組みです。
決まったスペースの中にきっちり収めたいときは、Rangeを使うのが基本です。
ちょっと乱暴な例えですが、Seriesは「50円玉を10枚並べたら全部でいくら?」という発想で、Rangeは「500円を10等分したら1つはいくら?」という発想に近いかもしれません。
下から積み上げるSeriesと、上から切り分けるRange。
この対照的な性質を理解することが、Grasshopper上達への近道です。
Seriesコンポーネントの使い方
Seriesコンポーネントは、スタート地点から一定のルールで増えていく(または減っていく)等差数列を作るためのシンプルなツールです。
入力端子は主に3つあって、それぞれの役割を理解すれば思い通りのリストが作れます。
**入力端子の説明:**
– **S(Start)**:数列のスタート地点(初期値)
– **N(Step)**:次の数値に進むときの増加分(間隔)
– **C(Count)**:最終的に出力される数値の個数
たとえば、Sに「0」、Nに「10」、Cに「5」を入力すると、出力されるリストは「0, 10, 20, 30, 40」という5つの数値になります。
ここで大事なのは、**Cで指定した数と、出力される数値の個数がピッタリ一致する**という点です。
**実際にどんなときに使う?**
Seriesは「1辺が100mmの立方体を、50mm間隔で10個並べたい」みたいに、1つ1つの寸法や間隔が絶対に守りたい条件になっている場面で活躍します。
間隔が固定されているので、後から個数を増やしても既存の配置がズレることはありません。
建築でいえば、階段の段板を一定の高さで積み上げていくようなケースですね。
寸法の精度が求められる場面では、Seriesコンポーネントが第一選択肢になります。
Rangeコンポーネントの使い方
Rangeコンポーネントは、指定した範囲(ドメイン)を指定した数で等分して、その区切り位置の数値をリストとして出力してくれます。
入力端子はとてもシンプルで、2つだけです。
**入力端子の説明:**
– **D(Domain)**:範囲の指定(最小値から最大値まで)
– **N(Steps)**:分割する数
デフォルトではD端子に「0 to 1」という範囲が設定されていて、もしN端子に「10」を入力すると、0から1までの間を10等分した数値リストが生成されます。
**ここが要注意!出力される数の罠**
初心者が一番ハマりやすいのがここです。
Rangeは「分割数」を指定するので、**出力される数値は必ず「分割数+1」になります**。
これ、ちょっと分かりにくいですよね。
1本の紐を10個に切り分けることを想像してみてください。
ハサミを入れる場所(点)は、両端を含めると11個になりますよね?それと同じ原理です。
**実際にどんなときに使う?**
Rangeは「長さ10メートルの壁面に、ルーバーを均等に15枚配置したい」みたいに、全体のサイズがガッチリ決まっているケースに最適です。
ルーバーの枚数を変更しても、壁の端から端までという全体の範囲は絶対に変わらないので、デザインのバリエーションを試すときにモデルが崩れません。
また、Graph Mapperコンポーネントと組み合わせて数値に緩急をつけるときも、ドメインを0から1で固定できるRangeはとても相性が良くて、有機的な形状を作るには欠かせないコンポーネントです。
結局どっちを使えばいいの?使い分けのコツ
ここまで説明してきたように、SeriesとRangeは出力される数値リストの性質が違うので、目的に応じて使い分ける必要があります。
迷ったときは、**「デザインで絶対に守りたいルールは何か?」**を基準に考えるとスムーズに決められますよ。
**使い分けの判断基準:**
– **間隔を固定したいとき→Series**
(例:規格サイズのタイルを敷き詰める、寸法ベースの設計)
– **全体の範囲を固定したいとき→Range**
(例:決まった敷地内に木を均等に植える、領域ベースの設計)
– **出力される数の違い**
– Series:指定した数そのままが出力される
– Range:指定した数「+1」が出力される
**よくあるトラブルと対処法**
Grasshopperで複雑なことをやり始めると、リスト内のアイテム数が他のコンポーネントと合わなくてエラーになることがよくあります。
たとえば、ある曲線をDivide Curveコンポーネントで分割して得たポイント(分割数+1の数になる)に対して、何かの数値を適用したい場合、Seriesでリストを作ると数が1つ足りなくなってしまいます。
こんなときは、SeriesのCount入力に数式(x+1)を挟むか、リストの長さを自動で合わせるLongest Listコンポーネントを活用するといった工夫が必要になります。
まとめ
Seriesの等差数列とRangeの範囲分割による数値リストの生成は、パラメトリックデザインの基礎中の基礎です。
それぞれの特性と、出力される数の法則をしっかり理解しておけば、エラーに悩まされることなく、もっと自由で複雑な3Dモデリングが楽しめるようになります。
最初は「どっちがどっち?」と混乱するかもしれませんが、実際に手を動かしながら試してみると、だんだん体で覚えられるようになりますよ。
ぜひこの記事を参考にしながら、色々なパターンを試してみてくださいね!
広告
