2023年1月21日土曜日

【Grasshopper_74】論理演算子「AND、OR、NOT」をモデリングに応用してみましょう

今回のテーマはタイトルにある通り、論理演算子を使ったモデリングの一例を紹介します。

論理演算は高校の理系に進んだ人ならば授業で習う分野であり、特に回路設計やプログラミングなど、エンジニアにとっては必須の知識となりますが、デザイン業界で働く方は文系出身者が大半を占めるため、論理演算という言葉を聞いても頭に?マークが浮かぶ方が多いんじゃないかなと思います。

論理演算を知らなくてもモデリング自体に困ることはありませんが、知っておくと案外、役に立つ場面があると思います。本格的な話になると理解するのに困難を極めますが、モデリングで使う範囲に限れば初歩の知識があれば十分ですので、ここでは簡単な仕組みの解説と使い方を紹介します。

Grasshopperに実装されている論理演算子

Grasshopperでは、Mathのタブの中にあるOperatorsの項目のうち、下の8つが論理演算子に該当します。

Grasshopperにおける論理演算の仕組み

・今回は、各種論理演算子のうち、上から順にAnd、Or、Notの3種類を取り上げます。

・Andは、AとBにそれぞれTrueもしくはFalseのどちらかをつなぎ、両方ともにTrueならTrue、片方がTrueでもう一方がFalseならFalse、両方ともにFalseならFalseを返します。

・Orは、AとBにそれぞれTrueもしくはFalseのどちらかをつなぎ、両方ともにTrueならTrue、片方がTrueでもう一方がFalseならTrue、両方ともにFalseならFalseを返します。

・Notは、TrueもしくはFalseを反転したものを返します。

知っておくべき知識は上記のみとなります。

論理演算を使った簡単なモデリング事例


トップ画像の形状の作り方を紹介します。

Step.1 データを準備する

・まず初めに、適当な3Dサーフェスを用意します。

Step.2 三角形を配置する

・作成したサーフェスをGrasshopperに取り込み、isoTrimコンポーネントにつないでパターンを配置する範囲を決め、LunchBoxプラグインの中にあるTriangle Panels Bコンポーネントを使って三角形を配置します。

・同時に、isoTrimコンポーネントで縮小させたサーフェスのエッジも取り出しておきます。

Step.3 論理演算子を使って、三角形サーフェスを貫通部と非貫通部に分ける

・ここで早速一つ目の論理演算子を使って、上の図の緑色の部分(貫通部)と赤色の部分(非貫通部)に分類してみます。

・Topビューで見るとわかりやすいです。

・三角形サーフェスをExplodeコンポーネントにつないで4つの節点(3つ+ぐるっと1周回って元の位置を含めた計4つ)を出します。これら4つの点と、外周の曲線との接触判定をCollision One||Manyコンポーネントにつないで行い、TrueとFalseの判定値を出します。

・貫通部分となる緑色の三角形は接触が一つもありませんので4つすべてFalseとなり、それ以外の赤色の部分はかならず一つ以上、Trueが含まれることになります。論理演算子Gate Orにつなぐと、どれか一つでもTrueが存在する→Trueとなり、赤色の三角形が選択できます。Cull PatternコンポーネントのP入力をInvert設定にすることにより結果が反転し、緑色の非貫通部を選択できます。

Step.4 論理演算子を使って、非貫通部をさらに二つに分ける

・さきほど分離させた赤色の非貫通部分をさらに上の図のように二つにわけます。

・使用する論理演算子はさきほどと同じですが、今回は、三角形をBrep Edgeコンポーネントにつないで3辺を取り出し、その中点と外周カーブとの接触判定を求めます。

・緑色のサーフェスは辺の中点がすべて接触しませんので、さきほどと同じ要領で分離できます。

Step.5 論理演算子を使って、非貫通部の内側の曲線を求める

・後の工程で大きさを計算する際に使用するので、上の図の緑色の部分の曲線を、論理演算子を使って求めます。

・三角形サーフェスをExplodeコンポーネントにつないで3辺に分離したのち、End Pointsコンポーネントにつないで両端点を求めてから外周カーブとの接触判定を行います。今回の論理演算子は、Gate NotコンポーネントにつないでTrue/False判定を反転させてからGate Andコンポーネントにつないで内側の曲線のみ選択します。

Step.6 貫通部分の3D化

・ここから先は3D化の工程となります。まずは貫通部分から。

・Step.5で求めた曲線、及び貫通部分の三角形サーフェスの中心点を使ってCurve Valuesコンポーネントにつなぎ、桟の幅を徐変させる数値を求めます。

・三角形のエッジを結合させてからオフセット処理を行い、後はZ方向移動やサーフェス化を上の図のように繋げたらこの部分は完成です。

Step.7 非貫通部分の3D化_1

・続いて非貫通部のうち緑色の部分です。ここは中心点をZ方向に移動させ、Extrude Pointコンポーネントにつないでサーフェス化します。

Step.8 非貫通部分の3D化_2

・最後に最も外側の非貫通部分です。今回、作成した三角形サーフェスはすべて直線で結んだバキバキした形となっているため、元の3D面になじませる場合、接触する辺を投影した曲線に置き換え、再度、サーフェス化する必要があります。

・そこで、ここでも三角形サーフェスをExplodeコンポーネントを使って3辺に分離し、その中点を外周カーブと接触判定させて外側の辺のみ取り出します。ここでは同時にSeriesコンポーネントにつないでインデックス番号(0、1、2)も作り、同様にCull Patternコンポーネントにつないで分離させます。

・外側の辺を3D面に投影させてからReplace Itemsコンポーネントにつないでインデックス番号と合致する辺のみ差し替え、Edge Surfaceコンポーネントにつないでサーフェス化します。

Step.9 残りの部分

・残りの部分もSurf Splitコンポーネントにつないで切断→選択します。

Step.10 完成

・作成したサーフェスを一つにまとめ、Brep Joinコンポーネントにつなぎます。Panelにつないで中を確認し、Open Brepが一つだけの状態であれば、すべて結合したポリサーフェスになっていることがわかります。

0 件のコメント:

コメントを投稿

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

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