I'm trying to update attributes with a python sop and seeing downstream results live.
I'm using the executeInMainThreadWithResult() function that comes with hdefereval.py and I am able to print the values live in the python shell / console while maintaining an interactive viewport during runtime, but the attributes don't update until the script finished.
Im running this code (HIP is also attached):
node = hou.pwd() geo = node.geometry() import hou import hdefereval import threading import time points = geo.points() def houdini_command(): for i,point in enumerate(points): point.setAttribValue("move", float(n)) print("running") def updateUI(): hou.ui.triggerUpdate() def worker(): global n n = 0 while n < 5: hdefereval.executeInMainThreadWithResult(houdini_command) hdefereval.executeInMainThreadWithResult(updateUI) time.sleep(.5) print(n) n += 1 thread = threading.Thread(target=worker) thread.daemon = True thread.start()
Is there a way to hack this together to be able to view the changes of each loop live without having to wait until the full script is processed?
I also tried writing the attributes to a different node & piece of geometry but that didn't work because python sop only gets read access to geometry owned by other respective node.
Any pointers would be much appreciated! Thanks in advance