在Houdini中创建自定义的Python函数
从Houdini 9 开始,sidefx给Houdini增加了对Python语言的支持,在未来Hscript也将被Python所代替;Houdini在9.0的时候加入了对Python的支持,成为替代HScript的脚本,为了保持文件在各版本间自上而下的兼容,HScript现在还是保留的,但推荐使用Python;
你可以用python建立一个自定的节点,和VEX的节点有所不同,Python SOP可以允许建立或删除几何体,当然它的速度是没有VEX节点快的的。VEX的底层实现是C语言,Python与houdini的接口是C++实现的;
自定义函数的结构如下:
[返回值] 函数名([[参数类型1] 参数1 [, [参数类型2] 参数2] ...]) { 函数体 }
返回值的类型包括float(浮点小数), String(字符串), Vector(向量), Matrix(矩阵)。
特别注意:
如果没有明确列出返回类型或参数类型,Houdini将假定它是一个float型,会默认将其他数据类型改变成浮点型。如果你忘记指定一个参数是一个字符串,Houdini都将把它转换为浮点类型,可能会导致难以发现的Bug,所以最好指定函数类型,float型的性能比较低,尽量避免;
函数定义的主体,可以使用额外的语法,如赋值(=,+=, - =),if,while等使用return 获取返回值。
使用#开头的行是注释,Houdini将忽略执行。
创建自定义函数过程:
打开函数编辑器
选择Edit > Aliases and Variables 打开 Aliases(别名)和Variables(变量)编辑器:
-
点击 Expressions 选项:
有朋友可能会觉得为何这个Python函数的语法不一样,因为Sidefx把Python修改过,编译了一个新的Hython,不过这个区别在于括号和部分标点;其他改动不大。
创建新的自定义函数:
-
直接清除原函数,输入新自定义函数;
-
点击Apply Changes之后,新函数名就会进入左侧列表,就可以使用了。 我们定义的函数将会在左边的函数列表中出现。
从外部文件中加载:
-
右下角的自定义函数编辑器中单击加号图标,并选择要加载的文件。
-
也可以使用 exread 命令。
在外部编辑器中编辑函数源码:
-
在右下角的自定义函数编辑器,点击“Edit”按钮。
-
在外部编辑器中编辑函数源码,然后保存关闭返回给Houdini。
-
也可以使用 exread 命令。
测试新的函数:
-
首先需要把Houdini切换到Technical模式;Windows——Desktop——Technical
- 在底部的Textport窗口中输入自定义的函数名,例如测试min函数就写:echo `min(12, 15)`,打印结果返回12,函数创建成功~
下面是Python自定义函数实例:
Houdini中写Python函数和在Eclipse中不同,函数后面用大括号作为方法体而不是冒号,写冒号会报错;
# 比较两个数的大小,没有定义返回值类型,默认返回浮点类型。
min(v1, v2) {
if (v1 < v2) {
return v1;
} else {
return v2;
}
}
# 返回字符串
string strreverse(string in) {
float len = strlen(in);
string result = "";
for (src = len-1; src >= 0; src--) {
result += in[src]; return result;
}
}
# 返回最小的向量
float vecmin(vector vec) {
min = vec[0]
for (i = 1; i < vsize(vec); i++) {
if (vec[i] < min)
min = vec[i]
}
return min;
}
作 者:蒋至乙 出 处:http://www.cnblogs.com/jackchiang 文章内容欢迎转载,但请保留此段声明,并在页面醒目位置给出原文连接,感谢您的支持。 人生在世的全部意义,不是为了享受,而是为了帮助别人脱离苦难、获得幸福~