HDA ノードの再クック

   Views 1516   Replies 16   Subscribers 0
User Avatar
Member
9 posts
Joined: 1月 2025
Offline
HDAのノードを再クックする方法はありますでしょうか。

python で
node.cook(force=True)
を実行してもHDAノードの場合は再クックされないようでした。

ご教示いただけますと幸いです。

よろしくお願いいたします。
User Avatar
スタッフ
423 posts
Joined: 4月 2015
Offline
例えば /obj/geo1 以下に a1 という HDA があり、

a = hou.node('/obj/geo1/a1')
から Performance Editor で Record をオンにした状態で
a.cook()
だと Performance Editor に cook された形跡が現れませんが、
a.cook(force=True)
だと、計算が走った形跡が現れます。

再クックされていないとは、どのようにして判別しているのでしょうか?

Attachments:
python_cook.png (924.3 KB)

User Avatar
Member
9 posts
Joined: 1月 2025
Offline
ご返答ありがとうございます。

Image Not Found


動画を添付いたしました。

動画にあるremesh ノードはクックに3秒ほどかかります。
同じremesh ノードをHDA 化したものが右にあるノードです。

Performance Monitor でRecord 状態にしてそれぞれcook(force=True) を実行してみると、左のリメッシュノードのみ処理時間が計測されクックされているように見えます。

使用しているバージョンはHoudini FX 20.5.445 - Py3.11 です。

Attachments:
2025-03-12_10h49_13.mp4 (4.2 MB)

User Avatar
スタッフ
423 posts
Joined: 4月 2015
Offline
お使いの HDA をここに晒すのがまずいのであれば、
1. HDA (test_hds1)の中を見て、出力ないし表示フラグがネットワークの最下流なり、最も重要なところについているかご確認ください。
2. 設定上の問題がないのであれば、 HDA を info-jp@sidefx.com に送っていただけますでしょうか?
User Avatar
Member
9 posts
Joined: 1月 2025
Offline
ありがとうございます。

HDA 内では出力ノードが表示状態で最下流になっていますのを確認しました。

前の投稿の動画で使用しているHDA をこちらに添付させていただきました。

お手数をお掛け致しますが、よろしくお願いいたします。

Attachments:
sop_test_hds.hda (3.3 KB)

User Avatar
スタッフ
423 posts
Joined: 4月 2015
Offline


私のところでは問題なく動きました。Performance Monitor の前に、Hscript で
sopcache -c
ないし、 Python で

hou.hscript("sopcache -c")

としてから実行するとさらに顕著 (数秒、添付画像参照)かもしれませんが、そうでなくともちょっと (0.1 秒) は実行している感じです。

使った Houdini は 20.5.444 と 20.5.522 です。どちらでも同じように実行されました。

SOP Cache に関しては、こちらのページをご覧ください。
https://ikatnek.blogspot.com/2025/03/sop-cache.html [ikatnek.blogspot.com]

Attachments:
remesh_hda.png (2.5 MB)

User Avatar
Member
9 posts
Joined: 1月 2025
Offline
キャッシュの情報ありがとうございます。

教えていただいた方法でキャッシュをクリアしてから実行してみましたが、動作は変わらずでした。

同じ環境で作業している同僚のマシンでも試してみましたが状況は同じでした。
User Avatar
スタッフ
423 posts
Joined: 4月 2015
Offline
お使いコンピュータが速すぎるからとか。
例えば、 HDA の中の Remesh の Target Size を 0.005 などにしてみた場合はどうでしょうか?

Attachments:
remesh.png (127.9 KB)

User Avatar
Member
9 posts
Joined: 1月 2025
Offline
マシンスペック記載しておりませんでした。
以下の通り早すぎるスペックではないと思います。

Target Size を0.005 にしたremesh ノードのみを指定して計測すると16s 程かかっています。
しかしながら、HDA にcook(force=True) を実行して計測した場合は、やはり一瞬で終了しています。
実行時の動画を添付いたしました。

OS
Windows 10 Pro for Workstations
22H2

