【Grasshopper】コントローラーの入力を読み取る

皆様こんにちは。
AMDlabの秋山と齋藤です。

ある社外のBIM・コンピューテーショナルイベントでRhinocerosを外部コントローラー入力で操作して、ゲーム感覚でGrasshopperに触れてみてもらう試みをしましたのでその報告になります。
髙木秀太さんたちが作成された、物理キーでGrasshopperのパラメータを操作するこちらの機械を使うことでRhinoceros、Grasshopperを使えない方でも、簡単にコンピューテーショナルに触れることができますが、今回はGHのプラグインとゲームのコントローラーを使用してGrasshopperを操作します。

使用するプラグインは「XBOX CONTROLLER PLUGIN FOR GRASSHOPPER」になります。

インストールをする


まずはXBOX CONTROLLER PLUGIN FOR GRASSHOPPERのインストールを行います。
標準的なGrasshopper Assemblyのインストール方法と同じです。
以下のfood4rhinoのURLからダウンロードしてください。
https://www.food4rhino.com/en/app/xbox-controller-plugin-grasshopper

ダウンロードが終わったら、zipファイルごとセキュリティのブロックを外します。
zipファイルを右クリックしてプロパティを開き、以下のセキュリティを許可するにチェックをします。

あとはzipを解凍して以下のファイルすべてをGrasshopperのLibrariesへ入れます。

インストール後、リボンにFireflyが入っているか確認をしてください。

コントローラーをつなげる


Fireflyに入っているコンポーネントは上記のひとつのみです。(このコンポーネントは特定のパソコンでしか動作しないことがあります)
こちらのコンポーネントでコントローラーのボタン、スティックを割り当てます。
インプットは何も繋ぐ必要はありません。インプットには、ボタンを押してから反応するまでにかかる時間の間隔であったり、振動機能の付いたコントローラーであればその振動の間隔を設定することができます。
コンポーネント下部に、No Controller Connectedと出ているため、まだコントローラーと接続されていません。そのためコンポーネントのアウトプットはnullの状態です。

コントローラーに接続します。
今回使用するコントローラーはこちらのNintendo Switchのコントローラーを使用します。

接続方法はとても簡単で、有線ケーブルでパソコンとコントローラーをつなげ、windowsの設定画面のデバイスのその他のデバイスに認識されれば準備完了です。

先ほどのコンポーネントにTriggerコンポーネントを追加して、再生を押します。
そうすると、コンポーネント下部に、Connected:Trueと出て接続が完了します。

コントローラーの入力をコンポーネントへ流す


実際にコントローラー上のボタンやスティックを操作すると、アウトプットで反応しているか確認ができます。
コントローラーのAボタンを押してFalseをTrueに変更しています。こちらはbuttonコンポーネントと同じ役割で、ボタンを押している間Trueになります。一度クリックするとTrueを維持するような設定も可能です。

コントローラーの左スティックを右に傾けて、値を変更しています。こちらはNumber Sliderコンポーネントと同じ役割で、傾けている間値が変わります。右に傾けの最大値は100、左に傾けの最小値は0になります。

実際にプログラムを動かしてみる


今回作成したプログラムは「間取り自動生成おはじきゲーム」です。
Grasshopperの物理演算アドインであるKangarooを使っています。ベースとなる平面区画に向かって球を飛ばすと、玉の位置を起点にボロノイ分割され、間取りが自動で生成されます。

操作方法になります。
1.操作方法のGHかコントローラーをどちらか選択しますが、今回はコントローラーにします。
2. RESETを押します。
3. 実行のトグルとトリガーをOnにします。
このトグルはボタンの間隔時間を選ぶもので、インターバルを決定します。


4. 方向とPOWERを設定します。
方向とPOWERはコントローラーのスティックで変更します。
5. SLINGを押し投げます。
Aボタンを押すことで球が発射されます。
6. 全て打ち終えたら終了です。

終わりに


普段マウスでGrasshopperのインプットを制御していますが、ゲームコントローラーを使用すると、ゲーム感覚でGrasshopperに触れることができます。ボタンのクリックやNumber Sliderの値を変更するといった使い道程度しかないため、ちょっとした気分転換です(笑)。

ARTICLES