最終更新: houndini16 2018年03月18日(日) 17:37:02履歴
http://www.sidefx.com/docs/houdini/commands/_guide...
HScript言語ガイド
HScriptコマンドのリスト
変数
HScriptでは、setコマンドを使用して文字列を変数に割り当てることができます。
変数を設定する
set x = "hello"
グローバル変数を設定する
set -g x = "hello"
または
setenv x = "hello"
変数の設定を解除する
set -u x
変数名は、文字またはアンダースコア(_)で始まり、任意の数の文字、数字またはアンダースコアが続く必要があります。
コマンドで変数を使用するには、その名前の前にドル記号($)を付けます。
必要に応じて、変数の名前を中括弧({})で囲んで、変数名が周囲のテキストに重ならないようにすることができます。
さらに、中括弧を使用すると、HScriptはその値を参照する前に変数参照を展開します。これにより、単純な配列をシミュレートすることができます。
set foo1 = Padma
set foo2 = Mohammed
i = 1〜2 echo $ {foo $ i} end
パドマ
モハメッド
HScriptでは、変数はローカル変数またはグローバル変数(システム変数と呼ばれることもあります)です。
ローカル変数は実行されているスクリプトに対してローカルです。スクリプトが終了すると、変数は消えます。ローカル変数は、定義されているスクリプトの外では使用できません。ローカル変数を作成または設定するには、を使用しますset。forandで作成される変数foreachは常にローカルです。
グローバル変数は、すべてのスクリプトやHoudiniが開始したプログラムで使用できます。グローバル変数を作成または設定するには、setenvまたはを使用しますset -g。
可変修飾子
変数名の最後に修飾子を追加すると、戻り値を編集できます。これらの修飾子は、変数に格納された値を変更しません。修飾子を使用して変数参照によって返される値のみを変更します。
変数値を変更するには、変数名の最後に追加します。例えば::code
利用可能なコードは次のとおりです。
:h
(Head)パス名のパス部分(つまり、ファイル名までのパス)。
:t
(テール)パス名のfilname部分だけ。
:e
ファイル名の最後の拡張子。
:r
(ルート)拡張子を除くパス名のすべての部分。
:s/ptrn/repl/
パターンの代替出現PTRNでREPL。参照:gして:a、以下の修飾子を。
:u
値を大文字に変換します。参照:gして:a、以下の修飾子を。
:l
値を小文字に変換します。参照:gして:a、以下の修飾子を。
コードの動作を変更するには、次の接頭辞を使用します。
:g
(グローバル)文字列を空白で区切られた文字列のリストとして扱い、次のコードを各コンポーネントに個別に適用します。
:a
(All)次のコードをできるだけ繰り返し再帰的に適用します。
例えば:
集合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は:あなたは:= "" 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 / ==
式関数とは異なり、HScriptコマンドは関数ではなく、戻り値もありません。彼らは単にテキストポートに出力を印刷します。コマンドの結果を変数に代入しようとすると、次のようになります。
オブジェクトを設定する= opls / obj
...文字列"opls /obj"を$objects変数に入れるだけです。ただし、コマンドの出力を文字列として取り込み、変数に格納して同じ効果を得ることができます。コマンドの出力をキャプチャするには、実行式関数内に配置し、逆引用符を使用してHScriptの式を評価します。本質的には、HScriptの中でHScriptを呼び出して(戻り値を得るために)表現します。
set objects = `run(" opsls / obj ")`
エコー$オブジェクト
モデルambient1 light1 light2 light3 cam1
コマンドの出力をファイルにリダイレクトする
HScriptコマンドの出力をファイルにリダイレクトするに>filenameは、コマンドで使用します。上書きするのではなくファイルに追加するには、を使います>>filename。エラー出力とコマンドの標準出力をリダイレクトするには、を使用します>&filename。
unixコマンドを使用して外部プロセスを起動する場合は、テキストポートではなく外部シェルでリダイレクトを行うことができます。外側のシェルが認識できるようになる前に、Houdiniコマンドインタープリターがリダイレクトに作用しないように、引数を一重引用符で囲みます。
unix myscript.pl '> output.txt'
制御構造
if
if文は、条件が真であれば、コマンドブロックを実行します。オプションでelse ifで代替条件をテストし、他のすべての条件がelseで失敗した場合はコードブロックを実行できます。
もしcondition1 [then]
例えば:
if($ F == 1)ならば
現在、if文節内のステートメントは別々の行になければなりません。つまり、好きな文if ($F == 1) echo Frame Oneはうまくいきません。
ために
forステートメントは、必要に応じて特定のステップにより、エンド番号に開始番号から「カウンタ」変数をインクリメント、文のブロックをループ。
for count_variable =開始する[step stepsize]
for文にcount変数の名前の前に$を追加しないでください。例えば:
i = 1~3の場合
i = 1〜100までステップ3
foreach
foreach声明は、リスト内の次の要素たびに変数を設定し、ステートメントのブロックをループします。
foreach iterator_variable(list_string)
例えば:
foreach i(abc)
foreachオブジェクト( `run(" opls -d ")`)
HScriptには実際のリストや配列型はありません。ループする各文のリストは、コマンドラインを引数として解析するのと同じ方法でHScriptが要素に分割する文字列です。HScriptがコマンドラインを分割する方法を参照してください。
while
while文は長い条件が真であるとして、文のブロックをループします。一方、条件がtrueの間ループする条件コマンドend例:
i = 0に設定する
一方、($ i <10)
中断/継続
breakステートメントは、現在のループを途中で終了します。continue文は、ループの現在の繰り返しを早期に終了し、次のループを開始します。
条件演算子
ifおよびwhile構造体では、次の演算子を使用できます。
()
グループ化、優先度。
== != < > <= >=
比較:等しい、等しくない、より小さい、より大きい、より小さいまたはより大きい、より大きい、または等しい。
&& ||
論理、論理、または。
明確にするために、HScript式をかっこで囲むことはできますが、必ずしもそうする必要はありません。
i = 1~10の場合
...
終わり
for(i = 1~10)
...
終わり
引用符付きの文字列
一重引用符(')内のテキストは展開されません。
二重引用符(")内のテキストには変数が展開されています。
二重引用符で囲まれた文字列は1つの引数とみなされます。
バックスラッシュ文字(\\)は次の文字をエスケープします。例えば、文字列に二重引用符を使用するには:"I had a \\"great\\" time."。
文字列に変数展開が必要ない場合は、評価を高速化するためにシングルクォートを使用します。
2つの引用符で囲まれた文字列の隣に空白がない場合、それらは単一の引数とみなされます。
例えば:
set foo = "Hello world"
echo '$ foo =' "$ foo"
$ foo = Hello world
... echoコマンドには1つの引数があります:'$foo=Hello world'。
HScriptは二重引用符よりも優先度の高い逆引用符を評価します。二重引用符で囲まれた引数が引用符で囲まれた文字列を囲む場合、最初の二重引用符区切り文字を終了することなく、二重引用符を含むことがあります。
たとえば、次の文字列。
foo`ch( "/ obj / geo1 / tx") `
...は単一の引数とみなされます。
原則として、バッククォートとその内部にはスペースを入れないでください。余分なスペースがある場合、Houdiniはそれらを評価しないかもしれません。
コメント
#行の文字の後に続くものはすべて、コメントとみなされます。#コメントを開始せずに引用符で囲まれていない文字列にリテラルを使用するには、その\\前にバックスラッシュ()を入れます。
コマンドラインの分割
Houdiniは、入力行をスペース文字で単語に分割します。特殊文字; < > ( ) =は別々の単語を形成し、Houdiniはこれらの文字の周りにスペースを挿入します。HScriptは引数について非常に甘いです。基本的にコマンドやオプションとして理解できないものはすべて文字列として扱われます。これは、何かの周りに引用符を付ける必要がないときに、引用の複数のレベルを簡単にするときに便利です。ただし、引用符で囲まれていない文字列には特殊文字の周囲に余分なスペースを挿入することがあります。
原則として、HScriptが変更したくない文字列を引用符で囲む必要があります。
HScriptのテキストポートを使用する
テキストポートを使用すると、HScriptコマンドを入力して結果を見ることができます。新しいテキストポートウィンドウを開くには、を選択しますWindows > HScript textport。ペインにテキストポートを配置するには、ペインのペインメニューを開き、テキストポートを選択します。
クイックコピーアンドペースト:テキストを選択してからクリックMMBすると、すぐにコマンドラインに貼り付けられます。
クイックヘルプ:コマンドのオンラインヘルプのテキスト版をテキストポートに出力するには、help command_nameと入力します。
先行入力:Houdiniが現在のコマンドの実行を終了する前に、新しいコマンドの入力を開始できます。フーディーニは、完了したら "バッファリングされた"コマンドを実行します。
スクロール:Page UpとPage Downを使用してスクロールするか、を押し人民元てウィンドウの内容を取得してドラッグします。
継続:Enter終了していないコマンドライン(たとえば、forループの途中)を押すと、終了ブロックを終了するまでコマンドラインが継続します。
コマンド履歴
コマンドラインで前のコマンドを呼び出す
↑と↓を押して、前のコマンドの履歴を移動します。リコールされたコマンドの実行前にテキストを編集することができます。
最後のコマンドを繰り返します。
タイプ!! コマンドラインで
前のコマンドを繰り返します
コマンド行に!-numと入力すると、numエントリ前からコマンドが実行されます。たとえば!-5、5番目に新しいコマンドを繰り返すと入力します。
パターンに一致する最後のコマンドを繰り返します。
文字列を含む前のコマンドを実行するには、コマンドラインに!stringを入力します。
コマンド履歴を表示する
コマンド履歴を出力するには、historyコマンドを使用します。
一般的に使用されるコマンドのエイリアスを作成する
HScriptでは、aliasコマンドを使用して、新しいコマンド名に頻繁に使用されるコマンド(多くの場合引数付き)を割り当てることができます。たとえば、シーン内のオブジェクトの名前を頻繁に表示する必要があるとわかった場合は、より短く簡単にエイリアスを入力するようにコマンドを割り当てることができますobjs。
エイリアスobjs "opls / obj"
コマンドラインにobjsと入力すると、opls / objが実行されます。
HScriptのエイリアス展開は洗練されていませんcsh。たとえば、再帰的エイリアス展開はありません。次のコマンドシーケンスは期待される結果を生成しません。
別名opcd opcf
エイリアスcd opcd
CDエイリアスはunknown command "opcd"、エイリアス展開が最初の展開後に終了するため、メッセージを生成します。
また、HScriptのエイリアス展開には、ヒストリのメタ文字置換機能は含まれていませんcsh。
hscriptスタンドアロンアプリケーション
hscriptアプリケーションがです$HFS/bin。システムコマンドラインで実行すると、HScriptコマンドを実行して結果を見ることができるテキストポートに似たコンソールが表示されます。
hscriptアプリケーションを使用すると、グラフィカルインタフェース全体を起動することなく、Houdiniのフルパワーを実行するバッチスクリプトを作成できます。
hscript -qコマンドラインで、ユーティリティの起動時に通常印刷されるバージョン情報を抑止するために使用します。これは、hscriptスタンドアロンプロセスの出力をリダイレクトするときに便利です。
スクリプトファイルの作成と使用
コマンドのグループをスクリプトファイルにカプセル化して、その機能を再利用することができます。実行するコマンドを含むテキストファイルを作成するだけです。一般的には、スクリプトファイルをスクリプトパスに保存することをお勧めします$HOME/houdiniversion/scripts。
スクリプトでは、exitステートメントを使用してスクリプトを早期に終了することができます。これにより、すべてのループがきれいに終了します。HScriptは、UNIXシェルのような「終了ステータス」の設定をサポートしていませんが、グローバル変数を使用して同じことを達成できます。
スクリプトを実行してその動作をカスタマイズするときに、引数をスクリプトに渡すことができます。スクリプトファイルで引数を使用するには、$argn変数を使用します。
$arg0 呼び出されたときのスクリプトの名前に設定されます。
$arg1, $arg2, $arg3, 等は、スクリプトに渡される引数に設定されます。
$argcスクリプトに渡される引数の数に設定されます。たとえば、スクリプトがmyscriptの最初の2番目の3番目の引数(3つの引数)で呼び出された場合、$ argcは3です。
コマンドラインの構文解析を簡単に行うため、または可変数の引数を扱うには、shiftコマンドを使用します。シフト命令は、最初の引数を削除し、残りのすべての引数をシフトダウン、そう$arg1だったものになりました$arg2。したがって、値を処理してからすべての引数を反復し$arg1、次の引数を移動するためにshiftを呼び出すことができます$arg1。
readコマンドでユーザーからの入力を読み取ることもできます。
スクリプトを実行する
スクリプトパスでスクリプトを実行します。myscript.cmd hello 15ディスクから任意のスクリプトファイルを実行します。スクリプト名を入力します(拡張子は.cmd)。sourceコマンドとファイル名のあとに引数を使用します。
source〜/ myscript.cmd 1 10こんにちは
Houdiniスクリプトのパス
環境変数HOUDINI_SCRIPT_PATHには、スクリプトを検索するディレクトリのリストが含まれています。これには$HFS/houdini/scripts(工場出荷時にインストールされたスクリプトの場合)、$HSITE/scripts(サイト固有のスクリプトの場合)、$JOB/scripts(ジョブ固有のスクリプト用の)、$HOME/houdniversion/scripts(各ユーザーのスクリプト用の)が含まれます。
スクリプトファイルがパスにある場合、Houdiniにその名前(拡張子は.cmd)を入力してスクリプトを実行できます。
パスの後のディレクトリにあるスクリプトは、パスの前の同じ名前のスクリプトを上書きします。この機能を使用して、工場出荷時にインストールされたスクリプト(たとえば123.cmd)を独自のスクリプトで置き換えることができます$HOME/houdniversion/scripts。
イベントに応じてスクリプトを実行する
起動
$HFS/houdini/scripts/123.cmd
Houdiniは最初に起動するときにこのスクリプトを実行します。あなたが選択した場合、それは再び実行されませんFile > New。このスクリプトには、最初のHoudini環境を設定するための多くのコードが含まれています(初期ジオメトリの読み込みを含む)。このファイルの中の何かを変更したい場合は、そのファイルをスクリプトパスのどこかにコピーして(たとえば$HOME/houdniversion/scripts)コピーしてそのコピーを変更する必要があります。123.cmdHoudini FXの起動スクリプトです。Halo、Alfredなどの他の製品は、スクリプトで別々のスタートアップスクリプトを使用します。
注意
Houdini FXのみが動作し123.cmdます。起動時ではhoudinicore.cmd なく、Houdini Coreが動作し123.cmdます。どちらも 同じ目的123.cmdをhoudinicore.cmd果たしますが、異なる製品に役立ちます。
新しいシーンファイルを開くか作成する
path/scripts/456.cmd
Houdiniは保存されたシーンを開いた後にこのスクリプトを実行します。このスクリプトは工場出荷時には存在しません。スクリプトパスのどこかに作成すると(例えば、$HOME/houdniversion/scripts)、Houdiniはonを含む新しいシーンが開くたびにスクリプトを実行しますFile > New。
ノードを作成する
$HFS/houdini/scripts/op_type/op_internal_name.cmd
ノードを作成すると、Houdiniはスクリプト/のサブディレクトリに対応するスクリプトを実行します。
(一部のオペレータには、Houdiniの旧バージョンからのシーンファイルとの互換性を保つなど、さまざまなタスクを実行するスクリプトが工場出荷時にインストールされていますが、他のオペレータにはスクリプトはありません)。
これは、組み込み演算子の動作をカスタマイズする場合や、作成したカスタム演算子(デジタルアセット)を強化する場合に非常に便利です。
$HOME/houdniversion/scripts/sop/box.cmdオペレータでノードを作成するときにHoudiniにスクリプトを実行させるには、適切なディレクトリ構造とスクリプトパスの名前(たとえば、Box SOP)を使用して新しいスクリプトを作成できます。
演算子の内部名を取得するには、内部定義演算子を選択Tools > Operator Type Managerして見てください。
ノードを削除する
特定のノードが削除されたときにスクリプトを実行するように設定するには、ノードのパラメータエディタでギアメニューをクリックし、削除スクリプトの編集を選択します。
これは、メインノードが削除された場合に削除したいノードが関連付けられているカスタム演算子を作成する場合に便利です。たとえば、組み込みのボーンオブジェクトには、ボーンが削除された場合にキネマティックソルバーCHOPなどのサポートノードを削除する削除スクリプトがあります。opdelscriptコマンドを使用して、HScriptのノードの削除スクリプトを設定できます。デジタル資産イベントデジタル資産のスクリプトを参照してください。
スクリプトを選択
Houdiniでは、ユーザーがビューア内の特定のオブジェクトを選択すると、カスタムスクリプトを実行できます。オブジェクトの[スクリプトの選択] パラメータを[ その他 ]タブで設定します。パラメータの値はHScriptと解釈されますが、外部スクリプトファイルを呼び出すこともできます。Houdiniは、選択ツールまたはポーズツールでビューア内のオブジェクトを選択すると、このスクリプトを実行します。ネットワークエディタでノードを選択するか、別のツールを使用する際にオブジェクトを選択すると実行されません。
この機能には、ユーザーインターフェイス(シーンをクリックすると変更される「スイッチ」や「ボタン」オブジェクトなど)やデバッグ(オブジェクトを選択したときにそのオブジェクトに関する情報をポップアップ表示するなど)が含まれます。
Houdiniは、選択されたオブジェクトのコンテキストでスクリプトを実行します。opcf ..を使用して、選択したオブジェクトが存在するネットワークレベルまで移動します。非常に便利な方法の1つは、オブジェクトをクリックしたときにopsetコマンドを使用して他のオブジェクトのプロパティ(表示フラグなど)を設定することです。たとえば、「オン」のNullをクリックするとオブジェクトのグループが表示され、「オフ」のNullをクリックするとオブジェクトが非表示になる単純なインターフェイスを作成できます。
Houdiniは、これらの変数をselectスクリプトで使用できるようにします。それらを使用して、スクリプトの動作を変更することができます。特定のオブジェクトのこれらの変数の値を確認するには、選択スクリプトでmessageコマンドを使用します。たとえば、オブジェクトのスクリプト選択パラメータに次のスクリプトを挿入するとします。
メッセージ$ SELECT_NAME
...オブジェクトを選択すると、Houdiniはオブジェクトの名前を示すウィンドウを表示します。
SELECT_NAME
選択されたオブジェクトの名前。SELECT_PATH選択したオブジェクトへのパス。
SELECT_SHIFT、SELECT_ALT、SELECT_CTRL
これらの変数を1に設定すると、ユーザーがオブジェクトを選択したときに対応する修飾キーが押されたことを意味します。
SELECT_MOVE
通常、オブジェクト上の選択スクリプトは、オブジェクトを直接ドラッグできないようにします(オブジェクトを選択する必要があります。オブジェクトを選択すると、スクリプトがトリガーされ、ハンドルがドラッグされます)。この変数を設定解除すると、選択スクリプトの実行中にオブジェクトを直接ドラッグできます。
SELECT_PICK
このノードを選択しないようにするには、この変数の設定を解除します。
変数を設定解除するには、を使用します。set -u varname
スクリプト例
現実世界のHScriptの例については、Houdiniに含まれているスクリプトを見てみることもできます。
#推測ゲームのスクリプト(guess.cmd)
#まず、ランダムな種を得る
set foo = `システム(日付)`
set seed = `substr($ foo、14、2)` `substr($ foo、17,2)`
#次に、乱数を選ぶ
num = `int(rand($ seed)* 100)+ 1`をセットする
推測= -1を設定する
echo 1と100の間の乱数を推測します。
while( "$ guess"!= "$ num")
echo数値は$ numでした
Houdiniに含まれる便利なスクリプト
123.cmd
Houdini FXが起動すると実行されます。houdinicore.cmd(旧hescape.cmd)は、Houdini Coreの目的と同じように機能します。イベントスクリプトを参照してください。
defaultscene.cmd
fixnodename.cmd
ノード名に接頭辞および接尾辞の置換を実行します。
引数なしでテキストポートにfixnodenameと入力すると、その使用法が表示されます。
pickandcenter.cmd
引数としてオブジェクト名をとり、そのオブジェクトをビューアの中央に配置します。これは、特定のオブジェクトを選択するたびに実行されることを意図しています。$OS選択スクリプトとしてpickandcenter を使用して、選択したオブジェクトでこのスクリプトを呼び出します。
traverse.cmd
コマンドの名前を引数とし、すべてのノードおよびサブノードでそのコマンドを再帰的に呼び出します。
uniquename.cmd
引数として基本オブジェクト名と変数名をとり、名前付き変数に、コマンドが呼び出された時点で一意であることが保証されている名前(基本オブジェクト名+番号で構成された名前)を設定します。コマンドの-vフラグを使用してopadd、ノードの作成後にノードの名前を取得することもできます。
ホストシステムコマンドを呼び出す
ucdand unixコマンドを使用して、言語のランタイムを外部プロセスとして開始します。
HoudiniはすべてのグローバルHScript変数を環境変数として外部プロセスに渡し、ステータス変数をコマンドの終了コードに設定します。
Houdiniにはuls、ディレクトリの内容を一覧表示urmしたり、ファイルを削除したりupwd、現在のディレクトリを印刷するなど、一般的なホストシステムコマンドを呼び出す専用のHScriptコマンドが含まれています。コードをWindowsなどのUNIX以外のシステムに移植するには、同等のUNIXユーティリティ(ls、rm、pwdなど)を明示的に呼び出す代わりに、これらのHScriptコマンドを使用します。
現在のディレクトリを変更する ucd
現在のディレクトリを表示する upwd
ディレクトリの内容を一覧表示する uls
新しいディレクトリを作成する umkdir
ファイルを削除する urm
ホストシステムコマンドを開始する unix
コマンドでのビューアとビューポートの参照
ビューアの名前は、 "desk.pane.type"という形式です。
desk =ビューアペインを含む机の名前。
pane =ビューアペインの名前。
ペインの内容に応じてtype = "world"、 "particle"、または "texture"
すべてのビューアのリストを表示するには、 "viewls -n"を使用します。ほとんどのビューア関連コマンドでは、一度に複数のビューアを指定したり、ビューア名にワイルドカードを使用することができます。
ビューアは、4つまでのビューポート(上、左、前、およびパースペクティブなど)に細分することができます。ビューポートの名前は、 "desk.pane.type.viewport"の形式になっています。
desk =ビューアペインを含む机の名前。
pane =ビューアペインの名前。
ペインの内容に応じてtype = "world"、 "particle"、または "texture"
viewport =ビューアペイン内のビューポートの名前。ビューポートの表示オプションエディタで、ビューポートの名前を変更することができます。すべてのビューポートを一覧表示するには、 "viewls -n -v"(各ビューポートのビューアを表示するには、 "viewls -v"を使用します)を使用します。
ほとんどのビューポート関連コマンドでは、一度に複数のビューアを指定したり、ビューア名にワイルドカードを使用したりできます。ビューアの名前を使用して、ビューア内のすべてのビューポートを参照することもできます。代わりに、たとえば"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"メモリは、メモリが1〜9の数字または名前であるフォーマットを有する。最初の3つのコンポーネント(デスク名、ペイン名、タイプ)はワイルドカードを持つことができます。すべてのビューメモリをリストするには、を使いますviewls -n -l。
このviewlayoutコマンドは、ビューアペインでビューポートの数とレイアウトを制御します。
HScriptのヒント
commandecho onを使用して、Houdiniがテキストポートで内部的に実行するHScriptコマンドを印刷するようにします。
Houdiniコマンドの最大行長は、すべての展開後に8 KBです。
コマンドライン上の引数の最大数は1024です。
1つのソースファイル内のネストされたif文の最大数は128です。
ソースファイルの最大数は、オープンファイルのシステム制限によって制限されます。
ネストされたループの制限はありません。
HScript言語ガイド
HScriptコマンドのリスト
変数
HScriptでは、setコマンドを使用して文字列を変数に割り当てることができます。
変数を設定する
set x = "hello"
グローバル変数を設定する
set -g x = "hello"
または
setenv x = "hello"
変数の設定を解除する
set -u x
変数名は、文字またはアンダースコア(_)で始まり、任意の数の文字、数字またはアンダースコアが続く必要があります。
コマンドで変数を使用するには、その名前の前にドル記号($)を付けます。
set foo = "bar" echo $ fooバー
必要に応じて、変数の名前を中括弧({})で囲んで、変数名が周囲のテキストに重ならないようにすることができます。
echo $ {foo} baz野蛮人
さらに、中括弧を使用すると、HScriptはその値を参照する前に変数参照を展開します。これにより、単純な配列をシミュレートすることができます。
set foo1 = Padma
set foo2 = Mohammed
i = 1〜2 echo $ {foo $ i} end
パドマ
モハメッド
HScriptでは、変数はローカル変数またはグローバル変数(システム変数と呼ばれることもあります)です。
ローカル変数は実行されているスクリプトに対してローカルです。スクリプトが終了すると、変数は消えます。ローカル変数は、定義されているスクリプトの外では使用できません。ローカル変数を作成または設定するには、を使用しますset。forandで作成される変数foreachは常にローカルです。
グローバル変数は、すべてのスクリプトやHoudiniが開始したプログラムで使用できます。グローバル変数を作成または設定するには、setenvまたはを使用しますset -g。
可変修飾子
変数名の最後に修飾子を追加すると、戻り値を編集できます。これらの修飾子は、変数に格納された値を変更しません。修飾子を使用して変数参照によって返される値のみを変更します。
変数値を変更するには、変数名の最後に追加します。例えば::code
set afile = /home/matt/bin/foo.bar echo $ afile:eバー
echo $ {afile:e}バー
利用可能なコードは次のとおりです。
:h
(Head)パス名のパス部分(つまり、ファイル名までのパス)。
echo $ {afile:h}/ home / matt / bin
:t
(テール)パス名のfilname部分だけ。
echo $ {afile:t}foo.bar
:e
ファイル名の最後の拡張子。
echo $ {afile:e}バー
:r
(ルート)拡張子を除くパス名のすべての部分。
echo $ {afile:r}/ home / matt / bin / foo
:s/ptrn/repl/
パターンの代替出現PTRNでREPL。参照:gして:a、以下の修飾子を。
echo $ {afile:s} / foo / baz //home/matt/bin/baz.bar
:u
値を大文字に変換します。参照:gして:a、以下の修飾子を。
set str =こんにちは エコー$ {str:u}こんにちは
:l
値を小文字に変換します。参照:gして:a、以下の修飾子を。
set str =こんにちは echo $ {str:l}こんにちは
コードの動作を変更するには、次の接頭辞を使用します。
:g
(グローバル)文字列を空白で区切られた文字列のリストとして扱い、次のコードを各コンポーネントに個別に適用します。
:a
(All)次のコードをできるだけ繰り返し再帰的に適用します。
例えば:
集合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は:あなたは:= "" 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コマンドは関数ではなく、戻り値もありません。彼らは単にテキストポートに出力を印刷します。コマンドの結果を変数に代入しようとすると、次のようになります。
オブジェクトを設定する= opls / obj
...文字列"opls /obj"を$objects変数に入れるだけです。ただし、コマンドの出力を文字列として取り込み、変数に格納して同じ効果を得ることができます。コマンドの出力をキャプチャするには、実行式関数内に配置し、逆引用符を使用してHScriptの式を評価します。本質的には、HScriptの中でHScriptを呼び出して(戻り値を得るために)表現します。
set objects = `run(" opsls / obj ")`
エコー$オブジェクト
モデルambient1 light1 light2 light3 cam1
コマンドの出力をファイルにリダイレクトする
HScriptコマンドの出力をファイルにリダイレクトするに>filenameは、コマンドで使用します。上書きするのではなくファイルに追加するには、を使います>>filename。エラー出力とコマンドの標準出力をリダイレクトするには、を使用します>&filename。
unixコマンドを使用して外部プロセスを起動する場合は、テキストポートではなく外部シェルでリダイレクトを行うことができます。外側のシェルが認識できるようになる前に、Houdiniコマンドインタープリターがリダイレクトに作用しないように、引数を一重引用符で囲みます。
unix myscript.pl '> output.txt'
制御構造
if
if文は、条件が真であれば、コマンドブロックを実行します。オプションでelse ifで代替条件をテストし、他のすべての条件がelseで失敗した場合はコードブロックを実行できます。
もしcondition1 [then]
conditionがtrueの場合に実行するコマンドelse if条件2
condition2がtrueの場合に実行するコマンドelse
そうでなければ実行するコマンドエンドフ
例えば:
if($ F == 1)ならば
エコーフレーム1else
エコーフレームなしエンドフ
現在、if文節内のステートメントは別々の行になければなりません。つまり、好きな文if ($F == 1) echo Frame Oneはうまくいきません。
ために
forステートメントは、必要に応じて特定のステップにより、エンド番号に開始番号から「カウンタ」変数をインクリメント、文のブロックをループ。
for count_variable =開始する[step stepsize]
ループするコマンド終わり
for文にcount変数の名前の前に$を追加しないでください。例えば:
i = 1~3の場合
エコー$ i終わり
i = 1〜100までステップ3
エコー$ i終わり
foreach
foreach声明は、リスト内の次の要素たびに変数を設定し、ステートメントのブロックをループします。
foreach iterator_variable(list_string)
ループするコマンド終わり
例えば:
foreach i(abc)
エコー$ i終わり
foreachオブジェクト( `run(" opls -d ")`)
エコーオブジェクト$ object終わり
HScriptには実際のリストや配列型はありません。ループする各文のリストは、コマンドラインを引数として解析するのと同じ方法でHScriptが要素に分割する文字列です。HScriptがコマンドラインを分割する方法を参照してください。
while
while文は長い条件が真であるとして、文のブロックをループします。一方、条件がtrueの間ループする条件コマンドend例:
i = 0に設定する
一方、($ i <10)
i = `$ i + 1`をセットする エコー$ i終わり
中断/継続
breakステートメントは、現在のループを途中で終了します。continue文は、ループの現在の繰り返しを早期に終了し、次のループを開始します。
条件演算子
ifおよびwhile構造体では、次の演算子を使用できます。
()
グループ化、優先度。
== != < > <= >=
比較:等しい、等しくない、より小さい、より大きい、より小さいまたはより大きい、より大きい、または等しい。
&& ||
論理、論理、または。
明確にするために、HScript式をかっこで囲むことはできますが、必ずしもそうする必要はありません。
i = 1~10の場合
...
終わり
for(i = 1~10)
...
終わり
引用符付きの文字列
一重引用符(')内のテキストは展開されません。
二重引用符(")内のテキストには変数が展開されています。
二重引用符で囲まれた文字列は1つの引数とみなされます。
バックスラッシュ文字(\\)は次の文字をエスケープします。例えば、文字列に二重引用符を使用するには:"I had a \\"great\\" time."。
文字列に変数展開が必要ない場合は、評価を高速化するためにシングルクォートを使用します。
2つの引用符で囲まれた文字列の隣に空白がない場合、それらは単一の引数とみなされます。
例えば:
set foo = "Hello world"
echo '$ foo =' "$ foo"
$ foo = Hello world
... echoコマンドには1つの引数があります:'$foo=Hello world'。
HScriptは二重引用符よりも優先度の高い逆引用符を評価します。二重引用符で囲まれた引数が引用符で囲まれた文字列を囲む場合、最初の二重引用符区切り文字を終了することなく、二重引用符を含むことがあります。
たとえば、次の文字列。
foo`ch( "/ obj / geo1 / tx") `
...は単一の引数とみなされます。
原則として、バッククォートとその内部にはスペースを入れないでください。余分なスペースがある場合、Houdiniはそれらを評価しないかもしれません。
コメント
#行の文字の後に続くものはすべて、コメントとみなされます。#コメントを開始せずに引用符で囲まれていない文字列にリテラルを使用するには、その\\前にバックスラッシュ()を入れます。
コマンドラインの分割
Houdiniは、入力行をスペース文字で単語に分割します。特殊文字; < > ( ) =は別々の単語を形成し、Houdiniはこれらの文字の周りにスペースを挿入します。HScriptは引数について非常に甘いです。基本的にコマンドやオプションとして理解できないものはすべて文字列として扱われます。これは、何かの周りに引用符を付ける必要がないときに、引用の複数のレベルを簡単にするときに便利です。ただし、引用符で囲まれていない文字列には特殊文字の周囲に余分なスペースを挿入することがあります。
原則として、HScriptが変更したくない文字列を引用符で囲む必要があります。
HScriptのテキストポートを使用する
テキストポートを使用すると、HScriptコマンドを入力して結果を見ることができます。新しいテキストポートウィンドウを開くには、を選択しますWindows > HScript textport。ペインにテキストポートを配置するには、ペインのペインメニューを開き、テキストポートを選択します。
クイックコピーアンドペースト:テキストを選択してからクリックMMBすると、すぐにコマンドラインに貼り付けられます。
クイックヘルプ:コマンドのオンラインヘルプのテキスト版をテキストポートに出力するには、help command_nameと入力します。
先行入力:Houdiniが現在のコマンドの実行を終了する前に、新しいコマンドの入力を開始できます。フーディーニは、完了したら "バッファリングされた"コマンドを実行します。
スクロール:Page UpとPage Downを使用してスクロールするか、を押し人民元てウィンドウの内容を取得してドラッグします。
継続:Enter終了していないコマンドライン(たとえば、forループの途中)を押すと、終了ブロックを終了するまでコマンドラインが継続します。
コマンド履歴
コマンドラインで前のコマンドを呼び出す
↑と↓を押して、前のコマンドの履歴を移動します。リコールされたコマンドの実行前にテキストを編集することができます。
最後のコマンドを繰り返します。
タイプ!! コマンドラインで
前のコマンドを繰り返します
コマンド行に!-numと入力すると、numエントリ前からコマンドが実行されます。たとえば!-5、5番目に新しいコマンドを繰り返すと入力します。
パターンに一致する最後のコマンドを繰り返します。
文字列を含む前のコマンドを実行するには、コマンドラインに!stringを入力します。
コマンド履歴を表示する
コマンド履歴を出力するには、historyコマンドを使用します。
一般的に使用されるコマンドのエイリアスを作成する
HScriptでは、aliasコマンドを使用して、新しいコマンド名に頻繁に使用されるコマンド(多くの場合引数付き)を割り当てることができます。たとえば、シーン内のオブジェクトの名前を頻繁に表示する必要があるとわかった場合は、より短く簡単にエイリアスを入力するようにコマンドを割り当てることができますobjs。
エイリアスobjs "opls / obj"
コマンドラインにobjsと入力すると、opls / objが実行されます。
HScriptのエイリアス展開は洗練されていませんcsh。たとえば、再帰的エイリアス展開はありません。次のコマンドシーケンスは期待される結果を生成しません。
別名opcd opcf
エイリアスcd opcd
CDエイリアスはunknown command "opcd"、エイリアス展開が最初の展開後に終了するため、メッセージを生成します。
また、HScriptのエイリアス展開には、ヒストリのメタ文字置換機能は含まれていませんcsh。
hscriptスタンドアロンアプリケーション
hscriptアプリケーションがです$HFS/bin。システムコマンドラインで実行すると、HScriptコマンドを実行して結果を見ることができるテキストポートに似たコンソールが表示されます。
hscriptアプリケーションを使用すると、グラフィカルインタフェース全体を起動することなく、Houdiniのフルパワーを実行するバッチスクリプトを作成できます。
hscript -qコマンドラインで、ユーティリティの起動時に通常印刷されるバージョン情報を抑止するために使用します。これは、hscriptスタンドアロンプロセスの出力をリダイレクトするときに便利です。
スクリプトファイルの作成と使用
コマンドのグループをスクリプトファイルにカプセル化して、その機能を再利用することができます。実行するコマンドを含むテキストファイルを作成するだけです。一般的には、スクリプトファイルをスクリプトパスに保存することをお勧めします$HOME/houdiniversion/scripts。
スクリプトでは、exitステートメントを使用してスクリプトを早期に終了することができます。これにより、すべてのループがきれいに終了します。HScriptは、UNIXシェルのような「終了ステータス」の設定をサポートしていませんが、グローバル変数を使用して同じことを達成できます。
スクリプトを実行してその動作をカスタマイズするときに、引数をスクリプトに渡すことができます。スクリプトファイルで引数を使用するには、$argn変数を使用します。
$arg0 呼び出されたときのスクリプトの名前に設定されます。
$arg1, $arg2, $arg3, 等は、スクリプトに渡される引数に設定されます。
$argcスクリプトに渡される引数の数に設定されます。たとえば、スクリプトがmyscriptの最初の2番目の3番目の引数(3つの引数)で呼び出された場合、$ argcは3です。
コマンドラインの構文解析を簡単に行うため、または可変数の引数を扱うには、shiftコマンドを使用します。シフト命令は、最初の引数を削除し、残りのすべての引数をシフトダウン、そう$arg1だったものになりました$arg2。したがって、値を処理してからすべての引数を反復し$arg1、次の引数を移動するためにshiftを呼び出すことができます$arg1。
readコマンドでユーザーからの入力を読み取ることもできます。
スクリプトを実行する
スクリプトパスでスクリプトを実行します。myscript.cmd hello 15ディスクから任意のスクリプトファイルを実行します。スクリプト名を入力します(拡張子は.cmd)。sourceコマンドとファイル名のあとに引数を使用します。
source〜/ myscript.cmd 1 10こんにちは
Houdiniスクリプトのパス
環境変数HOUDINI_SCRIPT_PATHには、スクリプトを検索するディレクトリのリストが含まれています。これには$HFS/houdini/scripts(工場出荷時にインストールされたスクリプトの場合)、$HSITE/scripts(サイト固有のスクリプトの場合)、$JOB/scripts(ジョブ固有のスクリプト用の)、$HOME/houdniversion/scripts(各ユーザーのスクリプト用の)が含まれます。
スクリプトファイルがパスにある場合、Houdiniにその名前(拡張子は.cmd)を入力してスクリプトを実行できます。
パスの後のディレクトリにあるスクリプトは、パスの前の同じ名前のスクリプトを上書きします。この機能を使用して、工場出荷時にインストールされたスクリプト(たとえば123.cmd)を独自のスクリプトで置き換えることができます$HOME/houdniversion/scripts。
イベントに応じてスクリプトを実行する
起動
$HFS/houdini/scripts/123.cmd
Houdiniは最初に起動するときにこのスクリプトを実行します。あなたが選択した場合、それは再び実行されませんFile > New。このスクリプトには、最初のHoudini環境を設定するための多くのコードが含まれています(初期ジオメトリの読み込みを含む)。このファイルの中の何かを変更したい場合は、そのファイルをスクリプトパスのどこかにコピーして(たとえば$HOME/houdniversion/scripts)コピーしてそのコピーを変更する必要があります。123.cmdHoudini FXの起動スクリプトです。Halo、Alfredなどの他の製品は、スクリプトで別々のスタートアップスクリプトを使用します。
注意
Houdini FXのみが動作し123.cmdます。起動時ではhoudinicore.cmd なく、Houdini Coreが動作し123.cmdます。どちらも 同じ目的123.cmdをhoudinicore.cmd果たしますが、異なる製品に役立ちます。
新しいシーンファイルを開くか作成する
path/scripts/456.cmd
Houdiniは保存されたシーンを開いた後にこのスクリプトを実行します。このスクリプトは工場出荷時には存在しません。スクリプトパスのどこかに作成すると(例えば、$HOME/houdniversion/scripts)、Houdiniはonを含む新しいシーンが開くたびにスクリプトを実行しますFile > New。
ノードを作成する
$HFS/houdini/scripts/op_type/op_internal_name.cmd
ノードを作成すると、Houdiniはスクリプト/のサブディレクトリに対応するスクリプトを実行します。
(一部のオペレータには、Houdiniの旧バージョンからのシーンファイルとの互換性を保つなど、さまざまなタスクを実行するスクリプトが工場出荷時にインストールされていますが、他のオペレータにはスクリプトはありません)。
これは、組み込み演算子の動作をカスタマイズする場合や、作成したカスタム演算子(デジタルアセット)を強化する場合に非常に便利です。
$HOME/houdniversion/scripts/sop/box.cmdオペレータでノードを作成するときにHoudiniにスクリプトを実行させるには、適切なディレクトリ構造とスクリプトパスの名前(たとえば、Box SOP)を使用して新しいスクリプトを作成できます。
演算子の内部名を取得するには、内部定義演算子を選択Tools > Operator Type Managerして見てください。
ノードを削除する
特定のノードが削除されたときにスクリプトを実行するように設定するには、ノードのパラメータエディタでギアメニューをクリックし、削除スクリプトの編集を選択します。
これは、メインノードが削除された場合に削除したいノードが関連付けられているカスタム演算子を作成する場合に便利です。たとえば、組み込みのボーンオブジェクトには、ボーンが削除された場合にキネマティックソルバーCHOPなどのサポートノードを削除する削除スクリプトがあります。opdelscriptコマンドを使用して、HScriptのノードの削除スクリプトを設定できます。デジタル資産イベントデジタル資産のスクリプトを参照してください。
スクリプトを選択
Houdiniでは、ユーザーがビューア内の特定のオブジェクトを選択すると、カスタムスクリプトを実行できます。オブジェクトの[スクリプトの選択] パラメータを[ その他 ]タブで設定します。パラメータの値はHScriptと解釈されますが、外部スクリプトファイルを呼び出すこともできます。Houdiniは、選択ツールまたはポーズツールでビューア内のオブジェクトを選択すると、このスクリプトを実行します。ネットワークエディタでノードを選択するか、別のツールを使用する際にオブジェクトを選択すると実行されません。
この機能には、ユーザーインターフェイス(シーンをクリックすると変更される「スイッチ」や「ボタン」オブジェクトなど)やデバッグ(オブジェクトを選択したときにそのオブジェクトに関する情報をポップアップ表示するなど)が含まれます。
Houdiniは、選択されたオブジェクトのコンテキストでスクリプトを実行します。opcf ..を使用して、選択したオブジェクトが存在するネットワークレベルまで移動します。非常に便利な方法の1つは、オブジェクトをクリックしたときにopsetコマンドを使用して他のオブジェクトのプロパティ(表示フラグなど)を設定することです。たとえば、「オン」のNullをクリックするとオブジェクトのグループが表示され、「オフ」のNullをクリックするとオブジェクトが非表示になる単純なインターフェイスを作成できます。
Houdiniは、これらの変数をselectスクリプトで使用できるようにします。それらを使用して、スクリプトの動作を変更することができます。特定のオブジェクトのこれらの変数の値を確認するには、選択スクリプトでmessageコマンドを使用します。たとえば、オブジェクトのスクリプト選択パラメータに次のスクリプトを挿入するとします。
メッセージ$ SELECT_NAME
...オブジェクトを選択すると、Houdiniはオブジェクトの名前を示すウィンドウを表示します。
SELECT_NAME
選択されたオブジェクトの名前。SELECT_PATH選択したオブジェクトへのパス。
SELECT_SHIFT、SELECT_ALT、SELECT_CTRL
これらの変数を1に設定すると、ユーザーがオブジェクトを選択したときに対応する修飾キーが押されたことを意味します。
SELECT_MOVE
通常、オブジェクト上の選択スクリプトは、オブジェクトを直接ドラッグできないようにします(オブジェクトを選択する必要があります。オブジェクトを選択すると、スクリプトがトリガーされ、ハンドルがドラッグされます)。この変数を設定解除すると、選択スクリプトの実行中にオブジェクトを直接ドラッグできます。
SELECT_PICK
このノードを選択しないようにするには、この変数の設定を解除します。
変数を設定解除するには、を使用します。set -u varname
スクリプト例
現実世界のHScriptの例については、Houdiniに含まれているスクリプトを見てみることもできます。
#推測ゲームのスクリプト(guess.cmd)
#まず、ランダムな種を得る
set foo = `システム(日付)`
set seed = `substr($ foo、14、2)` `substr($ foo、17,2)`
#次に、乱数を選ぶ
num = `int(rand($ seed)* 100)+ 1`をセットする
推測= -1を設定する
echo 1と100の間の乱数を推測します。
while( "$ guess"!= "$ num")
echo -n推測を入力する(qを終了する): " 推測を読む
if( "$ guess" == q || "$ guess" == "") ブレーク; エンドフ
#数値に変換する set iguess = `atof($推測)`
if($ iguess <$ num)then エコーがあまりにも低い else if($ iguess> $ num)then エコーが高すぎます else エコースポット! エンドフ終わり
echo数値は$ numでした
Houdiniに含まれる便利なスクリプト
123.cmd
Houdini FXが起動すると実行されます。houdinicore.cmd(旧hescape.cmd)は、Houdini Coreの目的と同じように機能します。イベントスクリプトを参照してください。
defaultscene.cmd
fixnodename.cmd
ノード名に接頭辞および接尾辞の置換を実行します。
引数なしでテキストポートにfixnodenameと入力すると、その使用法が表示されます。
pickandcenter.cmd
引数としてオブジェクト名をとり、そのオブジェクトをビューアの中央に配置します。これは、特定のオブジェクトを選択するたびに実行されることを意図しています。$OS選択スクリプトとしてpickandcenter を使用して、選択したオブジェクトでこのスクリプトを呼び出します。
traverse.cmd
コマンドの名前を引数とし、すべてのノードおよびサブノードでそのコマンドを再帰的に呼び出します。
uniquename.cmd
引数として基本オブジェクト名と変数名をとり、名前付き変数に、コマンドが呼び出された時点で一意であることが保証されている名前(基本オブジェクト名+番号で構成された名前)を設定します。コマンドの-vフラグを使用してopadd、ノードの作成後にノードの名前を取得することもできます。
ホストシステムコマンドを呼び出す
ucdand unixコマンドを使用して、言語のランタイムを外部プロセスとして開始します。
HoudiniはすべてのグローバルHScript変数を環境変数として外部プロセスに渡し、ステータス変数をコマンドの終了コードに設定します。
Houdiniにはuls、ディレクトリの内容を一覧表示urmしたり、ファイルを削除したりupwd、現在のディレクトリを印刷するなど、一般的なホストシステムコマンドを呼び出す専用のHScriptコマンドが含まれています。コードをWindowsなどのUNIX以外のシステムに移植するには、同等のUNIXユーティリティ(ls、rm、pwdなど)を明示的に呼び出す代わりに、これらのHScriptコマンドを使用します。
現在のディレクトリを変更する ucd
現在のディレクトリを表示する upwd
ディレクトリの内容を一覧表示する uls
新しいディレクトリを作成する umkdir
ファイルを削除する urm
ホストシステムコマンドを開始する unix
コマンドでのビューアとビューポートの参照
ビューアの名前は、 "desk.pane.type"という形式です。
desk =ビューアペインを含む机の名前。
pane =ビューアペインの名前。
ペインの内容に応じてtype = "world"、 "particle"、または "texture"
すべてのビューアのリストを表示するには、 "viewls -n"を使用します。ほとんどのビューア関連コマンドでは、一度に複数のビューアを指定したり、ビューア名にワイルドカードを使用することができます。
ビューアは、4つまでのビューポート(上、左、前、およびパースペクティブなど)に細分することができます。ビューポートの名前は、 "desk.pane.type.viewport"の形式になっています。
desk =ビューアペインを含む机の名前。
pane =ビューアペインの名前。
ペインの内容に応じてtype = "world"、 "particle"、または "texture"
viewport =ビューアペイン内のビューポートの名前。ビューポートの表示オプションエディタで、ビューポートの名前を変更することができます。すべてのビューポートを一覧表示するには、 "viewls -n -v"(各ビューポートのビューアを表示するには、 "viewls -v"を使用します)を使用します。
ほとんどのビューポート関連コマンドでは、一度に複数のビューアを指定したり、ビューア名にワイルドカードを使用したりできます。ビューアの名前を使用して、ビューア内のすべてのビューポートを参照することもできます。代わりに、たとえば"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"メモリは、メモリが1〜9の数字または名前であるフォーマットを有する。最初の3つのコンポーネント(デスク名、ペイン名、タイプ)はワイルドカードを持つことができます。すべてのビューメモリをリストするには、を使いますviewls -n -l。
このviewlayoutコマンドは、ビューアペインでビューポートの数とレイアウトを制御します。
HScriptのヒント
commandecho onを使用して、Houdiniがテキストポートで内部的に実行するHScriptコマンドを印刷するようにします。
Houdiniコマンドの最大行長は、すべての展開後に8 KBです。
コマンドライン上の引数の最大数は1024です。
1つのソースファイル内のネストされたif文の最大数は128です。
ソースファイルの最大数は、オープンファイルのシステム制限によって制限されます。
ネストされたループの制限はありません。
コメントをかく