2023年12月1日金曜日

【Grasshopper_91】Origami foldingの応用編


今年最後の投稿になりますが、前回作成したOrigami Foldingの応用編ということで、Grasshopperならではの使い方を模索しながら、もう少し複雑な形状を2種類、作ってみました。


・まずはこちらのタイプから。

・XY平面上に適当な大きさの四角形を作ります。

・作った四角形のUVのうち、縦方向(今回のケースではV方向)の成分をGraph Mapperコンポーネントを使って変化をつけてからControl Point Loftコンポーネントにつないでサーフェスを作成しなおします。上から下に向かって間隔が狭くなるようにしていますが、ここはお好みで調整します。

・張りなおした四角形のサーフェス上に、Quad Panelsコンポーネントを使って四角形を配置します。

・その後、後の工程を考えて、上の図のように、縦の列ごとにパスが分かれた状態、なおかつY軸方向に順番に並ぶよう階層構造を改造します。四角形の中心点の座標からX座標値もしくはY座標値を取り出し、ソートする方法の繰り返しですね。

・四角形の形を上の図のような形に改良します。エッジを抽出し、作図してからBoundary Surfacesコンポーネントを使って再びサーフェス化しています。

・次に、今回の形状の折れ線は上の図の緑色の直線、持ち上げる点を含んだ線分は赤色の直線となりますので作図で求めます。同時に、すべての線分を使ってサーフェスを分割します。

・次に、Kangaroo2の設定を上の図のように組みます。前回の記事の一番最後のケースと似たような感じです。

・Kangaroo2のSolverから取り出したら上の図のようになります。

・2つ目は、中心に向かって徐々に凹凸量が大きくなるケースです。実際のプロダクトモデリングを想定し、Nurbsサーフェスと合体させてみました。

・初めに、Rhino上で3Dデータを用意します。パターンを配置する部分は1枚のサーフェスとして分離しておきます。

・Grasshopper画面に移り、原点を基点に適当な正方形を作成します。

・Diamond Panelsコンポーネントにつないで六角形を配置してから、中心線を作図し、六角形を上下に分割して三角形にします。

・作った三角形のうち、上下の出っ張った個所は取り除きます。三角形の全中心点を求め、元の四角形の枠を縦方向に若干量、スケールダウンさせた四角形の内側か外側かを判別させ、Cull Patternコンポーネントにつないで上の図の緑色のサーフェス部分を取り出しています。

・次に、上の図のように、横の行ごとに三角形がパスで分かれ、なおかつX軸方向に並ぶように階層構造をいじります。

・次に、三角形サーフェスのエッジを抽出後に組み合わせを工夫し、上の図の緑色のようなポリラインカーブを作ります。カーブのみ表示した状態が下の図です。右矢印のような閉曲線になります。


・作成したポリラインカーブ(緑色)に対し、折れ線(赤色)と折れ点を含む線分(青色)を求めます。同時に、ポリカーブを分割するための線分を取り出します。

・冒頭にRhino上で作成した、実際にパターンを配置するサーフェス面のGrasshopperへの取り込みと、折れ角度の徐変量の計算をしておきます。

・折れ角度の計算は、折れ線の端点と、Convex hullコンポーネントにつないで求めた、上の図の緑色の外周線との位置関係を使い、Nudibranchプラグインに含まれているCurveValuesコンポーネントにつないで計算します。

・2D平面上のポリカーブ、折れ線、折れ点を含む線分を3Dサーフェス上にマッピングします。その後、サーフェスを分割して三角形サーフェスにします。

・Kangaroo2の設定部分。一つ目のサンプルの場合と同じ考え方です。

・Kangaroo2のSolverコンポーネントからポリゴンメッシュとカーブを取り出します。

・ポリゴンメッシュをSubD from MeshコンポーネントにつないでSubD形状に変換し、その後ろにBrep中継端子につないでBrepに変換します。SubD from Meshコンポーネントの入力設定はCr:At Mesh Edges、Co:At Mesh Corners、I:Falseです。

・Nurbsサーフェスとの合体作業ですが、Kangaroo2ではポリゴンメッシュで凹凸形状を作作るため、フェースのエッジが直線となっている関係で湾曲したNurbsサーフェスとエッジを一致させることができません。そこで、Nurbsサーフェスと接するエッジを抽出し、Nurbsサーフェスに投影したカーブと置き換え、4辺のエッジを使って再びサーフェスにすることでぴったり一致させることができます。考え方は以下のような手順です。

①SubD経由でBrepに変換したデータをDeconstruct Brepにつなぎ、フェースを取り出す
(4辺サーフェスにバラバラに分解する)。

②Brep Join及びJoin Curvsコンポーネントを使って凹凸パターンの外周エッジ閉曲線を求め、さきほどのバラバラにしたフェースのエッジとともにXY平面に投影し、Collision One|Manyコンポーネントにつないで接触判定を行ったのち、元の3D面上のエッジを選別する。

③選別したエッジを元の3Dサーフェスに投影し、Replace Itemsコンポーネントにつなぎ、選別元のカーブと置き換える。

・最後に、すべてのエッジをEdge Surfaceコンポーネントにつないで再サーフェス化し、元の3Dサーフェスと分割&結合したら完成です。

ちなみに、今回はXY平面に近い方向のサーフェス上に配置しましたが、XY平面に対し立った状態のサーフェスに配置する場合、Kangaroo2の荷重をかける方向など工夫が必要になります。あるいは、XY平面上で折ったサーフェスをモーフィング機能を使って3Dサーフェス上に配置する方法などもありますので、必要に応じて改良してみてください。

0 件のコメント:

コメントを投稿

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

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