两个Blender对象在界面里有不同名字,就一定保存了两份不同网格吗?Blender 4.5 LTS的Data-Blocks手册把数据块定义为项目的基本单位,并明确说它们可以相互引用,供复用和实例使用。[1] 名称让人找到资料,引用关系则说明多个使用处是否仍指向同一份数据,两者不能只凭字面合并判断。

网格、对象、材质、纹理和场景,都是手册举出的不同数据块类型。它也提醒,并非Blender里所有数据都各自构成数据块,例如骨骼、序列条和顶点组属于相应的上层类型。[1] 因此,阅读项目结构时,需要先辨认正在描述的是独立数据块,还是某类数据块内部的组成部分。

名称唯一性也有范围。文档将命名空间定义为数据块类型与它所在的blend文件,所以一个Object和一个Mesh可以同名;同一文件内两个本地Object则不能同名。[1] 它还保留本地对象与链接对象的例外:一个本地Object可以与多个链接Object共用名称。若把“名称必须唯一”省略成一句无条件规则,就会丢失这些具体对象条件。

名称长度采用字节,而不是对所有语言统一计算字符数。该版本手册写明上限为63字节,基本ASCII字符通常可达63个;带变音符号或非拉丁字形时,UTF-8往往每字符占多个字节,可容纳的字符数会更少。[1] 因此,中文名称中的“63字”并不是这条规定的准确翻译。

自动命名遇到冲突时,Blender会在根名之后加上.001一类数字后缀,选取首个可用序号;若加后缀会超长,则缩短根名部分。[1] 原文强调,自动命名不会为此去改另一个数据块的名字。这里限定的是自动命名情形,本文没有把它推广为用户界面所有重命名行为,也未执行任何命名操作。

共享关系提供另一个阅读维度。来源举例,多个对象可以共享Mesh,多个材质可以共享纹理,多个对象也可以共享动画Action。[1] 这些都是不同层的数据引用。界面所显示的user数量对应数据块使用计数,不能直接翻成有多少协作者账号正在操作项目;计数所数的是引用使用处。

Making Single User一节则从另一边解释:对一个由多个使用处共享的数据块,可以复制一份并只赋给指定使用处。[1] 因而,单用户在这里指这份数据的使用关系,不是把整个项目改成只允许一个人工作。复制与共享两种结构,仍应回到具体数据块及其引用来说明,而不由同名或不同名直接裁定。

本篇采用4.5 LTS手册的定义、命名和共享连续段,未读取图片作证、删除数据或制作模型,也不保证文件恢复或工程几何质量。页尾更新日不作为首次发布日期,来源首发未知。对于建模资料交接,先分类型与文件范围,再看名称和引用计数,才能准确说明项目中究竟是一份共享数据,还是仅给某个使用处的副本。

资料:[1] https://docs.blender.org/manual/en/4.5/files/data_blocks.html

信息来源

本文基于上述公开资料整理,未使用来源页面的图片、视频或嵌入媒体。