注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

豆芽兵的生存探索

因,记录。留下历史,看到未来...

 
 
 

日志

 
 

022_014_04_Nodes_Data_Types_Arrays(数组型)  

2013-08-17 23:38:50|  分类: RF2013中文帮助 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

022_014_04_Nodes_Data_Types_Arrays(数组型)

 Python中数组(array)也称为列表(list),从叫法上已经能猜同这个数据类型的结构。一个数组是一系列元素。有趣的是,列表可以接受其它数据类型,你可以混合矢量,数字类型,和字符串。在一个数组中,每一个新元素追加到数组表中:如

constants = [ 3.1415, 2.7182, 6.6260, 8.3144, 5.6704 ]

数组还有一个特点是,每一个元素有一个唯一的ID(序号)

  • 3.1415 = index 0
  • 2.7182 = index 1
  • 6.6260 = index 2
  • 8.3144 = index3
  • 5.6704 = index 4

使用这个ID可以提取出特定位置的值:

constants[2] = 6.6260

如前面所说,数组可以由任何可用数据类型构成:

mixedArray = [ "density", "position", 100, "resolution", 645.53 ]

一个非常学用的操作是计算出所有数组中元素个数,也称为长度(lenght).使用数组的"长度",你可以很轻松的检查在你的场景中有多少个物体或粒子数:

if (如果物体数组长度大于0 ):

为每个元素激活 "Active rigid body(刚体)" 属性

类似于Tab菜单中的Vector函数。RealFlow Graphs提供了一些供数组使用的操作符。计算数组长度的结点是"ArraySize"

Working with Arrays(使用数组)

经常要用到存储很多个数值的操作,而使用数组就非常方便了。对三元值,矢量也可以使用,特别是大量的数据,Array是最方便的工具。数组典型的示例是下面的这些结点:

  • getAllStandardEmitters 获取场景中所有SPH 发射器到数组中
  • getAllParticles 获取发射器中所有粒子
  • getAllObjects 获取所有对像到数组中

当你使用这些其中的一个结点,你得要手动初始化数组或预留一部分内存。这个数组的大小和占用内存会自动分配到接受的结点,粒子或更多全局元素。下面的结点图使用"getAllObjects" 结点,然后给数组里的每一个物体设置一个新颜色。之前我们已经有了类似的脚本。但在这还是一步步来。第一步,建立一个数组

Tab菜单> Scene Node > GetAllObjects

在这个结点的输出端口,支持场景中的objects.结点图会遍历整个场景并设置一个新颜色。为此,知道这个场景中有多少个物体是很重要的,因为总数会用来初始化循环。因此就需要一个计算数组长度的结点:

Tab 菜单 > Math > ArraySize

连接"array" "node"端口 "ArraySize" 结点,并从右击菜单选择"Create Compound from selected" 。这一步是必须的,因为循环只能创建在compound(复合层)中。当你打开compound,你会看到 "input interface"结点连接到"ArraySize".。这个面板提供了必要的输入和输出端口。

022_014_04_Nodes_Data_Types_Arrays(数组型) - 豆芽兵 - 豆芽兵的生存探索

 

这个"ArraySize"结点的 "size" 端口包含了你当前场景中所有模型——尽管现在场景中还没有建立任何对像,这时值是0 使用RealFlow "Array Tool"工具添加一些模型。现在添加一个"For" 初始化模型循环(loop):

Tab 菜单 > Execution > For

"For"循环可以看做是一个计数器,默认初始化值 "start" 0,你最好使用这个值,因为在数组连接中使用其它值可能会有问题。Array最好是使用0开始。"Stop"值决定了何时循环结束。在我们的例子中,这个值可以使用"size"来获取一个精确的值。

022_014_04_Nodes_Data_Types_Arrays(数组型) - 豆芽兵 - 豆芽兵的生存探索

 

"GetAllObjects" 数组获取单个元素,得到需要的模型。"For" 结点 "current index"端口也有数组的序号,例如:

Cone01

Cube01

Sphere01

Vase01

Torus01

Index = 0

Index = 1

Index = 2

Index = 3

Index = 4

下面的结点可以根据"current index"获取数组单个元素:

Tab menu > Scene Node > Node > GetArrayRealFlowNodeElement

完整数组自身能从"ArraySize"结点的"through"端口通过。"through" 端口输入和输出值是完全一样的,使用虚线连接。目前Grapsh如下图所示:

022_014_04_Nodes_Data_Types_Arrays(数组型) - 豆芽兵 - 豆芽兵的生存探索

 

使用下面的结点可以改变参数::

Tab菜单 > Scene Node > SetNodeParameter

这个结点类型不能单独处理某一个物体,可以把它看做"群攻武器",因为它能连接任何参数到任何结点类型: Hybrido domains, 标准发射器emitters, daemons(辅助器), rigid body(刚体设置), RealWave参数,object 参数。还可以用来"命名"但很少。

在我们开始之前得要指定一个合适的参数,"GetArrayRealFlowNodeElement"的"element"端口连接到"SetNodeParameter"结点的"node"端口。现在在"SetNodeParameter"结点右击,并选择"Edit input"。输入

parameter > Color

不用担心大写还是小写。尽管我们建议你使用不一样的。可能你到Python中会自动注意到大小写的。要使用合适的颜色,需要使用Tab菜单Constant类中的"Color4"结点。看一下右边的

"Input (Color4_01)" 输入框(得要在这个结点上双击展开),你会看到颜色选择器(color box)。点击颜色选择器,并选择你最喜欢的颜色。连接"Color4" 结点的"color"端口和,之前建立的"SetParameter" "number value"端口:

022_014_04_Nodes_Data_Types_Arrays(数组型) - 豆芽兵 - 豆芽兵的生存探索

 

现在你已经准备好进行数组的循环了,并设定指定颜色了。可以看一下t"SetParameter" "evaluate" 输出端口。请记住 "Evaluate"结点只能使用在compound外面。但现在 compound结点还没有合适的输出端口。因此你得要手动在"OutputInterface"结点上添加:

Tab菜单 > Execution > OutputInterface

使用"evaluate" 端口连接新结点,回到上一层级 (点击画布左上方的"小三角"). 下图是整个Graph:

022_014_04_Nodes_Data_Types_Arrays(数组型) - 豆芽兵 - 豆芽兵的生存探索

 

现在"Compound" 结点 ( "root"层级)有了一个"output" 端口,可以用来连接"Evaluate" 结点:

Compound node > right-click > Connect free node outputs to new Evaluator

022_014_04_Nodes_Data_Types_Arrays(数组型) - 豆芽兵 - 豆芽兵的生存探索

 

保存Graph并执行。所有场景中的对像将会改成我们指定的颜色。

  评论这张
 
阅读(479)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017