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

学了一个星期的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

  • 9
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值