Blender几何节点进阶实战:程序化生成城市建筑与植被

👁️ 2076浏览 📅 2026-05-10

从入门到进阶:几何节点的真正威力

🔗Blender 几何节点(Geometry Nodes)让3D建模从"手工雕刻"进化到"程序化设计"。掌握基础节点后,你会发现真正有价值的应用是用节点驱动复杂场景的批量生成——比如程序化城市街道、树林、建筑外立面。本文专注进阶实战,带你完成两个有实际价值的程序化场景项目。

一、程序化建筑外立面生成

建筑外立面由重复的窗户单元组成,是程序化建模的经典场景。

Step 1:准备建筑基础体

  1. 创建一个Box,代表建筑主体(如20m×60m×30m)
  2. 选中这个Box,添加几何节点修改器
  3. 进入几何节点编辑器,从基础Node Group开始构建

Step 2:在面上分布窗户

核心节点链:Input Geometry → Face → Distribute Points on Faces → Instance on Points → Output

  • 使用Distribute Points on Faces节点,模式选Poisson Disk(均匀分布)
  • 接入Instance on Points,将预制的窗户Object实例化到每个分布点
  • 添加Rotate Instances节点,根据面法线对齐窗户方向
  • 通过Input/Output Group节点暴露密度参数,方便实时调整

Step 3:只在侧面放置窗户

关键技巧:用法线过滤面

  • 添加Normal节点获取每个面的法向量
  • 接入Dot Product节点,与上向量(0,0,1)点乘
  • 当点积接近0时代表是侧面(法线水平),用Math→Compare过滤
  • 将过滤结果接入Distribute Points的Selection输入端

Step 4:添加楼层线装饰

  1. 使用Mesh Line节点生成等间距的水平点
  2. 接入Curve Circle将点扩展为圆形曲线
  3. Curve to Mesh配合Profile Curve生成腰线几何体
  4. 通过Realize Instances将实例合并为真实几何

二、程序化树林与植被分布

核心思路:地形权重驱动植被密度

在真实地形场景中,植被分布受坡度和高度影响:低地多树,陡坡无树。几何节点可以完美模拟这一规律。

Step 1:生成地形权重图

  1. 准备地形Mesh(已通过Displace修改器生成起伏)
  2. 新建几何节点,使用Position节点获取每个顶点坐标
  3. 取Z分量(高度),接入Map Range节点归一化到0-1
  4. 低高度区域权重值高,高处权重值低

Step 2:坡度过滤

  • 使用Normal节点获取面法线,取Z分量
  • Z接近1代表水平,接近0代表垂直;陡峭区域不种树
  • Math→Greater Than过滤坡度大于0.3的区域
  • 将高度权重与坡度过滤结果相乘,得到综合权重

Step 3:实例化多种树木

  1. 准备3种不同树木Object(低/中/高类型)
  2. Instance on Points中,通过Index Switch节点随机选择树木类型
  3. 添加Random Value节点驱动树木缩放(80%-120%随机化)
  4. Rotate Instances随机旋转Z轴,避免重复感

Step 4:将节点参数暴露为可调节控件

  • 将树木密度、最小高度过滤阈值、随机种子等参数连接到Group Input节点
  • 在几何节点修改器面板中,这些参数会出现为可调节的滑块
  • 实时调整参数观察场景变化,无需重新进入节点编辑器

三、几何节点常用实用技巧

技巧1:Field与Attribute的理解

几何节点中的"场"(Field)是懒求值的,只有在需要时才计算。理解这个概念能帮你避免很多"节点连接了但没效果"的困惑——确认Field的传递路径是正确的。

技巧2:使用Named Attributes传递自定义属性

  • 通过Store Named Attribute存储自定义属性(如"plant_type")
  • 在材质编辑器中用Attribute节点读取,实现几何节点驱动材质变化

技巧3:Node Group复用

  • 将常用节点组(如随机实例化、法线过滤)封装为Node Group(Ctrl+G)
  • 命名保存后可在其他项目中直接追加(File→Append)
  • 这是提高效率的最佳实践,不用每次从头连接

技巧4:电子表格窗口监控属性

开启Spreadsheet窗口(Shift+Space→Data→Spreadsheet),可以实时查看每个顶点/面/点云的属性值,帮助调试复杂节点逻辑。

四、性能优化:几何节点场景不卡顿的技巧

  • 在视口中使用Instances(不要提前Realize),实例化对象共享显存
  • 使用Merge by Distance合并过近的顶点,减少不必要的几何复杂度
  • 复杂场景在视口使用简化代理(LOD),最终渲染时换回高精度
  • 使用Switch节点配合Boolean Group Input,快速切换高低精度预览模式

总结

几何节点的进阶实战核心是理解三件事:如何获取几何体属性(Position/Normal/Index)、如何过滤和选择(Compare/Boolean/Switch)、如何实例化和分布(Distribute/Instance on Points)。这三条逻辑打通之后,城市场景、自然植被、程序化建筑全都能用节点驱动,效率是手工建模的数十倍。

参考资料:知乎Blender几何节点程序化建模章节、CSDN Blender几何节点完整指南、Bilibili Blender几何节点技巧教程

📚 想系统学习AI建模+3D打印?

18节实战课程,从想法到实物全流程跑通,零基础也能轻松学会!

立即学习 →