Python —— 简述

news2024/11/25 20:38:23

Houdini Python | 笔记合集 - 知乎

Houdini内置三大语言:

  • 表达式,主要用于节点参数控制,可实现跨模块控制;
  • vex,速度最快(比表达式和Python快一个数量级),非常适合密集型计算环境,应首选;
  • python,注意用于编写脚本,控制pdg,实现houdini以外的功能;可做表达式和vex(材质除外)大部分事情,但最慢;此语言可用于自定义窗口、导出数据、加密、抓取网络数据,任务发布,深度学习等;

Houdini中调用Python的方式

  • Python节点;
  • Python Shell;
  • Python Source Editor,自定义函数模块,需保存hip文件;
  • 节点的Operator Type Properties/Scripts;
  • 工具架工具Scripts;

节点编辑

//创建节点
node.createNode('subnet', subnet_name)
node.createInputNode(0, 'box')
node.createOutputNode('box')
//节点状态
node.hide(False)
node.setHighlightFlag(False)
node.setTemplateFlag(False)
node.setSelectableTemplateFlag(False)
node.setSelected(False)
node.setUnloadFlag(False)

node.setHardLocked(True)
node.setSoftLocked(False)

node.setDisplayFlag(True)
node.setRenderFlag(True)

node.layoutChildren() //自动排列节点位置,相当于L

node.bypass(True)

hou.node('/obj/python').cook(True) //强制重新计算
//节点位置
node.position()
node.setPosition(vector2) //(pos.x()+1, pos.y()+1)、hou.Vector2(pos.x()+1, pos.y()+1)
node.move((2,3))
node.moveToGoodPosition()
//获取节点信息
hou.pwd() //获取当前节点
hou.node('.') //获取当前节点

node.path() //获取节点的绝对路径

node.name()
node.setName(newname)
//选择节点
hou.selectedNodes() //返回所选节点的列表
node.setSelected(True) //设置为选择节点
node.setCurrent(True) //设置当前节点为最后选择的节点
//父子节点
node.parent() //父级节点
node.children() //子节点列表
node.allSubChildren() //递归返回所有子节点
node.allNodes() //递归返回所有子节点,包括本身
node.allItems() //返回所有子项
node.numItems() //子项数

//上游节点
node.inputAncestors() 
//连接节点
node.inputs()
node.input(inputindex)
node.outputs()
node.setFirstinput(otherNode)
node.setInput(0, otherNode)
//节点类型
hou.nodeType() //HOM Funtion
node.type() //Class Function
node.type().instances()
node.type().name()
node.type().category()
node.changeNodeType(newtype)

//节点类型的类别
hou.nodeTypeCategories() //返回类别字典
hou.sopNodeTypeCategory() //返回sop类别
//用户数据
node.setUserData(name, value)
node.userDataDict()
node.Data(name)
node.destroyUserData(name)
node.clearUserDataDict()
//注释评论
node.setComment(comment) //设置评论
node.setGenericFlag(hou.nodeFlag.DisplayComment, True) //显示评论
//复制节点
hou.copyNodesTo(nodes, dest)
node.copyTo(dest)

节点参数编辑

//获取参数
hou.parm(path)
hou.parmTuple(path)
node.parm(parm_path)
node.parmTuple(parm_path)
node.parms()
node.parmTuples()
//计算参数
hou.ch(path) //等价于hou.evalParm(path)
hou.evalParm(path)
hou.evalParmTuple(path)
node.evalParm(parm_path)
node.evalParmTuple(parm_path)
node.parm(parm_path).eval()
//设置参数
node.setParms(parm_dict)
node.parm(parm_path).set(value)
node.parm(parm_path).rawValue()
node.parm(parm_path).keyframes()
node.parm(parm_path).commponentIndex()
node.parm(parm_path).lock(True)
node.parm(parm_path).pressButton() //调用callback脚本
//ramp参数
ramp_value = node.parm('ramp').eval()
ramp_value.lookup(position)

//添加ramp参数
node = hou.node('/obj/box_object1/null1')
ramp_temp = hou.RampParmTemplate("name","label",hou.rampParmType.Color,default_value=2)
ramp_parm = node.addSpareParmTuple(ramp_temp)
ramp_value = hou.Ramp( (hou.rampBasis.Linear, hou.rampBasis.Linear), (0, 1), ((0.0, 1.0, 0.0), (0.0, 0.0, 0.5)) )
ramp_parm[0].set(ramp_value)

几何体对象Geometry

hou.SopNode class,表示surface节点;

hou.Geometry class,几何体对象包含定义几何体形状的点或面;

//创建线
geo = hou.pwd().geometry()

point1 = geo.createPoint()
point1.setPosition(hou.Vector3(1,2,3))
point2 = geo.createPoint()
point2.setPosition(hou.Vector3(0,1,2))

