Grasshopperでnullの削除についてお探しですね。
広告
Grasshopperで困る「null」や「空データ」をスッキリ削除する方法
Grasshopperでパラメトリックなモデリングをしていると、Panelコンポーネントを見たときに「null」とか「Empty」っていう空っぽのデータが混ざっていることがよくありますよね。
これをそのまま放っておいて次の処理に進んでしまうと、後ろのコンポーネントが赤やオレンジ色になってエラーを吐き出して、作業が完全にストップしてしまうことがあります。
この記事では、Grasshopperを使う上で絶対に知っておきたい「Clean Tree」というコンポーネントを使って、厄介なnullや空データをきれいさっぱり削除して、リストを整理する方法を詳しく説明していきます。
データツリーの仕組みとエラーを避ける方法をしっかり理解すれば、ストレスなくスムーズにモデリングができるようになりますよ。
どうして「null」や「空データ」ができちゃうの?
Grasshopperでリストやデータツリーを扱っていると、なぜか意図していない「null(空データ)」や空っぽのブランチ(枝)ができてしまうことがあります。
これって一体なぜなんでしょうか?
一番よくある原因は、サーフェスをトリムしたり曲線の交差を調べたりするときに、条件に合わないデータが出てきたときに生まれる「空っぽの枠」です。
例えば、Brep(立体やサーフェスを表すデータ)同士が交わっているかチェックするコンポーネントを使ったとき、そもそも交わっていない部分には出力する曲線データがありません。
でも、Grasshopperは元のリスト構造を保とうとするので、そこに「null」という空の目印を残してしまうんです。
それから、「Sift Pattern」みたいに特定の条件に合うデータだけを取り出すコンポーネントを使ったときも同じことが起こります。
条件に合わなくて除外されたデータは完全に消えるんじゃなくて、nullとして元の場所に残る仕組みになっているんですね。
Grasshopperはデータツリーという階層構造をきっちり管理することで複雑なパラメトリックデザインを可能にしているので、元のリストの順番を崩さないように、わざと空のデータを残す親切設計になっています。
でも、この親切が逆に後の処理でエラーを起こす原因になってしまうので、適切なタイミングで不要なデータを削除する整理作業が必要になるわけです。
Clean Treeコンポーネントの使い方
いらないnullや空のブランチを削除して、リストをきれいに保つために活躍するのが「Clean Tree」コンポーネントです。
このコンポーネントは、入力されたデータツリー全体を自動的にチェックして、指定した条件に合う無効なデータだけを取り除いて、きれいな状態のリストとして出力してくれます。
使い方はとってもシンプルです。
整理したいデータツリーを一番上の「T(Tree)」端子につないで、削除したいデータの種類に合わせて他の入力端子に真偽値(TrueかFalse)を設定するだけ。
これだけで一瞬でリストがきれいになります。
Clean Treeコンポーネントには、削除条件を設定するための3つの重要な入力端子があります。
それぞれの役割を理解しておくことが大切です。
**・N(Nulls)端子**
データがそもそも存在しない「nullアイテム」を削除します。
**・X(Invalid)端子**
Rhino上でジオメトリとして壊れている「無効なデータ」を削除します。
**・E(Empty)端子**
中身のアイテムが1つも入っていない「空のブランチ(階層)」をまるごと削除します。
デフォルトではNとXがTrueになっていますが、空のブランチも完全に消したい場合は、「Boolean Toggle」コンポーネントを使ってE端子に明示的にTrueを入力してあげる必要があります。
これで余分な空箱がすべて取り除かれた、無駄のないデータツリーが完成します。
nullを削除しないとどうなる?
もしリストの中にnullや空のブランチを残したまま次のコンポーネントへデータを渡してしまうと、どんな問題が起きるんでしょうか?
一番よくあるトラブルは、LoftやPipe、Sweepなどの連続したデータが必要なジオメトリ生成コンポーネントが正常に動かなくなって、コンポーネント自体が赤色やオレンジ色になってエラーを出す現象です。
これらのコンポーネントは、入力されたリストの中に「形を作るための実体データ」が隙間なく連続して存在することを前提にしています。
だから、リストの途中にnullが一つでも挟まっているとそこで計算が止まってしまって、立体形状を作れなくなってしまうんです。
さらに、「List Item」や「Shift List」みたいなリスト管理コンポーネントを使うときも、nullの存在は大きな問題になります。
本来なら特定の番号のデータを正確に取り出したり、規則的にデータをずらしたりしたいのに、nullが混ざっていると全体の順番や数がズレてしまって、思い通りの形やパターンが作れなくなります。
つまり、Clean Treeを使ってこまめにリストを整理するっていう作業は、単にPanel上の見た目を良くするためだけじゃないんです。
Grasshopperのプログラム全体が予期しないエラーで止まってしまうのを防ぐための、とても重要な安全対策なんですね。
Clean Treeを使いこなす実践テクニック
実際の複雑なモデリング作業で、Clean Treeをもっと効果的に活用するためのテクニックをいくつか紹介します。
まず基本になるのが、Panelコンポーネントを使ってデータ構造をこまめに確認することです。
処理のステップが長くなってアルゴリズムが複雑になってきたら、要所要所でPanelを各コンポーネントの出力端子につないで、リスト内に「
最終段階で原因不明のエラーが起きてから遡って原因を探すよりも、無効なデータが生まれた直後にClean Treeを挟んでリストをきれいにしておく方が、後々のトラブル解決がずっと楽になります。
また、Clean Treeを他のデータ構造操作コンポーネントと組み合わせて使うことで、さらに高度で柔軟なリスト整理ができます。
例えば、Clean Treeで不要なデータを取り除いた結果、残ったデータの階層パスがバラバラになってしまった場合は、「Flatten Tree」コンポーネントを使って全体のデータを1つのフラットなリストにまとめ直す方法が有効です。
あるいは、「Simplify Tree」を使って無駄に深くなってしまったパス(階層の深さ)をすっきり整理するのも良いでしょう。
目的や状況に合わせてClean Treeとこれらのツリー操作コンポーネントを組み合わせることで、Grasshopperでのデータ管理がさらにスムーズで確実なものになります。
最初は難しく感じるかもしれませんが、慣れてくると自然に使えるようになりますよ。
ぜひ実際の作業で試してみてください!
広告
