Deadline 跟 Houdini 連動筆記

2018/4/15 下午11:52:50

將houdini與deadline連接遇到的狀況跟解決方法紀錄在這裡。

Hython版本修改

不知道為什麼在configure plugins改hython版本沒有用,後來在
DeadlineRepository\plugins\Houdini\Houdini.param直接修改才順利執行對應版本。

自製ROP的連動

houdini在deadline的算圖,是slave會用hython呼叫hrender_dl.py副本並把參數寫進去,hrender_dl.py的主文件位置在
DeadlineRepository\plugins\Houdini\hrender_dl.py

hrender_dl.py在經過一連串的設定後,是呼叫hou.RopNode.render()來算圖,在這邊用自製ROP遇到問題。

我在自製的ROP裡有用hou.frame()取現在格數的方式來做計算,如果呼叫hou.RopNode.render()frame_range參數startend是一樣的話(例如(103, 103)),用hou.frame()取到的值會是1.0,但如果frame_range參數startend不一樣(例如(103, 106)),hou.frame()取到的值就會是正確的103~106。

解決辦法即是更改hrender_dl.py,加入自製ROP的判斷式用hou.setFrame先移到想要的格數。

# ...取自hrender_dl.py最後段,以上省略。 elif ropType == "Redshift_ROP": # blablabla # 增加自製ROP的判斷式,並更改格數讓自製ROP的hou.frame()可以吃到正確格數 elif ropType == "eli_sepExrRop": if startFrame == endFrame: hou.setFrame(startFrame) if tileRender: # blablabla frameString = "" if startFrame == endFrame: frameString = "frame " + str(startFrame) else: frameString = "frame " + str(startFrame) + " to " + str(endFrame) if isWedge: # blablabla else: print( "Rendering " + frameString ) # 如果是一般的自製ROP,整個py只會執行方才增加的判斷式跟下面這行 rop.render( frameTuple, resolution, ignore_inputs=ignoreInputs )