【集中講座】Rhino8 Grasshopper: Rhinoタブの概要

Rhino8 では、GrasshopperがRhinoのドキュメント内の設定と連携することができるようになり、ワークフローが大きく進化しました。その新機能の一つにGrasshopperのタブに新設された[Rhino]Tabカテゴリに属するコンポーネント群があげられます。これにより、GrasshopperからRhinoのレイヤー、マテリアル、寸法、線種、名前付きビューといったRhinoのドキュメント要素を直接操作できるようになり、これまでのジオメトリを中心としたGrasshopperの利用範囲が格段に広がりました。

このページでは、Rhinoタブカテゴリのコンポーネントの基本的な概念とその特徴についてご紹介します。

Grasshopper画面上部の[Rhino]と書かれているタブをクリックすることでアクセスできます。

新しく追加されたRhinoタブのコンポーネント群は、

  • 入出力端子の考え方
  • 使用していない入出力端子を非表示にできる
  • 点や曲線などのジオメトリ以外のレイヤや注釈の設定と言った形状以外もBakeできる

など従来のコンポーネントと異なる点が多くあります。以下は、順に内容を追ってみたいと思います。

既存のGrasshopperコンポーネントの端子

従来のGrasshopperコンポーネントは、入力端子の上から主となる項目の順に配置され、その並び順には開発者の意図があります。

一番上の入力端子にはそのコンポーネントで最も重要となる主要なデータ(対象となるジオメトリなど)が接続され、その下には各種設定やオプションが配置されるという構造が一般的でした。これにより、ユーザーはコンポーネントの機能を直感的に理解し、必要な情報を効率的に入力することができます。

形状の押し出しを行う[Extrude]コンポーネントであれば、一番上に形状、次に押し出すベクトルといった具合です。 入力した曲線に等間隔の点を作成する[Divide Curve]コンポーネントであれば、一番上に曲線、2番目に分割数、3番目にオプションと言った具合です。他のコンポーネントでも同様の考えで作成されおります。

また、既存のコンポーネントの動作は、

  • 値や形状の作成のみ行う
  • 入力したものから各種値の出力のみを行う

など、基本的に処理が一方向です。

下図は、X、Y、Zの各座標値を入力して点を作成する[Construct Point]コンポーネントです。

[Construct Point]にXYZの座標値を入力すると点が作成でき、その対となる[Deconstruct Point]コンポーネントは点を入力するとXYZの各座標の出力ができると言った具合です。

RhinoTab コンポーネントの端子

新しく追加されたRhinoTabにあるコンポーネントの多くは、従来のGrasshopperコンポーネントとは異なる考えで作られています。後述する「Query」系のコンポーネントなどを除き、多くのコンポーネントは入力端子と出力端子が同数で、端子の名称や扱うデータ型も入出力で一致しています。これはどのような意味を持つのでしょうか?

これらのRhinoTabのコンポーネント群は、一番上の入出力の端子がそのコンポーネントで扱う主要なデータを示します。二番目以降の入出力端子は、その主要なデータが扱うデータを持っているということになります。

先ほど例に挙げた点を作成するコンポーネントが、RhinoTabに存在すると仮定して考えてみます(実際にはこのコンポーネントは存在しません)。
RhinoTabのコンポーネントの構造だと、一番上にそのコンポーネントが扱う点に相当するPoint端子がつくことになります。二番目以降の端子では点のパラメータ値に相当するX,Y,Zの座標が入出力の端子にそれぞれついているということになります。

RhinoTab コンポーネントの考え方

ではこれらのRhinoTabのコンポーネントはどうやって使用すればよいのでしょうか?せっかくなので、さきほど点を作成するコンポーネントがRhinoTabにあったらという形でご紹介します。

 大きく分けると使用方法は、作成、取得、修正と3種類あります。

データそのものを作成したい場合

一番上の入力端子を開けてその他の必要な入力端子を端子に繋ぎます。
その場合、一番上の端子からは作成したデータが出力されます。

 データの値を取得したい場合

一番上の入力端子にのみデータを繋ぎます。その場合、二番目以降の入力した値の各情報が出力されます。

入力したデータの一部を変更したい場合

一番上の入力端子にデータそのものを繋ぎます。併せて入力端子の変更したい個所に値を繋ぎます。
また入力したデータのうち、接続したもののみ変更されたデータが一番上の端子から出力される特徴があります。

ですので、この例ではX座標やZ座標のような入力していないデータは変更されず、そのまま出力されます。

RhinoTab コンポーネントの使い方

では、次に実際にRhinoTabに存在する[Model Layer]コンポーネントを使って、レイヤを扱ってみます。

下図はレイヤを作成した例です。一番上の入力端子は空け、Name(レイヤ名)やHidden(非表示)、Locked(ロックされているか)、Display Colour(レイヤ表示色)に接続しています。
作成した[Model Layer]コンポーネントの上で右クリックし、Bakeを実行することでレイヤが作成されます。

 Rhino7までと異なり、形状以外のレイヤや注釈設定、テキスト設定などもBakeすることができます。

