目标

我这里所说的 “模块” 对应的是Blender源代码中每一个.vcxproj文件。

在上一篇博客《【Blender源代码观察】了解模块的大致分类》中我简单了解了Blender源代码中模块的分类,本篇的目标是:简单了解模块的依赖关系。

主要参考的资料是:Diagram showing code layout of modules(模块布局图) (不过此图和当前最新代码的状态有些出入,我想可能有部分省略,或者其中一些细节已经过时。但是大体的框架我相信是差异不大的)

本篇中,我将依照从 “底部” 到 “上层” 的顺序来学习。

0. Operating System(操作系统提供)

blender多个动画会有上个动画动作_依赖关系

准确来说他们并不属于本篇所讨论的模块。

这些是操作系统本身所提供的。

例如:

  • OpenGL图形库
  • 标准C
  • Windows库

1. Pre-compiled Libraries(预编译好的库)

blender多个动画会有上个动画动作_渲染引擎_02

准确来说他们也并不属于本篇所讨论的模块。

这些库没有源代码,不需要编译,直接使用下载好的库文件。

例如:

  • FFmpeg:视频库。A complete, cross-platform solution to record, convert and stream audio and video.
  • fftw3:傅里叶变换库。FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine transforms or DCT/DST).
  • freetype:字体库。FreeType is a freely available software library to render fonts.

2. Utility Libraries from external development(外部开发的通用库)

blender多个动画会有上个动画动作_依赖关系_03

这些库并非Blender开发者维护的,而是外部的项目。当前包含:

blender多个动画会有上个动画动作_blender_04

3. Utility Libraries in own development(内部开发的通用库)

blender多个动画会有上个动画动作_依赖关系_05

也是通用库,不过是Blender开发者自己开发的库。当前包含:

blender多个动画会有上个动画动作_开发者_06

4. General Blender APIs(Blender中的通用接口)

blender多个动画会有上个动画动作_渲染引擎_07

source/blender下大部分都属于这一层级。这些模块之间也相互调用

blender多个动画会有上个动画动作_blender_08

而其余的部分则属于更高的层级。

5. Render Engine(渲染引擎)

blender多个动画会有上个动画动作_blender_09

包含:

blender多个动画会有上个动画动作_blender多个动画会有上个动画动作_10

(图中这一层还有一个gameengine,但是我没找到它)

6. Window Manager(窗口管理者)

blender多个动画会有上个动画动作_依赖关系_11

只包含一个模块:

blender多个动画会有上个动画动作_开发者_12

7. Tools(编辑器工具)

blender多个动画会有上个动画动作_开发者_13

8. Editor utils(编辑器通用)

blender多个动画会有上个动画动作_blender多个动画会有上个动画动作_14

9. 编辑器窗口

blender多个动画会有上个动画动作_开发者_15

对应于bf_editor_space开头的多个模块:

blender多个动画会有上个动画动作_开发者_16

他们对应着Blender中的编辑器类型:

blender多个动画会有上个动画动作_依赖关系_17

10. 应用启动入口

blender多个动画会有上个动画动作_开发者_18

blender多个动画会有上个动画动作_blender多个动画会有上个动画动作_19

总结

最后,我对原图加上了一些自己的标记,做了一个对我自己来说更有助于我了解模块的大致依赖关系的图:

blender多个动画会有上个动画动作_blender多个动画会有上个动画动作_20

(图中有些层级的模块我用了原图中的模块,我觉得这对比当前最新的代码应该是有缺失的,但我并不能使用当前最新代码的情况,因为我对其理解不深,并不能分清,例如blender/source/blender/editors 下到底哪些模块属于“编辑器工具”,哪些属于“编辑器通用”?这些待后续理解更深时再更新)其中,两种箭头符号分别表示:

blender多个动画会有上个动画动作_渲染引擎_21

后续问题

1. 未提及的模块

当前未提及的模块包含两部分:


其一是CMakePredefinedTargets下的一些模块

blender多个动画会有上个动画动作_blender多个动画会有上个动画动作_22

我相信其是为编译所服务的一些内容,不包含实际代码。

待后续确认


其二是不包含与之前博客中分类的其他模块:

blender多个动画会有上个动画动作_开发者_23

待后续研究其作用

2. 更具体的模块信息

当前的主要参考信息Diagram showing code layout of modules(模块布局图)中模块的数量和现在最新的代码不匹配。要么是省略了部分模块,要么是代码已经更新了较大的幅度。

后续待更细致地了解具体每个模块的信息。