BlenderCN论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 8903|回复: 18

Blender程序设计笔记

[复制链接]
发表于 2012-1-4 10:39:51 | 显示全部楼层 |阅读模式
看着水经石在写cycles的代码阅读,也觉得应该把Blender代码的知识归纳下了。以前的论坛文档存档还在,但基本上都是基于blender的wiki内容翻译。
要读懂Blneder的代码其实需要很多预备知识,所以什么样的人怎么读代码是一个问题。考虑的东西多了,就停笔不前了。
这个时候不如就先弄成读书笔记类似,慢慢整理。
读代码类似看书,能够学习到思想就算完工,也许会在自己写程序的时候摘抄些内容。
想要学习Blender开发,那还是读懂这么些代码先。弄懂架构,就如鱼得水了。

http://wiki.blendercn.org/doku.php?id=code:blendercodereading blender.png (201.85 KB, 下载次数: 16)
 楼主| 发表于 2012-1-27 16:31:48 | 显示全部楼层
重新画的两个思维导图。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-1-30 01:00:27 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-1 11:04:15 | 显示全部楼层
先从Blender的设计开始,Blender 模型-视图-控制 模式,经历了几个版本的变化。从最原始的mvc各个层级都需要处理一遍事务到带windowsmanager和notifier的统一消息处理。重构策略非常清晰,就是要让让Blender变成一个开放的3D开发平台。
Blender的数据存储和数据读取采用了两种很有趣的方式:structs DNA,structs RNA. DNA本质上说就是Blender在内存里使用的模型数据的一个dump,一个拷贝。rna是随着2.5版本出现的一个Data API实现。提供了各类数据的 get 和 set方法。
其次是实时的数据关联处理:从原始版本就开始有的context,context带部分的UI信息,当Blender内编辑的数据所带类型改变时,相应显示的UI也会作出改变。
跟着就是operator的出现,各类数据都可以和相应的操作相匹配,O+C就是一个完整的Blender动作了。
接着是Blender的windowsmanager,截取各类信号输入,将数据分发到handler和operator,这两者处理后需要UI改变的信息直接抛到notifier,UI在notifier上注册了一大堆的监听,可以随时在各个窗口展现处理后的信息。
对照上一楼的图,Blender代码层级就很清晰的展示出来。要修改Blender代码,先知道代码是哪个模块,哪个功能上的,有哪些依赖关系,然后按照相应的模板添加进Blender,工作就结束了。
回复 支持 反对

使用道具 举报

发表于 2012-2-1 22:49:32 | 显示全部楼层
说明得很清楚。
很有指导意义。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-7 01:10:11 | 显示全部楼层
说说Blender的ghost。
Generic Handy Operating System Toolkit (GHOST)是Blender在NaN时代,编写的一套类GLUT工具,提供了时间,事件,鼠标,鼠标指针显示,显示/窗口管理等相应的API,在04-06年期间,进行了一次重大更新,加入了:国际化键盘支持,多层级的键盘键映射,多显示器支持,鼠标追踪,全屏显示,多种输入设备支持。在x11,windows,macosx上都提供一致性的API支持。
Blender的windowmanager是在其上实现的窗口管理和事件管理层。所有的GHOST代码都封装起来,为更高层级的事件处理/窗口管理提供了实现。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-8 11:23:56 | 显示全部楼层
事件传递层级图

回复 支持 反对

使用道具 举报

发表于 2012-2-13 09:25:33 | 显示全部楼层
顶!太有价值了
回复 支持 反对

使用道具 举报

发表于 2012-2-20 00:46:45 | 显示全部楼层
虽然不懂,但是得顶,不错的笔记
回复 支持 反对

使用道具 举报

发表于 2012-2-25 23:00:44 | 显示全部楼层
拜读,受教了,kidux谢谢你。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Blender最新中文教学视频|Blender头条|小黑屋|手机版|Archiver|Blender中国 ( 蜀ICP备17002929号 )360网站安全检测平台

GMT+8, 2019-6-17 15:47 , Processed in 0.020006 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表