Houdini 20.5 VEX

ループとフロー制御

On this page

VEX関数も参照してください。VEXでの作業のほとんどが関数コールです。ステートメントのほとんどがループの構築で、これはC言語などの他の言語に似ています。printはいくつかの言語(例えば、Python)のステートメントであるのに対し、VEXではprintf関数を使って画面出力します。

{}

C言語や他の多くの言語と同様に、中括弧({)で複数のステートメントを閉じることで、それらをブロックとして定義することができます。

例えば、ifステートメントは、以下のように1行のステートメントを実行したり:

if ( needs_zapping() ) zap()

以下のように中括弧内のブロックを実行することができます:

if ( needs_zapping() ) {
    zap()
    disintegrate()
    remove_dust()
}

doループ

do ‹statement› [while (‹condition›)]

最初に‹statement›を実行した後に、‹condition›がtrueならループします。whiledoとは違って、最低1回は‹statement›を実行することが保証されています。

forループ

for (‹init›; ‹condition›; ‹change›) ‹statement

標準のC言語スタイルのforループ。‹init›ステートメントを実行した後に、‹condition›がtrueの間は、‹statement›の実行の後に‹change›ステートメントを実行するという繰り返しを行ないます。

foreachループ

foreach (‹value›; ‹array›) ‹statement

foreach (‹index›; ‹value›; ‹array›) ‹statement

array›のメンバー毎に‹statement›を実行します(オプションで‹index›を配列の現行位置に設定します)。foreachを参照してください。

whileループ

while (‹condition›) ‹statement

condition›がtrueの間は、‹statement›を繰り返して実行します。

他のループステートメント

forpointsilluminancegatherのステートメントは、VEXで処理されているデータをループすることができます。

if

if (‹condition›) ‹statement_if_true› [else ‹statement_if_false›]

condition›がtrueなら‹statement_if_true›を実行します。

elseの句も記述していれば、‹condition›がfalseなら‹statement_if_false›を実行します。

return

任意の戻り値付きで関数を終了します。

int max(int a, b) {
    if (a > b) {
        return a;
    }
    return b;
}

break

breakは即座にループを抜けます。これは、ifステートメントと併用して、ある条件に到達した時に早くループを停止させたい時に役立ちます。

for (int i = 0; i < sizes; i++)
{
    mixamount += getAmount(roughness);
    if (mixamount > 1) {
        break;
    }
}

continue

continueは、ループの次の繰り返しに直ぐにジャンプします。

foreach (x; myarray) {
    if (x < 10) continue;
    ...
}

VEX

言語

次のステップ

リファレンス