BlenderDev/Node

Wikipedia,自由的百科全书

小心的读了下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里面。


static bNodeType sh_node_math= {

/* type code */ SH_NODE_MATH,

/* name */ "Math",

/* width+range */ 80, 40, 120,

/* class+opts */ NODE_CLASS_OPERATOR, NODE_OPTIONS,

/* input sock */ sh_node_math_in,

/* output sock */ sh_node_math_out,

/* storage */ "",

/* execfunc */ node_shader_exec_math

};


编译的时候会提示 NODE_CLASS_OPERATOR 未定义,所以改为其他值,


/* nodetype->nclass, for add-menu and themes */

  1. define NODE_CLASS_INPUT 0
  1. define NODE_CLASS_OUTPUT 1
  1. define NODE_CLASS_GENERATOR 2
  1. define NODE_CLASS_OP_COLOR 3
  1. define NODE_CLASS_OP_VECTOR 4
  1. define NODE_CLASS_OP_FILTER 5
  1. define NODE_CLASS_GROUP 6
  1. define NODE_CLASS_FILE 7
  1. define NODE_CLASS_CONVERTOR 8

这是shader node添加按钮里面的定义,在BKE_node.h里面可以找到。随便改一个,只要按照wiki教程的做发就可以得到结果。


Image:node.jpg


http://mediawiki.blender.org/index.php/Hackers_Guide/Node_types


part of node


node 组件的介绍.

Personal tools