見出し画像

Rhinoだってオブジェクトに情報を持たせられる ― UserTextが“ただの図形”を“意味あるモデル”に変える

Rhinoceros(Rhino)は、柔軟なモデリングができる自由度の高いツールとして、多くのユーザーに支持されています。

私自身は、3Dスキャンで取得した建物の点群データをもとにトレースを行う業務も多く、
その中でRhinoの高いモデリング能力が非常に役立つため、日常的に活用しています。

Rhinoでは、線や面、ソリッドといった“形”を扱うだけでなく、
「材料名」「部材番号」「用途」など、任意の属性情報をKey-Value形式でオブジェクトに追加することができます。

この機能を活用すれば、Rhinoのモデルは“形状の情報”にとどまらず、
意味や属性を持った、より多くの情報を持ったデータへと進化します。


建築業界の方であれば、BIMに取り組んでいる方もいるかと思います。
BIMは、超ざっくり言うと建物にまつわる情報をデータベース化し、設計・施工・維持管理の各段階で情報を連携・活用しようというアプローチです。

RhinoはBIMソフトではありませんが、オブジェクトに属性情報を付与できるという点で、3DCAD以上の活用を期待できます。

特にその情報をGrasshopperと連動させたり、外部ツールとつなげたりすることで、より力を発揮することができます。

✅UserTextの基本機能と使い方

● 属性を付与する手順

  1. 属性情報を付けたいオブジェクトを選択

  2. プロパティパネルの「属性ユーザーテキスト」を開く

  3. 「キー(Key)」と「値(Value)」のペアで情報を追加

例えば、以下の画像では立方体に対して
Key: name, Value: 立方体 といった情報を設定しています。

● 関数(fx)の活用

UserTextでは、「関数」ボタン(fx)を押すことで、Rhinoオブジェクトのプロパティを自動取得することも可能です。

たとえば、体積(Volume)を自動で取得してValueに設定することもできます。

● より実用的な活用例

例えば、ブロック化した引違いサッシに、以下のような情報を付与してみました:

  • 建具符号(例:AW01)

  • タイプ(例:引違い)

  • ガラス(例:網入 透明ガラス t=6.8)

  • 色(例:シルバー)

  • 付属金物(例:網戸、クレセント、水切、丁番)


● インポート・エクスポートも可能

付与したUserTextは、CSV形式でエクスポートする機能や、
逆にCSVから一括インポートして設定する機能もRhinoに標準搭載されています。

✅GrasshopperでUserTextを読み取る

今回は例として3種類のサッシモデルを作成し、それぞれにUserTextで属性情報を付与してみました。

  • AW01:引違い × 5枚

  • AW02:3連引違い × 2枚

  • AW03:4連引違い × 4枚

それぞれのモデルには以下のような情報を付けています:

---------------------------------------------
【AW01】
建具符号:AW01
タイプ:引違い
色:シルバー
ガラス:網入 透明ガラス t=6.8
付属金物:網戸、クレセント、水切、丁番
---------------------------------------------
【AW02】
建具符号:AW02
タイプ:3連引違い
色:ブラック
ガラス:型板ガラス t=6
付属金物:網戸、クレセント、戸車
---------------------------------------------
【AW03】
建具符号:AW03
タイプ:4連引違い
色:ダークブロンズ
ガラス:Low-E ペアガラス t=12
付属金物:クレセント、水切、網戸、ブレーキ
---------------------------------------------

本来であれば、こういった建具が建物中に多数配置され、それぞれに属性が埋め込まれているのが理想です。

ただし今回はサンプルということで、建物モデルの再現は省略しています。あくまで「こういう情報が付けられるよ」という参考例としてご覧ください。


では実際に、Rhinoで付与したUserTextをGrasshopper上で読み込んでみましょう。
今回使用するツールは Elefront プラグインです。

プログラム全体はこんな感じです:

UserTextの読み込みには、Elefrontの Get User Value コンポーネントを使用しています。
ここに取得したいKey(たとえば「建具符号」や「タイプ」など)を入力すると、対応するValue(AW01や引違いなど)が取得されます。

Rhinoで付与した情報が、Grasshopper上でもしっかり取り出せることがわかります。

ちなみに、Elefrontは逆方向の操作にも対応しています。
つまりGrasshopper上で作成したジオメトリに対して、UserTextを付加してRhinoへ書き戻すことも可能です。

✅実際の活用例

では、UserTextの具体的な活用例をいくつかご紹介します。

① 建具表の自動生成
建物モデル内の各建具オブジェクトに対してUserTextを付与しておけば、
Grasshopperでそれらの情報を読み取り、自動で建具表を生成することができるかと思います。

② RhinoとWebをリアルタイムに連携

これは以前個人ブログで書いた内容ですが、Rhinoで作成したモデルをWeb上に表示し、
Rhino上での変更をリアルタイムにWebに反映、逆にWeb上の操作をRhinoに反映させるという連携を試しました。

このとき、各オブジェクトに一意のidをUserTextで付与し、
HTTP通信を通じて変更情報をやり取りすることで、双方向の同期を実現しています。

③ Grasshopperで作成したジオメトリに属性情報を付与

こちらも個人ブログにて紹介していますが、Grasshopper上で生成した複数のパネルに対して、それぞれ情報をUserTextで持たせてみるといった試みです。

私は実務でこういったことをやっているわけではないので、実務に即した内容というわけではないのですが、こういったGrasshopperで作成したものに対してUserTextを付与して、管理に活用していくことも可能かと思います。

✅ まとめ

RhinoのUserText機能を活用すれば、オブジェクトに形状だけでなく「意味」を持たせることができます。
それにより、モデルは単なる3D形状から「情報を持つデータ」へと進化します。

今回はごく基本的な使い方をご紹介しましたが、工夫次第でさまざまな活用が可能です。

業務の中で「これ、もっと自動化できないかな?」と感じたとき、UserTextがそのきっかけになるかもしれません。
ぜひ一度、活用してみてください。

以上

いいなと思ったら応援しよう!