2014年11月14日金曜日

コンポーネント検索ウィンドウの小技

前回、コンポーネントを探す方法の一つとして、コンポーネントを名前で検索する方法を紹介しました。

実はこのコンポーネント検索用入力ウィンドウ、数字を入力する事で一部のコンポーネントを入力した数値で呼び出す事が可能なのです。

[Number Slider]
Grasshopperで最もよく使うコンポーネントの一つとして、[Number Slider]コンポーネントがあります。ユーザーは、このコンポーネントを呼び出した後で、用途に合わせてEditメニューで整数にしたり少数にしたり、上限値と下限値を設定して利用しますが、検索用入力ウィンドウに数字を入力すると、予めその数値に設定された状態の[Number Slider]コンポーネントを呼び出す事が出来ます。
その際に、整数で入力すれば整数に設定された[Number Slider]が、小数点第二位まで入力すれば少数点第二位まで指定可能に設定された[Number Slider]が呼び出されます。
また、[-5<5]等といった形で入力すれば、[Number Slider]の入力範囲を指定する事も可能です。

[Point]
点座標を指定したり、Rhinoで用意した点を割り当てる事で使用する[Point]コンポーネントですが、検索用入力ウィンドウに[3,1,2]等の様にカンマで区切った数値を入力すると、予め入力した座標に点を指定された状態で[Point]コンポーネントを呼び出します。

[Clock]
[Clock]コンポーネントは、時刻データを出力する時計の様なビジュアルのコンポーネントです。こちらのコンポーネントを使用する機会は少ないかもしれませんが、前述の二つのコンポーネントと同様に、検索用入力ウィンドウに[18:42:00]といった具合に入力すると、入力した時刻に設定された[Clock]コンポーネントを呼び出します。

2014年10月8日水曜日

コンポーネントを探す方法

Grasshopperの画面上部には、コンポーネントが種別毎に分けられて配置されており、ユーザーはその中から必要なコンポーネントを取っていって使用する、というスタイルが一般的かと思われますが、使用していく内に、「アレ、あのコンポーネントはどこにあったっけ?」といった事も出てくるかと思われます。
その様な時には以下の方法を使ってコンポーネントを探す事が出来ます。

・コンポーネントを名前で検索する
キャンバス上の何も無い空間で左マウスボタンをダブルクリックするか、F4キーを押すと、コンポーネント検索用の入力窓が開きます。
ここに探しているコンポーネントの一部名を入力すると、その名前の一部を持つコンポーネントがリストアップされるので、リストの中から目的のコンポーネントを選択します。

※例えば「Surf」と入力すると、Grasshopperが「Surface」と予測して、関連したコンポーネント群が表示されます。


・コンポーネントの格納位置を調べる
検索して取り出したコンポーネント等、既にキャンバス上に配置してあるコンポーネントを、[Alt]+[Ctrl]キーを押しながら左マウスボタンをクリックすると、クリックしている間、そのコンポーネントの格納されているタブと位置を赤い矢印と円で指し示してくれます。


※上図では[Shift]コンポーネントの位置を調べています。

2014年7月3日木曜日

Grasshopperを使った色のシミュレーションの方法

物の見え方というのは、形状だけでなく、色等によっても変わってきます。Grasshopperをデザイン検討に利用されている方にとっては、色も大事な要素かと思われます。
そこで今回はGrasshopperの色に関するコンポーネントと、その使用方法について紹介します。


まずは、単純にオブジェクトに色を着けて表示させる方法です。
用意するのは色を着けたいオブジェクトを指定した[Brep]コンポーネント、色を指定する [Colour Swatch]コンポーネント(Paramsメニュー>Inputタブ)、色を着けたオブジェクトを表示させる為の [Custom Preview](Displayメニュー>Previewタブ)コンポーネントの三つです。
[Custom Preview]のG入力にオブジェクトを、S入力に[Colour Swatch]コンポーネントを割り当てる事で、オブジェクトを指定した色で表示する事が可能です。
※[Custom Preview]コンポーネントは、Grasshopperのプレビュー表示方法を「選択コンポーネントのオブジェクトのみ表示」に設定していると表示されません。