poly = geo.createPolygon(False)
poly.addVertex(point1)
poly.addVertex(point2)
//geo
geo.points() //返回所有点
geo.prims() //返回所有面
geo.pointAttribs() //返回所有点属性
geo.primAttribs() //返回所有点属性
geo.vertexAttribs() //返回所有点属性

geo.addAttrib(type, name, default_value, transform_as_normal=False, create_local_variable=True)

point.setAttribValue(name_or_attrib, attrib_value)
prim.setAttribValue(name_or_attrib, attrib_value)
vertex.setAttribValue(name_or_attrib, attrib_value)
geo.setGlobalAttribValue(name_or_attrib, attrib_value)
//point
point.number()
point.position()
point.prims()
point.vertices()
//prim
prim.number()
prim.points()
prim.vertices()

组编辑

//返回对应的所有组
geo.pointGroups()
geo.primGroups()
geo.edgeGroups()
geo.vectexGroups()

//创建对应的组
geo.createPointGroup(name, is_ordered=False)
geo.createPrimGroup(name, is_ordered=False)
geo.createEdgeGroup(name, is_ordered=False)
geo.createVertexGroup(name, is_ordered=False)

//查找对应的组
geo.findPointGroup(name)
geo.findPrimGroup(name)
geo.findEdgeGroup(name)
geo.findVertexGroup(name)

UI窗口

//显示提示框
hou.ui.displayMessage(text)
hou.ui.displayConfirmation(text)
hou.ui.displayNodeHelp(node.type())
hou.ui.displayFileDependencyDialog()
//输入弹窗
hou.ui.readInput("Insert text") //单行
hou.ui.readMultiInput(message = "Enter parms:",
input_labels = ["height","lRadius","uRadius","frequency"],
initial_contents = ["20","10","0","3"]) //多行
//文件选择弹窗
hou.ui.selectFile()

函数

//自定义函数
def fun(kwargs):
    return kwargs
node.asCode() //打印重建此节点所需的代码
str() //转化为字符类型
exec(str) //将字符做为代码运行
locals().get("var") //是否已存在指定的局部变量
//展开字符串内的局部变量或表达式,已废弃使用hou.text.expandString 
hou.expandString(str)
//在给定帧展开字符串内的局部变量或表达式,已废弃使用 hou.text.expandStringAtFrame
hou.expandStringAtFrame(str, frame_number) 
//hou.Vector3 class
vector.length()
vector.normalized()
vector.distanceTo(vector3)
vector.dot(vector3) 
vector.cross(vector3)
angleTo(vector3) 
x()、y()、z()
//获取图像分辨率
imageResolution(image_file_name)
//获取运行的houdini的路径
hou.houdiniPath()
//设置节点的默认表达式语言
node.setExpressionLanguage(hou.exprLanguage.Hscript)
//将节点从指定版本同步到其HDA定义的当前版本
node.syncNodeVersionIfNeeded(from_version)
//加载自定义hda
hou.hda.installFile(hda_file_path)
//存储当前文件
hou.hipFile.save()
//加载一个新文件
hou.hipFile.load()

其他

自定义运行节点代码按钮

  • 在节点创建多行字符串参数,语言改为Python;
  • 创建按钮参数,并编写Python调用脚本(callback script);
//current_node = kwargs['node']
//kwargs = hou.pwd() = kwargs['node']
exec(kwargs['node'].parm('code').eval())
//或
exec(hou.pwd().parm('code').eval())

for…in…语句

enumerate()枚举函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1587940.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uni-app实现分页--(2)分页加载,首页下拉触底加载更多

业务逻辑如下: api函数升级 定义分页参数类型 组件调用api传参

Pytest精通指南(02)对比Unittest的差异

文章目录 前言用例编写规则不同用例前置与后置条件不同断言功能不同测试报告失败重跑机制参数化用例分类执行Unittest 前后置示例Pytest 前后置示例总结 前言 在Python中,unittest和pytest是两个主流的测试框架; 它们都旨在支持自动化测试、使用断言验证…

AI的尽头真的是能源吗?

引言 近日,英伟达黄仁勋、OpenAI奥特曼等科技界大佬也表达了AI被能源制约的焦虑。 黄仁勋在一次公开演讲中指出,AI未来发展与光伏和储能紧密相连。他强调,不应仅仅关注计算力,而是需要更全面地考虑能源消耗问题。黄仁勋表示&…

PostgreSQL入门到实战-第十七弹

PostgreSQL入门到实战 PostgreSQL表联接(一)官网地址PostgreSQL概述PostgreSQL中Join命令理论更新计划 PostgreSQL表联接(一) 各种PostgreSQL联接,包括内部联接、左侧联接、右侧联接和完全外部联接 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不…

亚马逊的核心壁垒:物流

物流为美国电商市场渗透及格局的核心影响因素,也是亚马逊的核心壁垒所在。 从行业规模来看,美国电商渗透率低于中国,主要由于 两国地理及人口密度差异导致美国物流履约难度更大,此外美国更发达的实 体零售业和更为严苛的电商政策…

