蛇腹状の段差を3D化してみました。上から下に向かって、深さを徐々に大きくなるように変化させています。左右で曲面になじませる個所が難しいですね。Grasshopperでは連続性を隣合うサーフェス間に持たせることができないため、もしそこが気になる場合はRhino上でNetwork Surfaceコマンドを使って地道にサーフェスを貼るしかないかも?
というわけで、簡単な作り方を紹介していきます。
Step.1 適当なサーフェスの準備
いつものように、適当なサーフェスを用意します。
Step.2 横方向の直線を作成する
・Step.1で作成したサーフェスを面直に近い平行投影ビュー(今回のケースではXZ平面ビュー)にしてから、上下方向の直線を複数、作成します。・右の縦線と、それを原点に対してミラー反転した左側の縦線で交点を求め、Shutterコンポーネントを使って細分化してから真ん中の部分のみ取り出します。
・リスト内部の階層の考え方が少し複雑ですので、うまくいかない場合は黄色のPanelを使ってリスト内部の状態を確認してみてください。
・Shift ListとCull indexの両コンポーネントを使って2本ずつ階層ごとに選別し、端点同士をつないだ直線も含めJoin Curveコンポーネントにつなぎます。
・同時に、次の工程に備えて外の枠線も同時に作ります(緑色のカーブ)。
Step.5 蛇腹の境目となる曲線を作成する
・Step.4で作成した外枠(緑色のカーブ)を、スケールダウンさせます。この枠線が、蛇腹と曲面になじませる部分の境目となります。Step.6 閉曲線を分離する
・Step.4で作成した閉曲線(青色)を分割していきます。・一つの閉曲線につき、右側と左側が各1本、上側と下側が各3本の、合計8本となります。
・右、左、上、下のカーブをそれぞれ別個に取り出す必要があるので上のように4か所の出口を設けています。
・複数のサーフェスを接合したBrepに投影すると、投影前の直線と向きがバラバラになる可能性がありますので、上と下のカーブのみ、向きをそろえるためにFlip Curveコンポーネントを挟んでいます。これは環境によるのでお好みで。
Step.8 面直ベクトルを求める
・Step.7で投影した分割線のうち、下側かつ真ん中の直線を使い、その両端点における自由曲面の面直ベクトルを求めます。・求めた面直ベクトルのうち、X方向成分は0にするためDeconstruct VectorとVectorXYZの両コンポーネントを使って組み合わせ、その後ろにRotateコンポーネントをつないで蛇腹の底の方向をお好みで調整します。
・同時に、線の個数をList Lengthコンポーネントを使って取り出し、蛇腹の深さの数値をRemapコンポーネントを使って計算します。
Step.9 蛇腹部分の3Dサーフェス化
・これまでの段取りで求めた直線とベクトルを使い、蛇腹の面化を行います。基本的にはLoftとSweep1の二つを使います。・環境によって、カーブの向きとか順番が異なると思いますので、上のような形状になるよう調整してみてください。
0 件のコメント:
コメントを投稿