ここから更に、オブジェクトにマテリアルを設定して表示させる方法もあります。
Grasshopperには[Create Material]という簡易的なマテリアルを作成するコンポーネントがあります。このコンポーネントには5つの入力があり、上から、
Kd(Diffuse):拡散反射光(ベース)の色を指定
Ks(Specular):鏡面反射光の色を指定
Ke(Emission):自己発光の色を指定
T(Transparency):透明度を数値で指定(0.0~1.0)
S(Shine):光沢の量を数値で指定(1~100、0は光沢無し)
となっています。
色を指定する入力には、前述の[Colour Swatch]等を割り当て、数値指定には[Number Slider]を割り当てたら、[Create Material]のM出力を [Custom Preview]のS入力に接続します。
すると、前述の色を表示した時と同様に、マテリアルを貼り付けたオブジェクトが表示されます。
※透明度を0、光沢の量を100に設定した例

※透明度を0.7、光沢を無しに設定した例

この様にマテリアル設定を行なった[Create Material]コンポーネントを、色分けしたいオブジェクトの数だけ用意し、それぞれの[Brep]に割り当てる事で、下図の様に表示させる事も可能です。
※上二つのオブジェクトは、金属という事で反射光色をベース色と同じにし、尚且つ光沢を70に設定。下のオブジェクトは、マットな質感の為、光沢はゼロ、反射色も黒に設定。


色に関するコンポーネントは、Paramsメニュー>Inputタブ内の[Colour Picker]や[Colour Swatch]以外にも、Displayメニュー>Colourタブに入っており、CMYK、HSL、RGB等、色の表現法を数種類から用意してあります。
これらのコンポーネントはそれぞれの入力に0.0~1.0の範囲の数値を指定してあげる事で、対応する色を出力します。(RGBのみ0~255の範囲)


また、同Displayメニュー>Colourタブ内には[AHSV]と[ARGB]という、色をHSVとRGBのそれぞれの数値に分解して出力するコンポーネントもあります。

2014年6月26日木曜日

[Orient]コンポーネントを用いた、サーフェス法線方向にオブジェクトを配置する方法

Rhinoには[OrientOnSrf]という、オブジェクトをサーフェスの法線方向に沿って配置するコマンドがあります。これをGrasshopperで行なうにはどの様なコンポーネントを使用してどの様に配置すれば良いのか、今回はその一例を紹介します。


まず、配置するオブジェクトを作成し、[Brep]コンポーネントに割り当てます。

オブジェクトを作成する際は、配置するオブジェクトのどの部分を、オブジェクトの中心とするかを意識してモデリングします。

一番、簡単な方法は、下図の様にXY平面の原点に中心が来るように配置するオブジェクトを作成します。こうすれば、配置基準となる元の作業平面は、XY平面となります。
作成するオブジェクトがXY平面の原点にない場合、あるいは、任意の空間上に作成する場合は、次の手順で作成したオブジェクトの中心点を作業平面の原点として定義します。
・配置するオブジェクトのバウンディングボックスを取得するために[Bounding Box]コンポーネントに[Brep]を接続します。
・取得したバウンディングボックスの、どの地点を作業平面の原点とするかを指定する為に、[Evaluate Box]コンポーネントに[Bounding Box]を接続します。
※[Evaluate Box]コンポーネントは指定したBoxオブジェクトのUVW値に相当する点とその点を原点とした作業平面を出力します。
(U,V,W)が
(0.5,0.5,0.5)で、ボックスの中心:Default
(0.5,0.5,0.0)で、底面の中心
(0.5,0.5,1.0)で、上面の中心
の点を出力。

これでオブジェクトの中心点を原点とした作業平面を取得出来ました。
この作業平面が、オブジェクトを配置する際の方向や、位置の基準となります。


次にオブジェクトを配置するターゲットとなるサーフェスを作成し、[Srf]コンポーネントに割り当てます。
[Srf]コンポーネントはReparameterizeし、[Evaluate Surface]コンポーネントに接続して、配置したい位置の作業平面を、UV値を指定して取得します。
※[EvalSrf]コンポーネントは、サーフェスの指定したUV値の点と、法線ベクトル、そして指定した点でサーフェスに接する作業平面を出力します。

この[EvalSrf]で作成した作業平面のZ方向が、そのままその点における法線方向となります。


これで配置したいオブジェクト、配置する際の基準となる作業平面、配置先サーフェス上の作業平面の3つを用意出来ましたので、これらを[Orient]コンポーネントに以下の通りにそれぞれを接続する事で、オブジェクトをサーフェスの法線方向に沿って配置出来ます。
・[Orient]コンポーネントのG入力に、配置するオブジェクトを接続
・[Evaluate Box]コンポーネントのPl出力を、[Orient]のA入力へ接続
・[EvalSrf]コンポーネントの、F出力を、[Orient]のB入力へ接続
 ※[Orient]コンポーネントは、G入力に割り当てたオブジェクトを、B入力に割り当てた作業平面を基点として、A入力に割り当てた作業平面に再配置を行ないます。


