首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Houdini Python 我的超入门笔记

这两天模仿DNEG的pipeline里印象最深的houdini中做Cache的方法,开始了探索houdini python的第一步。具体是什么代码什么效果就不多说了,此篇只是整理一下,对于houdini python入门新手(我)来说本来很简单但却花了很久的时间查到的东西,以便日后查阅。

1. importhou

没啥多说的,引入Houdini的API

2. nodes =hou.selectedNodes()或

sel = hou.selectedNodes()[0]

will return a tuple of all nodes selected. Tuple is a sequence of entries – nodes in this particular case.

取得当前选择节点

引出一个检测是否有无节点没选择的方法

def checkSelected():#check if node selected

count = 0

nodes = hou.selectedNodes()

for n in nodes:

count += 1

if not count:

return True

else:

sel = nodes[0]

return sel

感觉这种检测方式很笨,希望以后能发现更好的或者小伙伴们给我私信啊。后面可以用if checkSelected() != True:来分条件处理

3. geo = hou.node('out').createNode('geometry')

在out中创建geometry节点

4. sel.parent()为上层级节点

sel.outputs()[0]为downstream节点

sel.path()为节点全路径

5. name = ('{}'.format(sel).split("_", 1))

用“_”分割字符1次,name[1]就是“_”后面部分

6. sel.setColor(hou.Color((0.99,0.42,0))) 设置颜色

geo.moveToGoodPosition() 把geo节点放到合适的位置

7. nodeD.setInput(0, nodeU, 0) 连接nodeU 和 nodeD

8. cacheNode.parm('loadfromdisk').set(1)

设置cacheNode节点的parameter值

cacheNode.parm('file').set(geo.parm('sopoutput'))

设置cacheNode节点的file 和 geo的sopoutput 关联

9.hou_parm_template3=hou.StringParmTemplate("ROP_geometry", "ROP_GEOMETRY", 1, default_value=('',), naming_scheme=hou.parmNamingScheme.Base1,string_type=hou.stringParmType.NodeReference)

cacheNode.addSpareParmTuple(hou_parm_template3)

在cacheNode的root上添加了一个operator path的parameter

10.hou.node("somenode").parm("foo").parmTemplate()

would return the template used for that parm

最后贴一下搜到的一些代码参考吧,以便之后不同地方用到:

node = hou.node('/obj/geo1/null1')

StringParms = hou.StringParmTemplate(“JK_Name” , “JK_Label” , 2 , (“Sadjad”,“Rabiee”))

ButtonParms = hou.ButtonParmTemplate(“JKButton”,“JKButton”)

node.addSpareParmTuple(StringParms)

node.addSpareParmTuple(ButtonParms)

************************************

node = hou.node("/out/ropname")

ptg = node.parmTemplateGroup()

hou_parm_template2 = hou.ToggleParmTemplate("passOn", "Pass On", default_value=True, disable_when="")

hou_parm_template2.setJoinWithNext(True)

hou_parm_template3 = hou.StringParmTemplate("name", "Name", 1, default_value=(["temp1"]), naming_scheme=hou.parmNamingScheme.Base1,string_type=hou.stringParmType.Regular, menu_items=([]), menu_labels=([]), icon_names=([]), item_generator_script="", item_generator_script_language=hou.scriptLanguage.Python, menu_type=hou.menuType.Normal)

hou_parm_template3.setJoinWithNext(True)

target_folder = ("Passes",) // or whatever your folder is.

ptg.appendToFolder(target_folder, hou_parm_template2)

ptg.appendToFolder(target_folder, hou_parm_template3)

node.setParmTemplateGroup(ptg)

************************************

#MAKE A GEOMETRY NODE

curNode = hou.node('/obj').createNode('geo', 'character1')

#CREATE INT SLIDER IN PARAMETER INTERFACE

timeTemplate = hou.IntParmTemplate( "timeOffset", "Time Offset", 1, default_value=([0]), min=-100, max=100, min_is_strict=False, max_is_strict=False, naming_scheme=hou.parmNamingScheme.Base1, disable_when="", tags={})

curNode.addSpareParmTuple( timeTemplate, in_folder=([spareFolder]), create_missing_folders=True)

#CREATE FILE REFERENCE IN PARAMETER INTERFACE

fileTemplate = hou.StringParmTemplate( "fileIN", "File Input", 1, default_value=(["0"]), naming_scheme=hou.parmNamingScheme.Base1, string_type=hou.stringParmType.FileReference, disable_when="", tags={})

curNode.addSpareParmTuple( fileTemplate, in_folder=([spareFolder]), create_missing_folders=True)

************************************

另外感觉这是一个很好的Houdini python pipeline的入门https://github.com/kiryha/Houdini/wiki/python-for-artists

好的这次就到这里,不知道还会不会有更新,哈哈哈:P

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190117G1FQGF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券