nurbsとポリゴン
rhino はcontrol pointを制御する。
なぜcontrol pointを制御するというと、rhino は数式でsurfaceを制御しているからだ。これをnurbsという。
数式で制御されているとはつまり、コントロールポイントがあるということだ。
"Breps"は"Boundary Representations"の略称であり
これはつまりsurface の集まりであり、rhino ではこれを、solild モデルのように見せている
一方でBlender に代表されるソフトは
メッシュは、点、線、および面(ポリゴン)の集まりで構成されます。一般的に、メッシュはポリゴンメッシュとして知られており、これは3D空間内の点を接続するために線が使用され、これらの線を組み合わせて面が形成されます。
また、sketchupは、
線と点は階層構造がなく、すべて同じレイヤで混ざる
→ 触れると溶け合う(Sticky Geometry)
→ 線の追加で面が分割される
というメッシュではあるものの、特徴的な性質をもっています
| 特徴 | NURBS(曲線/曲面) | メッシュ(ポリゴン) |
|---|---|---|
| 構成要素 | 数学的な曲線・曲面 | 点・線・面(ポリゴン) |
| 滑らかさ | 数式ベースで完全に滑らか | 細かいポリゴンで近似的に滑らか |
| 編集方法 | コントロールポイント | 頂点・辺・面を直接編集 |
| データサイズ | コンパクト | 細かくすると重い |
| 主な用途 | 工業設計・精密CAD | アニメ・ゲーム・映像制作 |
| ソフトの例 | Rhino, SolidWorks, Alias | Blender, Maya, 3ds Max |
データ構造とGRASSHOPPER
プログラムでは扱うデータに何かしらの意図を持たせたいとき、扱うデータに構造を持たせます。
いきなり問題です。一番シンプルなデータ構造は何だと思いますか?
正解は配列arrayです。
一度は聞いたことがある人もいるかもしれません。
これは同じ型の要素を連続したメモリ領域に格納します。
char c = {1,2,3}
のように記述します。
Grasshopperでも同様で、3次元のジオメトリや複雑なデータを効果的に扱うために、適切なデータ構造を持つことが必要です。これにより、データの整理、操作、可視化などがスムーズに行われます。
Grasshopper 開発者の David Rutten によって描かれたイメージです。

これは、データツリーと呼ばれるgrasshopper 特有の概念です。
このデータツリーを理解する為に2つのデータ構造を理解する必要があります。
1つ目はツリー構造と呼ばれるモノで、
2つ目はlist構造と呼ばれるものです。
このツリー構造とリスト構造の2つが組み合わさったものがラスホッパーのデータ構造データツリーと呼ばれるものです。
上記を理解した上で図を改めてみてみましょう。
ツリーと呼ばれる枝分かれした枝にデータ構造(リスト)が格納されているのがわかるでしょうか?
一つの基本となるブランチ(枝(幹といっても良い))が、path{0}
に相当します。
またブランチの中にリストが格納されます。各ブランチは階層構造を表す数字の列が列挙されていて、数字が深くなるほどこの階層構造が深くなります。(サブブランチが作成されます)このパスは、データは持ちませんが、デフォルトで3 つのサブ・ブランチを持ちます。これらの 3 つ
のサブ・ブランチは、マスター・ブランチのインデックッス{0}を持ち、自身のインデックス、0,1,2 を
持ちます。
-
ツリー構造(Tree Structure):
- ツリー構造は、親子関係に基づいて階層化されたデータの構造を表します。
- 各ノードは、1つの親ノードと複数の子ノードを持つことができ、それぞれの子ノードはさらに別の子ノードを持つことができます。
- ツリー構造は、階層的な関係を表現するために使用されます。
-
リスト構造(List Structure):
- リスト構造は、順序付けられた要素のシーケンスを表します。
- リスト内の各要素は、インデックスによって一意に識別されます。
- リスト構造は、複数の要素を順番に格納するために使用され、特定の順序でデータを処理する場合に有用です。
Grasshopperのデータ構造は、これらのツリー構造とリスト構造が組み合わさったものです。具体的には、ツリー内の各ブランチにはリストが格納され、そのリスト内の要素が個々のデータを表します。これにより、複雑な階層構造を持つデータを効果的に管理し、操作することができます。
RHINO GRASSHOPPERを通じてコンピュータサイエンスを学ぶ
RHINO GRASSHOPPERを通じてコンピュータサイエンスの入口にすることに興味を持っている方へ
RHINO GRASSHOPPERは、デザインや建築分野で広く使われているツールですが、実はコンピュータサイエンスの入門にも最適なプラットフォームです。その理由は、グラフィカルなプログラミング環境を提供し、プログラミング初心者でも直感的にコードを作成し、ビジュアルなフィードバックを得ることができるからです。
RHINO GRASSHOPPERを学ぶことで、プログラミングの基本的な概念や論理を学びながら、デザインや建築に関する興味深いプロジェクトを実現することができます。例えば、アルゴリズム設計やデータ構造、条件分岐などのプログラミングの要素を、デザインや建築のコンセプトに応用することができます。
また、RHINO GRASSHOPPERのコミュニティは非常に活発で、さまざまなレベルや分野の人々が集まっています。そのため、初心者から上級者まで、自分のレベルや興味に合った学び方やプロジェクトに参加することができます。
つまり、RHINO GRASSHOPPERを通じてコンピュータサイエンスの入口を探求することは、非常に興味深く、充実した学びの旅になることでしょう。ぜひ、この素晴らしいツールを使って、新しい知識やスキルを身につけ、創造性豊かなプロジェクトを実現してください。
私は建築の設計実務でGRASSHOPPER を使ってきた経験及びコンピュータサイエンスのバックグラウンドがあるので、いろいろな記事をアップしていきたいとおもいます