[Orient]は再配置したいオブジェクトと基点となる作業平面との距離や角度を参照します。
その為、上記の例では、基点となる作業平面を、バウンディングボックスの中心点に設定しておりましたが、例えばバウンディングボックスのU,V,Wの値を0.5,0.5,0.0に設定した場合、下図の様に配置位置が変化します。

原点が中心点の位置の場合、配置したオブジェクトはサーフェスに半分程埋まっていますが、原点がバウンディングボックスの底面の中心の位置の場合、配置オブジェクトはサーフェスに埋まっていません。この様にWの値を変える事で、オーバーラップの位置を変える事が出来ます。

2014年6月12日木曜日

Grasshopperによるシミュレーション

NBBJのコンピュータースペシァリスト、Andrew Heumann氏が、Grashopperの使用例をビデオで公開しています。
このビデオでは、シアトルに新しいビルを建てた場合、特定の場所から(例えば、スペースニードル)どのようにそのビルが見えるかをシミュレーションするもの。
Grasshopperを日常のツールとして使用する様子が見て取れます。




2014年6月6日金曜日

[t]と[U]と[V]と[Reparameterize]とは

Q1.3次元カーブで言われる、[t]パラメーターとは何ですか?

A.3次元カーブの始点から終点までの間の任意の地点を表す変数です。
NURBS等の数学的な曲面表現による3次元カーブは、一つの変数[t]パラメーターの次数と、3次元カーブを構成する制御点の数と位置、制御点におけるウェイトの値で、カーブの形状が定義されます。つまり、その形状は、3次元カーブのパラメーター[t]の変化の軌跡と考えることができます。
[t]パラメーターは、始点から終点に対して、増加する変数で、増加する値であればどのような範囲を持っても良いですが、始点を[0]、終点を[1]と決めてしまう事により全てのカーブに対して同一の範囲を適用することができます。
この操作を、後述する[Reparameterize:リパラメタライズ](正規化)と呼びます。

[Reparameterize]を行なった場合、ある3次元カーブ上の点の座標を指定したい場合は、その3次元カーブを表す方程式の[t]の部分に[0]を代入すると始点が、[1]を代入すれば終点が、[0.5]を代入すれば3次元カーブの中間地点(長さの中間値点ではない)の座標が得られます。
[Reparameterize]を行なった例
[0]で始点の、[1]で終点の座標を示しています。

[Reparameterize]を行なっていない例
[0]で始点の座標を示してはいますが、[1]ではバラバラの座標を示しています。


3次元カーブが持つ始点から終点に向かう曲線方向は、Rhino上で[Dir]コマンドを使用する事で、確認と変更を行なえます。
[Dir]コマンドで3次元カーブの方向を表示させた図


Q2.3次元サーフェスで言われる、[U]パラメーター[V]パラメーターとは何ですか? 

A. どちらも3次元サーフェス上の任意の地点を表す変数です。
3次元カーブが[t]パラメーターという一つの変数で表現される様に、3次元サーフェスは、同じ性質をもつ[U]パラメーターと[V]パラメーターという2つの変数で表現されます。
3次元サーフェスは内部に、[UVパラメーター曲線]という2次元の矩形領域を持ちますが、このとき、U方向とV方向は直交していれば良く、これらの方向がどの方向を向いているかは問題とはされません。
これらの方向は、[Dir]コマンドによって制御できます。
[Dir]コマンドでサーフェスの方向を表示した図
操作上、理解しやすくするためには、Rhino上の座標で、X方向にU方向、
Y方向にV方向を指定しておくと良いでしょう。

3次元カーブは、[t]の値の軌跡が3次元カーブとなりますが、3次元サーフェスの場合は、U方向とV方向の2つの3次元カーブの軌跡が、サーフェスを表現していると考えると良いでしょう。
3次元サーフェスの持つUV方向と3次元サーフェスのイメージ

Q.1で [t]に[0~1]を代入すると3次元カーブ上の任意の地点の座標が得られた様に、3次元サーフェスは[U]と[V]に[0~1]をそれぞれ代入する事でサーフェス上の任意の地点の座標が得られます。
[Reparameterize]を行なったサーフェスの任意の地点の座標を求めた図


Q3.[Reparameterize](正規化)とは何ですか?

