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-blockGeometry(运行时)
是否持久化✅ 是❌ 否(除非应用修改器)
多类型混合❌ 一个对象只能一种类型✅ 一个 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

包含
1
持有
持有
引用目标
每个实例可带属性
网格属性(Point/Edge/Face/Corner 域)
曲线属性(Point/Spline 域)
点云属性(Point 域)
GeometrySet
name: string
components_:指向包含GeometryComponent 的数组,注意,每一种类型的组件最多出现一次
(几何集合) —— 容纳多种几何组件的顶层容器,允许
«abstract»
GeometryComponent
(几何组件基类) —— 所有几何类型的抽象基类
MeshComponent
mesh: Mesh*
(网格组件) —— 持有传统网格数据(顶点/边/面)
InstancesComponent
instances: Instances*
(实例组件) —— 持有一组实例,每个实例可引用其他 Geometry 或 Object
CurvesComponent
curves: Curves*
(曲线组件) —— 持有样条曲线数据
PointCloudComponent
pointcloud: PointCloud*
(点云组件) —— 持有无连接的点集
VolumeComponent
volume: Volume*
(体积组件) —— 持有体素数据(如烟雾、密度场)
Mesh
(网格数据块) —— C 结构体,包含 verts/edges/polys/loops 等
Instances
references: List[InstanceReference]
transforms: List[Matrix4x4]
attributes: AttributeContainer
(实例集合) —— 实例数组,每个带变换和属性
InstanceReference
type: enum :GeometrySet, Object, Collection
data: void*
(实例引用) —— 泛型指针,运行时指向 Geometry 或场景 Object
AttributeContainer
(属性容器) —— 存储命名属性(Named Attributes),按 domain 组织
AttributeSet
(属性集) —— 用于 Mesh/Curve 等组件的属性存储(如顶点颜色、UV)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值