2019年4月29日月曜日

【Grasshopper_21】展開機能(Squishコマンド)を使った3Dパターンの作成方法


3Dサーフェス上にパターンを作成する際、通常考えられるやり方は2通りあります。一つは2D平面上に作ったパターンの投影、もう一つは3Dサーフェス上に直接作る方法です。投影する場合のデメリットとしては、投影先のサーフェスの形が湾曲してたりすると投影カーブが歪み、綺麗な形が崩れる現象が起きる場合があります。また、直接3D上にパターンを作る場合、その大きさをコントロールするのが2Dの場合と比べて難しいという問題があります。

そんなときに、第三の方法として、Rhinocerosの展開機能と組み合わせたやり方が効果的だったりしますので、そのやり方を紹介します。

冒頭の画像のように、3D曲面に長方形を大量に配置させ、大きさを徐変させるパターンを作っていきます。
作業内容をざっくり書くと、

1.3Dサーフェスを2D展開する(ライノのSquishコマンドを使う)

2.展開したサーフェス上にGrasshopperを使ってパターンを作る

3.作ったパターンを、3Dサーフェスに戻す(ライノのSquishbackコマンドを使う、もしくはMap to Surfaceコンポーネントを使う)

となります。

まずは、3Dサーフェスの2D展開データを作成していきます。

しばらくはGrasshopperを離れ、Rhinocerosでの操作が続きます。


Step.1 3Dサーフェスの準備

・上の図のようなサーフェスを用意します。
 ※基本的にどのようなサーフェスでも適用可能ですので、適当な形状でokです。

Step.2 3Dサーフェスのアントリム(必要に応じて)

・展開機能を使う場合の条件として、トリムされていない1枚のサーフェスを用意する必要があります。

・トリムされた(カットされた)サーフェスの場合は、サーフェスのトリム解除機能を使ってアントリムします。

・トリム解除する前の、元のサーフェスのエッジは抽出しておきます(上の図の紫色の線)。

・複数枚のサーフェスにまたがる場合は、RhinocerosのMergeコマンドを使って1枚面にするか、新たに1枚の近似面を作成する必要があります。

Step.3 展開処理

・次に、展開処理を行います。

・今回使うコマンドはSquishという名称ですが、アイコンが見当たらないのでコマンド入力欄にSquishと打ち込んでEnterキーを押します。

Step.4 オプション選択

コマンド入力欄でオプションが選択できるので、選択します。
詳細はHelpを参照してください。(使うのは「境界を維持」のところを「はい」に変更するぐらいかと思います)

Step.5 サーフェスの選択

コマンド欄に、「3D形状のサーフェスまたはメッシュを選択」という文言がでている状態なので、Step.2で作成した、アントリム状態のサーフェスを選択します。

Step.6 曲線の選択

コマンド欄に、「3D形状上の曲線または点を選択」という文言が出ている状態なので、Step.2で抽出した紫色の曲線を選択し、Enterキーを押します。

Step.7 2D展開サーフェスと展開曲線を作る

・しばらくすると、XY平面上に、展開されたサーフェスと曲線が生成されます。

・判別しやすいように、別レイヤーに保存するなどしてください。

Step.8 展開したサーフェスの曲線を抽出する

・Step.7で展開したサーフェスの方はしばらく使わないので非表示にし、その外周のエッジは必要なので「エッジの曲線を複製」機能で抽出します(青色の曲線)。

・抽出した曲線は結合されていて閉じたカーブとなっているので、分解コマンドを使っていったんすべてばらした後、上下左右の4本に分けて結合します。

上の図のように、上下左右がそれぞれ別々に選択できるような状態です。

次に、SurfaceのUVを使ったパターンの作成にとりかかります。ここから先はGrasshopperの操作に移ります。

Step.9 曲線の分割と縦線の作成

・Step.8で作成したカーブのうち、底辺と左辺と右辺の三本、及び展開した曲線の合計4本をGrasshopperに取り込み、それぞれにDivide Curveコンポーネントを使って10分割し、直線をひきます。

step.10 面化

・Step.9で作成したそれぞれの曲線を使い、Network Surfaceコンポーネントにつないでサーフェスをはります。

・Rebuild Curveコンポーネントにつないで曲線の次数を整えておくと、均一なサーフェスが生成されます。

Step.11 パターンの適用範囲を決める

・展開したサーフェスよりも少し内側にパターンを作るので、Construct DomainコンポーネントでUの開始と終了、Vの開始と終了の数値を入力します(0から1の間です)