[Linux][环境变量][进程地址空间]详细解读

目录 1.环境变量1.基本概念2.常见环境变量3.查看环境变量的方法4.测试PATH5.测试HOME6.和环境变量相关的命令7.环境变量的组织方式8.通过代码如何获取环境变量9.通过系统调用获取或设置环境变量10.环境变量通常是具有全局属性 2.进程地址空间0.这里的地址空间,是物理…

【感谢】心怀感恩,共赴知识之旅——致每一位陪伴我突破百万总访问量的您

小伙伴朋友们: 此刻,我怀着无比激动与深深感激的心情,写下这篇特别的博文。今天,我的CSDN总访问量成功突破了百万大关,这不仅是一个数字的跨越,更是你们对我的支持、信任与鼓励的有力见证。在此&#xff0…

CNN家族的族谱!

没有过时的技术,只是看什么样的应用场景,某些场景下,老技术也能焕发光彩! 发展历程 CNN思想起源——喵星人的视觉系统 20世纪60年代左右,加拿大神经科学家David H. Hubel和Torsten Wisesel发现了猫的视觉中枢里存在感…

SAP_ABAP_MM_PO审批_队列实践SMQ1

SAP ABAP 顾问(开发工程师)能力模型-CSDN博客文章浏览阅读1k次。目标:基于对SAP abap 顾问能力模型的梳理,给一年左右经验的abaper 快速成长为三年经验提供超级燃料!https://blog.csdn.net/java_zhong1990/article/det…

Python - 深度学习系列32 - glm2接口部署实践

说明 前阵子,已经对glm2的接口部署做了镜像化。本次的目的是: 1 测试在隔了一阵子(忘记)的情况下,快速部署时是否有障碍,是不是足够方便2 在算网机环境下,能否快速的实现部署。仅考虑文件方式…

策略模式【行为模式C++】

1.概述 策略模式是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。 策略模式通常应用于需要多种算法进行操作的场景,如排序、搜索、数据压缩等。在这些情况下&#x…

D-LinkNAS 远程命令执行漏洞(CVE-2024-3273)RCE漏

声明: 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 简介 D-LinkNAS是由D-Link公司制造的网络附加存储设备。…

有趣的css - 动态雷达扫描

大家好,我是 Just,这里是「设计师工作日常」,今天分享的是使用 css 实现一个动态的雷达扫描,快学起来吧! 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码…

产品推荐 | 瑞苏盈科基于立体帧捕捉和视频处理应用的火星Mars EB1开发板

01 产品概述 火星Mars EB1底板是为火星Mars系列FPGA和SoC核心板设计的通用底板,非常适用于立体帧捕捉和视频处理应用,可以为构建基于FPGA的定制化硬件系统提供一个良好的基础和开端。 02 核心亮点 ■ 与所有火星Mars系列FPGA和SoC核心板兼容 ■ 适用…

2024mathorcup数学建模C题思路分析-物流网络分拣中心货量预测及人员排班

# 1 赛题 C 题 物流网络分拣中心货量预测及人员排班 电商物流网络在订单履约中由多个环节组成,图 ’ 是一个简化的物流 网络示意图。其中,分拣中心作为网络的中间环节,需要将包裹按照不同 流向进行分拣并发往下一个场地,最终使包裹…

FME学习之旅---day23

我们付出一些成本,时间的或者其他,最终总能收获一些什么。 教程:地理数据库入门 FME 支持读取和写入不同的地理数据库格式;这包括文件地理数据库、个人地理数据库和 ArcSDE 地理数据库。支持矢量和栅格数据类型。在本教程中,我们…

Understanding Flink

Flink 下载: mkdir ~/flink && cd ~/flinkwget --no-check-certificate https://archive.apache.org/dist/flink/flink-1.15.3/flink-1.15.3-bin-scala_2.12.tgz wget --no-check-certificate https://repo1.maven.org/maven2/com/ververica/flink-sql-co…

PHP+MySQL组合开发 易企秀H5场景源码系统 带完整的安装代码包以及搭建教程

在数字化时代,企业对于宣传与推广的需求日益增长,而H5页面作为一种轻量级、跨平台的宣传方式,深受企业青睐。为了满足企业对于H5页面制作的需求,我们基于PHPMySQL组合开发了一套易企秀H5场景源码系统,并提供了完整的安…

PTA(题目集一 题目 代码 C++ 注解)

目录 题目一: 代码: 题目二: 代码: 题目三: 代码: 题目四: 代码: 题目五: 代码: 题目六: 代码: 题目七: 代…

VM虚拟机Linux系统Redhat7.4版本进行网络配置

日常中自己搭建的虚拟机一般用到两种网络方式,第一种是仅主机模式、还有一种是NAT模式。 1、仅主机模式:可以和自己本地电脑,或者虚拟机和虚拟机之间进行网络通信,相当于一个局域网,是不能连接外网的。 2、NAT模式&a…