本节摘要:用三个节点(Grid、Mountain、Scatter)搭出本教程贯穿全程的山体雏形。实验的关键不是连出网络,而是观察"改参数 → 整体重算"的现象,建立 Houdini 与传统建模软件截然不同的手感。无需任何基础。
打开 Houdini,在 obj 层里按 Tab 键输入 geo,建一个 Geometry 容器并进入(也可以直接删掉默认的,按需要来)。在网络里依次放三个节点:
按下 W 键显示点——你会看到 5000 个点贴着山面分布。现在回到 Mountain,把 height 从 1.5 拖到 3:山变高了,5000 个点自动贴到新表面。这一瞬间就是程序化的核心体验:你改的是规则,不是结果。

光连节点还不算程序化——Blender 的修改器堆栈也能做到。真正的分水岭是规则带变量。继续做两步:
| 现象 | 你看到什么 | 背后的机制(后文展开) |
|---|---|---|
| 改 height 点跟着走 | 下游 Scatter 自动重贴表面 | 依赖图按脏标记重算(1.2 节) |
| 换 Seed 换一批点 | 分布形态相似但细节不同 | 伪随机数由种子驱动(3.3 节) |
⚠️ 常见坑:把 Grid 的 rows 拉到 500 觉得"更精细"。此时 Mountain 的噪声频率没变,山只是多了没被利用的点,白耗内存。分辨率要和噪声频率一起加。
下一节我们追问:刚才那套"改一处、全局重算"的行为,在机制上是怎么发生的。
照下面步骤在空场景里搭出第一条"数据流管道",每一步都能观察到明确的中间结果,这是理解节点网络最快的方式。放入一个 Grid(20×20,行 30 列 30),接 Point 节点查看坐标分布,再用 Attribute Wrangle 输出验证:
// Attribute Wrangle (Run Over: Points) —— 查看数据真的在流动 printf("point %d pos=%v\n", @ptnum, @P); // 小技巧: 先只看前几个点 // 把高度设为到原点距离的函数, 一条命令出现锥形 @P.y = sqrt(@P.x*@P.x + @P.z*@P.z) * ch("scale");
加一个参数 scale(在 Wrangle 里按齿轮图标 Create Spare Parameters from This Snippet 自动生成),拖动滑杆看锥形实时伸缩——此刻你已经拥有了程序化最核心的体验:参数驱动、非破坏、随时回溯。
节点网络的可读性在真实项目里比算法本身更早决定成败。三条立刻可用的纪律:
[网络整理三律] 1. 主干走直线: display/render 主链保持水平直线, 分支向下挂 (Houdini 的 Q/L 快捷对齐, shift+点击框选子树) 2. 网络框+颜色语义: Net Box 分阶段命名(GEN/SCATTER/SIM/OUT), 颜色全局统一——例如生成蓝、修饰绿、输出黄 3. Sticky Note 记录决策: 在关键分叉贴便签写"为何选 scatter 而非 copy+instance", 三个月后的自己会感谢现在的自己
养成这三条习惯后,把刚才的锥形实验打包成 Net Box 命名为 FIRST_PIPELINE——它虽然简单,却已经是后续所有章节要反复扩展的同一种结构:输入几何、中间变换、输出展示。节点网络的本质是"把思考过程外化成可检查的物理结构",每个节点都是一步可以单独审计的推理。
补充一个立刻值得做的对照观察:在锥形实验的 Wrangle 上右键打开 Node Info,看 Points 计数与 cook 时间,然后把 Grid 的行列数从 30 提到 300,重新观察。你会发现点数放大一百倍、cook 时间只增加一个温和的倍数——这是 Houdini 对批量几何计算做过深度优化的直接证据,也是"几何思维"优于"对象思维"的性能根源。传统建模软件里改一个物体要重新计算一个物体,节点网络里改一个参数是在向十万多个点同时广播同一条数学指令。建立这个直觉后,后续章节里所有看似大胆的批量操作(给百万点逐点计算生态权重、给千座建筑逐栋装配立面)都不再令人紧张,因为你知道自己付的是一次向量运算的价格,而不是一百万次手工的价格。
关于下一步练习也给出明确指向:完成锥形实验后,把它的两步拆成三个节点(Grid、锥形 Wrangle、上色 Wrangle),再在每个节点上贴 Sticky Note 写一句"我负责什么"。这个微小的仪式看似多余,实为团队协作的预演——三个月后接手你网络的人(包括未来的你),靠的就是这些一句话声明。程序化工程的沟通成本与节点数成正比,从第一个实验就开始管理它,是成本最低的时机。
至此第一个实验网络的使命完成,但请保留这个 hip 文件:第二章将用 VEX 重写它的锥形段,第三章会把它升级为噪声驱动的山地。一个被反复改造的起步文件,胜过十个从零开始的新文件——程序化的学习路径本身就该是非破坏、可回溯的,你现在留下的每一层"历史",都是后续章节的现成教具。