On this page |
|
変数 ¶
HScriptでは、setコマンドを使って文字列を変数に割り当てることができます:
変数のSet
set x = "hello"
グローバル変数のSet
set -g x = "hello"
または
setenv x = "hello"
変数のUnset
set -u x
変数名は、アルファベットまたはアンダースコア(_
)で始めて、その後はアルファベット、数字、アンダースコアで続けなければなりません。
コマンドで変数を使用するには、変数名の頭にドル記号($)を付けます:
> set foo = "bar" > echo $foo bar
変数名を中括弧({})で閉じることで、変数名が前後のテキストに影響を受けないようにすることができます:
> echo ${foo}baz barbaz
さらに、中括弧によってHScriptは、その括弧の中の変数を評価する前に、その中の変数を展開します。これによって単純な配列を模倣することができます:
set foo1 = Padma set foo2 = Mohammed for i = 1 to 2 echo ${foo$i} end Padma Mohammed
HScriptでは、変数は、ローカルまたはグローバル(時々、システム変数と呼びます)のどちらかになります。
ローカル変数は、スクリプトではローカルに実行されます。スクリプトが終了すると、その変数が消えます。ローカル変数は、それを定義しているスクリプト外では使われません。ローカル変数を作成または設定するには、set
を使用します。for
とforeach
ループで作成される変数は常にローカルです。
グローバル変数は、すべてのスクリプトとHoudiniが起動したプログラムで利用可能です。グローバル変数を作成または設定するには、setenv
またはset -g
を使います。
変数モディファイア ¶
モディファイアを変数名の後に追加することで、返される値を編集することができます。それらのモディファイアは変数に保存されている値を変更するわけではなく、単にモディファイアによって変数が返す値を変更するだけです。
変数の値を修正するには、変数名の後に:コード
を追加します。例:
> set afile = /home/matt/bin/foo.bar > echo $afile:e bar > echo ${afile:e} bar
利用可能なコードは以下の通りです:
:h
(Head) パス名のパスの部分(つまり、ファイル名を除いたパス)。
> echo ${afile:h} /home/matt/bin
:t
(Tail) パス名のファイル名の部分。
> echo ${afile:t} foo.bar
:e
(Extension) ファイル名の拡張子。
> echo ${afile:e} bar
:r
(Root) 拡張子を 除いた フルパス名。
> echo ${afile:r} /home/matt/bin/foo
:s/ptrn/repl/
(Substitute) パターン ptrn を repl に置換します。
以下の:g
と:a
のモディファイアを参照してください。
> echo ${afile:s}/foo/baz/ /home/matt/bin/baz.bar
:u
(Uppercase) 最初に見つかった小文字を大文字に変換します。
以下の:g
と:a
のモディファイアを参照してください。
> set str = Hello There > echo ${str:u} HELLO THERE
:l
(Lowercase) 最初に見つかった大文字を小文字に変換します。
以下の:g
と:a
のモディファイアを参照してください。
> set str = Hello There > echo ${str:l} hello there
以下のコードをモディファイアの前に追加することで、モディファイアの動作を補うことができます:
:g
(Global) 文字列をスペース区切りの文字列のリストとして扱い、その後のコードをリストのコンポーネント毎に適用します。
:a
(All) その後のコードを可能な限り何回も再帰的に適用します。
例:
set A = "foo1 foo2 foo3 foofoo4" $A:u == "Foo1 foo2 foo3 foofoo4" $A:u:u == "FOo1 foo2 foo3 foofoo4" $A:gu == "Foo1 Foo2 Foo3 Foofoo4" $A:gu:u == "FOo1 Foo2 Foo3 Foofoo4" $A:au == "FOO1 FOO2 FOO3 FOOFOO4" $A:s/foo/bar/ == "bar1 foo2 foo3 foofoo4" $A:s/foo/bar/:s/foo/bar/ == "bar1 bar2 foo3 foofoo4" $A:gs/foo/bar/ == "bar1 bar2 bar3 barfoo4" $A:as/foo/bar/ == "bar1 bar2 bar3 barbar4"
コマンドの出力を変数に格納する ¶
エクスプレッション関数と違い、HScriptコマンドは関数ではないので、戻り値がありません。ただTextportにコマンドの結果を出力するだけです。コマンドの結果を変数に格納しようと
set objects = opls /obj
とタイプしても、$objects
変数には文字列"opls /obj"
が設定されるだけです。コマンドの結果を文字列として取り込むには、runエクスプレッション関数の中にそのコマンドを記述して、HScriptがそのエクスプレッションを評価するために、バッククォートで囲みます。以下がその例です。
set objects = `run("opsls /obj")` echo $objects model ambient1 light1 light2 light3 cam1
コマンドの出力をファイルにリダイレクトする ¶
HScriptコマンドの出力をファイルにリダイレクトするには、コマンドの中で>filename
を使います。ファイルを上書きせずに追加書き込みするには、>>filename
を使います。標準出力と標準エラー出力の両方をリダイレクトするには、>&filename
を使います。
UNIXコマンドを使って外部プロセスを起動するとき、Textportの代わりに外部シェルでリダイレクトしたい場合があります。Houdiniコマンドインタプリタが外部シェルより先にリダイレクトに作用しないようにシングルクウォートで引数を囲みます。
unix myscript.pl '>output.txt'
制御構文 ¶
if ¶
ifステートメントは条件が真のときにコマンドブロックを実行します。else ifを使えば別の条件でコマンドブロックを実行することができ、elseを使えば、それら以外の条件でコマンドブロックを実行することができます。
if condition1 [then] commands to execute if condition is true else if condition2 commands to execute if condition2 is true else commands to execute otherwise endif
例:
if ( $F == 1 ) then echo Frame One else echo Not Frame One endif
if
内のステートメントは1行ずつ記述する必要があります。つまり、if ($F == 1) echo Frame One
のようなステートメントは機能しません。
for ¶
for
ステートメントは、count変数をstartからendまでstep分増やしながらコマンドブロックをループします。
for count_variable = start to end [step stepsize] commands to loop end
count変数名の前に$は不要です。例:
for i = 1 to 3 echo $i end for i = 1 to 100 step 3 echo $i end
foreach ¶
foreach
ステートメントは、リストの各エレメントを順々に変数に設定しながらコマンドブロックをループします。
foreach iterator_variable (list_string) commands to loop end
例:
foreach i ( a b c ) echo $i end foreach object ( `run("opls -d")` ) echo Object $object end
HScriptには本当のリストや配列タイプがありません。foreachステートメントがループするリストとは、コマンドラインに渡す引数と同じように、HScriptがエレメントに分割する文字列のことです。HScriptのコマンドラインの分割の方法を参照してください。
while ¶
while
ステートメントは、条件が真である限り、コマンドブロックをループします。例:
set i = 0 while ( $i < 10 ) set i = `$i+1` echo $i end
break/continue ¶
breakステートメントはループを抜けます。continueステートメントは次のループに進みます。
条件演算子 ¶
ifとwhile構文で以下の演算子を使用することができます:
()
グループ化、優先順位の設定。
== != < > <= >=
比較: 等号、不等号、未満、より大きい、以下、以上。
&& ||
論理積、論理和。
明確化するためにHScriptエクスプレッションを括弧で閉じることができますが、不要です:
for i = 1 to 10 ... end for (i = 1 to 10) ... end
引用符文字列 ¶
シングルクォート('
)内のテキストは展開されません。
ダブルクォート("
)内のテキストは変数を展開します。
ダブルクォートで囲んだ文字列は1個の引数とみなされます。
バックスラッシュ文字(\\
)は、その後の文字をエスケープします。例えば、文字列にダブルクォートを使用したい場合は、"I had a \\"great\\" time."
のように記述します。
文字列の変数を展開する必要がないなら、シングルクォートを使用すれば評価速度が上がります。
スペースなしで2つのクォート文字を並べると、それらは1個の引数とみなされます。
例:
set foo = "Hello world" echo '$foo='"$foo" $foo=Hello world
echoコマンドは、'$foo=Hello world'
として1個の引数としてみなしています。
HScriptでは、ダブルクォートよりもバッククォートの方が優先度が高いです。ダブルクォートでバッククォートの文字列を閉じていれば、バッククォートの文字列は最初のダブルクォートを完結させないでダブルクォートを含んでしまう場合があります。
例えば、以下の文字列があったとします:
foo`ch("/obj/geo1/tx")`
これは1個の引数とみなされます。
一般的な規則では、バッククォートとその中に入っている文字の間にはスペースを含めません。余分なスペースがあると、Houdiniはその文字列を評価しない場合があります。
コメント ¶
#
文字の後は、コメントになります。 文字として#
を使用したいなら、その前にバックスラッシュ(\\
)を付けてエスケープします。
コマンドラインの分割 ¶
Houdiniは入力行をスペースで単語に分割します。特殊文字; < > ( ) =
を引用符のない文字列の中で使う場合には、注意してください。それらの特殊文字をHScriptの構文として動作させるには、前後に スペースを挿入します。HScriptは引数に関しては非常にゆるいです。基本的には、HScriptがコマンドやオプションとして理解しないものは、文字列として扱われます。これによって、引用符を記述する必要がなく、複数レベルの引用符を付けるのが簡単です。
一般的な規則では、HScriptに別解釈されたくない文字列には引用符を囲むべきです。
HScript Textportの使い方 ¶
TextportではHScriptコマンドを入力して結果を確認することができます。Textportウィンドウを新規で開くには、Windows > Hscript Textport
を選択します。Textportをペイン内に開くには、PaneメニューのSet Pane Tab Typeから Textport を選択します。
-
クィックコピーアンドペースト: テキストを選択して、クリックすると、コマンドラインにそのテキストがペーストされます。
-
クィックヘルプ: “help コマンド名”をタイプするとTextportにテキスト版のコマンドのオンラインヘルプが表示されます。
-
先行入力:Houdiniでは現在のコマンドの実行が終了する前に先立って新しいコマンドをタイプし始めることが可能です。Houdiniは、そのコマンドが終了すると、“バッファにある”コマンドを実行します。
-
スクロール:PgUpと((PgDn)を押すとスクロールします。
-
継続: まだ終了していないコマンドライン(例えば、forループのブロックの途中)でEnterを押すと、コマンドラインは、オープンブロックをendで終えるまでタイプすることができます。
-
コマンドヒストリー
コマンドラインで以前のコマンドの再呼び出し
↑と↓を押すことで以前のコマンドの履歴を遡ることができます。以前に実行したコマンドのテキストは編集することができます。
最後のコマンドの繰り返し
コマンドラインで!!をタイプします。
以前のコマンドの繰り返し
num番目前のコマンドを実行するには、!-numとタイプします。 例えば、5つ前のコマンドを実行するなら、
!-5
とタイプします。パターンに一致した最後のコマンドの繰り返し
コマンドラインで!stringとタイプすれば、そのstringを含む以前のコマンドを実行します。
コマンドヒストリーの閲覧
historyコマンドを使うとコマンドヒストリーが表示されます。
-
使用頻度の高いコマンドのエイリアスの作成
HScriptでは、aliasコマンドを使って使用頻度の高いコマンドを引数を含めて新しい名前のコマンド名にすることができます。例えば、頻繁にシーンのオブジェクトの名前をリストにすることがあるなら、そのコマンドを
objs
というように短い名前にすることができます。例:alias objs "opls /obj"
コマンドラインでobjsとタイプすると、opls /objが実行されます。
HScriptのエイリアス展開は、
csh
ほど高度ではありません。例えば、エイリアス展開は再帰的ではありません。つまり、以下のコマンドは期待した結果にはなりません:alias opcd opcf alias cd opcd
cdエイリアスは、
unknown command "opcd"
というメッセージが出ます。これはopcdのエイリアス展開が失敗しているからです。また、HScriptのエイリアス展開には、
csh
のようにヒストリーメタ文字置換機能がありません。
HScriptスタンドアローンアプリケーション ¶
hscript
アプリケーションは、$HFS/bin
にあります。システムのコマンドライン上でそれを実行すると、Textportと同じコンソールが開き、そこでHScriptコマンドを実行して結果を確認することができます。
HScriptアプリケーションでは、GUIを使わなくてもHoudiniのフルパワーを発揮できるバッチスクリプトを記述することができます。
コマンドラインでhscript -q
をタイプすれば、HScriptを起動したときに通常では表示されるバージョン情報を非表示にすることができます。これはHScriptスタンドアローンの処理の結果をリダイレクトするときに役に立ちます。
スクリプトファイルの作成と使用 ¶
スクリプトファイルに複数のコマンドをカプセル化することができるので、その機能を再利用することができます。単純に実行したいコマンドを含んだテキストファイルを作成するだけです。一般的には、スクリプトパスにスクリプトファイルを保存します。例えば、$HOME/houdiniX.Y/scripts
にスクリプトファイルを保存します。
スクリプトには、exitステートメントを記述してスクリプトを途中で終了させることができます。これは、すべてのループをきっちりと終了します。HScriptは、UNIXシェルの“exit status”の設定をサポートしていませんが、グローバル変数を使えば同じことができます。
スクリプトを実行する時には引数を渡して動作をカスタマイズすることができます。スクリプトファイルに引数を使用するには、$argn
変数を使います:
$arg0
はコールしたスクリプトの名前が設定されます。
$arg1, $arg2, $arg3,
などは、スクリプトに渡された引数が設定されます。
$argc
はスクリプトに渡された引数の数が設定されます。例えば、myscriptスクリプトに引数をfirst second thirdという引数を指定すると、$argcは3になります。
引数の変数の番号をもっと単純に取り扱うには、shiftコマンドを使用します。shiftコマンドは、最初の引数を除去して、残りの引数をシフトします。つまり、$arg2
だった引数が$arg1
になります。シフトの繰り返しによって$arg1
の値だけですべての引数を処理することができます。
readコマンドによってユーザからの入力を読み込むことも可能です。
スクリプトの実行 ¶
スクリプトパスにあるスクリプトを実行する場合は、スクリプト名(.cmdの拡張子を付けて)をタイプして、その後に引数を指定します。
myscript.cmd hello 15
ディスクから任意のスクリプトファイルを実行する場合は、 sourceコマンドとファイル名をタイプして、その後に引数を指定します。
source ~/myscript.cmd 1 10 hello
Houdiniのスクリプトパス ¶
HOUDINI_SCRIPT_PATH環境変数には、スクリプトを検索するディレクトリのリストが設定されています。そこには、$HFS/houdini/scripts
(Houdiniインストールで入ったスクリプト)、$HSITE/scripts
(サイトに特化したスクリプト)、$JOB/scripts
(ジョブに特化したスクリプト)、$HOME/houdniversion/scripts
(各ユーザのスクリプト)が含まれています。
スクリプトファイルがそのパスにあれば、Houdiniからその名前(.cmdの拡張子を付けて)をタイプすれば、そのスクリプトを実行することができます。
そのパスのディレクトリで後で見つかったスクリプトが最初に見つかった同じ名前のスクリプトを上書きします。この特徴を利用すれば、Houdiniに既に入っているスクリプト(123.cmd
など)を、あなたが作成したスクリプトを$HOME/houdniversion/scripts
に同じ名前で配置することで置換することができます。
イベントに反応してスクリプトを実行する ¶
起動時
$HFS/houdini/scripts/123.cmd
Houdiniを最初に起動すると、このスクリプトが実行されます。その後は、File > New
を選択しても二度と実行されません。このスクリプトには、たくさんのコードが含まれており、Houdiniの環境を初期化します(初期ジオメトリの読み込みを含む)。このファイルに何か変更を加えたい場合は、それをスクリプトパスのもっと後方で定義されたどこかのディレクトリ(例えば、$HOME/houdniversion/scripts
)にコピーし、修正します。123.cmd
はHoudini FX用のスタートアップスクリプトです。Halo、Alfredなどのほかのプロダクトは、scripts/下のそのプロダクト用の名前のスタートアップスクリプトを使用します。
Note
Houdini FXのみが123.cmd
を実行します。Houdini Coreは起動時に123.cmd
ではなくhoudinicore.cmd
を実行します。
123.cmd
とhoudinicore.cmd
は異なるプロダクトに対して行なわれること以外はどちらも同じ目的を果たします。
シーンファイルを開く、または、新しいシーンファイルの作成時
path/scripts/456.cmd
Houdiniが保存したシーンを開くと、このスクリプトが実行されます。このスクリプトは、Houdiniインストール時には、何も入っていません。スクリプトパスのどこか(例えば、$HOME/houdniversion/scripts
)にそのスクリプトを作成すれば、Houdiniはシーンを開く(File > New
を含む)度に、そのスクリプトを実行します。
ノードの作成時
$HFS/houdini/scripts/op_type/op_internal_name.cmd
ノードを作成すると、Houdiniはscriptsのサブディレクトリからそれに該当するスクリプトを実行します。
(いくつかのオペレータにはHoudiniインストール時に色々なタスクを実行するスクリプト(古いバージョンのHoudiniと互換性を維持するためのスクリプトを含む)があります。一方で他のオペレータにはスクリプトがありません。)
これはビルトインオペレータの動作をカスタマイズしたり、あなたが作成したカスタムオペレータ(デジタルアセット)を拡張するのに非常に役に立ちます。
スクリプトパスに適切なディレクトリと名前を設定したスクリプト(Box SOPを例にすると、$HOME/houdniversion/scripts/sop/box.cmd
)を新しく作成することで、そのノードを作成する時に、そのスクリプトを実行することができます。
オペレータの内部名を取得するには、Tools > Asset Manager
を選択して、 Internally defined operators から調べてください。
ノードの削除時
あるノードを削除した時に実行するスクリプトを設定するには、ノードのパラメータエディタのギアメニューから Edit deletion script を選択します。
これは、メインノードを削除した時に、それに関連するノードも削除されるカスタムオペレータを作成するときに役に立ちます。例えば、ビルトインのボーンオブジェクトには、ボーンが削除されるとkinematic solver CHOPなどのサポートノードを削除するスクリプトが設定されています。HScriptではopdelscriptコマンドを使ってノード用の削除スクリプトを設定することができます。デジタルアセットのイベントに関しては、デジタルアセットのスクリプトを参照してください。
選択時
Houdiniは、ユーザがビューア内で特定のオブジェクトを選択した時にカスタムスクリプトを実行することができます。オブジェクトのパラメータエディタの Misc タブにあるSelect Scriptパラメータを設定します。そのパラメータの値は、HScriptとして解釈されますが、外部スクリプトファイルをコールするように選択することもできます。SelectまたはPoseツールを使ってビューア内のオブジェクトを選択すると、Houdiniは、このスクリプトを実行します。ネットワークエディタからノードを選択したり、他のツールを使ってオブジェクトを選択してもスクリプトは実行されません。
この特徴を利用すれば、ユーザインターフェース(シーン内でクリックすれば何かを変更する“スイッチ”や“ボタン”などのオブジェクト)を作成したり、デバッグ(オブジェクトを選択すると、そのオブジェクトに関する情報がメッセージで表示される)することができます。
Houdiniは、選択したオブジェクトのコンテキストのスクリプトを実行します。opcf ..を使えば、選択したオブジェクトが存在するネットワークレベルに移動することができます。非常に役に立つ裏技の1つは、オブジェクトをクリックすると、他のオブジェクトのプロパティ(ディスプレイフラグなど)を設定するようにopsetコマンドを使用することです。例えば、“on”のNullをクリックするとオブジェクトグループが可視になり、“off”のNullをクリックするとオブジェクトが不可視になる単純なインターフェースを作成することができます。
Select Scriptでは以下の変数が利用可能で、それらを使ってスクリプトの動作を修正することができます。Select Scriptを設定したオブジェクトからそれらの変数の値を確認するには、Select Scriptにmesssageコマンドを使います。例えば、Select Scriptに以下のスクリプトを記述します:
Selection Scriptにスクリプトファイルを指定する場合:
message $SELECT_NAME
Selection Scriptに直接コードを記述する場合は“\\”でエスケープする必要があります:
{{{ message \$SELECT_NAME }}} オブジェクトを選択すると、Houdiniはオブジェクトの名前を表示したポップアップウィンドウを表示します。
SELECT_NAME
選択したオブジェクトの名前。SELECT_PATHは選択したオブジェクトのパス。
SELECT_SHIFT
, SELECT_ALT
, SELECT_CTRL
ユーザがオブジェクトを選択した時に修飾キー(⇧ Shift、Alt、⌃ Ctrl)が押されていれば、1に設定されます。
SELECT_MOVE
通常では、Select Scriptを実行中は、オブジェクトを直接ドラッグできません(スクリプトを実行するオブジェクトを選択して、ハンドルをドラッグする)。この変数をアンセットすると、Select Scriptを実行中にユーザが直接オブジェクトをドラッグできるようになります。
set -u SELECT_MOVE
SELECT_PICK
この変数をアンセットすると、このノードは、 選択解除 されます。 これは、ビューポート内で実行された選択をツールが無視できるようにスクリプトを変更する場合に必須です。
set -u SELECT_PICK
変数をアンセットするには、set -u varname
を使用します。
サンプルスクリプト ¶
実際に使用できるHScriptのサンプルを見てみましょう。
# Script for a guessing game (guess.cmd) # First, get a random seed set foo = `system(date)` set seed = `substr($foo, 14, 2)``substr($foo, 17, 2)` # Then, pick a random number set num = `int(rand($seed)*100)+1` set guess = -1 echo Guess a random number between 1 and 100. while ( "$guess" != "$num" ) echo -n Enter guess (q to quit): " read guess if ( "$guess" == q || "$guess" == "") then break; endif # Convert to a number set iguess = `atof($guess)` if ( $iguess < $num ) then echo Too low else if ( $iguess > $num ) then echo Too high else echo Spot on! endif end echo The number was $num
Houdiniに入っている役立つスクリプト ¶
123.cmd
Houdini FXを起動した時に実行されます。houdinicore.cmd
(以前はhescape.cmd
)はHoudini Coreと同じ目的で用意しています。イベントスクリプトを参照してください。
defaultscene.cmd
Houdiniを起動した時のデフォルトのシーンを作成します。イベントスクリプトを参照してください。
fixnodename.cmd
ノード名に対してプリフィックスとサフィックスの置換を実行します。
使用方法は、Textportで引数なしでfixnodenameとタイプしてください。
pickandcenter.cmd
オブジェクト名を引数として受け取り、ビューアの中心にオブジェクトを配置します。これは特定のオブジェクトを選択した時に実行されるように作られています。選択したオブジェクトに対してこのスクリプトをコールするには、Select Scriptにpickandcenter$OS
を使用します。
traverse.cmd
コマンドの名前を引数として受け取り、ノードとサブノード毎に再帰的にそのコマンドをコールします。
uniquename.cmd
基本となるオブジェクト名と変数名を引数として受け取り、名前を付けた変数をコマンドをコールするときに固有となるような名前(基本となるオブジェクト名+番号)に設定します。opadd
コマンドの-v
フラグを使えば、ノードを作成した後のノード名を取得することができます。
ホストシステムコマンドのコール ¶
ucd
とunix
コマンドを使うと、その言語のランタイムを外部プロセスとして起動することができます。
Houdiniは、グローバルHScript変数を外部プロセスに環境変数として渡し、そのstatus変数をコマンドの終了コードに設定します。
Houdiniには、通常のホストシステムコマンドをコールする専用のHScriptコマンドがあります。例えば、uls
はディレクトリの内容をリストし、urm
はファイルを削除し、upwd
は現行ディレクトリを表示します。WindowsのようなUNIX以外のシステムにコードを使えるようにするには、そのUNIXユーティリティ(ls,rm,pwdなど)と同等のHScriptコマンドを使用します。
現行ディレクトリを変更する |
ucd
|
現行ディレクトリを表示する |
upwd
|
ディレクトリの内容をリストする |
uls
|
新しいディレクトリを作成する |
umkdir
|
ファイルを削除する |
urm
|
ホストシステムコマンドを起動する |
unix
|
コマンドからビューアとビューポートを参照する方法 ¶
ビューアは、“desk.pane.type”という書式の名前を持っています:
-
desk = ビューアペインを含むデスクの名前。
-
pane = ビューアペインの名前。
-
type = ペインの内容に応じて“world”、“particle”、“texture”。
すべてのビューアのリストを見るには、“viewls -n”を使います。ビューア関連のコマンドのほとんどでは、同時に2つ以上のビューアを指定することができ、ビューア名にワイルドカードを使用することができます。
ビューアは4つのビューポート(例えば、top、left、front、perspective)に分割することができます。ビューポートは、“desk.pane.type.viewport”という書式の名前を持っています:
-
desk = ビューアペインを含むデスクの名前。
-
pane = ビューアペインの名前。
-
type = ペインの内容に応じて“world”、“particle”、“texture”。
-
viewport = ビューアペイン内のビューポートの名前。ビューポートのディスプレイオプションエディタのビューポートの名前を変更することができます。すべてのビューポートをリストするには、“viewls -n -v”(各ビューポートが存在するビューアが何か表示するには、“viewls -v”を使用)を使用します。
ビューポート関連コマンドのほとんどでは、同時に2つ以上のビューアを指定することができ、ビューア名にワイルドカードを使用することができます。ビューアの名前を使ってビューア内のすべてのビューポートを参照することができます。例えば、"viewcamera -c cam1 Build.panetab1.world.persp1 Build.panetab1.world.top1 ..."
の代わりに"viewcamera -c cam1 Build.panetab1.world.*"
または"viewcamera -c cam1 Build.panetab1.world"
を使用することができます。
ビューポート関連コマンドのほとんどは、ビューポートだけでなくビューメモリでも動作します。ビューメモリは、"desk.pane.type:memory"
の形式を持ち、memoryは1から9の番号または名前です。最初の3つのコンポーネント(desk name、pane name、type)にはワイルドカードを使うことができます。ビューメモリすべてをリストするには、viewls -n -l
を使用してください。
viewlayout
コマンドは、ビューアペインのビューポートの数とレイアウトを設定します。
HScriptの役立つ情報と豆知識 ¶
-
TextportでHoudiniが内部的に実行するHScriptコマンドを出力するには、commandecho onを使用します。
-
Houdiniで使用できるコマンドの最大の行長さは、すべての展開を含めて8 KBです。
-
コマンドラインで使用できる引数の最大数は1024個です。
-
1個のソースファイル内のifステートメントでネスト化できる最大数は、128個です。
-
ソースファイルの最大容量は、ファイルを開くシステムの制限に依存します。
-
ループのネストには制限はありません。