本書のサポートページ - rutles.net · 2...

36

Upload: others

Post on 05-Jan-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割
Page 2: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

本書のサポートページ → 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 の米国およびその他の国における商標または登録商標です。その他、本文中に登場する製品の名称は、すべて関係各社の商標または登録商標です。

Page 3: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

はじめに --- 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月 中島 淳雄

Page 4: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

【目 次】 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

Page 5: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

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

Page 6: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

【目 次】 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

Page 7: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

7

第5章サンプルファイル各種─231

5-1 2Dパターン・カラーミュレーション・・・・・・・・・232

5-2 3Dパターンシ・カラーミュレーション・・・・・・・・・・236

5-3 パビリオンの試作モデル・・・・・・・・・238

5-4 ツインタワー・・・・・・・・・242

5-5 モニュメント・・・・・・・・・244

付録 コンポーネント一覧表・・・・・・・・249

索引・・・・・・・・・281

Page 8: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

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の世界をお楽しみください。

Page 9: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

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

Page 10: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

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

Page 11: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

●Grasshop

per

の起動とインターフェース

11

1 .........インターフェース▶

▲図1-1-4

A:タイトルバー ••••••••••••••••••••••••••••••••••••ダブルクリックで閉じたり開いたりすることができる。B:メニューバー ••••••••••••••••••••••••••••••••••• よく使用するメニューを選択できる。アイコンで表示されているも

のと同じものもある。C:ファイルブラウザコントロール ••••• grasshopperでは、複数のファイルを開くことができる。ここでは開

いているファイルをサムネイルで表示し、切り替えることができる。

▲図1-1-5

1

2

3

4

5

付録

Page 12: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

1

Grasshopper

の基礎

12

D:キャンバス ••••••••••••••••••••••••••••••••••• 実際にコンポーネントを配置する場所である。キャンバス左上のアイコン群で、キャンバスのズームや視点の保存が可能。

▲図1-1-6

また、キャンバス上の任意の場所でマウスをダブルクリックすると、キーワードによる検索ウインドウが開く。ここでコンポーネントの名前の一部名を入力すると、その名前の一部を持つコンポーネントがリストされる。例えば“Curve”と入力すると、“Curve”に関連するコマンドのリストが表示されるので、目的のコンポーネントを選択し、キャンバスにドラッグして配置する。  

 

▲図1-1-7 ▲図1-1-8

E:コンポーネントパネル •••••••••••••••• すべてのコンポーネントが配置されている。メニュー名をクリックするとタブが切り替わり、それぞれのカテゴリごとに分かれたアイコンが表示される。コンポーネントのアイコン上にマウスカーソルを合わせると、簡単な機能説明が表示される。また、アイコンをダブルクリックすると機能詳細が表示される。

▲図1-1-9 

Page 13: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

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

Page 14: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

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

Page 15: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

●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

付録

Page 16: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

2

Grasshopper

のコンポーネント

72

[Integer]コンポーネント整数を格納するコンポーネントで、[Number Slider]コンポーネントまたは[Panel]コンポーネント(Multiline Dataに変更)上の数値等を接続した場合、整数に変換する。

▲図2-1-6

またコンテクストメニューより、コンポーネントに直接整数を格納することができる。

▲図2-1-7

[Number]コンポーネント浮動小数点を格納するコンポーネント、[Number Slider]コンポーネント、または[Panel]コンポーネント(Multiline Dataに変更)上の数値等を接続した場合、浮動小数点に変換する。

▲図2-1-8

Page 17: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

●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

付録

Page 18: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

コンピュテーショナルモデリングの基礎第3章

G r a s s h o p p e r f o r b e g i n n e r ' s

Page 19: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

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

Page 20: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

●パラメーター空間とデータ構造

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

付録

Page 21: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

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]コンポーネントにも接続し、データの詳細も確認しておく。

Page 22: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

デザインとモデリングの演習第4章

G r a s s h o p p e r f o r b e g i n n e r ' s

Page 23: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

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

Page 24: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

●基本の変形操作と効率化

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

付録

Page 25: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

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

Page 26: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

サンプルファイル各種第5章

G r a s s h o p p e r f o r b e g i n n e r ' s

Page 27: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

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

Page 28: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

●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

付録

Page 29: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

5サンプルファイル各種

234

この後、カーブに何種類かの色を付けてシミュレーションをしたいが、GHではカーブに対して色付けをできないようだ。

色を付けるためカーブに対して小さな半径のパイプを作成し、そのリストインデックスを乱数で並べ替える。次に、[Color Swatch]コンポーネントでいくつか色を用意し、先ほどインデックスを並べ替えたオブジェクトに順番に色情報を与えていけば、指定した色がランダムに割り当てられる。このアルゴリズムでは正しくデータ構造を扱うためにさまざまなコンポーネントを使用しているが、試してみてほしい。仮にこのアルゴリズムが組めなくても、必要な部分を転用するだけでも効果は期待できる。

▲図5-1-6 最終的に下図のような2次元のパターンが作成できる。ここで重要なことは、元の基本サーフェス形状をRhino側で編集するたびにパターンが変わり、さらに、GHのパラメーターでもパターンの調整ができることだ。

▲図5-1-7

Page 30: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

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

Page 31: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

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

Page 32: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

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

Page 33: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

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

Page 34: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

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

Page 35: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

286

索引

ミラー反転 128

メニューバー 11

モーフィング 131, 236, 242

や /ら

ユーザーオブジェクト 184

ライトグレー色 45

ラインの作成 62

ラジアン 53

乱数 89

リスト入力 74

リパラメタライズ 47, 134

リモートコントロールパネル 192

レール 117

ロフトサーフェス 115

論理値 73

和 126

ワールド座標系 20

ワイヤ 14

Page 36: 本書のサポートページ - rutles.net · 2 カーブの法線方向のプレーンによるサーフェスの分割 ─162 3 固定したプレーンによるサーフェスの分割

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入門