Saturday, August 19, 2006

在blender代码中添加新node的过程

小心的读了下blender node的这篇 http://mediawiki.blender.org/index.php/BlenderDev/AddingANode
教程

主要意思就是添加一个node不会有很多困难,最主要的就是两个文件,BKE_node.h里面要声明下新添加的node给它添一个识别号,以前一个id左移一位来写号码。

然后就是在node_shader/node_composite.c 文件里面添加node的实现,最简单的就是写出 bNodeSocketType/bnodetype/bnodefuncction三个部分。
每个接口 声明 如下
/* SocketType syntax:
socket type, max connections (0 is no limit), name, 4 values for default, 2 values for range */
最后用 {-1,0," "} 结束,socket type 有三类,数值/向量/rgba。

然后 将node的实现函数写出,
最后声明 一个 nodetype ,

写完后再在 node_all_shaders[] 这个阵列里面添加 &sh_node_XXX 的字符串。

这是一个基本过程,其他事情node系统会自己做出,比如ui之类的绘制,如果界面有特殊设置,就还要自己在draw_node.c里面添加代码。


还要更仔细深入blender的node的话,就参考这些文章,包括blender的界面api。
学习blendernode 需要读过的文章是 /doc/interface_API.txt 通用ui接口(只是blender能用的),在

源文件中寻找
然后是
http://www.blender.org/cms/Generic_Node_system_fo.742.0.html 基础性介绍文章,讲述

blender node系统的一般情况
当然为了要更深入理解blender的结构形式,还需要看
http://www.blender.org/cms/Blender_Architecture.336.0.html blender的架构 了解下blender的数据

结构,特别是 id 的使用方法

关于ui的东西
http://www.blender.org/cms/Blender_Nodes_UI.745.0.html node的ui有了scoket link

这些概念,有了它会对code有更形象的了解。

最后一篇:http://mediawiki.blender.org/index.php/BlenderDev/AddingANode 一个实例教程,讲解如

何添加一个math node 在shader node 面板里面的

更多,找一个最近版本的cvs blender 里面会有node editor的window选项,这样一边看代码,一边看

blender的这个node就会有更深入的印象。
还有更多,就是看blender的其他代码:DNA_listbase.h DNA_ID.h DNA_node.h draw_node.c node.c前三

个可以在makesdna文件夹里找到,后两个一般就在src里面。


ps:我在按照教程改代码编译时有错误,是draw_node.c里面的问题,所以还要继续学习。
ps2:也许可以用vb来写一个可视化的node开发程序,因为格式固定,所以主要就是修改字段的问题,不过nodefuction怎么用vb来做,思考中,5年没碰过vb了

0 Comments:

Post a Comment

<< Home

网上汇款免手续费, 收货满意后卖家才能拿钱,货款都安全