はじめに
Rhino 8より、Grasshopperに新しく[ MorphToMesh ]というコンポーネントが追加されました。 このページでは、既存のコンポーネントが抱えていた課題、[ MorphToMesh ]の基本的な使い方や気を付ける点などを紹介致します。


既存の機能[ SurfaceMorph ]の紹介と問題点
作成したパターンや形状を別の曲面上に沿って配置する際、Grasshopperでは[ SurfaceMorph ]や[ BoxMorph ]といったコンポーネントがよく使用されてきました。これらはベースとなる1枚のサーフェスの上に指定した形状をモーフィング(変形して沿わせる)する機能を持っています。下図のようにサーフェスのUV方向に分割数を指定してモーフィングするといったことが可能です。

ただし[ SurfaceMorph ]などの既存コンポーネントは、Nurbsサーフェスが内部的に持っているUVパラメータを使用し形状を貼り付けます。そのため適用するベースが上記のような複数のサーフェスから構成されているポリサーフェスの場合は、適用前に一枚のサーフェスとして再作成しなければならないという問題点があります。

また他のCADソフトからSTEPなどでインポートした場合も同様に複数枚のサーフェスから構成される形となるため、パターンを貼り付ける前にまず一枚のサーフェスに置きなおすという作業が発生し工数が掛かります。
[ MorphToMesh ]の基本機能
Rhino 8から追加された[ MorphToMesh ]は、1枚のサーフェスからではなくメッシュの各面に対して形状をモーフィングできる機能を持つコンポーネントです。これにより、事前に1枚の連続したサーフェスを作成せずにパターンを適用できます。下図はポリサーフェスからメッシュを作成し、それに対してパターンを適用した図です。

基本的な使い方としては、以下の項目を入力し、メッシュの面1枚1枚に対して形状をモーフィングします。
- G (Geometry): パターンとして張り付ける形状(BrepやMeshなど)
- M (Mesh): 貼り付けるベースとなる元のメッシュ
- O (Offset): パターンの高さに相当するオフセット値
また張り付ける形状は、[ MorphToMesh ]コンポーネントの「Ref (Reference Polygons)」端子から出力される多角形曲線内にあらかじめ配置しておく必要があります。

基準枠「Ref」の仕様とオブジェクトの配置方法
「Ref」出力からは、3角形から8角形までの多角形曲線が、原点から順にX軸方向に出力されます。これらの多角形の位置は、貼り付ける先の大きさなどによらず、ワールドXY平面上の常に同じ場所に配置されます。

そのため、多角形曲線の内側にオブジェクトを適切に配置するには、以下のような対応が必要になります。
Rhinoで作成した形状を配置する場合
「Ref」から出力できる多角形曲線を一度BakeしてRhino上に書き出し、その曲線の位置に合わせて貼り付けたい形状をあらかじめ配置(モデリング)しておき、それを取り込みます。下図は多角形の中心点をZ方向に移動し、その点まで[ ExtrudeCrvToPoint ]コマンドを使いモデリングした例。

Grasshopper内で完結させる場合
[ MorphToMesh ]をまず1つ配置し、その「Ref」出力から得られる曲線に対してアルゴリズムで形状を作成する(下図は多角形ごとに台形のような形状を作成した例)。その後、2つ目の[ MorphToMesh ]を用意して実際にモーフィングを行うという形です。


メッシュ形状別のアプローチ(三角・四角・多角形)
また、対象となるメッシュを作成する手法によって、使用する「Ref」の枠やアプローチが変わります。
- 三角メッシュの場合: [ TriRemesh ]などを使用し三角メッシュのみを取得後に実行します。
- 四角メッシュの場合: [ QuadRemesh ]を適用し四角形メッシュのみを取得後に実行します。
配置する四角形エリアに空間があると貼り付けた際にも隙間があくため、配置パーツを回転・スケールして意図的に穴を開けるといった表現も可能です。 - 多角形が混在する場合: [ TriRemesh ]を適用し、その「D (Dual)」出力を利用すると、6角形をベースに、5・6・7・8角形などのメッシュが生成されます。この場合、それぞれの多角形曲線に合わせて別々のオブジェクトを作成することで複雑なパターンを作成できます。

また上記に依らず、任意の方法でメッシュを作成いただいても[ MorphToMesh ]で使用することはできます。
[ TriRemesh ]、[ QuadRemesh ]の使用方法については下記リンクなどを参照。
TriRemesh https://www.applicraft.com/ghcp_mesh/#triremesh
QuadRemesh https://www.applicraft.com/ghcp_mesh/#quadremesh
[ 応用 ] 距離で変化するオフセット値
[ MorphToMesh ]では、オフセット値(Offset)を入力することで、配置する形状の法線方向の高さを指定して作成できます。この仕組みを利用すれば、点との距離や曲線との距離に応じて高さが変わるアトラクタを用いて高さを変更するといった利用も可能です。

アルゴリズムの全体像は下記のようなイメージ。青色の箇所が高さを徐変する設定となります。

まとめ
[ MorphToMesh ]を活用することで、複雑な形状や複数に分かれたサーフェスに対しても、メッシュ化を経由して効率的にパターンを配置することができます。
一方[ MorphToMesh ]には、下記のような欠点もあります。
- メッシュの各面上に個別に配置していく仕組みのため、[ SurfaceMorph ]のように元のサーフェス上の連続性を活かして滑らかに並べていくようなパターンは苦手としています。
- アトラクタ等で高さの変更は可能ですが、パターン自体の形状を変更するには手間がかかります。
ただし一枚のNurbsSurfaceに置き換えずにメッシュに対してパターンを配置できる強力なツールだと思います。是非、お試しいただければ幸いです。
補足 : ShapeMapの紹介
[ MorphToMesh ]には「連続性を活かしたパターンが苦手」という弱点がありますが、現時点(2026年6月1日)で開発中のRhino 9 WIP版には、これを補うような[ ShapeMap ]という新しいコンポーネントが搭載される予定です。
これはRhino標準コマンドの[ Squish ]や[ SquishBack ](曲面を平面的に展開・再配置する機能)に近い処理を行うもので、今後のアップデートによりさらに表現の幅が広がることが期待されます。
Rhino9が出た際には、[ ShapeMap ]機能もTipsの記事を書けたらと思います。
