Grasshopperのアルゴリズムが公開されていないので、勉強がてら自力で作ってみたのがトップに添付した画像です。
作り方を下記にまとめましたので、ぜひ参考にしてみてください。
※半径が50と400の円は3種類共に使います
左の渦巻き型
Step.1 数式に沿った点群を作成する
・フィボナッチ数列に従い、点群を作成します。
・数式は上の図の通りで、X側Seriesコンポーネントの初期値3.0、増分1.5、個数1000、Y側Seriesコンポーネントの初期値30.0、増分3.7、個数1000にしています。
Step.2 同心円を作成する
・次に、同心円を2個作成します。
・半径はそれぞれ50と400にしています。
Step.3 点群を選別する
・Step.1で作成した点群を、Step.2の外側の円(半径400の方)で内側に含む点だけ選択します。(Curve SideコンポーネントとCull Patternコンポーネントを組み合わせる)
・同じ要領で、Step.2の内側の円よりも外側の点群を選択します。
Step.4 Voronoi図を作成する
・Step.3で抽出した点を入力として、Voronoiコンポーネントを使ってVoronoi図を作成します。
・Voronoi半径は100に設定。
Step.5 Voronoi図を加工する
・Step.2で作成した外側の円をOffsetさせて、Step.4で作成したVoronoi図との相関部分の抽出をRegion Intersectionコンポーネントによるブーリアン演算で実行。
(Voronoi図をA入力、円をB入力にしています。)
・同様に、今度は内側の円をOffsetさせて、Region Deferenceコンポーネントによるブーリアン演算を実行。
(Voronoi図をA入力、円をB入力にしています。)
Step.6 オフセットさせる
・Step.5のVoronoiカーブをOffsetコンポーネントでオフセット処理をします。
Step.7 完成
中央の渦巻き型
・同心円を作成します。
・RangeコンポーネントのN入力に同心円の数(今回は7)を入力して0から1の範囲を8等分する数列を作成します。
・その後ろでGraph Mapperコンポーネントを使い、8等分の割合に変化をつけます。
・最大半径を400とし、Graph Mapperコンポーネントの出力と掛け算した数値を半径とした円を作成。
・Cull Indexコンポーネントを使い、最小の円は除外しておきます。
Step.2 最大円を等分する
・Step.1で作成した同心円から、List Itemコンポーネント(インデックスは-1)で一番外側の円を選択し、Divide Curveコンポーネントで等分割します(今回は7を入力)・作成した等分割点と原点を直線で結びます。
・作成した7本の直線と、Step.1で作成した同心円をCurve Curveコンポーネントで交点を求めます。
・交点の出力をFlattenで平たん化したあと、Insert Itemsコンポーネントを使い、0番目に原点を挿入します。
・その後、Interpolateコンポーネントと使い、3次の曲線を作成します。
Step.3 Nurbsカーブを回転コピーする
・コピー数はお好みです。Seriesコンポーネントを使い、N入力に360をコピー数で割った値、C入力にコピー数をそのままつないでRotateのA入力にInputすると便利です。
(RotateコンポーネントA入力を右クリックしてDegreesをONにしておきます)
(RotateコンポーネントA入力を右クリックしてDegreesをONにしておきます)
Step.4 Nurbsカーブを細分化させる
・次に、ShutterコンポーネントのC入力にStep.3で求めたカーブをつなぎ、t入力にGraph Mapperコンポーネントの出力をつなぎます(ShutterのC入力はReparameterizeをONにしておきます)
・作成した細分カーブの両端の点をEnd Pointsコンポーネントで求め、End側を取り出します。
・Voronoi半径は200を設定。Voronoiコンポーネントの出力はGraftをONにしておきます。
Step.7 Voronoi図を加工する
・Region Intersection、Region Defereceコンポーネントを使い、Step.6で作成したVoronoi図と二つの同心円それぞれにブーリアン演算を実行して上記画像の状態にします。Step.9 完成
右の放射型
Step.1 同心円の作成
・二つの同心円(半径50,半径400)それぞれをDivide Curveコンポーネントで2分割し、片方の点を直線で結ぶ。
・次に、Rangeコンポーネントで0から1の間の等分した数値を生成(今回は9等分)し、Graph Mapperコンポーネントで変化を付けます。
・次に、作成した直線の細分化をShutterコマンドで行い(Graph Mapperコンポーネントの出力をtにつなげる)、End pointsコンポーネントにつなげてSを出力します。
※ShutterコンポーネントのC入力を右クリックしてReparameterizeをONにします。
※S出力の点のばらつき具合が上図と逆の場合は、Graph Mapperコンポーネントの出力を1から引き算した値を使う。
※ShutterコンポーネントのC入力を右クリックしてReparameterizeをONにします。
※S出力の点のばらつき具合が上図と逆の場合は、Graph Mapperコンポーネントの出力を1から引き算した値を使う。
・原点を中心とし、求めた点と原点からの距離(Distanceコンポーネント)を半径とする円をCircleコンポーネントで生成。
・Cull Patternコンポーネントを2つ用意し、Set Multiple Booleansの項目を、片方がTrue False、もう片方をFalse Trueと設定し、求めた等分点を分岐させます。
※Cull Patternコンポーネントの出力はいずれもFlattenにしておきます。
※Cull Patternコンポーネントの出力はいずれもFlattenにしておきます。
・Vector 2ptコンポーネントを使い、上記手順で求めたCull Patternコンポーネントの出力と原点との間のベクトルを求めます。
※原点をA入力、Cull Patternコンポーネント側をB入力とし、B入力にGraftを設定
※原点をA入力、Cull Patternコンポーネント側をB入力とし、B入力にGraftを設定
・二つのCull Patternコンポーネントの出力をMoveコンポーネントにつないで移動させます。
・移動させる方向は、上記手順で求めたベクトル、及びNumber Sliderによる任意の数字をAmplitudeコンポーネントで設定します。
Step.4 Voronoi図を作成する
・Step.3で求めた点を中心にVoronoiコンポーネントを使いVoronoi図を作成。※Voronoi半径は280に設定。Voronoiコンポーネントの出力はGraftにしておきます。
Step.5 Voronoi図を加工する
・Region Intersection、Region Defereceコンポーネントを使い、Step.4で作成したVoronoi図と二つの同心円それぞれにブーリアン演算を実行して上記画像の状態にします。Step.7 完成
以上、作り方を簡単に紹介しました。
数値入力の部分をNumber Sliderにして調整すると、いろんなバリエーションが生まれますので、色々試してみるとおもしろいです。
数値入力の部分をNumber Sliderにして調整すると、いろんなバリエーションが生まれますので、色々試してみるとおもしろいです。
0 件のコメント:
コメントを投稿