2021年6月5日土曜日

【Grasshopper_43】縦横に配置したパターンを徐々に間引く方法_改良版


久しぶりの更新です。

過去に作った、徐々に間引くパターンの改良をしてみました。

乱数を使って間引くやり方は自然な感じにならず、どこか虫食いのような感じになってしまいがちなので、そのあたりが解消されたかなとは思います。

Step.1 六角形のパターンを作る

・まずはXY平面状に六角形を配置します。

・Lunch Boxプラグインの中にあるHexagon Cellsを使い、そのあとで辺が6本で構成されるパターンのみ取り出し、0.5mm内側にオフセットさせます。

Step.2 六角形パターンの階層分け

・Step.1で作った六角形をまずはFlattenで階層をすべて0にした後、縦列ごとに分けます。

・Partition Listコンポーネントを使って縦方向の数から1を引いた数で階層を分けます。

・List Itemコンポーネントにつなぐと、1番下の横行がハイライトされていればOKです。

Step.3 六角形の大きさを変化させない/させる個所を分ける

・六角形の大きさをそのままにする個所と徐々に小さくする個所を分けます。

・Step.2で階層を縦列ごとに分けたので、Tree Staticsコンポーネントを使って階層番号を取り出し、Split Listコンポーネントを使ってスライダーで2つに分離し、それぞれの階層をSplit Treeコンポーネントを使って取り出します。

・上の図の、緑色で示す部分が大きさがそのままの個所、赤色が大きさを徐々に小さくする部分です。

Step.4 徐変六角形を作る

・六角形の大きさを徐々に小さくしていきます。

・Step.3で分離した六角形を使い、まずはBounding Boxの1辺(上の図の左端の直線)を取り出します。

・六角形の中心点と、先ほどの左端の直線までの最短距離を求めます。

・最短距離をいったん0から1の範囲に変換し、その後にGraph Mapperを使って少し変化をつけ、そのあとで再びRemapコンポーネントを使って実際のスケール値に変換します。

・最終的な大きさはScaleコンポーネントを使って決めています。

Step.5 間引く六角形を選別する

・Step.4で求めた徐変六角形に対し、間引く部分と間引かない部分に分けます。

・上の図の緑色が間引かない部分、赤色が間引く部分です。

Step.6 間引かない六角形のインデックスを求める

・次に、Step.7で分けた間引く部分の六角形について、残す六角形のインデックスを求めていきます。

・上の図の赤色の六角形は、縦列ごとに階層が分かれています。間引く処理を考えたとき、一番右端の縦列の残す数を最も少なく、一番左端の縦列の残す数を最も多くすればいいということになります。

・そこで、一番右端の数を3個、左端の数を133個として範囲を作り、その間の数をRangeコンポーネントを使って乱数の数を求めます。

・乱数を求めるのはRandomコンポーネントですが、そのシード値を求めるのもRandomコンポーネントを使います。(0から100までの間の数値からシード値を求めます)

Step.7 完成

・Step.6で求めた、間引く六角形の番号を使ってList Itemコンポーネントを使って取り出し、すべての六角形をまとめると完成です。

・間引き具合を変更するには、Step.6で設定した、Construct DomainコンポーネントのA入力の数値(スライダーで133を指定している個所)を調整すると変化します。

0 件のコメント:

コメントを投稿

【Grasshopper_98】SporphとSurface Morphingの特徴、違いなどについて

今年もまたGWに突入しましたね。コロナ明けに円安、インバウンド特需のおかげで東京から郊外に出かけると例年以上に混雑に巻き込まれそうなので、昨年と同様、連休中は家に籠ってブログを更新します。今回のテーマは、Surface MorphingとSporphの違いについてまとめてみました。