関数 ¶
decode(str) -> str
HoudiniのVEX変数名には、英数字とアンダースコアのみが許可されており、且つ、数字から始まる名前は許可されていません。
任意の文字列をencode
メソッドの引数に渡すことで、それらの制限に準拠した文字列を生成することができます。
このメソッドは、そのencode
メソッドで暗号化した文字列を受け取って、その暗号化前の文字列を返します。
暗号化していない文字列は、そのままの文字列で返されます。
>>> hou.text.decode('xn__foobar_rla') 'foo:bar' >>> hou.text.decode('safe_name') 'safe_name'
encode(str) -> str
HoudiniのVEX変数名には、英数字とアンダースコアのみが許可されており、且つ、数字から始まる名前は許可されていません。
このメソッドは、任意の文字列を受け取って、これらの制限に準拠した文字列に暗号化します。
decode
メソッドを使用することで、暗号化前の文字列を復元することができます。
これらの制限に既に準拠した文字列は、そのままの文字列で返されます。
この規則の例外として、xn__
で始まる文字列は、それが既に有効な変数名であるにも関わらず暗号化されることです。
この理由は、暗号化された文字列であることを識別するために使用されている接頭辞がxn__
だからです。
この場合、さらにxn__
接頭辞が追加されてしまいます。
これは、そのような文字列を何回も暗号化すると、それと同じ数だけ復元されて、その内容に関わらず常にオリジナルの文字列に戻されることを意味します。
>>> hou.text.encode('foo:bar') 'xn__foobar_rla' >>> hou.text.encode('safe_name') 'safe_name'
decodeAttrib(str) -> str
Houdiniのジオメトリアトリビュート名とグループ名には、英数字とアンダースコアのみが許可されており、且つ、数字から始まる名前は許可されていません。
任意の文字列をencodeattrib
メソッドの引数に渡すことで、それらの制限に準拠した文字列を生成することができます。
このメソッドは、そのencodeattrib
メソッドで暗号化した文字列を受け取って、その暗号化前の文字列を返します。
暗号化していない文字列は、そのままの文字列で返されます。
>>> hou.text.decodeAttrib('xn__foobar_rla') 'foo:bar' >>> hou.text.decodeAttrib('safe_name') 'safe_name'
encodeAttrib(str) -> str
Houdiniのジオメトリアトリビュート名とグループ名には、英数字とアンダースコアのみが許可されており、且つ、数字から始まる名前は許可されていません。
このメソッドは、任意の文字列を受け取り、これらの制限に準拠した文字列に暗号化します。
decodeattrib
メソッドを使用することで、暗号化前の文字列に復元することができます。
これらの制限に既に準拠した文字列は、そのままの文字列で返されます。
この規則の例外として、xn__
で始まる文字列は、それが既に有効なアトリビュート名であるにも関わらず暗号化されることです。
この理由は、暗号化された文字列であることを識別するために使用されている接頭辞がxn__
だからです。
この場合、さらにxn__
接頭辞が追加されてしまいます。
これは、そのような文字列を何回も暗号化すると、それと同じ数だけ復元されて、その内容に関わらず常にオリジナルの文字列に戻されることを意味します。
>>> hou.text.encodeAttrib('foo:bar') 'xn__foobar_rla' >>> hou.text.encodeAttrib('safe_name') 'safe_name'
decodeParm(str) -> str
Houdiniのパラメータ名には、英数字、ハッシュ文字(multiparms用)、アンダースコアのみが許可されており、且つ、数字から始まる名前は許可されていません。
任意の文字列をencodeparm
メソッドの引数に渡すことで、それらの制限に準拠した文字列を生成することができます。
このメソッドは、encodeparm
メソッドで暗号化した文字列を受け取って、その暗号化前の文字列を返します。
暗号化していない文字列は、そのままの文字列で返されます。
>>> hou.text.decodeParm('xn__foobar_rla') 'foo:bar' >>> hou.text.decodeParm('safe_name') 'safe_name'
encodeParm(str) -> str
Houdiniのパラメータ名には、英数字、ハッシュ文字(multiparms用)、アンダースコアのみが許可されており、且つ、数字から始まる名前は許可されていません。
このメソッドは、任意の文字列を受け取り、これらの制限に準拠した文字列に暗号化します。
decodeparm
メソッドを使用することで、暗号化前の文字列に復元することができます。
これらの制限に既に準拠した文字列は、そのままの文字列で返されます。
この規則の例外として、xn__
で始まる文字列は、それが既に有効なパラメータ名であるにも関わらず暗号化されることです。
この理由は、暗号化された文字列であることを識別するために使用されている接頭辞がxn__
だからです。
この場合、さらにxn__
接頭辞が追加されてしまいます。
これは、そのような文字列を何回も暗号化すると、それと同じ数だけ復元されて、その内容に関わらず常にオリジナルの文字列に戻されることを意味します。
>>> hou.text.encodeParm('foo:bar') 'xn__foobar_rla' >>> hou.text.encodeParm('safe_name') 'safe_name'
expandString(str, expand_tilde=True) -> str
エクスプレッション内のグローバル変数を展開します。 例えば、Houdiniがフレーム10の時:
>>> hou.text.expandStringAtFrame('$F') '10'
他にも、以下の例のチャンネル参照のようにバッククォートで閉じられたHScriptエクスプレッションを展開します。
これは、現行フレームでのgeo1
のtranslate Xパラメータの値を文字列で返します:
hou.text.expandStringAtFrame('`ch("/obj/geo1/tx")`')
expand_tilde
パラメータをFalse
に設定することで、~
がホームディレクトリパスに展開されないようにすることができます。
この関数は、まるでアニメーションなしのテキストパラメータの内容であるかのように文字列を評価します。 そのままHScriptエクスプレッション(バッククォートなし)を評価したいのであれば、hou.hscriptExpression()を使用します。
最初の引数がNone
であれば、hou.OperationFailed
例外が引き起こされます。
>>> hou.text.expandString("$HIP/file.geo") '/dir/containing/hip/file/file.geo' >>> hou.text.expandString("file`$F+1`.pic") 'file2.pic'
expandStringAtFrame(str, frame_number, expand_tilde=True) -> str
エクスプレッション内のグローバル変数を展開します。例:
>>> hou.text.expandStringAtFrame('$F', 10) '10'
他にも、以下の例のチャンネル参照のようにバッククォートで閉じられたHScriptエクスプレッションを展開します。
これは、現行フレームでのgeo1
のtranslate Xパラメータの値を文字列で返します:
hou.text.expandStringAtFrame('`ch("/obj/geo1/tx")`', hou.frame())
expand_tilde
パラメータをFalse
に設定することで、~
がホームディレクトリパスに展開されないようにすることができます。
この関数は、まるでアニメーションなしのテキストパラメータの内容であるかのように文字列を評価します。 そのままHScriptエクスプレッション(バッククォートなし)を評価したいのであれば、hou.hscriptExpression()を使用します。
最初の引数がNone
であれば、hou.OperationFailed
例外が引き起こされます。
expandHuskFilePath(str, frame_start = 1.0, frame_inc = 1.0, frame_idx = 0) -> str
husk
で対応しているのと同じ書式を使用しているエクスプレッション内のグローバル変数を展開して、時間可変ファイルパスを評価します。
置換に使用される現行フレーム番号はframe_start + (frame_inc * frame_idx)
で計算されます。
>>> hou.text.expandHuskFilePath('~/renders/output.<F4>.exr', 1, 1, 0) 'D:/cygwin/home/mtucker/renders/output.0001.exr'
他の文字列展開関数とは異なり、huskはHScriptエクスプレッションの展開に対応していないので、このメソッドは、バッククォートで閉じられたHScriptエクスプレッションを展開しません。
1番目の引数がNone
の場合、空っぽの文字列を返します。
incrementNumberedString(str) -> str
文字列が数値で終わっている場合、その数値を増分して、その結果の新しい文字列を返します。 文字列が数値で終わっていない場合、その文字列の最後に数値を追加します。 これは、Houdiniがネットワーク内で固有の名前の子ノードを生成する際に使用するアルゴリズムです。
>>> hou.text.incrementNumberedString('name1') 'name2' >>> hou.text.incrementNumberedString('name199') 'name200' >>> hou.text.incrementNumberedString('name') 'name2' >>> hou.text.incrementNumberedString('') '2'
alphaNumeric(str) -> str
数字、文字、アンダースコアのみで構成された文字列を返します。 文字列の中のそれ以外の文字はアンダースコアに置換されます。 これは、ファイル名として使用するのに安全な文字列を簡単に作成することができます。ノード名や変数名としてもほぼ安全です(通常では、変数名は数字で始まることを許可しない特別な条件があります)。 hou.text.variableNameを使用することで、有効な変数名を生成することができます。
encode
メソッドとは違って、このメソッドの結果から元々の文字列を復元することはできません。
しかし、このメソッドの結果の方がencode
処理の結果よりも人が解読しやすいです。
variableName(str, safe_chars="") -> str
変数名またはノード名として使用するのに有効な文字列を返します。
これはhou.text.alphaNumericと同様の挙動をしますが、さらに、番号で始まる文字列の頭にアンダースコアを追加します。
オプションのsafe_chars
引数には、アンダースコアに変換したくない文字が入った文字列を指定します。
>>> hou.text.variableName('foo:bar') 'foo_bar' >>> hou.text.variableName('123') '_123' >>> hou.text.variableName('foo:?bar', safe_chars=":") 'foo:_bar'
abspath(path, base_path = None) -> str
指定したパスを絶対パスに変換して返します。
相対パスは、base_path
で指定したディレクトリを基準に扱われます。
指定したパスが既に絶対パスだった場合、そのパスがそのまま返されます。
base_path
を指定しなかった場合、この値にはHoudiniの現行作業ディレクトリが使用されます。
ファイルは存在している必要はありません。
relpath(path, base_path = None) -> str
指定したパスをbase_path
で指定したディレクトリを基準とした相対パスに変換して返します。
base_path
を指定しなかった場合、この値にはHoudiniの現行作業ディレクトリが使用されます。
ファイルは存在している必要はありません。
normpath(path) -> str
指定したパスを標準化したパスで返します。 つまり、(Windowsでだろうと)すべてのパスセパレータがスラッシュで表現されます。 余計なスラッシュは単一スラッシュに置換されます。 パスの途中にある相対パス部分は折り畳まれます。
>>> hou.text.normpath('http://foo/bar/..//something') 'http://foo/something' >>> hou.text.normpath('\\foo\\bar\\something\\') '/foo/bar/something' >>> hou.text.normpath('../../foo/../bar/../something') '../../something'
collapseCommonVars(path, vars = ['$HIP', '$JOB']) -> str
指定したvars
リストを介して渡された変数を展開した文字列でpath
が始まっているかどうかをテストします。
そうなっていた場合、その展開した文字列の部分は、それに該当する変数に置換されます。
例えば、$HIP
が/home/user/hips
で、path
が/home/user/hips/file.hip
の場合、返される文字列は$HIP/file.hip
になります。
oclExtractBindings(code) → tuple
of dict
指定した@BINDコマンド用OpenCLコードを解析し、そこで指定されているバインドセットを返します。
patternMatch(pattern_string, input_string, ignore_case = False, path_match = False) -> bool
この関数は大文字小文字を区別します。大文字小文字を区別せずにパターンマッチングをするにはignore_case
をTrueに設定します。
この関数は、パス区切り文字を特別に扱いません。
パスを意識したマッチングをするには、path_match
をTrueに設定します。
複数のパスコンポーネントを認識させるには、マルチレベルのワイルドカード()が必要です。
パターン文字列内のパターンが入力の文字列に一致すると1を返し、一致しなければ0を返します。
マッチングさせるには、パターンが入力の文字列の最初から最後まで一致しなければなりません。 サブ文字列に一致させるにはワイルドカード(*)を使用します。例えば
>>> hou.patternMatch("bar", "foobarbaz") False >>> hou.patternMatch("*bar*", "foobarbaz") True
パターンとは、1個以上のパターンをスペースで区切ったリストのことです。 これは、この関数を直感的に理解できないような挙動を招きかねないです。例:
>>> hou.patternMatch("foo bar", "foo bar") False
これは0を返します。なぜなら1番目の引数がfooとbarの2つのパターンを構成していて、それらのパターンのどれもfoo barに一致しないからです(パターンは最初から最後まで一致しなければなりません)。
同様に
>>> hou.patternMatch("foo bar", "foo") True
これは1を返します。なぜなら、パターン内の2つの引数(fooとbar)のうち1番目の引数が文字列に一致しているからです。
>>> hou.patternMatch("/foo/*", "/foo/bar/blah", path_match = True) False
これは0を返します。なぜなら、ワイルドカードは1番目のパスコンポーネント(/bar)のみに一致し、最後のパスコンポーネント(/blah)には不一致だからです。
>>> hou.patternMatch("/foo/**", "/foo/bar/blah", path_match = True) True
これは1を返します。なぜなら、マルチレベルのワイルドカードは、複数のパスコンポーネントに一致するからです。
patternRename(input_string, pattern_find, pattern_replace) -> str
この関数は、pattern_findで指定したパターンを検索し、該当するすべての文字列をpattern_replaceで指定したパターンに置換します。 例:
>>> hou.patternRename("foo_bar_baz", "*bar*", "*blah*") foo_blah_baz >>> hou.patternRename("left_hand_01", "left*", "right*") right_hand_01