VEX
VectorExpression
ゆるいCベース
Attribute Wrangle
VEXのコーディングにはAttribute Wrangleノードを使用します。「aw」で早く呼び出せます。
変数 / variable
型を指定します。
int / integer 整数値 個数や繰り返し数、番号など
float / 浮動小数点のスカラー値 スカラー値とは”1つ”の数値(変数)
vector / 3つのfloat値を持つもの xyzやrgbなど
string / 文字列 「’」「”」どちらかで囲む。表記はcamelCase
※他にもarrayやvector2,4など様々な型があります。
float x = 5.5;
float y = x*2;
vector vecVar = {0, 0.5, 1};
string stringVar = “philipKindredDick”;
変数はひとつのVEXコード内で使用する一時的なものです。
関数などに使用し、最終的にアトリビュートやポイント、プリミティブとして出力します。
アトリビュート / attribute
@前にi,f,v,s入れて型を指定します。
@の後に任意のアトリビュート名を入れます。
//float型のdepthアトリビュートにxを代入
f@depth = x;
v@Cd.r = 0.1;
v@Cd.g = x;
v@Cd.b = 0.5;
//他の書き方
v@Cd = {0.1, x, 0.5};
//{}は変数では機能しない為set関数を使用
v@Cd = set(0.1, x, 0.5);
ループとフロー制御
条件分岐
if
if(条件){条件がtrueのときに実行する処理}
float yPos = v@P.y;
//y座標が1.0以上のときにCdを0,1,0(緑色)に設定
if(yPos >= 1.0){
v@Cd = set(0, 1, 0);
}
if-else
if(条件){条件がtrueのときに実行する処理}else{条件がfalseのときに実行する処理}
float xPos = v@P.x;
float yPos = v@P.y;
//条件 x座標が5.4未満かつy座標が1.0以上
//true Cdを1,0,0(赤色)に設定
//false ポイントを削除
if(xPos < 5.4 && yPos >= 1.0){
v@Cd = set(1, 0, 0);
}
else{
removepoint(0, @ptnum);
}
ループ
forループ
for-eachループ
whileループ
while(条件){条件がtrueのときに実行する処理}
//float型のsumを0で初期化 合計値として使用
int stopper = 0;
float sum = 0;
//条件 stopperが0
//true sumに1加算代入→sumが100以上か確認→100以上だった場合stopperに1を代入
//stopperに1が代入され、条件がfalseになり処理が終了
while(stopper == 0){
sum += 1;
if(sum >= 100){
stopper = 1;
}
}
//ループが終了する仕組みを作らないと、永遠に処理が行われてしまう
演算子
等価比較演算子
==
!=
>
<
>=
<=
短終論理演算子
&&
||
関数 / Functions
大量の関数があるため、少しずつ覚えると良いと思います。(私も)
VEXコードの関数に文字入力カーソルをあわせて「F1」を押すと、その関数のヘルプが開けます。
チャンネル関数 / Channel Functions
調整できるパラメータを作成します。
int number = chi(“number”);
v@Cd = chramp(“colorRamp”, value);
コードを書いた後、スライダーアイコンを押しspare parameterを作成します。(①)
「Edit Parameter Interface…」から、値のTypeやRangeなど、扱いやすいように編集できます。(②)
コメント