Grasshopperでチェーン構造のバッグをつくる【その2】

前回の続きになります。三角ピースまでは出来ました。
ここから、メッシュで出来た三角ピースをBrep(閉じたソリッドポリサーフェース)に変換していきます。

まず、Mesh Explodeコンポーネントで三角ピースのメッシュを分解します。

次に、weaverbird’s Face Polylineコンポーネントを選択します。

このコンポーネントは、メッシュのエッジを閉じたポリラインに変換します。 今回の場合は、三角ピースを構成している、三角形メッシュと四角形メッシュのアウトラインになります。

↓接続するとこんな感じになります。

次に、Curve>>Analysis>>Discontinuity>>Discontinuityコンポーネントを選択します。

このコンポーネントは、線に沿ったすべての不連続点を抽出します。 今回の場合は、先ほど作成したアウトラインの各頂点を抽出します。

次に、Sets>>List>>Dispatchコンポーネントを選択します。

このコンポーネントは、リスト内のデータを振り分けます。 Lにフィルタをかけるリストを接続し、Pに数式などの条件フィルタを接続します。 すると、Aから条件に合うデータ、Bから条件に合わないデータが出力されます。 条件を作っていきます。 Sets>>List>>List Lengthコンポーネントを選択します。

次に、Maths>>Operators>>Equalityコンポーネントを選択します。

↓図のように接続します。

List Lengthコンポーネントは、リストの長さを数値で出力します。 Equalityコンポーネントは、Aで入力された数値がBの数値と等しいか判別します。 ↓図のように中身を見てみると、三角形のアウトラインの頂点と四角形のアウトラインの頂点が、Discontinuityコンポーネントから出力され、それがList Lengthコンポーネントを通して、各頂点項目の数に変わっています。(三角形、四角形が何個あるか)

ここで、EqualityコンポーネントBの部分に3を入力します。

これで、Dispatchコンポーネントに、3つの頂点を持っているか、持っていないか(4つの頂点)が条件として入力されました。 つまり、DispatchコンポーネントAから3つの頂点群(三角形)、Bから4つの頂点群(四角形)がそれぞれ出力されます。 ↓図に描くとこんな感じです。

次に、Sets>>List>>List Itemコンポーネントを選択します。

List Itemコンポーネントを4つ複製し、それぞれのi(Index)0123と入力します。 List Itemコンポーネントは、Lからデータリストを受け、iに入力した数値の番号のデータを出力します。

↓図のように接続します。

0indexから三角形、四角形の1番目の頂点、1indexから三角形、四角形の2番目の頂点、2indexから三角形、四角形の3番目の頂点、3indexから四角形の4番目の頂点を取り出すといった感じです。 Discontinuityコンポーネントから直接各indexのデータを受け取ることも出来るのですが、今回は三角形と四角形の頂点を識別したかったので図のようにしました。 次に、Surface>>Freeform>>4Point Surfaceコンポーネントを選択します。

↓図のように接続します。

4Point Surfaceコンポーネントは、3もしくは4つ点からサーフェースを作成します。 先ほどの各頂点をもとにサーフェースが出来ました。

次に、Surface>>Util>>Brep Joinコンポーネントを選択します。 このコンポーネントは、Brep(先ほどの各サーフェース)を結合します。 Brepコンポーネントで結合したBrepを格納します。

サーフェースが繋がり閉じたソリッドポリサーフェースが出来ました。 これで、ブール演算が出来るようになりました。

なんかモデルだけ見ると前回から全然進んでない!って感じですが、 無事面取りも出来るようになったので、怪我しないバッグになりました。 次回は、各三角形ピースのジョイント部分を作っていこうと思います。

こんな動きが目標です。出来るのかな。。

Leave A Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA