本节摘要:HScript 是参数栏里的表达式语言,职责单一:让一个参数随另一个参数、时间或随机源动态变化。本节做三个参数绑定实验(参数引用、时间驱动、随机扰动),并说清 HScript 与 VEX 表达式的边界,避免"到处都是表达式"的网络维护灾难。
给 Grid 的 sizez 填入:
ch('../grid_source/sizex') * 2
现在 sizex 改 10,sizez 自动变 20。ch() 读参数通道——这是 HScript 最常用的一个函数。被绑定的参数栏会显示橙色底色,一眼可识别"这个值不是手填的"。
在 Mountain 的 height 里填:
1.5 + 0.3 * sin($T * 0.5)
播放时间轴,山的高度以两秒为周期在 1.2~1.8 之间起伏。$T 是当前秒数。$F(帧号)、$FF(浮点帧)是它的兄弟变量——任何"随时间变化"的参数都能用一行表达式实现,不必上关键帧。
更实用的一招,rand + id 给每个实例错开相位:
fit01(rand($OBJID), 0, 1)
在复制多个容器做变体时,这类一行表达式能把"整齐划一"打散。同样的技巧在 SOP 内部则要换成 VEX 的 rand(@ptnum)——注意作用域不同:HScript 的变量是节点级的(T、F),VEX 的变量是元素级的(@ptnum)。
HScript 便宜、快捷、就一行——这既是优点也是陷阱。三条经验:
ch('../../../别的节点/参数') 这种深路径在重构时是地雷,一改层级就断。跨容器传值优先用第 7 章 HDA 的参数通道提升。参数栏里其实能写两种方言:HScript(老)和 VEX 表达式(新,@e 或在设置里切换默认)。VEX 表达式语法与 Wrangle 一致(fit(rand(@ptnum),0,0,1)),学到 2.1 的函数直接复用;HScript 胜在老教程与老资产里到处都是。认得 $T/$F/ch()/rand() 四个符号,两代资产你都能读。
💡 关键直觉:表达式的正确用途是参数之间的微分关系("它总是它的两倍"),而不是生成逻辑本身("按坡度撒石头")。
语言工具箱齐了。第 3 章回到几何本身:拓扑、散布、噪声、植被四大核心技术。
顺带厘清 HScript 的当代定位:Houdini 各版本早已支持在参数栏直接写 VEX 风格表达式(带分号的多语句、@ 引用),传统 HScript 函数正在被逐步收敛。实用策略是以 ch/fit/rand/point 这十几个高频函数为稳态词汇(它们在两种体系里都可用),复杂逻辑一律迁出参数栏进 VEX。判断一处表达式该不该迁出的信号很明确:当你在参数栏里开始写嵌套两层以上的括号,或需要写注释才能记住它的含义时,它就已经超出了表达式的职责范围。参数栏是"胶水"不是"程序",这条纪律能避免网络慢慢长满不可读的天书参数。
最后给一组值得背下来的表达式模板,它们覆盖动态图形与程序化绑定最常见的需求:帧驱动($T*speed 类的匀速与 pow($T,2)*accel 的加速)、往返脉冲(abs(sin($T*freq)) 与平滑版 smooth() 包裹)、阶段编排(chramp("timeline", $T/duration) 把节奏画进曲线)、噪声抖动(noise($T*freq+seed))。四个模板组合即可表达绝大多数参数动画需求;把它们存成文本片段库,用时粘贴改参,是表达式层的复用工程学。
最后留一个综合练习把本章四门语言串起来:做一只"参数化路灯"资产——灯杆高度用表达式联动光源强度(ch() 引用),灯罩形状用 VOP 调 ramp,开关闪烁逻辑用 VEX(噪声阈值切亮灭),批量摆放与随机旋转用 Python 一键完成。一只路灯走完语言栈全程,四种语言的分工在手上留下肌肉记忆;这正是本章追求的终点:不是会四门语言,而是遇到任何需求时手自动伸向对的那层。
关于表达式还有一个常被忽视的安全话题:它们是网络里最脆弱的部分——节点改名或删除后,引用它的 ch() 表达式不会自动报错,只会静默返回零,表现为"某个参数莫名其妙失灵"。防御手段有二:重命名前用 Find 在 hip 内搜索旧路径;关键表达式旁贴 Sticky Note 登记"我引用了谁"。养成这两个小动作,能消灭程序化项目里最隐秘的一类 bug;表达式的轻量与它的脆弱是同一枚硬币,用其轻就要防其脆。
再补充时间表达式在快慢镜头下的坑:$T 随时间线缩放,$F 不随——慢镜头里混用两者会让"按秒设计"的速度忽快忽慢。项目开始前定下规矩(全部用 T 或全部用 F),并写进团队的属性字典附页,这个五分钟的决策能避免后期成片的诡异节奏问题。
本章至此用四节把语言栈从最轻的表达式到最重的 Python 讲完,收尾时值得把四者的学习顺序再明确一次:先表达式(一天可入门,立刻提升日常效率)、再 VEX(核心投资,回报最大)、VOP 随 VEX 自然理解、Python 按管线需求渐进。这个顺序按"单位学习时间的回报率"排列,逆序学习(先 Python 后表达式)的常见结果是工具越用越重、简单问题也写脚本。轻工具解决轻问题,是效率工程的第一直觉。