A.[Reparameterize]とは「再定義する」という意味。この再定義を行なう事で、サイズや形状の異なるカーブやサーフェスを同一規格で扱える様になります。Grasshopperではこの[Reparameterize](正規化とも言う)を行なうと、どの様なカーブのパラメーター[t]も、始点を[0]、終点を[1]として再定義します。サーフェスの場合も、サーフェスは[U]方向と[V]方向にそれぞれ伸びたカーブが格子状に配置された物という認識が出来る為、[U]方向と[V]方向のカーブそれぞれのパラメーター[t]について、始点を[0]、終点を[1]として再定義する事で、カーブと同様に扱える様にしています。

2014年5月26日月曜日

[Rotate]コンポーネントを用いた環状配列の方法

前回、【Rotate系コンポーネントの度数指定の方法】について、記述しましたが、今回は[Rotate]コンポーネントの[Degrees]オプションを用いてオブジェクトを環状に配列する方法を紹介します。

オブジェクトを環状に配列するためには、回転するオブジェクトを、0度から360度まで等間隔に、[Rotate]コンポーネントのA入力(角度)に指定する必要があります。

まず、360°をオブジェクトの配置数で割り、1オブジェクト辺りの角度を割り出します。
割り出した角度を[Series]コンポーネントの[Step](間隔)に、配置したい数を[Count]に入力する事で、360°を均等に分割した等差数列のリストを出力します。
出力した等差数列のリストを全てRotateコンポーネントの角度として入力する事で、複数のオブジェクトを円形に等間隔に配置しています。
[Rotate]コンポーネントの角度入力には[Degrees]のオプションを選択する事。

上図の通りにコンポーネントを設定すると、下図の様な配置になります。

なお、Grasshopper[Polar Array]コンポーネントでも同様の事が可能です。その際にも、角度入力には[Degrees]オプションを選択します。

Rotate系コンポーネントの度数指定のやり方

Grasshopperにはオブジェクトを回転させるコンポーネントがいくつかあります。
そして、回転させるコンポーネントには大抵「回転角度」を指定する端子が用意されています。




例えば図1[Rot3D]コンポーネントの場合、1段目に回転させる「ジオメトリー」を、2段目に「回転角度」を、3段目に回転の基点となる「点」を、4段目には回転軸の方向となる「直線」をそれぞれ指定する事が出来ます。
そこで、回転角度に数字を指定するのですが、Grasshopperはデフォルトの状態だと、角度に入力された数字は、度数ではなくラジアンとして認識する為、図1では回転角度に「1」を指定してありますが、Rhinoの画面に表示されるオブジェクトは1°以上回転しています。(1Radian=180°/π=57.29°)

この角度に入力する数字を度数として認識する方法は、回転角度の入力端子を右クリックすると開けるメニューで[Degrees]を選択します。(図2

すると、図3の様にその端子に入力される数字は、自動的にラジアンから度数に変換されます。


[Degrees]オプションがついていない、以前のバージョンでは、図4の様に [Expression]オプションに、[Rad(x)]という計算式を入れて、度数をラジアンに変換して行っていました。


2014年3月27日木曜日

『Grasshopper』 0.9.0066と0.9.0072、メニューやコンポーネントの変更点について。

Grasshopper入門』で使用されているバージョンは0.9.0066ですが、0.9.0072ではメニューにDisplayメニューが追加され、コンポーネントの追加と、タブやコンポーネントの配置が変更されました。


Paramsメニュー
移動したコンポーネント
Unitタブから以下のコンポーネントが、新たに追加されたDisplayメニューに移動されました
[Bar Graph][Pie Chart][Quick Graph][Value Tracker][Legend][Image Gallery]

追加されたコンポーネント
Unitタブに、[Fitness Landscape]コンポーネントが追加されました。







Mathsメニュー
削除されたコンポーネント
Scriptタブから、[C# Script (LEGACY)][VB Script (LEGACY)]コンポーネントが削除されました。







Vectorメニュー
移動したコンポーネント
Colourタブが、Displayメニューの中に移動しました。
[Blend Colour]コンポーネントは削除されました。

Pointタブから以下のコンポーネントが、新たに追加されたDisplayメニューに移動されました
[Text Tag][Text Tag 3D][Cloud Display][Dot Display][Point List]

Vectorタブから以下のコンポーネントが、新たに追加されたDisplayメニューに移動されました。
[Vector Display][Vector Display EX]







Displayメニュー(NEW!!
新しいタブ
Dimensionsタブが設けられ、以下のコンポーネントが追加されました。
[Aligned Dimension][Linear Dimension][Serial Dimension][Line Dimension][Marker Dimension][Angular Dimension][Circular Dimension][Arc Dimension]

他のメニューから追加されたタブ
ColourGraphsPreviewVectorタグが他のメニューから追加されました。