https://www.sidefx.com/ja/docs/houdini/hom/hou/Geometry
hou.SopNode.geometry() を通じて SOP にジオメトリを求めた場合、それの読み取り専用の参照が取得されます。
ジオメトリの修正をするメソッドをコールすると、それらのメソッドは hou.GeometryPermissionError の例外を引き起こします。
(kwargs["node"] で取得したジオメトリは read only のため、
setPosition() などで編集しようとするとエラーが発生します)
PythonSOP を記述している場合、そのジオメトリは読み書きのアクセスを持つため、まず第一としてジオメトリの加工については PythonSOP を使用することをお勧めします。
box の point0 が (0, 0, 0) になっているのが分かります。
一方で、同じく Python を使う Viewer State でこれを試そうとすると、read only のため上のようにエラーが発生します。
前提として、Viewer State から HDA 内部のノードのジオメトリを変更することはできません。ノード自体のみが自身のジオメトリを変更できます。
そのため、hou.Geometry.freeze() メソッドを使用してノードからジオメトリをコピーする必要があります。ただし、コピーしたジオメトリを変更しても、サブネットが出力するジオメトリには影響しないことに注意してください。
例:
データ上では座標を変更することができましたが、ビューシーンを確認すると変更されずそのままになっているのが分かります。
Viewer State がジオメトリを加工する1つの方法は、パラメータを使用することです。 特に、Stash SOPには、hou.Geometry を使用して .set() できる特別なデータパラメータがあり、これが stashsop の出力になります。