在X-粒子使用Python脚本
编写Python的X粒子
这不是编写Python指南 - 你必须知道自己 - 而是如何获得Python脚本与X-粒子工作。
当您在X-粒子的Python修改器,你有一个基本的脚本,看起来像这样:
进口C4D,xparticles
#Welcome到Python的世界
高清modifyParticle():
返回True
高清画():
返回True
这是你的剧本的骨架。最关键的是该函数的modifyParticle()“。这样做的仅仅是通过每一个活的粒子迭代。您可以通过获取或设置粒子数据将更改应用到这些粒子。当然,您也可以拨打您可能需要的任何其他C4D Python函数。
一个例子可能有助于澄清这一点。
例1
在这个例子中,我们将粒子的颜色变为红色。这是一个非常简单的脚本,它看起来像这样:
进口C4D,xparticles
#Welcome到Python的世界
高清modifyParticle():
particle.SetColor(c4d.Vector(1,0,0))
返回真
高清画():
返回True
这个程序被调用用于在所述修改器的效果的区域每一个粒子,并接通粒子颜色为红色。如果修改衰减设置为“无限”,这种情况会发生,立即被创建的粒子,所以它们看起来红从一开始。
如果你现在的衰减变为“盒子”,并从移动发射器的箱子走,粒子改变颜色时,他们进入衰减(衰减的实际值在此修改没有意义)。当然,一旦是红色的,他们留红,除非你以某种方式改变它们。
注:modifyParticle(),请记住,该脚本时,粒子的修改器的作用区域唯一的调用。那将是总是,如果衰减设置为无穷,但对于其它形状,当粒子是在修改器区域的函数时才调用。另外,粒子将仅受到影响,如果它们本身是在修改的区域。
modifyParticle()是使用修改器和1你可能会最常使用的最简单的方法。另一种方法是使用另一种功能 - 修改()。这样做只是得到在发射极上的第一粒子和在其上执行将修改的()函数。
所以,有什么用呢?那么,你仍然可以通过所有的粒子循环,如果你有第一个。示例2显示了这一过程。
例2
这个例子将使用修改()函数来改变所有粒子的颜色与500和1000之间的粒子阵列红色的索引(第一个粒子具有索引0):
进口C4D,xparticles
#Welcome到Python的世界
DEF修改():
PX =粒子
,而PX是不是无:
IND = px.GetIndex()
如果IND> 500和IND <1000:
px.SetColor(c4d.Vector(1,0,0))
PX = px.GetNext ()
返回True
高清画():
返回True
此功能检查粒子指数,只是改变了这些500和1000之间的颜色。
注意,修改()的工作的所有时间 - 粒子是否是在修改的区域,同样它适用于所有的粒子。
为什么要使用修改()而不是modifyParticle()?由于Python的开销,修改()的两倍左右的速度相比,modifyParticle(),这是很重要的,如果你正在处理大量的粒子。这也给更好地控制粒子而modifyParticle()通过所有这些,你是否希望或不只是迭代。与修改(),你可以通过一个小的子集进行迭代,如果这就是你需要做的。
重要提示:你不能同时使用modifyParticle()和修改()函数在脚本中。如果你这样做,modifyParticle()的优先级和修改()将永远不会被使用。
添加您自己的自定义数据
时,并不限于使用(大)的数据集的X粒子携带的!你可以添加你自己的,并使用它。要做到这一点,你有四个功能:
- AddCustomData()
- SetCustomData()
- GetCustomData()
- FindCustomData()
要使用这些,你会先查看是否有粒子的自定义数据项,用FindCustomData()。如果是的话,你可以使用GetCustomData()来检索它的值,或SetCustomData()来改变它的值。如果自定义数据项不存在,你可以使用AddCustomData添加它()。这个例子也许有助于说明这一点。
例4
在这个例子中,我们将创建一个自定义数据项,并将其打印到控制台:
进口C4D,xparticles
#Welcome到Python的世界
高清modifyParticle():
指数= particle.FindCustomData(0,“你好”)
,如果指数不无:
打印指数
MYDATA = particle.GetCustomData(索引)
打印MYDATA
其他:
particle.AddCustomData(0,“你好”,1234)
的回报真
高清画():
返回True
每个自定义数据项都有一个名字,在这种情况下,“你好”。FindCustomData()检查是否该数据项存在,并且如果是这样,则返回该粒子的索引。该指数再打印到控制台。GetCustomData随后用于检索使用粒子索引的数据值,并且该值然后被印刷(这将是在这种情况下,“1234”)。如果需要,该数据值可以用SetCustomData(指数值)来改变。
如果该数据项不存在,则使用AddCustomData,其上设置有所述识别名和一个初始值增加。
问题
除了Python的修饰,也有一个Python的问题。这可以让你测试你需要的粒子的一切方面,并根据需要触发一个动作。要建立一个Python的问题,创建一个对象的问题,然后从选择'的Python脚本''参数来测试“下拉菜单。你有这样一个默认的脚本:
进口C4D,xparticles
#Welcome到Python的世界
DEF问题():
返回True
在这种情况下,你需要的功能,被称为“问题()',它必须返回True或False。你会返回true,如果粒子通过的问题和False,如果它没有。
例4
假设我们要测试如果粒子指数为10〜20,并引发对每个粒子通过其中一个动作:
进口C4D,xparticles
#Welcome到Python的世界
DEF问题():
如果particle.GetIndex()> = 10,particle.GetIndex()<= 20:
返回True
否则:
返回False
正如你所看到的,这个问题将返回True与10至20包的索引中的所有粒子。一个动作将被触发的所有这样的粒子; 这可以是你喜欢的任何动作,正如任何其他问题。您还可以使用子问题和有问题的脚本和一个不同的子问题,如果你喜欢。
记住,对于问题,不同于修改器,一个粒子被传递到这个问题,在一个时间,并且粒子将针对问题进行测试直到通过。
Python的API
要查看完整的API,你可以这样做:
1.打开控制台,并在底部栏中选择“Python的。
2.在底栏,输入“进口xparticles”(不带撇号):
3.您应该看到这一点:
4.在底栏,键入“帮助(xparticles)”:
5.然后,您看到这(仅部分显示):
这将列出所有可用的功能。如果右键单击控制台,然后选择“全部复制”,你可以复制所有的文本,并将其粘贴到您选择的供将来参考的文本编辑器。