床のフローリング材は、平面にテクスチャ画像を張り付ける方法がお手軽ですが、せっかくなのでパラメトリックな感じの板材を作ってみました。実際のデータはこんな感じ↓
Step.1 Rhino上で曲線を作り、Grasshopperに取り込む
・RhinoでX軸対称となる2本のカーブをXY平面上に作成する。
・取り込んだ曲線にそれぞれ名前をつけておきます。
Step.2 X方向の移動量を求める
・取り込んだカーブをBounding boxを使って横方向の移動量を求める。
・bounding boxのX方向の幅が1個あたりの移動量になるので、Seriesコンポーネントを使って個数分の数列を作り、Unit Xベクトルにつないでベクトル形式にする。
・移動する個数はNumber Sliderで調整できるようにする。
Step.3 深さの数値を求める
・続いて、凹み部分の、実際の深さの数値を求めていきます。具体的には、上の図のように2本の曲線間に点を配置し、その点の個所の深さを求めていきます。
・まずは、縦列の点の数(今回は10分割です)をRange Conponentにつないて0から1の範囲を10等分する数列を作り、Graph Mapperコンポーネントを使って山型になるよう、数字を調整します。
・上下のカーブ上の点の深さは必ず0となるよう、Replace Itemsコンポーネントを使い、点群の、冒頭と最後尾の数を0に置き換えます。
※i入力のExpression欄はx-1を入力。
・続いて、上下のカーブ上の分割点をDivide Curveコンポーネントを使って求めます。こちらも今回はデフォルトの数値である10としています。
・求めた分割点同志を直線でつなぎ、その直線をDivide Conponentを使って分割点を求めます。
・直線の長さによって、深さに変化をつけるようにします。Lengthコンポーネントとbounds、Remapコンポーネントを上の図のように組み合わせ、中央部分の最大深さを1.5mm、左右端部の深さを3.0mmとし、本手順の最初に求めた、Replace Itemsコンポーネントの出力に掛け合わせると、実際の深さの数値が求まります。
※Remapコンポーネントの出口はGraftにしておきます。
Step.4 右端列の点を削除
・点群をX方向にコピーしていく時、ダブリが出るため、右端の点列(上の図の赤色の部分)を削除します。
・点列は階層別に分かれているので、Tree Staticコンポーネントを使ってパスの情報を調べ、最後尾のパスをSplit Treeコンポーネントにつないで右端の点列を分離します。
・このとき、深さの数値も数合わせのため削除しておきます。
Step.5 点群と曲線のX方向移動
・これまでの手順で作った曲線と点群をX方向に移動コピーします。
・曲線はJoin Curveコンポーネントを使って、1本につなげます。
Step.6 Y方向移動
・続いて、Y方向に移動コピーしていきます。
・考え方はX方向移動と同じです。
・上の図の右下のノードですが、深さを、Y方向に移動するに従い徐々に深さを浅くするための数値を求めています。このからくりは、実際にパネルをつないで数値を見るとわかりやすいかなと思います。
Step.7 Z方向深さの数値をコピーする
・深さの数値については、X方向にコピーする分の数だけ複製する必要があります。そこで、Repeat Dataコンポーネントを使ってコピーします。このとき、1個分の深さ数値をFlattenで平坦化したあと、Repeat DataコンポーネントにはGraftでつなぎ、その後ろでFlip Matrixを使って行列反転します。このあたりの仕組みは、直接、中身をパネルで見るとわかりやすいと思います。
Step.8 もう一組のカーブを移動コピーする
・上の図の緑色で示したカーブを、同じくRhinoで作ってGrasshopperに取り込みます。
・移動コピーやその他作業部分は今までの手順と全く同じなので、コピペしてつなぎます。下の図のようになります。
Step.8 投影
・これまでに作ったカーブと点群を、適当に作ったサーフェス上に投影します。
※XY平面上に作る場合は、本手順はスルーしてください。
Step.9 点群を面直に移動させて、曲線を作成する
・点群をサーフェスの面直方向に移動させます。Surface Closest Pointコンポーネントを使って、各点ごとにサーフェス上のUV値を取り出した後、Evaluate Surfaceコンポーネントを使ってその場所の法線を求めます。その後、Amplitudeコンポーネントにつないで、各点ごとの深さをベクトル長さとして設定します。
・点群の階層は平坦化されているので、Partition Listで階層を区分けした後、Nurbs Curveコンポーネントにつなぐと、上の図の左のように縦曲線が描かれます。
・その後の処理を考慮し、末尾にPath Mapperコンポーネントをつないで階層を1段階浅くします。
Step.10 つなぎの部分の面化
・これまでに作成した曲線を組み合わせて、凹み以外の部分のサーフェスをLoftコンポーネントを使って張ります。
Step.11 完成
・Step.9で求めた曲線をNetwork Surfaceコンポーネントを使って面化し、Step.10のサーフェスをまとめると完成です。
0 件のコメント:
コメントを投稿