Utility モジュール / Pythonのリストの入れ子をGrasshopperのデータツリーに

Pythonのリストの入れ子をGrasshopperのデータツリーに 変換する関数 ListlistToTreeをモジュールにしました。 Utility.py ↑をCA_Neighbour.pyと同様 c:\MASunit フォルダに保存して、rhinocerosを再起動してください。 Pythonコンポーネント上で使うときは Utility.ListlistToTree の引数にネストされたリストを渡すと Tree に変換されたデータ型が返ってきます。今後も何かとUtilityモジュールの機能を拡張していきたいと思います。

  • Comments Off on Utility モジュール / Pythonのリストの入れ子をGrasshopperのデータツリーに

Pythonのリストの入れ子をGrasshopperのデータツリーに

Python で作ったリストのリストを Grasshopper のデータツリーとして扱えないという問題で、今日はリストのリストを、一つにまとめたリストと各リストに入っていた要素の個数のリストに分割するという方法をとりましたが、Python の中でデータツリーにして出力する方法を堀川さんに教えて頂きました。 以下コードです: 上記のスクリプトを新しく作成した Python コンポーネントに書き込んで、Python のリストを入力してください。細かい原理は難しいのですが、 Python でデータツリーを扱うことがそのままではできないので、scriptcontext, clr で Grasshopper のカーネルにアクセスして拡張する必要があるのだそうです。今後の ghpython のバージョンアップに期待します。

  • Comments Off on Pythonのリストの入れ子をGrasshopperのデータツリーに

Simple Histogram python Object

simple_histogram.ghuser  修正版を使ってください。 ヒストグラムを描画するPythonオブジェクトです。GHのワークスペースにドロップすればインストールされます。使い方はオブジェクト内のpythonスクリプトのコメントを読んでください。詳しくはミーティング中に説明します。

  • Comments Off on Simple Histogram python Object

CA 近傍チェックモジュール 注意点

CA_neighbourは3Dで記述してありますので、高さ1のマトリックス(結果的に2Dのマトリックス)を組むときにはFront,BackをUp,Downと取り違えないように気をつけてください。 id = チェックするid w=セルマトリックス幅 d=セルマトリックス奥行 h=セルマトリックス高さ 左__ cn.Left(id, w, d, h) 右__ cn.Right(id, w, d, h) 前__ cn.Front(id, w, d, h) 後__ cn.Back(id, w, d, h) 前左_ cn.FrontLeft(id, w, d, h) 前右_ cn.FrontRight(id, w, d, h) 後左_ cn.BackLeft(id, w, d, h) 後右_ cn.BackRight(id, w, d, h) 上__ cn.Up(id, w, d, h) 上左_ cn.UpLeft(id, w, d, h) 上右_ cn.UpRight(id, w, d, h) 上前_ cn.UpFront(id, w, d, h) 上後_ cn.UpBack(id, w, d, h) 上前左 cn.UpFrontLeft(id, w, d, h) 上前右 cn.UpFrontRight(id, w, d, h) 上後左 cn.UpBackLeft(id, w, d, h) 上後右 cn.UpBackRight(id, w, d, h) 下__ cn.Down(id, w, d, h) 下左_ cn.DownLeft(id, w, d, h) 下右_ cn.DownRight(id, w, d, h) 下前_ cn.DownFront(id, w, d, h) 下後_ cn.DownBack(id, w, d, h) 下前左 cn.DownFrontLeft(id, w, d, h) 下前右 cn.DownFrontRight(id, w, d, h) 下後左 cn.DownBackLeft(id, w, d, h) 下後右 cn.DownBackRight(id, w, d,Read More »

  • Comments Off on CA 近傍チェックモジュール 注意点

次回までTODO

FireFlyのモデル: agentの総数をスライダーで設定できるように agentの移動軌跡も表示できるといいです randomeシードの範囲をw,d,h 3種類スライダーで設定できるように 3Dで動かしてみるz軸にも数値を与えればそのままmove 光同調、全て3Dで動作するはずですので試してください。 moveのルールをもうすこし研究すること(全部が中心に移動して収束しない方法を考える) インターバルが拡散平均していく様子が数値(グラフなど)で示せるとすばらしいです。 MASクラスのupdateで として、コンソールに出た結果をエクセルか何かに貼り付けてみてはどうでしょうか? Boidsのモデル: バウンダリーの設定: Brep入力 複数の群れ現象の実現: Agentのscan範囲、近傍リストを agentとの距離 < Sep[] < Ali[] < Coh[] (Coherent)と3種類のリストにし、群れ全体の中心点に向かうのではなく、Coh リスト内の群れの中心に行くように、ルールを変更する。 agent.posの初期値の設定方法: twistLouverなどを参考にして、agentをカーブ上に等分割して配置して初期シードを試す →円弧配置などを手軽に試す。 CAスパイラルのモデル: 特異点の配置研究 diffusionもプロセスにいれてみた結果をみてみたい。 たとえばMASクラスで こんな計算を入れる 3Dでも実験。セル高さを2とか3にして走らせてみる(CA_neighbourモジュールは3Dの近傍チェックも出来ます)。 西崎さん同様、統計的なこと(ヒストグラムなど)が示せるとなおいいですね。 Duneモデル: 風の方向を変えるスライダーを実現する 障害物を配置できるようにしてみてはどうでしょう?障害物となるセルの設定のやり方はこちらのポストを参考に。Agentのメンバーに 例えばAgent.isStaticというフラグを作って、そのagentは絶対にホップされることなくまた常に風下のセルはshadowになるようにプロセスを考えてみれば実現できそうです。障害物によって明らかな風紋の違いがでたら面白いですね。その辺りにこの現象を操作するヒントがあるかもしれません。 トーラス空間、境界空間 を切り替えられるようにしてみる セルの高さを2とか3にして走らせてみる セルの配置を円筒状、その他の形状にしてみる こちらもセルの統計的なこと(ヒストグラムなど)が示せるとなおいいですね。

  • Comments Off on 次回までTODO

Brepを入力にセットするときの注意

BrepなどのRhinoモデルをGhPythonコンポーネントの入力にセットする場合、入力ポートのプロパティから(右クリックでリスト表示)Type hint→Brep と入力のオブジェクトタイプを明示しないと、スクリプト実行(何故か1ステップ目は問題が出ない)時にエラーが出ます。 追記: No Type Hint でも動きますね。    

  • Comments Off on Brepを入力にセットするときの注意

シミュレーション Reaction-diffusion system 反応拡散系モデル

Reaction-diffusion system 反応拡散系モデル Reaction-diffusion.gh CA_neighbour module required イマイチダイレクトに論文の係数どおりにならないので、モデルの実装が正確かどうか怪しいですが、なんとなく現象は再現できているようです。係数の研究はこちら↓ http://mrob.com/pub/comp/xmorphia/pde-uc-classes.html http://www.aliensaint.com/uo/java/rd/ 「反応拡散」のうち「拡散 diffusion」 はよく使われる考え方なので、他のモデルにも応用できるかもしれません。この辺りを参考に ラプラス方程式  

  • Comments Off on シミュレーション Reaction-diffusion system 反応拡散系モデル