Blender4.5 几何节点组织方式(对象,实例,几何,属性,域)
文章目录
- 所有的都基于Blender4.5 TLS版本描述:
- Blender 几何组织方式详解
- 一、传统建模模式(大纲视图)
- 1.1 对象(Object)
- 1.2 数据块(Data-block)
- 二、几何节点模式(Geometry Nodes)
- 2.1 几何体(Geometry)
- 2.2 实例(Instance)
- 三、属性系统(Attributes)与域(Domains)
- 3.1 什么是域(Domain)?
- 3.2 什么是属性(Attribute)?
- 四、关键区别总结
- 实例
- 源码角度看,Blender Geometry 系统核心类图
所有的都基于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) |
域系统 | 相同底层结构 | 相同,但更灵活、可程序化 |
实例
- 首先建立一个4点的平面,仅仅建立一个空的几何节点修改器,数据如下
- 对他执行一个散布点在面上的节点,那么数据就变为这样;
- 合并几何输出
- 使用一个圆锥mesh作为实例,执行实例化于点上
- 若再使用另一个几何进行实例化于点上效果是类似的(用的同一个散布,重叠了,看不清cube见谅)
- 这里使用Mesh对象(苏珊娜),而不是几何体进行实例化,效果是类似的;
- 若想将instances容器内的实例转到mesh组件上,使用实现实例即可,像这样:
源码角度看,Blender Geometry 系统核心类图
以下类图展示了 Blender Geometry Nodes 中几何数据的组织方式,包括 GeometrySet
、各类组件(Component)、实例(Instances)以及属性(Attributes)系统。来自源代码:source/blender/blenkernel/BKE_geometry_set.hh