フィボナッチ数列を使った球体を、試行錯誤しながら形を作ってみました。
厳密にフィボナッチ数列に従ったものではありませんが、それに近い感じが出せているかなと思います。
作り方は結構、複雑なのでのちほど、解説していきたいと思います。
球体の直径は500φです。
このコンポーネントのA入力のExpression欄にマイナス値を入れることで、逆方向のカーブも含めた、2つのカーブを作成しています。
※判別しやすいように、A_crv、B_crvとしています。
・P入力は原点、R入力は直径の半分の250(Expression欄でx*0.5)、A入力は0Pi~2Pi間をrangeコンポーネントで100分割した数値を入れます。
※判別しやすいように、A_crv、B_crvとしています。
・P入力は原点、R入力は直径の半分の250(Expression欄でx*0.5)、A入力は0Pi~2Pi間をrangeコンポーネントで100分割した数値を入れます。
・A入力については、点の上昇する割合が一定ではなく、徐々に変化させるため、Graph Mapperを使って調整しています。
・高さについては、点が増加するたびに10増えるようにSeriesコンポーネントを使って数列を作って、E入力につないでいます。
・コピーの数はスライダーでお好みで。今回は360°を14等分した数値をA入力につないでいます。
・bounding boxを使い高さを取得し、その高さのところに平面を作り、ミラー反転の基準面としています。
R入力は直径の半分の250(Expression欄でx*0.5)、高さLはStep.3で作成した、反転込みの総高さと同じにします。
・Step3で生成したカーブをPull Curveコンポーネントで円筒に張り付けます。
・半円押し出しサーフェスをStep.4で作成した2種類のカーブでSurf Splitを使い分割します。
・分割したサーフェスは、四角形と三角形の2種類ができますが、後の工程のことを考え、これらを分類します。
・Brep Edgeコンポーネントで各サーフェスのエッジを取得し、List Length、Equal、Dispatchコンポーネントを組み合わせ、リストの長さが3かそれ以外かでサーフェスを分別します。
Step7.四角形のクローズカーブを作成する
・微小な三角形の仕分けは、この部分の面積が三角形の中で最も小さいことを利用しますので、Areaコンポーネントを使ってすべての三角形サーフェスの面積を計算し、小さい順にソートし、最も小さい面積と同じかそうではないかを判別し、Dispatchコンポーネントで仕分けします。
・必要なのは側面部のサーフェスなので、DispatchのB出力から取り出します。
・XY平面上に三角形の中心点を投影し、片側を枠で囲んで分類することで、LH側とRH側に分けることができます。
・三角形の順番がずれると形がおかしくなるため、三角形の中心点を求め、Z方向の座標の順番にソートします。
・三角形のサーフェスをBrep Edgeで抽出します。当然、3本のエッジが取り出せますが、そのうちLine-like curveは必要がないので、Lineという名称がついているかどうかをMacth Textで判別し、Cull patternで所定のカーブを取り出し、結合して閉曲線にします。
・Step.7で作ったひし形の閉曲線と、Step.10で作ったひし形の閉曲線を、それぞれ別個に、球体にマッピングします。
・確実にカットできるように、四角錐を、各サーフェス中心点と原点の間のベクトルを外側に若干量、移動させつつ、スケールダウンさせます。
Step14.最後の仕上げ
・Step.13で作った四角錐と、球体及び少し小さめの球体との交線を求め、Loftで側面を作ります。(GrasshopperのLoftは、上の図のように時たま不具合を起こしますので、その部分は手作業で修正します)・表面は、球体を交線で分割し、桟の部分を残します。
・裏面は作っていませんが、とりあえず完成です。
ざっと簡単に手順をまとめてみました。難易度的には難しい部類に入りますので、試行錯誤しながら作って見てください。わからないところがあれば遠慮なく質問をどうぞ!
ざっと簡単に手順をまとめてみました。難易度的には難しい部類に入りますので、試行錯誤しながら作って見てください。わからないところがあれば遠慮なく質問をどうぞ!
突然のコメント失礼します。きのこと申します。
返信削除最近このサイトを見つけ、興味深く拝見しております。
質問を受け付けているということで、お言葉に甘えさせていただきます。
このフィボナッチ数列的球体を再現しようとしておりますが、
Step1、Step3でつまづいております。
○Step1について
・Graph mapperの手前の、RangeコンポーネントのStepに設定されているExpression内の数式がわかりません。
・”このコンポーネントのA入力のExpression欄にマイナス値を入れること”とあったので、-Xを入力しましたが、これは正しいでしょうか?
○Step3について
・Mirror、Mergeコンポーネント手前のCurveA,Bの名前が入ったコンポーネントは何でしょうか?最初はPanelかと思いましたが、GraftとSimplifyがついているので違いますよね。
以上、教えていただけると幸いです。
よろしくお願いいたします。
コメントありがとうございます。ご質問の件です。
返信削除・Graph Mapper手前のExpression欄の入力は、点の数を微調整するためですので、入力値から1を引き算するということで、x-1を入力しています。
補足ですが、右の方にあるPoint Cylindricalコンポーネント(下側)のA入力のExpression欄は、角度をマイナスにするために、x*-1を入力しています。
ちなみに、試してみたところ、-xという表記ではエラーになるようです。
・Mirrorコンポーネント手前にあるものは、Grasshopper画面のParamsタブ左側に固まって配置されている黒いアイコン群から持ってきた物です。中継端子と呼ぶとわかりやすいかと思いますが、流れているデータがどのようなものか、判別しやすいよう名前をつけるために意図的にかましているもので、特に何か処理をするためのものではないです。これにはGraftとかFlatten等は設定可能です。
以上、ご参考になれば幸いです。
Akemiさま
返信削除コメントへの返答ありがとうございます。
Step1については、いただいた数式で解決しました。
Step3については、意味的にGeometryかなと思い、コンポーネントの名前を入力して、右にあるペンキの入ったバケツマークを押したら参考画像通りになりました。
進めるほどに、壮大なコンポーネント構成であることが実感できてきました。
少しずつ進めていきたいと思います。
また質問させていただきます。
ありがとうございました。