Rhino8(BETA): Grasshopperの新コンポーネント(Rhino)まとめ
Rhino8
先日、Rhino8のBETA版が利用可能になりました。(Rhino7のライセンスが必要)
Rhino8ではGrasshopperに新しくRhinoカテゴリのコンポーネントが多数追加されています。これらのコンポーネントは主にジオメトリのベイク、レイヤー、マテリアル、ブロックインスタンスなどのRhinoドキュメント上で扱うオブジェクト(Rhino.DocObjects)を手軽にgh上でコントロールする機能を持っています。
ここでは新しく追加されたRhinoカテゴリに属する各コンポーネント(以下"Rhinoコンポーネント"という)がどういったことができるのかというのを簡単にまとめています。なお、これらの情報はRhino8 BETA(2023/09/18)時点のものになるのでご注意ください。
はじめに
Rhinoコンポーネントの理解に役立つ情報を少し紹介します。
GH_ModelContent
Rhinoコンポーネントの重要な要素としてGH_ModelContentという型があります。
GH_ModelContentは主にContentグループに属するBakeコンポーネント等で「Content」という表記のParamとして扱われています。これを介することで、GHからRhinoにベイクしたり、逆にRhinoからGHに属性情報を持ってきたりすることが可能になっています。
Contentグループのコンポーネント
Bakeコンポーネントの入出力のParam
また、Rhinoコンポーネントでやり取りするデータを見てみると、頻繁に「Model ●●」というのを目にしますが、これらのデータはGH_ModelContentを継承した型となっています。つまり、これらのデータはBakeコンポーネントでベイクすることが可能です。
「Model ●●」はContentに入力できる
IGH_GeometricGooを継承している型はGH_ModelObject(GH_ModelContentを継承している)に自動的に変換してくれる(PreferredCastを実装している)ので、これらもContentに直接入力することが出来ます。因みに、今回新しくGHで扱えるようになったHatch、Dimension、BlockInstance(reference)などもIGH_GometricGooを継承しています。
IGH_GeometricGooもContentに直接入力できる
ZuiComponent
RhinoコンポーネントのほぼすべてがZuiComponentという抽象クラスを継承しており、これによってInputとOutputのParamの表示/非表示ができるようになっています。
右クリック → Hide unuse parametersで使用していないParamを自動で非表示にしてくれたりもする
一部のParamでは右クリックでセットできる値を選択することで出来るので、何が入力できるのか分からないときに役立ちそうです。
Rhino側にあるブロックインスタンス定義をリストしてくれている
Content
Bake Content
ContentをRhinoドキュメント上にベイクできる
Detail
- デフォルトでは"Grasshopper"レイヤーにベイクされる
- モードが二つある
Update: 既にベイクされたモデルがある場合はそれを更新する
Insert: 既にベイクされたモデルがあるかに関わらず新しいモデルをベイクする
- 出力はベイクしたモデルのContent
- 特定のレイヤーにベイクしたいときは事前にModelObjectコンポーネントで指定する
Content Details
ContentのDetail(Guid、レイヤー、表示色など)をGetする
Detail
- RhinoオブジェクトをセットしたParamからでも直接取れる
Content Information
ContentのInformation(名前、description)をGet/Setする
Detail
- parentというのは名前(path)を特定のセパレータで区切ったときの上位の部分、nameは下位の部分
- デフォルトではコロン2つ(::)がセパレータとなっている
Convert Units
モデルの単位(スケール)を変更する
Detail
- Sourceに元の単位、Targetに変更先の単位を指定するとObjectのスケールが変更される
- 数値でもok
Text Field Expression
テキストフィールド関数を生成する
Detail
- テキストフィールド関数とは属性ユーザーテキストで設定できる関数のこと
- 右クリックで何の関数を生成するか選択できる
- 関数を評価するにはEvaluateTextFieldsコンポーネントが必要
- 例:AttributeUserText関数を使用してユーザーテキストをGetする
Evaluate Text Fields
テキストフィールド関数を評価(実行)する
Detail
- TextFieldExpressionコンポーネントと一緒に使うことが多そう
Unit System
独自の単位を作成できる
Detail
- 例:1hoge=10mmと定義する
User Text
ユーザーテキストをGet/Setできる
Detail
- 例:Rhinoのオブジェクトに割り当てられているユーザーテキストをGetする
- 例:ghのジオメトリをユーザーテキストがついた状態でベイクする
- いくつかモードがある
- Mergeでは重複があれば更新し、なければ新しく追加する
Filter Content
Contentを特定の条件でフィルターする
Detail
- 例:"Nameが30以上"という条件でフィルターする
FullName(またはPath)は名前全文、Nameはセパレータで区切られた下位の部分(ややこしい、、)
Group Content
指定したKeyでContentをグルーピングする(ブランチで分けられる)
Detail
- 例:Nameでグルーピングする
- 指定できるKeyはマテリアルやレイヤーなどと沢山ある
Order Content
指定したKeyでContentをソートする
Detail
- 例:Nameでソートする
Equality Filter
keyの値がvalueと一致するか否かのFilterを生成する
Detail
- 例:所属するレイヤがHiddenになっているかでフィルターする
Greater/Less Than Filter
keyの値がvalueより大きい・以上かのFilterを作成する
Detail
- 例:"Nameが30以上"という条件でフィルターする
Logical And/Or Filter
2つのFilterの論理積/論理和を作成する
Detail
Intersection/Union Filter
Filterのリストの論理積/論理和を作成する
Detail
Logical Not Filter
Filterの論理否定を作成する
Detail
Contains Text Filter
keyの値にTextが含まれているかのFilterを作成する
Detail
- Contains, StartWith, EndsWithの3つのモードがある
- Caseは大文字小文字を区別するかどうか
- Cultureは使う文字の言語
Match Text Filter
keyの値でパターンマッチングするFilterを作成する
Detail
- ワイルドカードと正規表現の2つのモードがある
ワイルドカード
正規表現
Import Content
別ファイルからContentをインポートできる
Detail
- 別3dmファイルからジオメトリ、レイヤー、ブロック定義などをContentとしてインポートする
- 各インプットはパターンマッチング用のワイルドカードを指定
- 3dm以外(obj等)もインポートできる
Model
Model Layer
Layerの各要素をGet/Setする
Detail
- 例:Rhinoのオブジェクトが所属するレイヤーの名前を取得する
- Layer(Content)を新規に作成することもできる
Query Model Layers
Rhinoのドキュメント上にあるレイヤーのリストをContentとして取得する
Detail
- インプットはパターンマッチング用のワイルドカードを指定できる
- BakeContentコンポーネントでベイクする時にexpiredされるようになっている
Model Block Instance
ブロックインスタンスのTransformとブロック定義をGet/Setする
Detail
- 例:Rhinoドキュメント上のブロックインスタンスからブロック定義とTransformを取得する
- 例:ブロック定義からブロックインスタンスをベイクする
Export Model Block Definition
ブロック定義をエクスポートする
Detail
- ブロック定義の中にあるジオメトリを3dmとして保存する
- エクスポートした3dmをリンクとして設定するわけではない
- リンクにするには後述のInportModelBlockDefinitionを使用する
Import Model Block Definition
- 3dmをブロック定義としてインポートする
Detail
- 出力はブロック定義のContent
- UpdateTypeでリンク・埋め込みの設定ができる
- インポートするだけだとRhinoのドキュメントに反映されない
- ベイクすると反映されるはずだがエラーがでる(バグ)
- 次のアップデートで修正されるっぽい?
https://discourse.mcneel.com/t/grasshopper-rhino-block-instance-component-broken/165345
Model Block Definition
ブロック定義の要素をGet/Setする
Detail
例:ブロックインスタンスからブロック定義を確認する
- 隠れているパラメータがいくつかあるが、定義のタイプ(リンク、埋め込み)は現時点では無さそう
Query Model Block Definitions
Rhinoのドキュメント上にあるブロック定義を検索する
Detail
- インプットはパターンマッチング用のワイルドカードを指定
Objects
Explode Object
モデルオブジェクトを分解する
Detail
- ジオメトリの分解と似たような感じ
- Nameなどは継承される
Model Object
モデルオブジェクトの各要素をGet/Setする
Detail
Query Model Objects
Rhinoドキュメント上にあるジオメトリをモデルオブジェクトとして取得する
Detail
- NameとLayerはパターンマッチング用のワイルドカードを指定する
- Locked/Hiddenをtrueにするとロックされている/非表示になっているジオメトリも取得する
Display Attributes
オブジェクトの表示に関する設定のGet/Setをする
Detail
- 例:オブジェクトに表示色を設定してベイクする
Display Colour
オブジェクトの表示色に関する設定のGet/Setをする
Detail
- 例:オブジェクトの表示色を”親の設定”にしてベイクする
Display Mode
オブジェクトの表示モードに関する設定のGet/Setをする
Detail
- 例:オブジェクトの表示モードを”ゴースト”にしてベイクする
Drafting Attributes
製図に関する設定のGet/Setをする
Detail
- 例:Curveの印刷色を赤、印刷幅を50に設定する
- 印刷表示がオンになっていないと確認できないので注意
Object Linetype
線種に関する設定のGet/Setをする
Detail
- 例:Curveの線種を”破線”に設定する
Print Colour
印刷色に関する設定のGet/Setをする
Detail
- 例:印刷色の設定を”表示の設定”にする
Print Width
印刷幅に関する設定のGet/Setをする
Detail
- 例:印刷幅を”レイヤの設定”にする
Render Attributes
レンダリングに関する設定のGet/Setをする
Detail
- 例:キャストシャドウとレシーブシャドウをTrueにする
Render Material
レンダーマテリアルに関する設定のGet/Setをする
Detail
- 例:マテリアルを割り当てた状態でベイクする
Visibility Attributes
オブジェクトのHidden、LockedのGet/Setをする
Detail
- 例:ロックにした状態でベイクする
Render
Model Material
マテリアルの各要素をGet/Setする
Detail
Query Model Materials
Rhinoドキュメント上にあるマテリアルを検索する
Detail
- インプットはパターンマッチング用のワイルドカードを指定
Viewports
Model View
ビューの各要素をGet/Setする
Detail
Model Viewport
ビューポートの各要素をGet/Setする
Detail
- 変更はベイクすることで反映される
Query Pages
Rhinoドキュメント上にあるページを取得する
Detail
- インプットはパターンマッチング用のワイルドカードを指定
Query Viewports
Rhinoドキュメント上にあるビューポートを取得する
Detail
- インプットはパターンマッチング用のワイルドカードを指定
- ビューポートが更新されるたびにexpiredされるようになっている
Zoom Extents
Extentsで指定したオブジェクトが全て表示されるようにズームする
Detail
- 例:ベイクするとPerspectiveビューの視点が指定したオブジェクト全体が映るように切り替わる
Annotations
Aligned Dimention
平行寸法を作成する
Detail
- いろいろパラメータが隠れている
Angle Dimension(Arc)
円弧の角度寸法を作成する
Detail
Angle Dimension(Lines)
2つのLine間の角度寸法を作成する
Detail
- DimensionLocationは寸法を表記する位置
Angle Dimension(Points)
3つのPoint間(Pa-C-Pb)の角度寸法を作成する
Detail
Annotation Attributes
Annotationの各要素のGet/Setをする
Detail
Centermark
センターマークを作成する
Detail
- t(Parameter)で向きを調整できる
Leader
引出線を作成する
Detail
Linear Dimension
直線寸法を作成する
Detail
Ordinate Dimension
縦座標寸法を作成する
Detail
Radial Dimension
半径寸法を作成する
Detail
Text Dot
TextDotを作成する
Detail
Text Entity
TextEntityを作成する
Detail
Annotation Style
Annotationのスタイルの各要素をGet/Setする
Detail
- 例:スケールを1.25に設定したスタイルを平行寸法に割り当てる
Model Font
フォントの各要素をGet/Setする
Detail
- アンダーラインとかの設定が隠れている
Query Annotation Styles
Rhinoドキュメント上にある注釈スタイルを検索する
Detail
- 入力はパターンマッチング用のワイルドカード
Query Installed Fonts
インストールされているフォントを検索する
Detail
Annotation Arrow Settings
矢印の設定
Detail
Annotation Dimension Settings
寸法の設定
Detail
- 例:TextOrientationをtrue, TextLocationをcenterに設定
Annotation Leader Settings
引出線の設定
Detail
- 例:LeaderCurveTypeをSpline, HasLandingをtrue, LandingLengthを5に設定
Annotation Text Settings
テキストの設定
Detail
- 例:MaskFlameをRectangular, MaskColourをwhite, MaskMarginを0.5に設定
Annotation Tolerance Settings
許容範囲表記の設定
Detail
- 例:ToleranceFormatをDeviation, 有効桁数を3, Upper/Lowerを0.1, 文字スケールを50%に設定
Annotation Units Settings
単位表記の設定
Detail
- 例:LinearResulutionを1, prefixをsuffixを設定
Drafting
Model Linetype
線種の各要素をGet/Setする
Detail
- 例:カスタムした線種をオブジェクトに割り当てる
Segments=[4,-1,2,-1,2,-1]は1ユニットのセグメントの長さ。正の値は実線の長さ、負の値は空白の長さを示している。
Query Model Linetypes
Rhinoドキュメント上にある線種を検索する
Detail
- インプットはパターンマッチング用のワイルドカードを指定
Model Hatch
ハッチを作成する
Detail
Colour Gradient
ハッチのグラデーションカラーを作成する
Detail
Gradient Colour Stop
グラデーションの色・位置を定義する
Detail
Hatch Line
ハッチパターンの線の設定をGet/Setする
Detail
Import Hatch Pattern
外部ファイルからハッチパターンをインポートする
Detail
- 現状、Rhinoからハッチパターンをエクスポートできない?
- .patというファイルをインポートするらしい
Model Hatch Pattern
ハッチパターンの各要素をGet/Setする
Detail
- 例:HatchLineからハッチパターンを定義→それを使用してハッチを作成
Query Model Hatch Patterns
Rhinoドキュメント上のハッチパターンを検索する
Detail
- インプットはパターンマッチング用のワイルドカードを指定
Discussion