1.1 节点网络初体验:搭出第一个程序化资产


1.1 节点网络初体验:搭出第一个程序化资产

本节摘要:用三个节点(Grid、Mountain、Scatter)搭出本教程贯穿全程的山体雏形。实验的关键不是连出网络,而是观察"改参数 → 整体重算"的现象,建立 Houdini 与传统建模软件截然不同的手感。无需任何基础。

实验一:三节点山体

打开 Houdini,在 obj 层里按 Tab 键输入 geo,建一个 Geometry 容器并进入(也可以直接删掉默认的,按需要来)。在网络里依次放三个节点:

  1. Grid:rows 设 100,columns 设 100,size 保持默认 10×10;
  2. Mountain:接在 Grid 后,height 调到 1.5 左右;
  3. Scatter:接在 Mountain 后,点数保持 5000。

按下 W 键显示点——你会看到 5000 个点贴着山面分布。现在回到 Mountain,把 height 从 1.5 拖到 3:山变高了,5000 个点自动贴到新表面。这一瞬间就是程序化的核心体验:你改的是规则,不是结果。

图 1.1-1 实验网络与数据形态

图 1.1-1 实验网络与数据形态

实验二:让它"程序化"起来

光连节点还不算程序化——Blender 的修改器堆栈也能做到。真正的分水岭是规则带变量。继续做两步:

  1. 在 Mountain 上游插一个 Transform,rotate Y 拖一圈——山的纹理走向变了。因为 Mountain 的噪声是在局部空间计算的,先转再抬,与先抬再转,结果不同。节点顺序就是规则顺序。
  2. 把 Scatter 的种子(Seed / 每按一次 R 键重掷)换几次,点分布立即换一批。同一个网络,不同种子,产出一族变体——批量生成的种子。

观察:两个直接可感的现象

现象 你看到什么 背后的机制(后文展开)
改 height 点跟着走 下游 Scatter 自动重贴表面 依赖图按脏标记重算(1.2 节)
换 Seed 换一批点 分布形态相似但细节不同 伪随机数由种子驱动(3.3 节)

⚠️ 常见坑:把 Grid 的 rows 拉到 500 觉得"更精细"。此时 Mountain 的噪声频率没变,山只是多了没被利用的点,白耗内存。分辨率要和噪声频率一起加。

动手清单

  • 建好 Grid(100×100) → Mountain(height≈1.5) → Scatter(5000) 网络并保存,这是主线资产 v1;
  • 分别调整:节点顺序、Transform 插入位置、Scatter 种子,各观察一次;
  • 打开 Spreadsheet(场景视图右上角图标),看 Scatter 后的点表里多了什么列——答案在 1.4 节揭晓。

下一节我们追问:刚才那套"改一处、全局重算"的行为,在机制上是怎么发生的。

延伸:第一个可复现的节点实验

照下面步骤在空场景里搭出第一条"数据流管道",每一步都能观察到明确的中间结果,这是理解节点网络最快的方式。放入一个 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 重写它的锥形段,第三章会把它升级为噪声驱动的山地。一个被反复改造的起步文件,胜过十个从零开始的新文件——程序化的学习路径本身就该是非破坏、可回溯的,你现在留下的每一层"历史",都是后续章节的现成教具。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U