在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(变量)编辑器:

  1. 点击 Expressions 选项:

  有朋友可能会觉得为何这个Python函数的语法不一样,因为Sidefx把Python修改过,编译了一个新的Hython,不过这个区别在于括号和部分标点;其他改动不大。

创建新的自定义函数:

  1. 直接清除原函数,输入新自定义函数;

  2. 点击Apply Changes之后,新函数名就会进入左侧列表,就可以使用了。 我们定义的函数将会在左边的函数列表中出现。

从外部文件中加载:

  • 右下角的自定义函数编辑器中单击加号图标,并选择要加载的文件。

  • 也可以使用 exread 命令。

在外部编辑器中编辑函数源码:

  1. 在右下角的自定义函数编辑器,点击“Edit”按钮。

  2. 在外部编辑器中编辑函数源码,然后保存关闭返回给Houdini。

  3. 也可以使用 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; }
原文地址:https://www.cnblogs.com/jackchiang/p/4599215.html