Blend文件格式
发布网友
发布时间:2024-10-04 20:39
我来回答
共1个回答
热心网友
时间:2024-10-05 10:14
文件结构的探讨
文件结构是理解Blend文件格式的关键,可通过参考相关资料进行深入学习。
文件头(FileHeader)是Blend文件的核心部分,编码为DNA1,由SDNA结构体实现。
SDNA包含四个重要属性:names、types、typessize、structures。依BlenderV300版本为例,names长度为4902,types长度为920,typessize长度与types一致,structures长度为786个。
理论上,structures长度应为types长度减去原子类型个数,但实际为796个,原因是部分DNA类型包含非DNA类型的字段,相关结构信息未保存在SDNA数据中。这些结构体的特征可参考source\blender\makesdna\DNA_ID.h中的类型IDOverrideLibraryRuntime定义。
所有前带有两个#字符的结构体未保存在SDNA数据中。四个属性长度的理论上限为(倒排索引使用的是ushort),实际上限为50000。因此,当前的存储容量足够使用。
010Editor解析
使用010Editor(V12.0.1)对Blend文件进行解析,已提交模板文件至010editor,预计不久即可完成解析。
模板文件
实现的模板文件内容包含对SDNA中第一个结构体Link的详细说明。
示意图使用draw.io绘制,以帮助理解。
DNA数据生成
makesdna工具用于生成DNA数据。
Blend信息获取
在浏览Blender网页时,发现JanWalter的个人网站,其Rust语言的blend_info库一直在更新,已能读取blend文件中的模型并自行渲染。如欲深入了解Blend文件格式,可阅读其博客或下载blend_info源码。