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

前回の続きになります。三角ピースまでは出来ました。

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 を格納します。

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

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

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

Blog一覧へ戻る