Created on | Updated on
フォローする

HoudiniのAgentデータを作成する

Crowdで使用するためにAgentオペレーターで必要情報を出力していく必要があります。

まずは、Outネットワークに移動し、Agentオペレーターを作成します。

001


このオペレーターはAgent定義に必要なファイルを出力することができます。
Agent用ジオメトリデータやクリップデータをそれぞれExportするためにこのオペレーターを作りました。

ここでパラメーターに注目すると・・・

002


StartとEndを指定することができ、ここで実際にクリップする分のフレームを指定します。

この情報をきっちりAgentに設定してあげる必要があります。
そしてないと見当違いのフレームがClipで出力されて、いつまでもAgentにアニメーションが正しく読み込まれないという自分自身が掘った穴にがっつり落ちます。

そして、ここでもう1つの自分で掘った落とし穴は、出力したFBXのフレームレートを覚えていなかったということです。30で出したのか24でだしたのか、それ以外のFPSで出したのかしっかり覚えておきましょう。

まず、Chop内のFetchノード>Channelタブ>Sample RateをFBXを出力した時のFPSに合わせて下さい。

005


次にキャラクタDigitalAssetに次のカスタムパラメーターを追加していきます。

FloatとFloat2を追加し、FloatのラベルをAnimation Legth、Float2のラベルをRangeに変更して下さい。
007


追加したら、Acceptでウィンドウを閉じます。

追加したパラメーターに下記を追加します。

Animation Length>chopl("./chopnet1/fetch1")
Rangeにはchops("./chopnet1/fetch1")とchope("./chopnet1/fetch1")

これで上のSourceでロードしたFBXサブネットワークのアニメーションフレームの長さと初めのフレーム、最後のフレームを取得できます。

FetchのSample Rateが正しくないとこの取得する数値が実際のアニメーションと違ってしまい、正しいクリップを書き出せなくなるので要注意です。

FBXを変更すると、Animation LengthとRangeが自動で下記変わる事がわかります。

002


003


正しい数値が読み込まれてきていなかったら、ExportのフレームレートやFetchのSample Rateを見なおして下さい。

これで準備ができました!
クリップを作成したいFBXを全部インポートしておきます。

004


Outネットワークに移動し、最初に作成したAgentオペレーターを選択。

001


SourceのObject Subnetにキャラクタのデジタルアセットを選択し、Clipには現在適用しているアニメーションのクリップ名を入力します。この名前でAgent用クリップが出力されます。

004


その下にあるShift cClip to Frame 1が有効になっている事を確認します。(デフォルトでオンですが念のため)
002


これは上にあるStar/Endの範囲で書きだしたクリップの最初のフレームが1に移動するというもので、今回のように元々1フレームから始まっていないアニメーションを使用する場合とっても便利です。

次にStart/Endをそれぞれ右クリック>Delete Channelsで現在設定されているExpressionを削除します。

次にObjネットワークに移動し、キャラクタDigital Assetを選択、そのRangeの左側を右クリック>Copy Parameterを選択します。

005


次にOutネットワークに移動し、AgentノードのStartを右クリック>Paste Copied Relative Referencesを選択します。
これを選択すると、先ほどコピーした値を単にペーストするのではなく、元のパラメーターとの関係を保存して、パラメータに変更があれば、自動でアップデートされるようになります。

006


同じようにEnd側もキャラクタDigitalAssetのRangeから値を参照コピーしてください。
007


エクスプレッションになっているパラメーターはパラメーター名をクリックすると数値の表示に切り替わります。
数値表示の時に、再度パラメーターをクリックするとエクスプレッション表示なるのでとっても便利で分かりやすい。

001


値をみるときちんとクリップの開始フレームと終了フレームがあっていると思います。
最後に一番下にあるOutputでこのAgentオペレーターからエクスポートするデータを設定します。

まず、Agent Nameに名前を入力します。
このキャラクタデータをAgentとしてExportするのは初なので全てオンのままにします。

006


デフォルトの設定だと、CacheDirectoryがHIPシーンファイルの保存場所と同じ場所にagentsというフォルダを作成し、その中に更に今回つけたAgent Nameのフォルダが作成され、その中に出力をOnにした各ファイルがエクスポートされます。

設定が終了したら一番上にあるSave to Clipボタンを押して、必要ファイルをエクスポートします。

014


002



次に新しいクリップをエクスポートするために、objネットワーク>キャラクタDigitalAssetのSourceでアニメーションを変更します。

010


outネットワークでAgentをコピー&ペーストで複製し、Clip Nameを変更して下さい。
Start/Endが自動で変更されている事を確認します。

012


下にあるOutputで、AgentNameはそのままでClipのみ有効にし、後はオフにします。

013


設定が終了後、Save to Diskで設定を保存します。

アニメーションだけ.bclipで追加保存されていることがわかります。

015


これをアニメーションクリップの数だけ繰り返します。
必要なアニメーションを.bclipとして出力することができました。

016


さて、実際に作成したAgentファイルをAgentに適用していきましょう!ゴールはあと少し!!

objネットワークに移動し、キャラクタDigitalAssetのVisibilityをオフにします。
objネットワークに、geometryノードを作成します。

020


geometryノード内に入り、予め存在するFileノードを削除します。
その後Agentノードを作成して下さい。

021


AgentノードのAgent Nameに先ほどExportしたAgent Nameを入力します。

001


次にInputをDiskに変更すると、Cache Directoryのデフォルトパス(${HIP}/agents/${AGENT})を通して、Agentがロードされます。

022


次にCurrent Clipに出力したClip名を入力すると、Clipsのパスからロードされたアニメーションが読み込まれます。

023


Clipを読み込んだ後にフレームを動かして下さい。
先ほど1から始まっていなかったクリップもきちんと1フレームに開始フレームがシフトされ、アニメーションするようになっていることがわかります。

ちなみにきちんとAgentNameが通ると、そのAgentが持っているClipが↓を押したときに一覧で表示されます。

024


これでアニメーションがちゃんと読み込めるか確認してください。

これでAgentに必要なファイルが出そろいました!!!