本書のサポートページ - rutles.net · 2...
TRANSCRIPT
本書のサポートページ → http://rutles.net/download/406/index.html本書で紹介したサンプルデータなどをご提供いたします。
次の製品は、TLM, Inc.(Robert McNeel & Associatesとして事業経営中)の登録商標です。 Rhinoceros® Rhino® Rhino3D® Flamingo® Bongo® Grasshopper® openNURBS®次の製品は、TLM, Inc.(Robert McNeel & Associatesとして事業経営中)の商標です。 Rhino OS X™ iRhino 3D™ The Zoo™Windowsは米国Microsoft Corporation の米国およびその他の国における商標または登録商標です。その他、本文中に登場する製品の名称は、すべて関係各社の商標または登録商標です。
はじめに --- 3次元デジタルデザインの新しい潮流
3次元デジタルデザインは2次元図面を忠実に再現する目的から、アイディアを具現化するため、2次元図面で表現し得ない、より付加価値の高い3次元形状を具現化することへ移行してきました。NURBSに代表される形状表現を持つ3次元曲面モデリングツールの普及がこれを可能にしました。これを仮に3次元デジタルデザインの第1世代~第2世代とすると、近年、第3世代とも呼べるデジタルデザイン手法が新しい潮流として台頭してきていると考えてよいでしょう。
“第1世代デジタルデザイン”とする80年代から90年代中頃では、2次元のドラフトを忠実に3次元化することが行われてきました。ここで表現されるのは幾何学的な曲面や2次元自由曲線で、この目的はデジタル化による生産効率の向上です。
“第2世代デジタルデザイン” はアイディアを忠実に、かつモデリングに妥協しない3次元自由形状の具現化です。NURBSに代表されるn次パラメータ曲線・曲面を扱える3次元デジタルモデリングツールを使い、図面では表現し得ない形状を立体化することができるようになりました。
“第3世代デジタルデザイン”は、マンパワーでは不可能な大量のデータ処理と自由曲面を含む3次元形状をアルゴリズムにより生成し、パラメーターを操作してシミュレーションを行い、そこから導き出される形状を思考支援としてデザインの意思決定を行うことができるようになりました。これはコンピュテーショナルデザインという位置付けで、世界中で新しい潮流としてここ数年、飛躍的に広がりつつあります。また日本においては、アルゴリズミックデザインという概念が注目を浴びてきています。Grasshopperもその中で、有効なツールとして普及しているものの1つです。
GrasshopperのプラットフォームであるRhinocerosは、現存する3次元デジタルデザインツールの中では最大限にNURBSという幾何表現を実現可能なモデラーで、知性と感性を駆使して素晴らしい形状表現をデジタルモデルとして生み出すことができます。さらに、Grasshopperというインテリジェントな支援ツールにより、膨大な量のシミュレーションを行うことで、従来の発想方法では不可能だったアイデア領域の拡大、効率化、意思決定を桁違いのレベルで行うことができます。
本書ではそのツールの使用方法と、可能性の一部をサンプルファイルとして紹介しています。本書を通じてコンピュテーショナルデザインの素晴らしさを感じていただき、少しでも役立ていただければ幸いです。
2014年2月 中島 淳雄
【目 次】 C O N T E N T S
4
第1章Grasshopperの基礎─9
1-1 Grasshopperの起動とインターフェース・・・・・・・・・101 インターフェース─112 コンポーネントについて─13
1-2 演習:角柱の作成・・・・・・・・・231 プロセス①─242 プロセス②─273 プロセス③─274 プロセス④─285 プロセス⑤─296 プロセス⑥─297 プロセス⑦─328 プロセス⑧─339 プロセス⑨─36
1-3 演習:点群データの操作・・・・・・・・・391 [Shortest List]、[Longest List]、[Cross Reference]コンポーネント─392 [Shift List]、[Boolean Toggle]コンポーネント─413 [Sort Points]コンポーネント─42
1-4 演習:カーブ・サーフェスのパラメーターの操作・・・・・・・・・441 [Evaluate Curve]コンポーネント─442 [Evaluate Surface]コンポーネント─473 [Construct Domain²(Dom²Num)]、[IsoTrim(SubSrf)]コンポーネント─484 [Divide Surface(SDivide)]コンポーネント─49
1-5 演習:2次元図形の操作・・・・・・・・501 元になるカーブの定義─502 カーブの回転─523 角度からラジアンへの変換─534 [Series]コンポーネントによる等差コピー─575 カーブの移動─59
1-6 簡単な3次元形状作成・・・・・・・・・601 円カーブの作成─602 オフセットした円カーブの作成─603 オフセットしたカーブの移動─614 カーブの分割─625 ラインの作成─626 シフトによる頂点の移動─637 3本目のカーブに分割点を追加─638 Loftによる面貼り─65
5
第2章 Grasshopperのコンポーネント─69
2-1 Paramsメニュー・・・・・・・・・701 Geometryタグ─702 Primitiveタグ─713 Inputタグ─744 Utilタグ─78
2-2 Mathsメニュー・・・・・・・・・791 Domainタグ─792 Matrixタグ─803 Operatorsタグ─814 Scriptタグ─82
2-3 Setsメニュー・・・・・・・・・851 Listタグ─852 Sequenceタグ─873 Textタグ─894 Treeタグ─91
2-4 Vectorメニュー・・・・・・・・941 Gridタグ─942 Planeタグ─963 Pointタグ─974 Vectorタグ─99
2-5 Curveメニュー・・・・・・・・1011 Analysisタグ─1012 Divisionタグ─1033 Primitiveタグ─1054 Splineタグ─1065 Utilタグ─107
2-6 Surfaceメニュー・・・・・・・・1111 Analysisタグ─1112 Freeformタグ─1143 Primitiveタグ─1174 Utilタグ─118
2-7 Intersectメニュー・・・・・・・1221 Mathematicalタグ─1222 Physicalタグ─1243 Shapeタグ ─126
2-8 Transformメニュー・・・・・・・・1271 Affineタグ─1272 Euclideanタグ─1283 Morphタグ─131
【目 次】 C O N T E N T S
6
第3章コンピュテーショナルモデリングの基礎─133
3-1 パラメーター空間とデータ構造・・・・・・・・・1341 NURBSオブジェクトのパラメーター空間─1342 Grasshopperのデータ構造─136
3-2 UVを利用したアルゴリズム・・・・・・・1401 UV分割を使用した4ポイントサーフェスの生成─1402 UV分割とオフセットを使用した立体的なモデルの生成─145
3-3 階層構造を意識したアルゴリズム・・・・・・・・1501 2つの階層におよぶUV分割─1502 インデックスを使用したデータの操作─1523 インデックスを不規則に指定する─1564 インデックスを不規則に指定してUVの分割の値を制御する─158
3-4 UV分割の応用・・・・・・・・・1611 UVによる単純な分割─1612 カーブの法線方向のプレーンによるサーフェスの分割─1623 固定したプレーンによるサーフェスの分割─1644 分割サーフェスを非トリムサーフェスとして再作成─166
第4章デザインとモデリングの演習─171
4-1 基本の変形操作と効率化・・・・・・・1721 移動・回転・スケール・ミラーのアルゴリズム─1722 クラスターとユーザーオブジェクトの作成─1803 ユーザーオブジェクトの作成─1844 法線を利用したオブジェクト配置とリモートコントロールパネル─189
4-2 回転配置の応用・・・・・・・・・194
4-3 フィレット、テーパー角、ブール演算の実現・・・・・・・・2001 A2次元ドローイングの決定─2012 B筐体の上面のサーフェス作成─2043 C2次元ドローイングから基本立体作成─2064 D上面サーフェスと基本立体から筐体基本形状作成─207
4-4 モーフィング・・・・・・・・・・2091 ボックスモーフ─2092 サーフェスモーフ─2123 Voronoiを利用したパターン生成とサーフェスへのマッピング─214
4-5 関数の使用とアニメーション・・・・・・・・・・2221 2次元アステロイド曲線─2222 アステロイド曲線を使用した3次元モデル─225
7
第5章サンプルファイル各種─231
5-1 2Dパターン・カラーミュレーション・・・・・・・・・232
5-2 3Dパターンシ・カラーミュレーション・・・・・・・・・・236
5-3 パビリオンの試作モデル・・・・・・・・・238
5-4 ツインタワー・・・・・・・・・242
5-5 モニュメント・・・・・・・・・244
付録 コンポーネント一覧表・・・・・・・・249
索引・・・・・・・・・281
8
本書を読む前に
Grasshopperは3次元モデラー、Rhinocerosのプラグインで、現在、ベータ版としてRhino 5.0ユーザーに対して無償で公開されているものです。本書を読むにあたり、以下の点に注意ください。
まず、Grasshopperの本体であるRhinocerosの操作方法についてはまったく説明していません。この本を読む対象は少なくともRhinoの基本操作を理解していることが前提です。Rhinoの操作については他の書籍を参考にされるか、無償で公開されているユーザーガイドをダウンロードしてください。
http://www.rhino3d.com/download/rhino/5.0/UsersGuide
本書で使用しているGrasshopperのバージョンは0.9.0066というベータ版で、正式な製品としてリリースされているものではありません。しかしながら、Grasshopperが世に公開されて5年以上経ち、実際に多くの企業、大学で実務や研究用のツールとして使用されています。また、Rhinoの次期バージョンでは標準のツールとして搭載される予定で、多くの問い合わせや質問をいただき、本書を発行するに至りました。
今後新しいバージョンがリリースされると、インターフェースや使用するコンポーネントの仕様が若干変わる可能性があります。Grasshopperは基本的に、バージョンに関してはアッパーコンパチブルで、古いバージョンのGHで作成されたものは上位バージョンで動作しますが、保証の限りではありません。また、Grasshopperに関しては現在ヘルプは存在せず、下記URLを参照するようになっています。本書での記述も誤りがある可能性は大いにありますが、その際はご指摘いただければ幸いです。
http://www.grasshopper3d.com/(2014/2/10時点)
このサイトでは世界中のユーザーがさまざまな手法やアイディアの情報交換を行っています。最新情報を取得するために、ぜひ参考にしてください。
本書では、第3章くらいまではできる限り説明を行っていますが、第4章以降は若干、説明を省いているところがあるかもしれません。第5章では重要なポイントを解説してあるだけです。実際にRhinoのモデルとGrasshopperの定義ファイルをダウンロード後、確認のうえお読みください。
また本書以外では、下記のサイトにビデオやPDFで情報が無償で公開されています。本書では紹介に至っていないさまざまな手法やアイディアが公開されています。本書を読まれた後に参考にされるとよいでしょう。
http://www.grasshopper3d.com/page/tutorials-1(2014/2/10時点)
Grasshopperのダウンロードは下記から行ってください。
http://www.rhino3d.co.jp/support/download.html(2014/2/10時点) http://download.rhino3d.com/Grasshopper/1.0/wip/rc/download/(2014/2/10時点)
では、グラフィカル・アルゴリズム・エディター、Grasshopperの世界をお楽しみください。
Grasshopperの基礎第1章
G r a s s h o p p e r f o r b e g i n n e r ' s
1
Grasshopper
の基礎
10
Grasshopperの起動とインターフェース
コマンドプロンプトにて“Grasshopper”と入力すると、Grasshopperのメインウインドウが起動する。なお、これよりGrasshopperは略して“GH”、Rhinocerosは“Rhino"と記述する。
▲図1-1-1 ▲図1-1-2
ここで作成された内容はRhinoのファイルとは別に、GHの定義ファイル(*.gh/*.ghx)として保存される。右上の×印でウインドウを閉じても、再度開けば定義ファイルはそのまま残っているが、Rhinoの終了時に未保存の定義ファイルがある場合は保存の有無を聞いてくる。
▲図1-1-3
ほとんどの場合、“*.gh”として保存すればよいだろう。バイナリ形式として保存されるため、データは軽いが他のソフトでは開くことはできない。“*.ghx”で保存した場合は、xml形式となり、データ量は増えるがGHを起動しなくてもテキスト形式で保存されるため、他のソフトでも編集可能だ。
G r a s s h o p p e r f o r b e g i n n e r ' s1-1
●Grasshop
per
の起動とインターフェース
11
1 .........インターフェース▶
▲図1-1-4
A:タイトルバー ••••••••••••••••••••••••••••••••••••ダブルクリックで閉じたり開いたりすることができる。B:メニューバー ••••••••••••••••••••••••••••••••••• よく使用するメニューを選択できる。アイコンで表示されているも
のと同じものもある。C:ファイルブラウザコントロール ••••• grasshopperでは、複数のファイルを開くことができる。ここでは開
いているファイルをサムネイルで表示し、切り替えることができる。
▲図1-1-5
1
2
3
4
5
付録
1
Grasshopper
の基礎
12
D:キャンバス ••••••••••••••••••••••••••••••••••• 実際にコンポーネントを配置する場所である。キャンバス左上のアイコン群で、キャンバスのズームや視点の保存が可能。
▲図1-1-6
また、キャンバス上の任意の場所でマウスをダブルクリックすると、キーワードによる検索ウインドウが開く。ここでコンポーネントの名前の一部名を入力すると、その名前の一部を持つコンポーネントがリストされる。例えば“Curve”と入力すると、“Curve”に関連するコマンドのリストが表示されるので、目的のコンポーネントを選択し、キャンバスにドラッグして配置する。
▲図1-1-7 ▲図1-1-8
E:コンポーネントパネル •••••••••••••••• すべてのコンポーネントが配置されている。メニュー名をクリックするとタブが切り替わり、それぞれのカテゴリごとに分かれたアイコンが表示される。コンポーネントのアイコン上にマウスカーソルを合わせると、簡単な機能説明が表示される。また、アイコンをダブルクリックすると機能詳細が表示される。
▲図1-1-9
Grasshopperのコンポーネント第2章
G r a s s h o p p e r f o r b e g i n n e r ' s
2
Grasshopper
のコンポーネント
70
Paramsメニュー
Paramsメニューは、データを取り扱うコンポーネントが配置されている。GHで取り扱うデータ、テキストデータ、数値データ、Rhinoのジオメトリオブジェクト等である。
1 ......... Geometryタグ▶
[Point]、[Line]、[Curve]コンポーネント
▲図2-1-1 これらのコンポーネントは、1つまたは複数のPoint(点)、Line(直線)、Curve(曲線)を格納するときに使用する。Rhino上のオブジェクトを格納する場合は、それぞれのコンポーネント上でマウスを右クリックして表示されるコンテクストメニューより“Set One~(単数)”または“Set Multiple~(複数)”を選択するとGHのキャンバスが消え、Rhinoのビュー上でオブジェクトを選択するように促される。[Point]コンポーネント、[Curve]コンポーネントの場合は、Rhino上に存在する点またはカーブオブジェクトを選択する。複数選択の場合は選択後、Enterキーを押すとRhino上での選択が終了し、GHのキャンバスが再び現われる(選択が1つの場合は選択後、自動的にGHに戻る)。またはRhino上でオブジェクトを選択後、コンポーネントのコンテクストメニューより“Set~”を行ってもよい。[Line]コンポーネントの場合は、Rhinoのビュー上で任意の始点・終点を選択することによってデータを割り当てる。[Line]コンポーネントは2点を指定した直線のみ、[Curve]コンポーネントは直線および曲線を選択できる。コンポーネントは、登録が未完だとオレンジ色に、完了すると灰色になる。コンテクストメニューより後でオブジェクトの追加や削除も可能である。
▲図2-1-2
G r a s s h o p p e r f o r b e g i n n e r ' s2-1
●Param
s
メニュー
71
[Surface]、[Brep]、[Geometry]コンポーネント
▲図2-1-3
これらのコンポーネントは、1つまたは複数のオブジェクトをコンポーネントに格納する。Rhino上のオブジェクトを選択する場合は、前述の[Point]コンポーネントや[Curve]コンポーネントと同じである。
, Surface •••••••••••••••••••••••••••••••••••••サーフェスをコンポーネントに格納する。 , Brep(Boundary Representive) •••••••サーフェスおよび境界値を含む複合サーフェス。 , Geometry •••••••••••••••••••••••••••••••••• すべての3Dオブジェクト(点やカーブ、シングルサーフェス、
複合サーフェスを含む)を格納する。
▲図2-1-4
2 ......... P r imi t iveタグ▶
▲図2-1-5
1
2
3
4
5
7
8
付録
2
Grasshopper
のコンポーネント
72
[Integer]コンポーネント整数を格納するコンポーネントで、[Number Slider]コンポーネントまたは[Panel]コンポーネント(Multiline Dataに変更)上の数値等を接続した場合、整数に変換する。
▲図2-1-6
またコンテクストメニューより、コンポーネントに直接整数を格納することができる。
▲図2-1-7
[Number]コンポーネント浮動小数点を格納するコンポーネント、[Number Slider]コンポーネント、または[Panel]コンポーネント(Multiline Dataに変更)上の数値等を接続した場合、浮動小数点に変換する。
▲図2-1-8
●Param
s
メニュー
73
またコンテクストメニューより、コンポーネントに直接浮動小数点を格納することができる。
▲図2-1-9 [Txt]コンポーネントテキストデータを格納する。コンテクストメニューからもテキストデータを格納することができる。下図は[Vector>Point>Text tag 3D]コンポーネントに接続して、Rhino上でテキスト表示を行っているところ。
▲図2-1-10 ▲図2-1-11
[Boolean]コンポーネント論理値(True/False)を格納する。小数点を含む0はFalseに、それ以外の値はTrueになる。コンテクストメニューからもテキストデータを格納することができる。
▲図2-1-12
1
2
3
4
5
7
8
付録
コンピュテーショナルモデリングの基礎第3章
G r a s s h o p p e r f o r b e g i n n e r ' s
3コンピュテーショナルモデリングの基礎
134
パラメーター空間とデータ構造
GHでアルゴリズムを組む場合、汎用プログラム言語やスクリプト言語のような、他の開発言語のようにプログラミングの一般知識を必ずしも必要としないが、アルゴリズムを組む上で、NURBSのパラメーター空間の概念と、アルゴリズムを組んでいく上でのデータ構造の制御の理解は必要だ。本節では、簡単な演習を通してそれらを理解していく。
1 ......... NURBSオブジェクトのパラメーター空間▶
Rhinoで表現されるジオメトリー表現は他の多くの3次元モデラー、NURBSという数学的形状表現である(注:NURBSについてはRhinoのヘルプやWIKI、拙著『Rhinocerosで極める3Dデジタル・デザイン』等を参考にされたい)。NURBSの概念で重要なものに、パラメーター空間がある。NU RBSで定義された3次元空間上に存在するカーブは、本来、X,Y,Zの3つの変数を使用して表現する形状を、“t”というある一定の範囲(例えば、後述の正規化された場合は0~1)を変化する1つのパラメーターで表現される(図3-1-1)。
3次元カーブは、始点から終点への“t”パラメーターを無限に細かく変化させる点の軌跡と考えてよい(図3-1-2)。カーブによって“t”パラメーターの領域が異なると扱いづらいので、通常、カーブの領域を0~1に限定する。このことを「正規化」と言う。GHでは「リパラメタライズ」(Reparameterize:再パラメーター化)と表現している。詳細は1章-4節の「カーブ・サーフェスのパラメーター操作」を参照。
▲図3-1-1 ▲図3-1-2
次図は、正規化したカーブに“tパラメーター”値を与えて、対応するカーブ上の位置を表示したものである。
G r a s s h o p p e r f o r b e g i n n e r ' s3-1
●パラメーター空間とデータ構造
135
▲図3-1-3
3次元サーフェスは“Uパラメーター”と“Vパラメーター”の2つのパラメーターを持ち、“U”、“V”をそれぞれ独立して無限に細かく変化させた広がりである。どのサーフェスも、内部にUV空間という2次元の矩形データを持つ。またサーフェスは、Rhinoで“Dirコマンド”を実行すると、その面の方向、UVの方向を表示する。UVの方向はサーフェスによって異なるが、“Dirコマンド”のオプションで方向を変更することができる(図3-1-4)。また、2次元のUV空間を中に存在する2次元図形は、サーフェスに再マッピングすることができる(図3-1-5)。
▲図3-1-4 ▲図3-1-5
カーブ同様、UVの点の軌跡がサーフェスになると考えてよい。下図は、正規化したサーフェスにUV値を与えて点出力をした例である。
▲図3-1-6
1
2
3
4
5
付録
3コンピュテーショナルモデリングの基礎
136
2 ......... Grasshopperのデータ構造▶
GHを使用するアドバンテージの1つは大量のデータを入力して処理することでがあるが、それらのデータはツリー(階層)として定義され、一番下のツリーに実際のデータが配置される。データとして配置されるものは数値やRhinoで表現できる形状オブジェクトやメッシュ、True/Falseの論理値等、さまざまなものがある。
▲図3-1-7
4本のRhinoのカーブを分割して、その分割点からカーブを作成するアルゴリズムを通じてデータの基本的な扱い方を理解しよう。
使用するファイル
, Rhinoモデル ••••••• SimpleData2014.3dm , GH定義ファイル •••• SimpleData2014.gh
アルゴリズム
z4本のカーブを[Curve]コンポーネントに割り当てる。xカーブを[Divide Curve]コンポーネントで分割する。c[List Item]コンポーネントで、分割した点のリストをインデックスで指定する。v指定したインデックスを[Interpolate(IntCrv)]コンポーネントに接続し、カーブを出力する。
このアルゴリズムにより、Rhinoで作成した4本の3次元カーブを任意の数で分割し、任意の番号の点に対して通過する3次元カーブを出力できることがわかる(図3-1-8)。
[Params>Uti l>Param Viewer]コンポーネントをキャンバスに配置し、[Curve]コンポーネントと[Divide Curve]コンポーネントの出力を接続してデータ構造を確認してみよう。このとき、同時に[Panel]コンポーネントにも接続し、データの詳細も確認しておく。
デザインとモデリングの演習第4章
G r a s s h o p p e r f o r b e g i n n e r ' s
4デザインとモデリングの演習
172
基本の変形操作と効率化
この節では、移動・回転・スケール等の基本の変形操作をパラメトリックに行うアルゴリズムと、GH定義ファイルのクラスター化、ユーザーオブジェクト化、リモートコントロールパネル等、GHの効率化の方法について理解する。
1 .........移動・回転・スケール・ミラーのアルゴリズム▶
GH定義ファイルによってオブジェクトをパラメトリックに適切な位置をシミュレーションし、意思決定するアルゴリズムを理解する。
ここで扱うキャラクターのデザインでは、目の部分は重要な要素だ。実際にモデリングをして、移動・回転・スケールという要素が瞬時に判断できると、デザインの意思決定に要する時間は短縮される。
使用するファイル
, Rhinoモデル ••••••• MaureenGH.3dm , GH定義ファイル •••• MaureenA2014.gh
▲図4-1-1:目を配置する前のキャラクター ▲図4-1-2:目を配置後のキャラクター
MaureenGH.3dmを開くと、Eye01レイヤに目の部分に相当する形状が格納されている。後に3次元スケール、ミラーコピーを行うので1つあればよい。目を配置する際にターゲットとするのはHead-Interレイヤのモデルである(図4-1-3)。
[Brep]コンポーネントに目の基本形状のRhinoオブジェクトを割り当てる。[Transform>Affine>Scale NU]コンポーネント、[Surface>Primit ive>Bounding Box(BBox)]コンポーネント、[Surface>
G r a s s h o p p e r f o r b e g i n n e r ' s4-1
●基本の変形操作と効率化
173
Analysis>Evaluate Box(Box)]コンポーネント、[Number Slider]コンポーネントを下図のように接続する(図4-1-4)。
▲図4-1-3
▲図4-1-4
[Bounding Box(BBox)]コンポーネントは、割り当てたオブジェクトのバウンディングボックス(オブジェクトの最大外形を直方体で覆ったもの)を計算して表示する。
▲図4-1-5
[Bouding Box(BBox)]コンポーネントの“P入力”にマウスカーソルを近付けると、基準となる作業平面が定義されているのがわかる。初期状態ではXY平面が定義されている。
1
2
3
4
5
付録
4デザインとモデリングの演習
174
▲図4-1-6
必要に応じて、YZ平面やXZ平面を接続するとよい。
▲図4-1-7
[Bounding Box(BBox)]コンポーネントは複数のオブジェクトが接続された場合、初期値ではそれぞれのオブジェクトに対してバウンディングボックスを計算・表示する。このとき、コンポーネントには“Per Object”と表示されている。
▲図4-1-8
コンポーネントの真ん中を右クリックして“Union Box”を選択すると、複数のオブジェクト全体のバウンディングボックスを計算・表示する。このとき、コンポーネントには“Union Box”と表示される。
▲図4-1-9
サンプルファイル各種第5章
G r a s s h o p p e r f o r b e g i n n e r ' s
5サンプルファイル各種
232
2Dパターン・カラーミュレーション
Rhinoは3次元の曲面モデラーであるが、3次元データを使用して2次元のパターン生成を行ってみた。
▲図5-1-1:パターン完成図
使用するファイル
, Rhinoモデル ••••••• 2DPattern2014.3dm , GH定義ファイル •••• 2DPattern2014.gh
このGH定義ファイルでは自由曲面のアイソカーブを使用して、最終的に色のシミュレーションのできる2次元パターンを生成している。下図のようなサーフェスをRhinoで作成しておく。サーフェスはGHのパラメーターを変化させながら後から編集するので、この時点では厳密な形状定義をする必要はない。
▲図5-1-2
G r a s s h o p p e r f o r b e g i n n e r ' s5-1
●2D
パターン・カラーミュレーション
233
[Iso Curve(Iso)]コンポーネントを使用すると、サーフェスのアイソカーブを取得できる。
▲図5-1-3
2つのサーフェスに対してアイソカーブを取得し、片方のサーフェスを移動や回転を行うと微妙な重なりが生まれる。
▲図5-1-4
アイソカーブを取得した時点では、カーブは3次元のカーブである。いったん生成したアイソカーブを、[Control Points(CP)]コンポーネントでコントローポイントを取得する。そのポイントのXYZ座標値のうち、Y値の値を“0”に置き換えて再度カーブを生成すれば、2次元カーブに変換できる(この場合、Frontビューに対する2次元カーブになる)。
▲図5-1-5
1
2
3
4
5
付録
5サンプルファイル各種
234
この後、カーブに何種類かの色を付けてシミュレーションをしたいが、GHではカーブに対して色付けをできないようだ。
色を付けるためカーブに対して小さな半径のパイプを作成し、そのリストインデックスを乱数で並べ替える。次に、[Color Swatch]コンポーネントでいくつか色を用意し、先ほどインデックスを並べ替えたオブジェクトに順番に色情報を与えていけば、指定した色がランダムに割り当てられる。このアルゴリズムでは正しくデータ構造を扱うためにさまざまなコンポーネントを使用しているが、試してみてほしい。仮にこのアルゴリズムが組めなくても、必要な部分を転用するだけでも効果は期待できる。
▲図5-1-6 最終的に下図のような2次元のパターンが作成できる。ここで重要なことは、元の基本サーフェス形状をRhino側で編集するたびにパターンが変わり、さらに、GHのパラメーターでもパターンの調整ができることだ。
▲図5-1-7
281
索引
コンポーネント
4Point Surface 114
Addition 81
Arc 3pt 65
Arc 105
Area 113
Boolean Toggle 29, 41, 75
Boolean 73
Boundary Surfaces 32, 114
Box Morph 131, 209
Box Properties 111, 127
Box Rectangle 117
Brep Edges 112
Brep Join 32, 120
Brep 71
Brep/Brep 125
Brep/Curve 125
Brep/Line 122
Brep/Plane 123
Cap Holes 66, 120
Circle 14, 18, 27, 60, 105
Color Swatch 234
Colour Picker 76
Concatenate 90
Construct Domain2(Dom2) 79
Construct Domain2(Dom2Num) 80
Construct Domain2 48
Construct Matrix 80
Construct Plane 96
Construct Point 23, 43, 97
Control Points 101
Cross Reference 40
Cull Index 87, 153
Cull Nth 88
Cull Pattern 88
Curvature Graph 102
Curve Closest Point 101
Curve On Surface 106
Curve 50, 70
Curve/Curve 124
Curve/Line 123
Curve/Plane 124
Curve/Self 125
Custom Preview 76
Deconstract Brep 112
Deconstruct Domain2(DeDom2) 79
Deconstruct Domain2(DeDom2Num) 80
Deconstruct Matrix 80
Deconstruct Point 97
Deconstruct Vector 99
Display Matrix 43, 80
Divide Curve 28, 62, 103
Divide Surface(SDivide) 49
Divide Surface 118
Division 54, 81
Edge Surface 114
Equality 82
Evaluate Box 111
Evaluate Curve 44, 102
Evaluate Surface 47, 113
Evaluate 54, 83
Explode 108
282
索引
Expression 84
Extend Curve 108
Extrude 32, 116
Fillet 109
Flatten Tree 92
Flip Curve 108
Flip 121
Geometry 71
Graft Tree 91
Graph Mapper 76
Horizontal Frame 102
Horizontal Frames 104
Import File 77
Integer 72
Interpolate 106
Iso Curve(Iso) 233
Iso Trim 118
IsoCurve 107
Isotrim(SubSurf) 48
Jitter 157
Join Curves 52, 109
Larger Than 82
Length 103
Line 29, 62, 70, 105
Line/Line 122
Line/Plane 124
Linear Array 129
List Item 85, 138
List length 86, 157
Loft Option 115
Loft 65, 115
Longest List 40
Map to Surface 132
Mass Addition 81
Mass Multiplication 81
Merge 92, 139
Mirror 51, 128
Move 32, 59, 61, 128
Multiplication 64
Negative 82
Network Surf 115
Number Slider 14, 22, 44, 52, 59, 60, 75
Number 72
Nurbs Curve 42, 106
Offset 60, 109, 120
Orient 130
Panel 39, 40, 74
Param Viewer 78
Perp Frame 102
Perp Frames 104
Pipe 116
Plane 3pt 97
Point List 99
Point 39, 70
PolyLine 106
Populate 2D 95
Populate 3D 95
Populate Geometry 95
Power 82
Project 110
Pull Curve 110
Random Reduce 89
Random 89
Rectanglar 94
Reverse List 86
Rotate Axis 130
283
Rotate 52, 129
Scale 127
ScaleNU 127
Scribble 78
Series 57, 88, 129, 157
Shatter 104
Shift List 29, 41, 63, 87
Shortest List 39
Simplify Tree 92
Smaller Than 82
Solid Difference 126
Solid Intersection 126
Solid Union 126
Sort List 86
Sort Points 42, 98
Sphere 118
Split List 86
Split 157
Square 94
Stream Filter 93
Stream Gate 93
Subtraction 81
Surface Morph 131, 213
Surface Split 126
Surface 47, 71
Surface/Line 123
Sweep1 117
Sweep2 117
Text Join 90
Text Split 90
Text Tag 3D 98
Text Tag 98
Trim Solid 126
Txt 73
Unit X 59, 100
Unit Z 61, 100
Unit Y 100
Vector 2Pt 100
Vector Display(VDis) 100
Vector Display 100
VectorXYZ 99
Volume 113
Voronoi 214
XY Plane 96
XZ Plane 51, 96
YZ Plane 96
記号
*.gh 10
*.ghx 10
+/-アイコン 55, 83, 93
英語
Affineタグ 127
Align 67
Analysisタグ 101, 111
Animation controls 229
Bake 38
Bongo 229
Box Outline 37
Canvas Wedget 67
Compass 67
Curveメニュー 101
Dirコマンド 135
Divisionタグ 103
Domainタグ 79
284
索引
Enable/Disable 35
Euclideanタグ 128
Expression Designer 84
ExpressionEditor 53
Flatten 138
Freeformタグ 114
Geometryタグ 70
Graft 138
Gridタグ 94
Inputタグ 74
Intersectメニュー 122
Lexer Combo Editor 218
Listタグ 85
Markov 68
Mathematicalタグ 122
Matrixタグ 80
Message Balloons 68
Morphタグ 131
NURBS 44, 134
Operatorsタグ 81
Origin 97
Paneling Tools 240
Paramsメニュー 70
Physicalタグ 124
Planeタグ 96
Pointタグ 97
Preview On/Off 33
Primitiveタグ 71, 105, 117
Profiler 67
RCP 192
Rectangle Outlin 37
Rhinoオブジェクト 38
Scriptタグ 82
Sequenceタグ 87
Setsメニュー 85
Shapeタグ 126
Simplify 138
Splineタグ 106
Surfaceメニュー 111
Textタグ 89
Transformメニュー 127
Treeタグ 91
Utilタグ 78, 107, 118
UV分割 140, 150, 161
Vector 97
Vectorタグ 99
Vectorメニュー 94
Voronoi 214
xml形式 10
あ
アイコン 13
アイソカーブ 142, 232
アステロイド曲線 222, 225
アニメーション 75, 229
移動 172
インターフェース 11
インデックス 152, 156, 158
オフセット 60, 109, 120
オレンジ色 45
か
カーブの移動 59
カーブの分割 62
回転 129, 172
回転配置 194
285
カラーコントロール 76
関数 222
起動 10
キャンバス 12
近似曲線 224
クラスター 180
グループ化 36
警告 45
検索 12
コンポーネント 13
~の削除 13
~の接続 14
~の配置 13
~の表示色 17
~の編集 15
コンポーネントパネル 12
さ
差 126
サークル 14
サーフェスモーフ 212
シフト 63
スイープ 117
数列 80
スケール 127, 172
正規化 47, 134
積 126
た
タイトルバー 11
ツリー 136
定義ファイル 10
データ構造 136
テーパー角 200
等差数列 57
トリムカーブ 2028
な
内部エッジ 112
並べ替え 42
ノッチ 240
は
バイナリ形式 10
パイプ 116
バウンディングボックス 127
パターン・カラーシミュレーション 236
パラメーター 44
パラメーター空間 134
非多様体エッジ 112
非トリムサーフェス 142
ファイルブラウザコントロール 11
フィレット 200
ブール演算 126, 200
ブランチ 137
プレビュー表示 16
プロファイルカーブ 194
分割点 63
ベクトル 100, 191
法線 162, 189
ボックスモーフ 209
ボロノイ図形 216
ま
マトリックス 80
ミラー 172
286
索引
ミラー反転 128
メニューバー 11
モーフィング 131, 236, 242
や /ら
ユーザーオブジェクト 184
ライトグレー色 45
ラインの作成 62
ラジアン 53
乱数 89
リスト入力 74
リパラメタライズ 47, 134
リモートコントロールパネル 192
レール 117
ロフトサーフェス 115
論理値 73
わ
和 126
ワールド座標系 20
ワイヤ 14
2014 年 3月10日 初版第 1刷発行
著者 中島 淳雄装丁 VAriantDesign編集 うすや
発行者 黒田庸夫発行所 株式会社ラトルズ〒102-0083 東京都千代田区麹町 1-8-14 麹町 YKビル 3階TEL 03-3511-2785 FAX 03-3511-2786http://www.rutles.net⦆印刷・製本 株式会社ルナテック
ISBN978-4-89977-406-8Copyright ©2014 Atsuo Nakajima Printed in Japan
【お断り】●本書の一部または全部を無断で複写複製することは、法律で認められた場合を除き、著作権の侵害となります。●本書に関してご不明な点は、当社Webサイトの「ご質問・ご意見」ページ http://www.rutles.net/contact/index.phpをご利用ください。 電話、ファックス、電子メールでのお問い合わせには応じておりません。●当社への一般的なお問い合わせは、[email protected]または上記の電話、ファックス番号までお願いいたします。●本書内容については、間違いがないよう最善の努力を払って検証していますが、著者および発行者は、本書の利用によって生じたいかなる障害に対してもその責を負いませんので、あらかじめご了承ください。
●乱丁、落丁の本が万一ありましたら、小社営業宛てにお送りください。送料小社負担にてお取り替えします。
サンプルデータなどは、ラトルズの本書のサイト
http://www.rutles.net/download/406/index.html
で入手できます。
中島 淳雄(なかじま あつお)株式会社アプリクラフト取締役株式会社グリフォンデザインシステムズ代表取締慶應義塾大学 意匠設計非常勤講師日本デザイン学会会員日本建築学会会員電気通信大学材料学課卒業。電子部品メーカーエンジニアを経て、日本コンピュータービジョン社他で、3次元CAD・CGアプリケーションのテクニカルサポート、プロダクトマネージャー担当。1997年 株式会社アプリクラフト設立・代表取締役。2008年 株式会社グリフォンデザインシステムズ設立・代表取締役。
Gグ ラ ス ホ ッ パ ー
rasshopper入門