今回のテーマはタイトルにある通り、論理演算子を使ったモデリングの一例を紹介します。
論理演算は高校の理系に進んだ人ならば授業で習う分野であり、特に回路設計やプログラミングなど、エンジニアにとっては必須の知識となりますが、デザイン業界で働く方は文系出身者が大半を占めるため、論理演算という言葉を聞いても頭に?マークが浮かぶ方が多いんじゃないかなと思います。
論理演算を知らなくてもモデリング自体に困ることはありませんが、知っておくと案外、役に立つ場面があると思います。本格的な話になると理解するのに困難を極めますが、モデリングで使う範囲に限れば初歩の知識があれば十分ですので、ここでは簡単な仕組みの解説と使い方を紹介します。
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 データを準備する
Step.2 三角形を配置する
・同時に、isoTrimコンポーネントで縮小させたサーフェスのエッジも取り出しておきます。
Step.3 論理演算子を使って、三角形サーフェスを貫通部と非貫通部に分ける
・三角形サーフェスをExplodeコンポーネントにつないで4つの節点(3つ+ぐるっと1周回って元の位置を含めた計4つ)を出します。これら4つの点と、外周の曲線との接触判定をCollision One||Manyコンポーネントにつないで行い、TrueとFalseの判定値を出します。
・さきほど分離させた赤色の非貫通部分をさらに上の図のように二つにわけます。
・貫通部分となる緑色の三角形は接触が一つもありませんので4つすべてFalseとなり、それ以外の赤色の部分はかならず一つ以上、Trueが含まれることになります。論理演算子Gate Orにつなぐと、どれか一つでもTrueが存在する→Trueとなり、赤色の三角形が選択できます。Cull PatternコンポーネントのP入力をInvert設定にすることにより結果が反転し、緑色の非貫通部を選択できます。
Step.4 論理演算子を使って、非貫通部をさらに二つに分ける
・緑色のサーフェスは辺の中点がすべて接触しませんので、さきほどと同じ要領で分離できます。
・三角形サーフェスをExplodeコンポーネントにつないで3辺に分離したのち、End Pointsコンポーネントにつないで両端点を求めてから外周カーブとの接触判定を行います。今回の論理演算子は、Gate NotコンポーネントにつないでTrue/False判定を反転させてからGate Andコンポーネントにつないで内側の曲線のみ選択します。
Step.6 貫通部分の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コンポーネントにつないでサーフェス化します。
0 件のコメント:
コメントを投稿