2022年7月31日日曜日

【Grasshopper_67】サイン関数を使って立体形状を作ってみた


先日、家の近所に止まっていたT社製ミニバンのフロントグリルまわりを見たところ、左右の両端付近に特徴のある形状が目につきました。パラメトリック的な考え方でどうやったら作れるかなと色々考えたうえで、トップ画像のような形を作ってみました。

基本的な考え方としては、XY平面上にSineカーブを作り、3Dサーフェスにマッピング機能を使って面上線を作成し、最後に3D化するといった流れになるかなと思います。


Step.1 XY平面上に点群を作る

・まずはXY平面上に点群を作るところから始めます。

・X座標は0Pi~30Piの間を30分割、Y座標はSin関数に応じた数値を使い、Construct Pointコンポーネントを使って点を求めます。

・振幅は7個用意し、Graft設定でSin関数の答えにかけ合わせています。

Step.2 ミラーコピーする

・Step.1で求めた点群を、Y軸対称でミラーコピーします。

・ミラーコピーする前に、Y軸上方向に1mm移動させています。数値はスライダーで調整できるようにしておくと、後で変更が可能です。

Step.3 マッピング範囲の作成

・実際に形状を作りこむ範囲を想定し、XY平面上に枠を作ります。

・iSoTrimコンポーネントを使って、横行の数にしたがって分割します。

Step.4 点群のマッピング

・Step.2で求めた点群を、Step.3で作成したサーフェスにマッピングをします。

・ここではひとまず、一番下の段のみにマッピングを行っています。

・マッピングで向きがおかしい場合はサーフェスのUV方向を調整するコンポーネントを挟むといいですね。ここでは、IntraLatticeプラグインに含まれている、AdjustUVコンポーネントを使っています。

Step.5 点群の移動コピー

・残りの段にも点群を配置します。ここでは、Orientコンポーネントを使い、コピー元の点からコピー先の点を指定する方法をとっています。

・階層が深くなるにつれて、階層のコントロールが面倒になるため、Groupコンポーネントというものを使っています。データをひとまとめにしてくれる機能です。

・Group化した状態だと、そのままデータを加工することができませんので、Explode Treeコンポーネントを使って階層別に分解したあと、Ungroupコンポーネントにつないで元の点群のデータを取り出します。

Step.6 点群の位置調整

・点群の位置を微調整します。1から7までの点群のうち移動させるのは真ん中の4以外になります。ここの工程はお好みですね。動かすのは上下方向のみです。

・中央から上にある点はより上に、下にある点はより下に移動させて、メリハリをつけるような感じにしてます。隣同士の干渉具合もここで決まります。

Step.7 3Dサーフェスの作成

・ここまで来たので、3D化するための基準となるサーフェスを用意します。

Step.8 3Dサーフェスへのマッピング&曲線化

・点をStep.7で作成したサーフェスにマッピングさせ、曲線を作って行きます。

・基本的な流れとしては、Step.5で求めたXY平面上の点群(上下合わせて合計14データ分)を3Dサーフェス上の同じUV座標値に点を求め、面直方向に移動させ、Nurbsカーブを作成するという感じです。

・面直方向を求めるのがど真ん中の4番目の点群を使っています。残りの1と2と3、5と6と7のうち、1と7は3Dサーフェスに接する部分なので移動はさせず、Pull Curveコンポーネントを使ってサーフェスに張り付ける処理をおこなっています。

・2と3、5と6をそれぞれ2種類の数値で移動させています。

・後のサーフェス化の際にきれいな面になるよう、いずれもRebuildカーブコンポーンネントにつなぐといいかもしれません。

・下側の点群も同様にマッピング、面直移動、曲線化を行います。

Step.9 縦方向の曲線作成&サーフェス化

・Step.8で求めたNurbsカーブ上に点群を300個求め、それぞれ縦方向に結んで曲線化します。後はそれらの曲線をLoftコンポーネントを使ってサーフェス化したら完成です。


0 件のコメント:

コメントを投稿

【Grasshopper_105】三角形の中に円を敷き詰める方法

今年もいよいよ残すところあと1カ月を切りました。今年最後の投稿となりますが、三角形の枠の中に円を敷き詰めるサンプルの作り方を書いてみたいと思います。三角形が正三角形に近いほどドットの間隔が一定になります。面積がバラバラだと密度の濃淡が出てしまうので調整が難しいかもしれません。