GrasshopperとDynamoの比較
【2018年12月3日修正】
Autodesk版のビジュアルプログラミングツール「Dynamo」をちょっと触ってみました。
無償のDynamoと有償のDynamo Studioと2つありますが、今回はDynamo(ver1.3)を使って、Grasshopperユーザーから見た違いを、ざっくり比較してみました。
最近Dynamoを使う機会が増えたため、内容を修正しGrasshopper(ver1.0)とDynamo(ver2.0.1)はどんな違いがあるか比較したいと思います。
比較項目
- 用語
- インターフェース
- コンポーネントとノード
- データ構造
- 処理速度(工事中)
- アドオン
- 開発
- BIMとの連携(工事中)
用語
まずはソフトで使われる用語についてです。
GrasshopperとDynamoでは、同じようなモノや機能、データ型でも用語が異なる箇所があるので、主な用語について表にしました。
Grasshopper | Dynamo |
コンポーネント | ノード |
Enable/Disable | Freeze |
Cluster,User Objects | Custom Node |
Add-on,Plugin | Package |
Brep | Solid |
Box | Cuboid |
Text | String |
インターフェース
続いてインターフェイスの違いについてです。
背景プレビューの有無
Grasshopperでは、コンポーネントの配置をCanvas上で行い、プレビューはRhinoのViewportに表示されますが、
Dynamoでは背景にプレビューが表示されるため、一つの画面で結果が確認できるようになっています。
なお、GrasshopperでもC#等でCanvasの背景にプレビューを表示する方法はあります。
プレビューの設定
Grasshopperでは、プレビューされるGeometryなどの表示設定を細かく指定することができます。
一方Dynamoにもプレビューの設定はありますが、Grasshopperほど細かくはできません。
処理の実行方法の違い
Grasshopperでは、Canvas内の処理はリアルタイムで行われます。処理を一時的に止めたい場合は、Canvas上で右クリックかマウスの中ボタンクリック、もしくはメニューバーの[Solution]から[Disable Solver]を選択します。
Dynamoでは、処理の実行方法が[自動]と[手動]の2種類あります。
[自動]ではGrasshopperと同様にリアルタイムに処理が行われ、[手動]に切り替えると[実行]ボタンを押すことで処理を実行することができます。
日本語対応
Grasshopperは基本英語ですが、Dynamoのインターフェイスは日本語対応となっています。
ノード名は全て英語ですが、解説が日本語で出てくるのでどんなノードなのか理解しやすく、入出力先のデータ型を確認できるのも便利ですね。
(一部翻訳がうまくいっていない箇所もありましたが。。)
コンポーネント/ノード
GrasshopperのコンポーネントとDynamoのノードについての比較です。
コンポーネント/ノードの仕様
コンポーネント/ノードは、それ自体を右クリック等すると設定メニューが表示されますが、両者でその設定内容が異なります。
Grasshopperでは、右クリックする箇所によって、表示されるメニューが変わります。
入出力側は、主にデータツリーなど入出力するデータに関する設定が表示され、コンポーネントの名称もしくはアイコン部分では、コンポーネント自体の設定が表示されます。
Dynamoでは、入力側を右クリックすると、デフォルトの値を有効/無効にする設定表示され(デフォルト値の設定のあるもののみ)、”>”を左クリックするとレベルの設定が表示されます。
またノードのポート以外を右クリックすると、ノード自体の設定が表示されますが、Grasshopperと大きく異なるのは、この中にデータの掛け合わせを設定する”レーシング”が含まれているところでしょうか。
データのプレビュー
また、データのプレビュー方法にも違いがあります。
Grasshopperではコンポーネントの入出力側にマウスを乗せている間、左右にデータが一部プレビューされますが、
Dynamoでは、ノードの下部にOutput側のデータがプレビューされ、ピンマークをクリックするとプレビューを固定表示できます。またアイテムやリストをクリックすると、個別にハイライトすることもできます。
コンポーネント・ノードの種類
全てのコンポーネント/ノードをチェックしていないので一概には言えませんが、同じ機能を備えたものが数多く存在します。
傾向としてはDynamoの方が、Grasshopperよりも種類が細分化されているものが多いようです。
例えば、Grasshopperの[Deconstruct]コンポーネントでは一つのコンポーネントで点のX,Y,Zを抽出できますが、
Dynamoでは、X,Y,Zが別々のノードになっています。
今度は、Extrudeの操作で比較してみましょう。
Grasshopperの[Extrude]コンポーネントでは、CurveもしくはSurfaceとVectorを入力することで、SurfaceやBrepが作成できますが、
Dynamoでは、出力するGeometryがSurfaceの場合は[Extrude]ノードで、Solidの場合は[ExtrudeAsSolid]ノードと分かれており、入力する引数や出力されるGeometryの種類によってさらにノードが細分化されています。
このように、Grasshopperでは一つのコンポーネントで複数のデータ型に対応できるものが多く、Dynamoでは同じ名前のノード(同じ処理)でも、入出力されるデータによってノードが異なるものが多い傾向があります。
テキストプログラミング
GrasshopperとDynamoは、ビジュアルプログラミングツールですが、テキストベースでプログラムを書くことも可能です。
プログラミング言語対応
対応している一般的な言語は、
Grasshopperでは、VB,C#,Python、
DynamoはPythonとなっています。
いずれのコンポーネント/ノードも、ダブルクリックするとエディターが開き、コードを記述することができます。
その他テキストベースのコンポーネント/ノード
先述したテキストプログラミング用のコンポーネント/ノード以外にも、テキストベースで入力できるものがあり、Grasshopperでは主に[Panel], [Evaluate], [Expression]コンポーネント、Dynamoには[Code Block]があります。
[Panel]は、データの入力や出力されるデータの表示等様々な使い方ができ、[Evaluate]や[Expression]では関数を処理する機能が備わっています。[Code Block]はDynamo独自の言語DesignScriptを記述することができ、データの入力だけでなく変数の利用やノードを関数として呼び出し可能な万能ノードです。
また選択したノードの組み合わせをコードブロック化する機能も備わっています。
データ構造について
GrasshopperとDynamoのデータ構造は、どちらも階層構造になっていますが、名称や扱い方が異なります。
Grasshopperでは、データツリーというデータ構造になっていて、ツリーを構成するブランチ(枝)の末端にアイテムが格納されたリストが繋がっているという概念となっています。また、各ブランチには”パス”、リスト内のアイテムには”インデックス”という固有の番号で管理されています。
Dynamoの階層構造は、Grasshopperのようにブランチが階層化するのではなく、リストの中にリストを入れ子にしていくという構造になっています。
また、DynamoにはDictionary型があり、順序は保証されませんがKeyとValueとしてデータを扱うことも可能です。
それぞれインターフェース上の見え方異なりますが、どちらも同じような階層のデータを生成できるかと思います。
処理速度
工事中
アドオン/パッケージ
GrasshopperとDynamoには、どちらもユーザー等が作成した拡張機能を利用することができます。
この拡張機能は、主に特定の用途で作成されたコンポーネント/ノードが格納されているものが多いですが、ものによってはメニューバーにアイテムを追加したり、ダイアログを表示させて操作をしたりなど、様々な種類があります。
Grasshopperではアドオンやプラグインと呼ばれ、Food4Rhino等からダウンロードしたghaファイルをCanvas上にドラッグ&ドロップするか、アドオン用のフォルダに格納などすることで、アドオンを利用できるようになります。
Dynamoではパッケージと呼ばれ、メニューバーの[パッケージ]を開くと、パッケージのダウンロードや管理ができるので、Githubのみで公開されている場合等を除いてDynamo内だけでインポートを完結することができます。
開発
先述したアドオン/パッケージは、どちらもVisualStudioを利用して自分で作成することができます。
GrasshopperはVisualStudioのテンプレートが、
DynamoではNugetパッケージが公開されていて、
どちらもC#かVBで記述します。
なおGrasshopperでは、VisualStudioを使わずにPythonコンポーネントを使ってアドオンを作成することも可能です。
BIMとの連携
GrasshopperとDynamoはどちらも特定のBIMソフトと連携することができます。
Grasshopperでは、アドオンを利用することでArchiCADやRevit,Tekla等に繋げることができ、主な用途はモデリングになります。
Dynamoでは、デフォルトでRevit用のノードが用意されており、RevitからDynamoを起動するとライブラリにノードが表示されます。機能はモデリングだけでなくRevit内の処理を自動化するなどといったことが可能で、GrasshopperとArchiCADコネクションに比べ多くの機能を備えています。
終わりに
GrasshopperとDynamoは似ているソフトウェアですが、使い勝手や細かい機能が異なり、どちらかに慣れていると他方での利用に不便が生じる場面があるかと思います。
ここで挙げた両者の違いは部分的な内容にはなりますが、少しでも参考になれば幸いです。