前回に引き続き、どんなことができるのか、紹介できればと思います。プログラミングのお作法については至らない点もあるかと思いますが、よろしくお願い致します。
目次
今記事の目的:条件分岐とランダム処理をやってみる
Attribute Wrangleを使って、形状や色を部分的に変えたりランダムに変化させたりしてみたいと思います。
基本セットアップ(前回と同じ構成でパラメータを変更)
- Geometryノードを作成
- Gridノードを作成(Size 2×2 Rows/Columns : 30~40程度)
- attribute Wrangleを接続
条件分岐

if (@P.x > 0){
@Cd = {1,0,0};
} else {
@Cd = {0,0,1};
}
・@P.xは各ポイントのX座標を指しています。
・if(条件):条件がtrueなら中の処理を実行することを指しています。今回でいうと、(そのポイントのX座標が0より大きいかどうか)が該当します。
・else:ifの条件がfalseの場合、次に続く処理を行うことを指しています。
条件のバリエーションを試す

if (@P.x > 0 && @P.z > 0){
@Cd = {1,1,0};
} else {
@Cd = {0,0,0};
}
・&& は「and条件」を指しています。今回でいうと、(X座標が0より大きくZ座標が0より大きいかどうか)が該当します。
ランダムで色を付ける

float r = rand(@ptnum);
@Cd = set(r,r,r);
・@ptnum はポイント番号を指しています。
・rand()は()内を0~1をランダムで割り当てます。
・結果として、各ポイントにランダムなグレースケールを付与することができます。背景でよく使う「ランダムな高さ」「配置のばらつき」の一つの手法になります。
ランダムに高さを変える

float r = rand(@ptnum);
@P.y = r * 0.5;
@Cd = set(r,0.5,1-r);
・ランダム値のrを使うことで、ランダムな凹凸を作ることができます。
条件×ランダムの組み合わせ

float r = rand(@ptnum);
if (r > 0.7){
@P.y += 0.3;
@Cd = {1,0.3,0.1};
} else {
@Cd = {0.1,0.2,0.3};
}
・ランダムで一部のポイントだけ高さを変化させることができます。if(条件)を使うことで、凹凸を制御することができ、それに応じて色をつけることができました。ただ少し凹凸の感じが極端ではありますね。
次回について
ここまで読んでいただきありがとうございます。次回はなだらかな凹凸をつくる方法について記載する予定です。


