詳細は、Crowd Animation Clipsを参照してください。
メソッド ¶
__init__(name, filename, rig, keep_external_ref = True, delay_load = False)
指定した.bclip
または.clip
のファイルからエージェントクリップを読み込むことで、新しいエージェントクリップを作成します。
クリップ内のチャンネルは、transform_name:channel_name
の形式で指定します。
transform_name
はhou.AgentRig.transformNameが返す値に一致した文字列で、channel_name
はtx
, ty
, tz
, rx
, ry
, rz
, sx
, sy
, sz
のどれかです。
t
で始まるチャンネルは移動、r
は回転、s
はスケールです。
その結果のトランスフォームはローカルトランスフォームとして扱われ、hou.AgentClip.sampleLocalを通じて読み込むことができます(つまり、そのトランスフォームはエージェントのスケルトン内の該当する親トランスフォームを基準にしています)。
他のチャンネルは、hou.AgentClip.sampleを通じて読み込むことができます。
ファイルが存在しない、または読み込むことができなかった場合はhou.OperationFailedを引き起こします。
name
新しいクリップの名前(例えばwalk
)。
filename
クリップファイルのパス。
rig
クリップと関連付けるhou.AgentRig。 例えばトランスフォームをローカル空間からワールド空間に変換する時に、このリグが使用されます。
keep_external_ref
エージェントをジオメトリファイルに保存した時に外部参照を維持するかどうかを示すbool
。
外部参照を維持した場合、(クリップのパスのみがジオメトリファイルに保存されているので)その保存したジオメトリを使用する時には、そのクリップファイルが利用可能な状態になっている必要があります。
維持しなかった場合、ジオメトリを保存した時に、そのクリップのコピーが埋め込まれるので、元のクリップは、もはや不要です。
delay_load
keep_external_ref
がTrue
の場合、クリップのデータが照会されない限り、ディスクからクリップを読み込むのを遅延させるべきかどうかを指定します。
これによって、いくつかのクリップが使用されていない場合には読み込み時間とメモリ使用量を改善することができますが、何かしらの読み込みエラーが発生しても即座に報告されません。
__init__(name, chop, rig, frame = hou.frame())
シーン内のCHOPから新しいエージェントクリップを作成します。
name
新しいクリップの名前(例えばwalk
)。
chop
クリップの読み込み元であるhou.ChopNode。
rig
クリップと関連付けるhou.AgentRig。 例えばトランスフォームをローカル空間からワールド空間に変換する時に、このリグが使用されます。
frame
CHOPノードをクックするフレームを指定します。
__init__(name, rig, sample_count)
指定したサンプル数で空っぽの(且つ修正可能な)エージェントクリップを作成します。 これらのサンプルは単位行列のトランスフォームに初期化されます。
name
新しいクリップの名前(例えばwalk
)。
rig
クリップと関連付けるhou.AgentRig。 例えばトランスフォームをローカル空間からワールド空間に変換する時に、このリグが使用されます。
sample_count
クリップのサンプル数。
__init__(clip, rig, name = "")
既存のエージェントクリップのコピーを作成します。 ソースクリップは、別のリグを参照することができます。この場合では、そのリグの新しいジョイントに対して単位行列のトランスフォームが適用されます。
clip
クリップのコピー元であるhou.AgentClip。
rig
クリップと関連付けるhou.AgentRig。 例えばトランスフォームをローカル空間からワールド空間に変換する時に、このリグが使用されます。
name
walk
などの新しいクリップの名前。このパラメータを指定しなかった場合、ソースクリップの名前が使用されます。
__init__(name, stage, prim_path, rig)
USDプリミティブから新しいエージェントクリップを作成します。 クリップを読み込めなかった場合は、hou.OperationFailedを引き起こします。
name
新しいクリップの名前(例えば、walk
)。
stage
クリップの読み込み元のUSDステージ。 例えば、ここには、LOPノードからの出力ステージを指定することができます。
prim_path
クリップの読み込み元のUSDステージ内のSkeleton
またはSkelRoot
プリミティブのパス。
rig
クリップが関連付けられるhou.AgentRig。 例えば、トランスフォームをローカル空間からワールド空間へ変換する時、このリグが使用されます。
addChannel(name, samples)
クリップ内に追加でチャンネルを作成します。 同じ名前のチャンネルが既に存在していた場合は、以前のサンプルが上書きされます。
クリップが修正不可の場合は、hou.GeometryPermissionErrorを引き起こします。
name
チャンネルの名前。
`samples
チャンネルのデータを含んだfloat
シーケンス。
このシーケンス長がhou.AgentClip.sampleCountと同じでない場合は、hou.InvalidSizeを引き起こします。
channelNames()
→ tuple
of str
クリップ内の追加チャンネル(非トランスフォーム)の名前を返します。 これらのチャンネルは、hou.AgentClip.sampleを使ってサンプリングすることができます。
data(binary, worldspace = False)
→ str
for Python 2, bytes
for Python 3
ASCIIまたはバイナリでクリップデータを返します。
返されるクリップデータは、Python3だとbytes
オブジェクトで、Python2だとstr
オブジェクトです。
詳細は、HOMバイナリデータを参照してください。
binary
クリップデータをASCII(.clip
)またはバイナリ(.bclip
)の形式で保存するかどうか指定します。
worldspace
トランスフォームチャンネルをローカル空間またはワールド空間で保存するかどうか指定します。
extractLocomotion(cog_transform, cog_lookat_transform=-1, convert_inplace=True, project_on_dominant_axis=False)
アニメーションをインプレース(その場歩き)に変換し、__locomotion__:[srt][xyz]
チャンネル内にそのロコモーショントランスフォームを記録します。
クリップが変更不可の場合は、hou.GeometryPermissionErrorを引き起こします。
cog_transform
エージェントのリグ内のキャラクタのロコモーションを制御している(つまり、空間内でキャラクタの位置を前進させている)トランスフォームのインデックス。
cog_lookat_transform
エージェントのリグ内のトランスフォームのオプションのインデックス。
このインデックスは、cog_transform
からこのトランスフォームへのベクトルを使って全体の回転を抽出するのに使用します。
convert_inplace
ロコモーショントランスフォームを記録するだけでなく、アニメーションをインプレースクリップに変換するかどうかを指定します。
project_on_dominant_axis
XZ平面内の動きの主軸に沿ってロコモーション移動を投影します。 Crowd Solverでクリップをインプレースクリップとして使用する場合、これは、動きにおける腰の揺れを維持するのに役立ちます。
fileName(expanded = False)
→ str
クリップが外部参照の場合、ディスク上のファイルのパスを返します。
expanded
パス内の変数(例えば$HIP
)を展開するかどうかを指定します。
freeze()
→ hou.AgentClip
修正可能なクリップのコピーを作成します。 このコピーは外部参照としてマークされなくなります。
isExternalReference()
→ bool
クリップがディスク上のファイルを参照しているかどうかを示したbool
を返します。
isLoaded()
→ bool
クリップが外部参照の場合、そのクリップのデータがディスクから読み込まれているかどうかを返します。
length()
→ float
クリップの長さを(秒単位で)返します。
loadFromFile()
クリップが遅延ロードの外部参照である場合に、そのクリップのディスクからのデータを明示的に読み込みます。 ファイルが存在しない、または、読み込むことができなかった場合、hou.OperationFailedを引き起こします。
クリップのデータにアクセスする必要があるメソッドをコールしてもクリップが読み込まれますが、このメソッドを使用することで、即座にエラーを報告することができます。
localTransforms(sample)
→ tuple
of hou.Matrix4
指定したサンプルでローカル空間のトランスフォームを返します。 エントリー番号はhou.AgentRig.transformCountに合致します。
sample
クリップ内のサンプルのインデックス。
name()
→ str
クリップの名前を返します。
sample(time, channel_name)
→ float
time
クリップを評価する時間(秒)。
channel_name
クリップ内のチャンネルの名前。hou.AgentClip.channelNamesを参照してください。
指定した時間のクリップを評価して、その指定したチャンネルの値を返します。 クリップをトランスフォームをサンプリングするには、hou.AgentClip.sampleLocalまたはhou.AgentClip.sampleWorldを使用してください。
sampleCount()
→ int
クリップ内のサンプル数を返します。
sampleLocal(time, transform)
→ hou.Matrix4
time
クリップを評価する時間(秒単位)。
transform
エージェントのリグでのトランスフォームのインデックス。
指定された時間でクリップを評価して、ローカルトランスフォームを返します。
sampleRate()
→ float
クリップのサンプルレートを返します。
sampleWorld(time, transform)
→ hou.Matrix4
time
クリップを評価する時間(秒単位)。
transform
エージェントのリグでのトランスフォームのインデックス。
指定された時間でクリップを評価して、ワールドトランスフォームを返します。
setLocalTransforms(sample, xforms)
クリップ内のサンプルのローカルトランスフォームを編集します。
このクリップが修正不可の場合は、hou.GeometryPermissionErrorを引き起こします。
sample
クリップ内のサンプルのインデックス。
xforms
リグの各ジョイントのローカル空間のトランスフォームを含んだhou.Matrix4シーケンス。 このシーケンス長がhou.AgentRig.transformCountと同じでない場合は、hou.InvalidSizeを引き起こします。
startTime()
→ float
クリップの開始時間を返します(秒)。
worldTransforms(sample)
→ tuple
of hou.Matrix4
指定したサンプルでワールド空間のトランスフォームを返します。 エントリー番号はhou.AgentRig.transformCountに合致します。
sample
クリップ内のサンプルのインデックス。