python houdini_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

>>> 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())

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值