From b36ed29763045d0d121abc4675977722b8974499 Mon Sep 17 00:00:00 2001 From: Kuba Winnicki Date: Mon, 10 Jun 2019 08:51:44 +0200 Subject: [PATCH] Set desktop on startup. Geocache node creation. --- 123.py | 16 ++++++------ hhacks.py | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 81 insertions(+), 19 deletions(-) diff --git a/123.py b/123.py index 3483355..13a62a4 100644 --- a/123.py +++ b/123.py @@ -1,8 +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() - +# 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, set_desktop +rop_redshift() +install_aliases() +set_desktop() diff --git a/hhacks.py b/hhacks.py index 65fd407..4051124 100644 --- a/hhacks.py +++ b/hhacks.py @@ -2,14 +2,11 @@ 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()"), + (4, "from hhacks import redshift_quick_anim as _; _()"), + (5, 'from hhacks import install_desktop as _; _()'), + (6, 'from hhacks import make_geo_cache as _; _()'), (7, "from hhacks import iprs; iprs()[0].killRender();iprs()[0].startRender()"), (8, 'from hhacks import *; rop,_=rop_redshift(); rop.parm("trange").set(1); render(rop)'), (9, 'from hhacks import *; rop,_=rop_redshift(); rop.parm("trange").set(0); render(rop)'), @@ -21,15 +18,16 @@ def install_aliases(): hou.hscript("alias F{} 'python -c \\'{}\\''".format(fkey, hcmd)) def rewind(): + """ + # rewind and return to current frame + ffwd = rewind() + ... + hou.setFrame(ffwd) + """ 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') @@ -43,6 +41,7 @@ def rop_redshift(): rop.parm('PrimaryGIEngine').set('RS_GIENGINE_BRUTE_FORCE') rop.parm('SecondaryGIEngine').set('RS_GIENGINE_PHOTON_MAPPING') rop.parm('UnifiedMaxSamples').set('1024') + rop.parm('RS_iprUpdateMeshDeform').set(True) ipr = out.node('Redshift_IPR1') if not ipr: ipr = out.createNode('Redshift_IPR') @@ -103,3 +102,66 @@ def ipr_render(): ipr = iprs()[0] ipr.killRender() ipr.startRender() + +def install_desktop(pane_name="Network"): + panels = [p for p in hou.ui.floatingPanels() if p.name()==pane_name] + if not panels: + panel = hou.ui.curDesktop().createFloatingPanel(hou.paneTabType.NetworkEditor, size=(1920,1080)) + panel.setName(pane_name) + panel.attachToDesktop(True) + +def set_desktop(): + desktops = {d.name(): d for d in hou.ui.desktops()} + if '2x2' in desktops: + desktops['2x2'].setAsCurrent() + + +def make_output_sop(geo, connect_to='', name=''): + sop = geo.createNode('null', '_'.join(s for s in ['OUT', name] if s)) + if connect_to: + sop.setInput(0, connect_to) + if connect_to.isDisplayFlagSet(): + sop.setDisplayFlag(True) + if connect_to.isRenderFlagSet(): + sop.setRenderFlag(True) + sop.moveToGoodPosition() + return sop + + +# from hhacks import make_geo_cache as _; _() +def make_geo_cache(name=''): + """ + Create /out geometry cache. Save hip. Render in background. + """ + + # Path from selection or active view and connection + if hou.selectedNodes() and hou.selectedNodes()[-1].parent().type().name() == 'geo': + connect_to = hou.selectedNodes()[-1] + geo = connect_to.parent() + name = geo.path().split('/')[-1] + else: + connect_to = None + geo = hou.ui.paneTabOfType(hou.paneTabType.NetworkEditor).pwd() + + # OUT_RENDER + sop = make_output_sop(geo, connect_to, 'RENDER') + + # SOP + out = hou.node('/out').createNode('geometry', '{}_cache'.format(name)) + out.moveToGoodPosition() + out.parm('trange').set(1) + out.parm('soppath').set(sop.path()) + + # Create import nodes + look = hou.node('/obj').createNode('geo', '{}_render'.format(name)) + in_file = look.createNode('file', 'IN_{}'.format(name)) + out_render = make_output_sop(look, connect_to=in_file) + for node in [look, in_file, out_render]: + node.moveToGoodPosition() + + print(in_file) + print(dir(in_file)) + in_file.parm('file').set(out.parm('sopoutput')) + + hou.hipFile.save() + out.parm('executebackground').pressButton()