那条线代表什么



好几个月前我问了前同事一个问题:那条线代表什么?
同事在玩houdini
我:那条线代表什么?
他:嗯?
我:从那个节点到这个节点的那条线
他:...,不知道
我:maya里可以是int,float,double之类的
他:(好像明白我的意思了)...,代表数据流
下面的场景我已经不记得了。

后来没过多久我就需要去研究houdini了,一开始是一个星期,后来(因为没事干)又加了一个星期。
之后过了一段时间我想起了上面的问题,并对那一个星期的研究进行归纳,我得出了对houdini的运作方式。

在一个星期里我做的事情:
  1. 搜索我们可能感兴趣的资料(其实当时的我一点都不感兴趣)
  2. 使用节点来创建sierpinski triangle,2D和3D的版本
  3. 使用python来编写一个节点来创建sierpinski triangle 2D
  4. 剩下的两天,没什么所获

回到我们的话题:那条线代表什么?
同事的回答是正确的,不管是maya还是houdini那条线可以代表数据从一个节点流向另一个节点,但是“数据流”是一段数据的总称,我希望能知道都是些什么数据。
在maya中不同的属性连接会得到不同颜色的线,其实就是不同的数据类型,而且它们不叫数据流,而是数据块。API里的 MDataBlock就是了,当一个节点把它的数据传递给另一个节点的时候数据就保存在MDataBlock的实例中,而节点就会从这个实例中获取对应的数据。

houdini是很隐蔽的,你根本不知道是些什么数据,对于不同类型的节点也会不同,这里我以SOP为例,SOP是只对模型操作的节点,它们的工作方式大概是这样的。
1. 复制模型数据:如果这个有输入节点,就是有一个节点的输出连接到了这个节点的输入,houdini会自动帮你复制上面节点的模型数据;
新的模型:如果没有输入节点,houdini会自动给你创建一个空白的模型数据。
所以不管是有输入节点,还是没有,你要获取节点里的模型都是通过这个函数
geo = hou.pwd().geometry()

2. 运行你的代码
3. 不知道又做了什么事情,我猜测缓存是其中的一件事(不然你中键节点的时候就不会出现一些相关的信息了)
这也是houdini自定义节点的结构:
1. houdini生产的代码(二进制)
2. 你的代码
3. houdini生产的代码(二进制)

我刚看了下HDK(c++)的范例,它的做法就多样了,可以跟上面都一样,也可以像maya一样的写法。

你可能感兴趣的:(Maya,Houdini)