Blender4.5 几何节点组织方式(对象,实例,几何,属性,域)
文章目录
所有的都基于Blender4.5 TLS版本描述:
Blender 几何组织方式详解
Blender 中的几何数据有两种主要组织逻辑:
- 传统建模模式:你在大纲视图(Outliner)中看到的对象结构。
- 几何节点(Geometry Nodes)模式:程序化生成的运行时结构。
两者共享底层数据概念(如网格、属性),但生命周期、可见性和使用方式完全不同。
一、传统建模模式(大纲视图)
1.1 对象(Object)
- 是场景中的可见实体(如立方体、灯光、空物体)。
- 每个对象包含:
- 变换信息:位置、旋转、缩放(可在右侧“物体属性”中查看)。
- 一个数据块引用:决定它“是什么类型”以及“长什么样”。
📌 示例:新建一个立方体,会创建一个名为 “Cube” 的对象,它引用一个名为 “Cube” 的网格数据块。
1.2 数据块(Data-block)
-
是实际存储内容的数据,不直接出现在场景中,但被对象引用。
-
可被多个对象共享:修改数据块,所有引用它的对象都会更新。
-
常见类型包括:
- 网格(Mesh):由顶点(点)、边、面、面拐(corner)组成。
- 曲线(Curve):由控制点和样条线(splines)组成。
- 点云(Point Cloud):无连接的点集合。
- 体积(Volume):三维体素数据(如烟雾)。
- 文本(Text)、骨骼(Armature)、灯光(Light) 等。
💡 在属性面板的“数据”标签页(绿色图标)中,可查看和重命名数据块。
二、几何节点模式(Geometry Nodes)
2.1 几何体(Geometry)
-
是运行时临时数据,仅在几何节点网络执行期间存在。
-
不会自动保存到 .blend 文件,关闭文件或禁用修改器后即消失。
-
一个几何体可同时包含以下组件(每种最多一个):
- 网格(Mesh):所有网格被合并为一个组件。
- 曲线(Curve):可包含多条样条线。
- 点云(Point Cloud)
- 体积(Volume)
- 实例列表(Instances):可包含任意数量的实例。
✅ 优势:可在单个节点网络中混合多种几何类型(如建筑 + 电线 + 树木)。
2.2 实例(Instance)
- 是一种轻量级引用,不复制几何数据,只记录:
- 目标:可以是:
- 另一个几何体(Geometry)
- 一个场景中的对象(Object)
- 一个集合(Collection)
- 自身变换:独立的位置、旋转、缩放。
- 目标:可以是:
- 实例本身是运行时数据,不会自动变成真实对象。
- 若需“实体化”,必须:
- 使用 “实现实例(Realize Instances)” 节点,或
- 应用几何节点修改器。
三、属性系统(Attributes)与域(Domains)
无论传统建模还是几何节点,Blender 都通过 属性(Attributes) 附加额外数据(如颜色、UV、自定义向量)。
3.1 什么是域(Domain)?
- 域是属性依附的拓扑单元类型。
- 不同几何类型支持不同的域:
| 几何类型 | 支持的域(Domain) | 说明 |
|---|---|---|
| 网格(Mesh) | Point(点)Edge(边)Face(面)Corner(面拐) | 面拐 = 每个面中的每个顶点角,用于 UV、顶点色 |
| 曲线(Curve) | Point(控制点)Spline(整条样条) | |
| 点云(Point Cloud) | Point | 每个点独立 |
| 实例(Instances) | Instance | 每个实例一个值(如 ID、缩放) |
3.2 什么是属性(Attribute)?
- 一组命名的数值数据,附加在某个域上。
- 支持类型:浮点数、整数、布尔值、3D 向量、颜色、2D 向量等。
- 在几何节点中:
- 通过
Store Named Attribute节点写入; - 通过
Named Attribute节点读取; - 可在 电子表格(Spreadsheet) 面板中查看。
- 通过
- 在传统建模中:
- UV、顶点组、顶点色等都是属性的特例。
🌟 应用示例:
将高维数据(如(x, y, z, w))拆分为Vector+Float,附加到点域,
然后用颜色或位移可视化第 4 维。
四、关键区别总结
| 特性 | 传统建模(大纲视图) | 几何节点(GN) |
|---|---|---|
| 数据载体 | Object + Data-block | Geometry(运行时) |
| 是否持久化 | ✅ 是 | ❌ 否(除非应用修改器) |
| 多类型混合 | ❌ 一个对象只能一种类型 | ✅ 一个 Geometry 可含 Mesh + Curve + Instances |
| 实例实现 | Collection Instance(持久化 Object) | Instances(运行时引用) |
| 属性编辑方式 | 属性面板(UV/顶点组) | 节点(Store Named Attribute) |
| 域系统 | 相同底层结构 | 相同,但更灵活、可程序化 |
实例
可以说一共有2种描述数据的方式,一个是传统的场景层级描述方式,就像在大纲上看到的一样;第二种是为了GN单独抽象出来的"几何体""实例"等概念;
第一种我们可以通过传统的blender视口或者bpy来操作:
第二种使用GN来操作;
但是这两种数据的本质是统一的,且可以交叉影响执行的
场景层级(数据块)
- 首先了解一下场景的概念
![在这里插入图片描述]()
- 每一场景有且仅有一个根容器用来持有所有对象/集合的,称之为场景集合,(大纲视图切换为:视图层即可看到)
![在这里插入图片描述]()
- Object和dataBlock;mesh,Curve这样的几何信息,是独立存储的,并且不可以直接显示在场景中,必须套一个壳子,这个壳子就是Object;object规定了他的位置,缩放,旋转信息;
![在这里插入图片描述]()
![在这里插入图片描述]()
- 同理集合也是一样,一个对象可以被多个集合所引用,参考上图
GN 实例
- 首先建立一个4点的平面,仅仅建立一个空的几何节点修改器,数据如下
![在这里插入图片描述]()
- 对他执行一个散布点在面上的节点,那么数据就变为这样;
![在这里插入图片描述]()
- 合并几何输出
![在这里插入图片描述]()
- 使用一个圆锥mesh作为实例,执行实例化于点上
![在这里插入图片描述]()
![在这里插入图片描述]()
- 若再使用另一个几何进行实例化于点上效果是类似的(用的同一个散布,重叠了,看不清cube见谅)
![在这里插入图片描述]()
- 这里使用Mesh对象(苏珊娜),而不是几何体进行实例化,效果是类似的;
![在这里插入图片描述]()
- 若想将instances容器内的实例转到mesh组件上,使用实现实例即可,像这样:
![在这里插入图片描述]()
源码角度看,Blender Geometry 系统核心类图
以下类图展示了 Blender Geometry Nodes 中几何数据的组织方式,包括 GeometrySet、各类组件(Component)、实例(Instances)以及属性(Attributes)系统。来自源代码:source/blender/blenkernel/BKE_geometry_set.hh













浙公网安备 33010602011771号