ではレイヤを修正したい場合、どうやって取り込めばよいのでしょうか?

 RhinoTabコンポーネントの中には、「Query 」から始まる名前のコンポーネントが複数存在します。これらを使うことで、Rhinoのドキュメント内の要素を取得することができます。

下図の例では、[Query Model Layers]コンポーネントのName端子に[Test]と入力し、ドキュメント内のTestという名前のレイヤを取得しています。取得したレイヤデータを、[Model Layer]コンポーネントの入力につなぐことで、Testレイヤの各種値を取得しています。

最後にドキュメント内のレイヤの色を変更した例です。 先ほどと同様に[Query Model Layers]コンポーネントに[Test]と入力して、Testレイヤを取得しています。取得したレイヤと併せて、Display Colour(レイヤ表示色)に変更したい色を繋ぎ、BakeすることでTestレイヤの色が変更できます。

RhinoTab の端子の順番について

おおよそのRhinoTabのコンポーネントについて、使用方法を見てまいりました。
ただ使い方は分かっても、端子の数が多すぎて設定する箇所が分かりづらいと思われるかもしれません。

 RhinoTabのこれらのコンポーネントはRhinoの中の設定にアクセスするという考えなので、端子の順番は基本的にRhino内のUIと順番がほぼ同じとなっています。

レイヤであればRhinoのレイヤパネルの、Name(名前)、Hidden(オン)、Locked(ロック)、Display Colour(色)、Material(マテリアル)、Linetype(線種)とおおよそ順番に並んでいるのがお分かり頂けるかと思います。

RhinoTab の端子の表示・非表示について

また一部のコンポーネントは端子数が多すぎるので、呼び出した時点でも端子を非表示にされているものがあります。

 その場合は、コンポーネントの黒帯の部分で右クリックして、[Show more parameters]を実行するとコンポーネントの端子をすべて表示できます。また[Hide unused parameters]を実行することで、接続していない入出力端子を非表示にすることもできます。

  [Model Layer]コンポーネントは[Show more parameters]を実行することで、Print Colour(印刷色)やPrint Width(印刷幅)にもアクセスできるようです。
(Rhino8 SR21の時点では、クリッピング平面に関するものが実装されていないため、レイヤごとにクリッピング平面の断面を設定する箇所は端子にも存在しません。)

 下図は共に[Model Layer]コンポーネントに値を繋いで、レイヤを作成している例です。共に動作は同じですが、上の例では繋ぐ必要がない出力にパネルがつながっているため、何を行っているかが分かりづらくなっています。

  [Hide unused parameters]を適切に使い不必要な端子を見えなくすることで、作成、取得、変更の何を行っているのかアルゴリズムの意図が明確にできるかと思います。

まとめ

RhinoTabのコンポーネント群には、

  • 入出力端子の考え方が異なり同数ずつある
  • レイヤや注釈やテキストの設定といった形状以外もBakeできる
  • 使用していない入出力端子を[Hide unused parameters]で非表示にできる

といった従来のコンポーネントと異なる点が多くあります。

 今までアクセスできなかった設定まで変更できるようになったことで、RhinoとGrasshopperのワークフローが改善され、今までよりも効率的なドキュメント作成やプロジェクト管理を実現することができます。
ぜひ、RhinoTabのコンポーネントをお試しいただけたらと思います。

またRhinoTabにはこれら以外にも、フィルタやGroup、オブジェクトに埋め込むことができるUserText、ブロックデータなど多くの要素があります。時間があれば、これらもTipsを予定しております。

補足1:

このページでは触れていませんが、手動でBakeする代わりにRhino8で加わった[Content Cache]コンポーネントを使用することでPush(自動でBakeを行う)と言ったことも可能です。興味があれば併せてご確認ください。

Rhino8 Grasshopper: Content Cache Part1 基礎 – 4つのアクション(Push/Pull/Bake/Purge)と基本概念を知ろう
https://www.applicraft.com/tips/rhinoceros/gh_contentcache1/

補足2:

現在(Rhino8 SR20)では、レイヤ、線種、ハッチング、マテリアル、フォント、注釈スタイル、各種ライト、名前の付いたビューなどがあります。

Rhino9WIPなどでも新しい要素が多く追加されています。今後も扱えるものが増えるかと思いますので、興味がある方は弊社のGrasshopper Component Index のRhinoTabの個所を参照ください。

Grasshopperコンポーネント:Rhino
https://www.applicraft.com/ghcp_rhino/

補足3:

 注釈などの多くの要素を持つものもGrasshopperで一から作成することもできます。
ただし、真面目に作成しようとすると上記のように [Annotation Style] コンポーネントに各種値を接続してBakeする必要があります(接続するのに多くの時間が掛かってしまいます)。

ただ注釈の値を取得するのであれば、RhinoのUIで ツール>オプション 注釈スタイル から注釈を新規作成し、[Query Annotation Styles]でRhinoのドキュメント内の設定を読み込んだ方が簡単に使用できるかと思われます。

すでにドキュメント内にある注釈を読み込んで、[Query Annotation Styles]で注釈を検索し、注釈名と文字高さのみを変更した注釈を作成した例。あるものを使用して、一部変更して使用する方が使用頻度は高いかもしれません。