・I2出力をisoTrimコンポーネントにつなげると縮小化します。
 ※S入力はReparameterizeをチェックするのを忘れずに。

Step.12 縦と横方向の分割範囲を作る

・次に、縦方向のサーフェス分割の範囲を作っていきます。

・分割数をRangeコンポーネントで12分割し、shift list及びcull patternコンポーネントで数字の範囲を作成します。
※数字の範囲は2種類作成します。
※Shift ListのW入力はすべてFalseにしておきます。

・その後、横方向のサーフェス分割範囲を上の図のように組みます。

・元のサーフェスのUV方向が反転している場合は、UVを反転するコンポーネントを使って反転するか、もしくはStep.11にあるConstruct Domain2コンポーネントのU入力とV入力をそれぞれつなぎ変えてください。

step.13 縦方向の分割範囲の作成

・Step.12で作ったサーフェスをStep.12の横方向の分割範囲を使ってisoTrimコンポーネントでサーフェス分割します。

・続いて、分割したサーフェスを、Cull patternコンポーネントを3つ、上の図のようにつないで選別を行い、Step.12で求めた二つの縦方向分割範囲をそれぞれisotrimコンポーネントにつなぐと、上図のようなサーフェスができます。

Step.14 細分化したサーフェスノ中心X座標を求める

・Step.13で細分化したサーフェスの中心点を求め、Step.11で求めたサーフェス上のUV座標を算出し、X成分を取り出します。

Step.15 縮小割合の計算

・四角形を縦と横それぞれ縮小させるノードを上の図のように組みます。

・Step.14で求めた、細分化したサーフェスの中心点のUV座標のX成分が、上辺から底辺に向かって大きくなる現象を使い、Remapコンポーネントで範囲を縮めて縮小割合としています。
※Construct Domain2の数式は1-xを入力しています。

step.16 サーフェスの縮小化

・Step.15で求めたConstruct Domain2の出力をisoTrimコンポーネントにつなぐと、上の図のような状態になります。

・2Dパターンはこれで完成したので、次は3Dに戻す工程です。

Step.17 カーブのBake

・Step.16で求めたサーフェスのエッジを抽出し、Join curveコンポーネントで結合したあと、RhinocerosにBakeしてください。

※Step.8からStep.16までの作業はXY平面上で行っているため、Adobe illustratorに出力したり、逆に取り込むことも可能ですので、手作業でやった方が効率がいい場合はその手段も有効です。

Step.18 ここからはRhinocerosの作業に移ります。

・Step.7で展開したサーフェスと、Step.17でBakeした四角形のカーブを表示します。

Step.19 Squishbackコマンドの実行

・Rhinocerosのコマンド入力欄に「Squishback」と入力してEnterキーを押します。

Step.20 選択

・展開サーフェス、Bakeした曲線の順に選択してEnterキーを押します。

Step.21 3Dサーフェスに戻す

・しばらくすると、上の図のように、3Dサーフェス上に曲線が生成されます。

※この状態の曲線は、次数や制御点数が均一ではないので必要に応じてリビルド処理してください。

※曲線が完全に元のサーフェスに対し面上にのらない場合もありますので、その時はプル投影などの機能を使ってみてください。

Step.18-2 GrasshopperのMap to Surfaceコンポーネントを使う場合

・Step.8で抽出した青色の展開サーフェスエッジ4本をつかって、まずは2D上のMap元サーフェスを作ります。

・後はStep.17の曲線をMap to Surfaceコンポーネントを使ってマッピングしたら完了です。

・SurfaceのUV軸の向きと組み合わせによって結果が変わりますので、Adjust UVコンポーネント等を使って調整してみてください。

Step.22 完成

・後はお好みで加工したら完成です。

・この展開サーフェスを使ったマッピング方法の欠点は、マッピングによって形状が自動的に変形しながら3Dサーフェスにのっかるため、寸法が微妙に変化してしまう点です。特に、角Rの数値を厳密に規定したい場合、マッピングによって角Rの数値が変わってしまうため、マッピングした後にフィレット作業をやるなど、対処が必要になります。

0 件のコメント:

コメントを投稿

【Grasshopper_98】SporphとSurface Morphingの特徴、違いなどについて

今年もまたGWに突入しましたね。コロナ明けに円安、インバウンド特需のおかげで東京から郊外に出かけると例年以上に混雑に巻き込まれそうなので、昨年と同様、連休中は家に籠ってブログを更新します。今回のテーマは、Surface MorphingとSporphの違いについてまとめてみました。