プロセッサ
Intel(R) Xeon(R) W-2145 CPU @ 3.70GHz 3.70 GHz

RAM
128 GB

グラフィックボード
Geforce RTX 3080

Attachments:
2025-03-17_11h24_30.mp4 (9.7 MB)

User Avatar
スタッフ
423 posts
Joined: 4月 2015
Offline
それはつまり「計算を一度しているから二度目は早い」ということではないでしょうか?

hou.hscript("sopcache -c")

を実行してから

a.cook(force=True)

をするとどうなるでしょうか?
User Avatar
Member
9 posts
Joined: 1月 2025
Offline
hou.hscript("sopcache -c")

を実行してからクックコマンドを実行してみました。

添付しました動画のような結果になります。

HDAが再クックされれば、16秒ほど処理に時間がかかるかと思うのですが、一瞬で終了しているように見えます。
Edited by Yukihiro_Fujita - 2025年3月17日 04:21:23

Attachments:
2025-03-17_17h16_25.mp4 (4.7 MB)

User Avatar
スタッフ
423 posts
Joined: 4月 2015
Offline
本当ですね。私のところでは同じ手順でクックされています。Remesh の Target Size は 0.005 です。


一度、 MyDocuments 以下の houdini20.5 を houdini20.5a などと変えて環境をリセットするとどうでしょうか?
Edited by Ken Taki - 2025年3月18日 18:31:00

Attachments:
cook_force_True.png (1.7 MB)

User Avatar
Member
9 posts
Joined: 1月 2025
Offline
houdini20.5 フォルダを削除して環境をリセットしてから試してみました。

キャッシュクリアコマンドを実行してからクックを試みています。

変わらず瞬間的に終わってしまいますが、パフォーマンスモニターの「test_hds1」の下に「output0」が表示されるようになりました。
今までは「test_hds1」しか記録されていなかったように思います。

Edited by Yukihiro_Fujita - 2025年3月17日 22:07:07

Attachments:
2025-03-18_10h59_24.mp4 (4.9 MB)
2025-03-18_11h01_59.png (86.8 KB)

User Avatar
スタッフ
423 posts
Joined: 4月 2015
Offline
私のところでも問題を再現できた気がします。
Edit->Preferences-> Objects and Geometry > SOP Cache に行き、Cull Level の値を確認してみてください。
こちらが 1 でしょうか?
その場合、HDA 経由では、 sopcache -c のあともキャッシュを使っているように見えます。
Cull Level を 2 以上にすると、sopcache -c のあと、a.cook(force=True) が最初から計算をしているように見えます。

Cull Level を変更して、挙動に変化が出るかご確認いただけますでしょうか?

https://ikatnek.blogspot.com/2025/03/sop-cache.html#badge [ikatnek.blogspot.com]
にも追記しましたが、Node Needs to Cook バッジを表示すると、Cull Level 1 の場合、上流が正しくクックされていないと表示されます。


ここの挙動の挙動の解明にはもう少し時間が必要ですが、Cull Level を2以上にするなり、手動で関連ノードを再クックすれば、うまくいくように見えます。
Edited by Ken Taki - 2025年3月20日 20:13:39
User Avatar
Member
9 posts
Joined: 1月 2025
Offline
Cull Level の値は1 に設定されておりました。

自分の環境ではCull Level を4以上にした状態で、sopcache -c を実行したのちにcook(force=True) を実行すると、HDA 内のノードのクックが計測されるようになりました。

Cull Level が3以下の場合は、挙動に変化がないようでした。

情報ありがとうございます。
User Avatar
スタッフ
423 posts
Joined: 4月 2015
Offline
色々と訊いてみましたが、Cull Level やその他の設定に影響されることなく、HDA の再クックを一番確実に行うのは、入力を切断して、再接続することのようです。スクリプト化すると良いのかもしれないですね。
User Avatar
Member
9 posts
Joined: 1月 2025
Offline
まさに再クックするスクリプトをネットワークビューのコンテキストメニューに追加しているところでした。
切断、再接続の方法でひとまず実装しようと思います。

色々とご教示いただきありがとうございました!
  • Quick Links