問題
現在、C ++を使用して多数のアセットをレベルに配置し、それらをクックしています。 その後、メモリが不足しています。場合によっては機能するcmdコマンド「Houdini.RestartSession」を使用しました。しかし、多くの場合、再起動しません。HARS.exeプロセスが使用しているメモリを解放するため、エディターを閉じて開きなおす必要があります。
Houdiniアセットがレベル内の場所になり、レベルの保存時に注目に値します。
次に、Houdiniアセットをまったく使用せずに別のレベルをロードします。以前と同じメモリを保持しています
回答
「Restart session」は、主に次の目的で使用することを目的としています。
- UE4を再起動せずにHoudiniエンジンデバッガーセッションに切り替える
- houdiniエンジンセッションのパラメーターを変更した後
- 現在のHARSセッションで問題が発生した後
(Houdiniがクラッシュまたはハングし、何らかの理由で強制的に強制終了する必要がありました)。
これらのアクションのいずれかの後、UE4の完全な再起動を必要としないようにするために追加されました。
これは、あなたがしようとしていること、つまり内部のhoudiniシーンを「クリーンアップ」してメモリを節約するために使用することを意図したものではなく、ダングリングhoudiniオブジェクトを作成する可能性があるため、事態を悪化させる可能性があります。
(新しいレベルのロード後にHARSが保持するメモリは、これが原因である可能性が高い)
セッションを再起動すると、現在のセッションが閉じられ、新しいセッションが開始されます。クリーンアップは行われません。
メモリは、HARS(HDA /入力ノード)またはUnreal(プラグインオブジェクト)の2つの異なる側面で使用できます。
- 現在のレベルでやり取りしたHDAはHoudini / HARSで作成され、送信された入力データもそこにあり、UnrealのHDAをなくすか、別のレベルをロードするまでそこに残ります。
(Houdini Engine Debuggerセッションを使用して、Unreal対応物を使用するときに、それらのノードが「ライブ」で作成および削除されるのを確認できます)。 - 同様に、Unreal側のプラグインによって作成されたオブジェクトは、レベルがロードされている間メモリに残るか、トランザクションキューに残る(元に戻す/やり直し)こともできます。 レベルの保存/読み込み/新しいレベルの作成もこれらに役立つはずです。
プラグインは、特定のアセットの一時ファイルも作成します(HoudiniEngine / Tempフォルダー内)。
使用されていない/参照されていないものは、Fileメニューのclean temporary fileアクションを介してクリーンアップできます。