自定义HScript Expression Functions

当我需要使用Expression Functions来写表达式的时候,比如stamp函数,我试图想通过一种通用的理念站在编程的角度来表述如何使用它,而不是依靠惯性记忆来使用它。阅读设定它们的源代码应该是一种万变不离其宗的理念,但是很遗憾,HScript的命令以及表达式函数都是通过C++编译成底层的二进制文件存放在Houdini安装目录下,查看源代码有点不切实际,现在唯一寄希望于帮助文档或者HScript命令exhelp来获取表达式的说明与案例了。

有人可能觉得笔者在钻牛角尖,其实不然,笔者理解的牛角尖是当我不理解一件事件的时候,我会去从根本上去学习它的规则是怎么玩的,而不会纠结它的规则为什么这样制定,钻牛角尖是一件浪费时间才能有所收获的事情(除非你有时间)。比如我们一年级就知道的加法口诀和乘法口诀,我们只要知道怎么把这些口诀运用到实际生活中就行,真心没必要去纠结1+1为什么等于2,一切都是遵循一套规则,这是很多人前赴后继得来的规律与经验,有人就喜欢打破这种规则形成另一种规则,比如制定计算机二进制数,1+1就等于10,而我们没必要去破坏这种规则,如果你是想开发一个跟Houdini一样的软件可以去思考思考,如果只是使用Houdini就理解到它的规则就行了。

虽然表达式函数的设定就像一个只有说明书的黑盒子一样,但如果有一点点编程基础,知道函数是如何定义的,传参与返回值这些基础知识的话,或许也是一条通用的理念,我们只需要知道这个黑盒子需要什么类型的参数才能正确运作,以及黑盒子返回的值我可以用在什么地方就足够,知道了这些,陌生的表达式函数稍加研究应该就可以很好的用起来。

为了直观地描述这一点,我们自己来定义一些表达式函数,即自己设定一些源代码,这个自定义的黑盒子对于我们来说已经不是秘密,演示表达式函数运转的原理足够了。

按图示选择菜单Edit>Aliases and Variables,点击Expressions选项,输入一个求矢量元素最小值的函数,Apply Changes就会将这个表达式函数存储到当前的hip文件中,在参数面板按规则调用就没有问题。

我们可以通过几个HScript命令来编辑和删除我们的自定义的表达式函数

excat 获取表达式函数源代码

exedit 打开文本编辑器编写表达式函数

exhelp 查看表达式函数帮助

exls 查看所有当前自定义的表达式函数

exread 从文件中加载表达式函数

exrm 删除自定义表达式函数

这里的自定义表达式函数有个很大的缺点,不能写完在所有Houdini环境中使用,换个hip文件就不起作用,官方在很多表达式函数的使用上都使用了Python语言来替代,所以不建议自己来写HScript表达式函数,写Python就足够用,比如stamp(“../copy1”, “sides”, 5)可以用Python语言写法node(“../copy1”).stampValue(“sides”, 5)来替代,扩展全局的Python表达式也相对简单一些。

如果非要像官方那样扩展写一些表达式函数的话,需要用到HDK来扩展,语法和案例开发文档上都有明确的规定。

本文来自企鹅号 - CGRnDStudio媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏决胜机器学习

设计模式专题(二)——策略模式

设计模式专题(二)——策略模式 (原创内容,转载请注明来源,谢谢) 一、概述 1、含义 策略模式(Strategy)是一种定义了各类算法的模式,其将各种算法...

36080
来自专栏一个会写诗的程序员的博客

Java新手极简指北手册

为什么我先拿“数据结构和算法”说事捏?这玩意是写程序最最基本的东东。不管你使用 Java 还是其它的什么语言,都离不开它。而且这玩意是跨语言的,学好之后不管在哪...

15310
来自专栏企鹅号快讯

给 iOS 开发者的 python 学习日记十二

写在前面 我们在昨天的学习笔记讨论了 Python 基本变数类型与资料结构可以应用的属性或方法,除了基本的资料结构以外,你是否还记得 Python 可以透过引入...

21950
来自专栏CSDN技术头条

改变开发者编码思维的六种编程范式

译者注:本文介绍了六种编程范式,提到了不少小众语言,作者希望借此让大家更多的了解一些非主流的编程范式,进而改变对编程的看法。以下为译文: 时不时地,我会发现一些...

514100
来自专栏一个会写诗的程序员的博客

编译器之自举

**要阅读本文,不需要太高深的编译原理知识,甚至不需要编译相关的知识。但是本文也不是面向对电脑一无所知的读者的,你至少要知道:

20410
来自专栏哈雷彗星撞地球

设计模式中的设计原则

翻了三本书《设计模式之禅》、《设计模式:可复用的面向对象软件元素》、《Head First 设计模式》,也看了不少博客和关于设计模式原则的文章。关于设计模式有几...

9630
来自专栏跨界架构师

再谈开发中的代码规范

  随着公司的业务发展,项目越来越多,越来越大,复杂性也越来越高。查找一个BUG变得越发抓狂;新人熟悉一块代码也变得越发困难。有的时候顺手写下的一行充满坏味道的...

12940
来自专栏Python区块链

想到阿里巴巴从事Python吗?年薪300K不是梦!

作为Python工程师,进入大公司是开启职业新起点的关键,在阿里巴巴面试Python工程师的题目和经历,希望对广大Python工程师的求职者有一个帮助。

29160
来自专栏智能算法

一个程序员怎么才算精通python

我会先给出我对精通Python的理解,然后给出一些Python中有难度的知识点。如果大家在看完我这篇回答之前,已经充分理解了我列出的各个知识点,那么,我相信你...

64790
来自专栏C语言及其他语言

[每日一题]破解密码(1244)

向往如图灵一样破解密码吗?那么就请开始你的表演 题目描述 密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之...

46790

扫码关注云+社区

领取腾讯云代金券