From 4c321d2f14f166bd86debfb069f685facdb2bdbc Mon Sep 17 00:00:00 2001 From: Kuba Winnicki Date: Mon, 4 Feb 2019 18:57:51 +0100 Subject: [PATCH] Initial development version --- 123.py | 8 +++++ 456.py | 8 +++++ hhacks.py | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 116 insertions(+) create mode 100644 123.py create mode 100644 456.py create mode 100644 hhacks.py diff --git a/123.py b/123.py new file mode 100644 index 0000000..3483355 --- /dev/null +++ b/123.py @@ -0,0 +1,8 @@ +# python2 hack +import hou, os, sys +sys.path.append(os.path.join(os.getenv('HOUDINI_USER_PREF_DIR'), 'scripts')) + +from hhacks import rop_redshift, install_aliases +rop_redshift() +install_aliases() + diff --git a/456.py b/456.py new file mode 100644 index 0000000..3a42227 --- /dev/null +++ b/456.py @@ -0,0 +1,8 @@ +# python2 hack +import hou, os, sys +sys.path.append(os.path.join(os.getenv('HOUDINI_USER_PREF_DIR'), 'scripts')) + +from hhacks import install_aliases +install_aliases() + +hou.setSimulationEnabled(False) diff --git a/hhacks.py b/hhacks.py new file mode 100644 index 0000000..558b141 --- /dev/null +++ b/hhacks.py @@ -0,0 +1,100 @@ +# Set of startup scripts for SideFX's Houdini + +import hou + +# def render_flipbook(): + +def install_aliases(): + aliases = [ + (3, "from hhacks import rop_redshift;rop_redshift()"), + (4, "from hhacks import redshift_quick_anim;redshift_quick_anim()"), + (5, "redshift_quick_anim()"), + (6, "make_sim_cache()"), + (9, "from hhacks import iprs; iprs()[0].killRender();iprs()[0].startRender()"), + (10, "from hhacks import *; render((hou.selectedNodes() or rop_redshift())[0])"), + (11, "from hhacks import save_n_render as fn; fn(inc=False)"), + (12, "from hhacks import save_n_render as fn; fn(inc=True)"), + ] + for fkey, hcmd in aliases: + hou.hscript("alias F{} 'python -c \\'{}\\''".format(fkey, hcmd)) + +def rewind(): + frame = int(hou.frame()) + hou.setFrame(1) + return frame + +def make_sim_cache(): + ffwd = rewind() + hou.node('/obj/smoke_output/make_cache').parm('execute').pressButton() + hou.setFrame(ffwd) + +def rop_redshift(): + out = hou.node('/out') + rop = out.node('Redshift_ROP1') + if not rop: + rop = out.createNode('Redshift_ROP') + rop.moveToGoodPosition() + rop.parm("ProgressiveRenderingEnabled").set(True) + rop.parm('PrimaryGIEngine').set('RS_GIENGINE_BRUTE_FORCE') + rop.parm('SecondaryGIEngine').set('RS_GIENGINE_PHOTON_MAPPING') + rop.parm('UnifiedMaxSamples').set('1024') + ipr = out.node('Redshift_IPR1') + if not ipr: + ipr = out.createNode('Redshift_IPR') + ipr.moveToGoodPosition() + ipr.parm('linked_rop').set(rop.path()) + return rop, ipr + +# Workaround for redshift rendering + +def redshift_quick_anim(end_frame=hou.playbar.playbackRange()[1]): + from time import sleep + rop, ipr = rop_redshift() + frame = int(hou.frame()) + hou.setFrame(1) + hou.node('/obj/smoke_output/timeshift1').bypass(False) + print('range', frame, int(end_frame)+1) + for frame in range(frame, int(end_frame)+1): + print('rendering frame:', frame) + hou.node('/obj/smoke_output/timeshift1').parm('frame').setExpression('$F+{}-1'.format(frame)) + rop.parm('ProgressiveRenderingNumPasses').set(64) + try: + rop.render() + except: + pass + sleep(40) + hou.node('/obj/smoke_output/timeshift1').bypass(True) + hou.setFrame(frame) + +def redshift_still(): + redshift_quick_anim(end_frame=hou.frame()) + +def save_n_render(inc=False): + if inc: + hou.hipFile.saveAndIncrementFileName() + else: + hou.hipFile.save() + if not hou.selectedNodes(): + print("no node selected") + return 1 + if not isinstance(hou.selectedNodes()[0], hou.RopNode): + print("no ROP node selected") + return 1 + return render(hou.selectedNodes()[0]) + +def render(rop): + x, y = [rop.parm(name) for name in 'executebackground', 'execute'] + render = x or y + if not render: + print("not a render node") + return 1 + render.pressButton() + return 0 + +def iprs(): + return [pane for pane in hou.ui.paneTabs() if isinstance(pane, hou.IPRViewer)] + +def ipr_render(): + ipr = iprs()[0] + ipr.killRender() + ipr.startRender()