欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python for houdini——python在houdini中的基础应用01

程序员文章站 2024-03-26 08:53:17
...

学了一个星期的python,终于可以在houdini中实操了,但是还是有点懵,对于python的语法还不大熟悉,所以还是得多练多做笔记,看了网上几位大佬的博客,个人觉得入门学习还是挺不错的python in houdini的基础教程奈何图片太不清楚,所以自己总结一下
一、houdini中用python的地方主要在
1.写节点上( file/new operator type:有个python形式的)2.python shell(应该是个python编译器),3.python source editor,写hou.session模块的地方。2和3的命令都在windows这一栏里。4.工具栏,右击工具栏建立的工具中可以写python代码。
二、python获取物体并设置属性
1、首先创建一个方块s
2、在python shell 中写代码:

>>> mybox = hou.node("/obj/box_object1/box1")#创建box
>>> print mybox
box1
>>> mybox_tx = mybox.parm('tx')#获取box x轴的位置属性
>>> print mybox_tx
<hou.Parm tx in /obj/box_object1/box1>
>>> mybox_tx.set(10)#box 位置x变为10

三、python连接节点

>>> obj = hou.node("obj")
>>> print obj
obj
>>> mygeo = obj.createNode('geo')
>>> mygeo = obj.createNode('geo',run_init_scripts=False)
>>> mybox = mygeo.createNode('box')
>>> mysur = mygeo.createNode('subdivide')
>>> mysur.setFirstInput(mybox)#连接节点
>>> mygeo.layoutChildren()#位置排列,相当按下L
>>> mysur.setDisplayFlag(True)#设置显示属性
>>> mysur.setRenderFlag(True)

三、在展架中使用
在工具栏创建一个自定义工具
输入代码

from math import sin,cos

geoNet = hou.ui.paneTabOfType(hou.paneTabType.NetworkEditor)

spiral = geoNet.pwd().createNode("curve")

coordsParm = spiral.parm("coords")

input = hou.ui.readMultiInput(message = "Enter parms:",input_labels = ["height","lRadius","uRadius","frequency"],initial_contents = ["20","10","0","3"])

height = float(input[1][0])
lRadius = float(input[1][1])
uRadius = float(input[1][2])
frequency = float(input[1][3])

coordsStr = ""
radius = lRadius
step = (lRadius - uRadius) / (height * frequency)

for i in range(int(height*frequency)):
    px = str(radius*sin(i))
    py = str(i/frequency)
    pz = str(radius*cos(i))    
    
    coordsStr += px+","+py+","+pz+" "
    radius -= step
    
coordsParm.set(coordsStr)
    

之后只要创建一个geometry节点就可以工具使用这个创建螺旋线

四、创建自定义节点


import hou
import random

# This code is called when instances of this SOP cook.
node = hou.pwd()
geo = node.geometry()

# Add code to modify the contents of geo.

random.seed(123)

colorAttrib = geo.addAttrib(hou.attribType.Point,"Cd",(1.0,1.0,1.0))
color = hou.Color()
numPoints = len(geo.points())


for point in geo.points():
    pos = point.position()
    
    px=pos[0]
    py=pos[1]+random.random()*random.choice([-1,1])
    pz=pos[2]
    
    point.setPosition((px,py,pz))
    value = float(point.number())/numPoints
    color.setHSV((value*255,1.0,1.0,))
    point.setAttribValue(colorAttrib,color.rgb())
    

保存后在即可以通过该节点改变场景中物体颜色和形状属性详细操作可以看翔艺Maya Houdini Python开发实战-基础篇挺不错的一个教程,嫌太长的话也有文字版翔艺Maya Houdini Python开发实战-基础篇-文字版

之后再推荐两篇不错的入门文章
Houdini With Python学习记(CHAO)录(XI)01
Houdini With Python学习记(CHAO)录(XI)02