Houdini 20.0 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

言語

次のステップ

リファレンス