
1.3 Thinking Particles 5.0主要节点功能简介
1.3.1 条件类节点
1.Always True(真值)条件节点
这是一个最简单的节点,如图1-14所示。它的Output(输出)永远为真,所有与其输出端口相联的控制器值也永远为真,除非使用辅助控制器将其关闭。例如,将它的ON(开启)端口联接至辅助控制器,如Bool(布尔)控制器,控制该条件的打开或关闭。可以实现的应用效果为:粒子在整个动画范围内始终显示为切角立方体。

图1-14
2.Distance(距离)条件节点
该节点用于测量两个粒子、两组粒子或粒子与对象间的距离,甚至两个标准的3ds Max网格对象——但此时需要使用Object To Particle(对象转化为粒子)控制器或Node(节点)辅助控制器将对象信息提供给该节点,如图1-15所示。可以实现的应用效果为:两个以一定速度相互接近的粒子群,对应的粒子在接触瞬间(彼此间的距离等于0)发生碰撞并产生碎片等。

图1-15
3.Particle Age(粒子年龄)条件节点
该节点用于决定粒子的年龄,如图1-16所示。符合以下条件之一时产生一个真值:位于粒子出生时刻、位于粒子死亡时刻、位于一个指定的相对时刻之间、位于一个指定的绝对时刻之间。可以实现的应用效果为:粒子到达一定的年龄后死亡。

图1-16
4.Std Collision(标准碰撞)条件节点
该节点用于判断粒子是否与一个标准的3ds Max空间扭曲(所有8个碰撞型的空间扭曲均符合条件)进行碰撞,如图1-17所示。检测到碰撞后该节点会自动输出一个真值信号。可以实现的应用效果为:粒子在碰到地面时就产生新粒子等。

图1-17
5.Light(灯光)条件节点
该节点的作用为,检测到粒子受到灯光照射时输出一个真值信号,如图1-18所示。它的判断基于粒子照明的倍增值,也就是说其真值取决于数目大于或等于1的粒子的照明倍增值非0。如果读者需要得到更为精确的照明效果,建议使用MatterWaves(冲击波)控制器。

图1-18
6.Threshold(阈值)条件节点
这是一个应用最广泛的条件测试节点,如图1-19所示。它的原理是:判断某节点参数数值是否落入某一阈值范围,随后输出真或非真值信号。

图1-19
7.Time Interval(时间段)条件节点
该节点用于定义粒子行为持续的时间范围,为处于该时间范围内的粒子行为输出真值信号,如图1-20所示。用户可以自由设置该时间段的范围,或是将输出值反转。它可以用于定义粒子系统开始和停止发射的时间。

图1-20
8.In Group(组内)条件节点
该节点用于判断粒子是否位于所选择的粒子组或子层级组的内部,并为位于组内的粒子所对应的节点输出真值信号,如图1-21所示。

图1-21
9.InMesh(网格内)条件节点
该节点用于判断粒子是否位于所选择的粒子组或其子层级组的内部,如果是,则输出真值信号,如图1-22所示。

图1-22
1.3.2 控制器类节点
Operators(控制器)是TP的核心,是盖起粒子动画大楼的一块块砖,控制器创建面板如图1-23所示。TP系统共提供了50种控制器,并将它们按作用进行了分类。当然,另外还有一些3ds Max插件在安装时也提供了一些控制器,用于将该插件与TP进行交互,如Fume FX。

图1-23
注:Fume FX是AfterWorks公司出品的一款专门在3ds Max内部实现流体特效的插件。
(1)Standard(标准)控制器节点。包含创建粒子动画所必须的最基本的17个控制器,如粒子尺寸、粒子速度等。其中最高级的是MAXScript(3ds Max脚本语言)控制器,它可以配合脚本创建非常独特的动画效果。
(2)Dynamics(动态)控制器节点组。这里提供了大量与碰撞、粒子交互和物理模拟相关的控制器。在TP 1.0版本中只有8个控制器,而到了2.5版本时,这里已经提供了16个控制器,较之前整整多出1倍。并且,新增加的PhysX粒子动力学模拟控制器非常强大。本章后面的范例中会有PhysX粒子动力学模拟控制器的范例,读者可以体验一下真正的粒子动力学。
(3)Generator(生成器)节点组。提供了3ds Max创建粒子的另一种方法,包括5种生成方式。其中最为强大的莫过于MatterWave(冲击波)控制器,它原本就是CEBAS公司出品的一款功能强大的粒子插件,现在已经完全无缝结合至TP系统,它是最先提出用贴图和灯光控制粒子行为的插件。
(4)Shape(形状)控制器节点组。提供了6个控制器控制粒子外形,其中使用较为频繁的是Geom Instance(几何体实例)控制器,它可以拾取几乎场景中的任何对象作为粒子外形,其中包括Light(灯光)和Biped Character Studio(两足动物骨骼)。
(5)Fragmenter(破碎)控制器节点组。Fragment(碎片)控制器亦较为常用,可以轻松地将对象分解成碎块,设置碎块的厚度变化。
(6)Material(材质)控制器节点组。提供了3种材质控制器赋予粒子的材质。原来的1.0版本中仅有Material(材质)控制器和Paint(绘图)控制器,而2.5版本中又增加了1个新的控制器,名为Shape Material(图形材质),它的出现为粒子赋予材质工作提供了极大的便利。
(7)Initiator(启动程序)控制器节点组。这是在TP 2.5版本后新加入的一个控制器,本章后面制作两群粒子相互碰撞产生碎块的范例中就应用了该组中的控制器。
(8)Export(输出)控制器节点组。提供了两个控制器Export(输出)和Particle To Obj(粒子转化为物体),用于将粒子转换为标准的3ds Max网格或变形网格。
下面逐一分析每个控制器的结构和作用。
1.Standard(标准)控制器节点组
该节点组包含了控制粒子状态的一些常用节点,具体如下。
(1)Alignment(队列)控制器节点。
该节点用于设置粒子在三维空间中的走向,其结构如图1-24所示。

图1-24
(2)Bubble Motion(气泡运动)控制器节点。
该节点可以在粒子整体运动状态的基础上再增加一个分运动,通过这个分运动可以更加细致地控制粒子的行为,使粒子的运动状态看起来就像是在水中升起的气泡,节点结构如图1-25所示。

图1-25
(3)Data Channel(数据通道)控制器节点。
该节点可以将一个值分配至自定义的数据通道,如图1-26所示。

图1-26
(4)Group(组)控制器节点。
该节点能使粒子从一个组变换或传递至另一个组,如图1-27所示。它是成功管理粒子系统行为的关键。

图1-27
(5)MAXScript(3ds Max脚本)控制器节点。
该节点可以基于脚本控制粒子系统的运动,如图1-28所示。

图1-28
(6)Mass(质量)控制器节点。
TP使用高级粒子动力学碰撞引擎来计算粒子的运动。动力学解算需要明确粒子某些参数的具体数值,如尺寸、质量,TP使用该控制器来定义粒子的质量,并且可以根据粒子尺寸对每个粒子的质量进行合理分配,如图1-29所示。

图1-29
(7)ParamBlock(参数块)控制器节点。
使用该节点可以自由与3ds Max场景中的任意参数进行交互。基于选择对象的参数和数值,可产生任意多的输入/输出端口,如图1-30所示。

图1-30
(8)ParticleData(粒子数据)控制器节点。
该节点用于一次性为粒子设置多个参数,但是它本身并未设置控制参数,仅提供输入和输出端,如图1-31所示。

图1-31
(9)Particle Die(粒子死亡)控制器节点。
该节点用于控制粒子在一个指定的时间内死亡,如图1-32所示。

图1-32
(10)Position(位置)控制器节点。
该节点用于定义粒子在空间中的位置,结构如图1-33所示。一般情况下,将其联接至出生控制器,以决定粒子开始发射的位置。

图1-33
(11)Scale(缩放)控制器节点。
该节点用于在动画中缩放粒子:可以进行整体缩放,也可在3个空间轴向上分别设置缩放,如图1-34所示。

图1-34
(12)Set Alignment(设置对齐)控制器节点。
该节点用于为选择的粒子设置精确的对齐。可以很方便地重新对齐粒子,如图1-35所示。

图1-35
(13)Velocity(速度)控制器节点。
该节点用于控制粒子速度的大小和方向,如图1-36所示。

图1-36
(14)Size(尺寸)控制器节点。
该节点用于设置所选粒子的尺寸,如图1-37所示。

图1-37
(15)a-bomb(核爆)控制器节点。
用于为粒子的运动增加流动特效,默认创建的是一个经典的蘑菇云特效,简单修改后,可以创建出多样的流体运动,如烟雾等,如图1-38所示。

图1-38
(16)Memory(内存)控制器节点。
建立复杂的粒子系统特效时,最重要的任务之一就是存储粒子数据。该节点是专门基于这一目的设计的。内存控制器的最大特点是,它所关联的粒子数据可以在任意时刻调用至任何动力学设置中,甚至可以为每个粒子存储数据,如图1-39所示。

图1-39
(17)Viewport Color(视图颜色)控制器节点。
该节点可以在场景视图中为粒子指定颜色,如图1-40所示。该颜色可以是一个固定颜色,系统亦可以根据粒子速度、年龄等参数为颜色任意分配符合一定规律的数值。

图1-40
2.Dynamics(动态)控制器节点组
该节点组包含了常用的控制粒子运动的一些常用节点,具体如下。
(1)Bring To[变换(位置及角度)]控制器节点。
该节点的功能非常类似于Position Follow(位置跟随)控制器,只不过它是强制粒子转换至指定的位置和角度,这一指定位置和角度可达任意范围,如图1-41所示。该节点需要配合其他控制器才能使用,因此节点框内配备了许多外联端口,而它的自身的数值参数只有用于约束变换发生的Time[时间]。

图1-41
(2)Freeze[冻结]控制器节点。
该节点用于将冻结运动过程中的粒子,使之转换为静止状态,如图1-42所示。

图1-42
(3)Friction[摩擦]控制器节点。
该节点用于为粒子设置摩擦力,如图1-43所示。TP的这一功能弥补了其他粒子系统通常忽略粒子之间摩擦现象的缺陷。

图1-43
(4)Motion Inherit.(运动继承)控制器节点。
该节点用于模拟物体的运动对粒子的影响,如图1-44所示,其原理是粒子与物体的交互。该节点可以使得物体的速度与旋转影响粒子的相应特性,例如应用这一节点模拟轮船桨叶带起的气泡,桨叶为3ds Max中的物体,气泡就是TP粒子。

图1-44
(5)Path Follow(路径跟随)控制器节点。
该节点用于设置粒子沿路径运动的效果,如图1-45所示。TP这一功能的强大之处在于,用户不仅可以使用样条线作为路径,还可以使用物体的某条边作为路径。

图1-45
(6)PhysX(动力学模拟)控制器节点。
这是一个刚体动力学节点,使用真实的粒子外形模拟动力学碰撞,是TP在版本2.5时新增加的一款控制器,如图1-46所示。更高级别的碰撞模拟应该使用Shape Collision(实体碰撞)节点。

图1-46
注:虽然在一个DynamicSet(动态设置)中可以加入多个这种控制器,但是由于它耗费的系统资源非常严重,所以应当尽可能地少用。
(7)Position Follow(位置跟随)控制器节点。
该节点可以为粒子搜索并跟随目标,如图1-47所示,可以制作粒子聚集的动画。

图1-47
(8)Rep.Bounce(排斥反弹)控制器节点。
该节点可以创建不同粒子组间或单个组内粒子间的动力学效果,如图1-48所示。通常情况下建议使用Distance(距离)条件或PPassAB[通道(A点至B点)]条件或PPassAB(通道)控制器来触发它。

图1-48
(9)Shape Collision(实体碰撞)控制器节点。
该节点是一个基于实体产生碰撞的动力学引擎,效果极为真实,但是非常耗费系统资源,它的操作方法与PhysX(动力学模拟器)控制器基本相同,其结构如图1-49所示。

图1-49
(10)Surface Follow(表面跟随)控制器节点。
该节点可以将粒子的运动约束在一个对象的表面,如图1-50所示。

图1-50
(11)StdForce(标准力)控制器节点。
TP支持3ds Max中所有的空间扭曲,如Gravity(重力)、Wind(风力)等。通过该节点可以为TP粒子施加空间扭曲效果,节点结构如图1-51所示。

图1-51
(12)StdCollision(标准碰撞)控制器节点。
TP系统支持所有3ds Max的碰撞类型空间扭曲,如Deflector(导向器)、UDeflector(通用导向器)等,如图1-52所示。

图1-52
(13)Spin(自旋)控制器节点。
该节点可以设置粒子在运动过程中产生自旋,如图1-53所示。使用该节点可以设置粒子自旋速度等参数。

图1-53
(14)Rolling(旋转)控制器节点。
该节点可以设置粒子的绝对旋转值,使用该节点提供的参数端口可以精确地控制粒子旋转轴向和旋转速度,如图1-54所示。

图1-54
(15)Udeflector(通用导向器)节点。
该节点可将场景中任一网格对象作为导向器影响粒子的运动,其结构如图1-55所示。

图1-55
(16)Follow(跟随)控制器节点。
该节点可使粒子跟随物体运动,如图1-56所示。该节点中,TP提供了很多控制粒子跟随物体的高级功能。笔者建议,有兴趣的读者可在闲暇之余逐一尝试该控制器中的众多功能选项,相信能够获得不少惊喜。

图1-56
(17)Force(力)控制器节点。
该节点可以实现与3ds Max自身空间扭曲工具相当甚至更逼真的的重力和风力效果,如图1-57所示。该节点最大的优势在于:可以独立于其节点,直接控制粒子的状态。

图1-57
(18)Orbit(轨道)节点。
该节点以位置控制器作为输入端,其可以约束粒子以指定的位置为中心作圆周运动,如图1-58所示。

图1-58
(19)PAttach(粒子附加)节点。
该节点可以将一个粒子附加至另一个粒子,如图1-59所示。原理上类似于3ds Max中的父子联接,将A对象作为B对象的父对象,结果就是B跟随A来运动。

图1-59
(20)Shape Joint(外形关节)节点。
该节点用于在两个粒子外形之间的任意点创建动态联接,结构如图1-60所示。

图1-60
3.Generator(出生器)节点组
该节点组包含了创建粒子的一些常用节点,具体如下。
(1)Born(出生)控制器节点。
该节点非常类似于Position Born(位置出生)控制器,但是功能更为简单,它不能像前者那样指定粒子的出生位置、移动速度及运动方向。实际上,它相当于该控制器的简化版本,需要用户通过其他控制器的配合来设置内部参数,如图1-61所示。

图1-61
(2)Position Born(出生位置)控制器节点。
该节点用于在场景中指定的位置产生粒子,如图1-62所示。它自身配备有功能齐全端口及参数,可以独立对自身产生的粒子进行控制,但也可以与系统中其他控制器相互配合,基于一定的规则对粒子的行为产生作用。

图1-62
(3)Obj.ToParticle(物体转化为粒子)控制器节点。
该节点用于将网格、辅助控制器甚至光源等对象转化为粒子使用,如图1-63所示。

图1-63
(4)MatterWaves(冲击波)控制器节点。
这是3ds Max早期的一个高级粒子动画插件模块,使用起来非常方便,而且现在已经完全合并至TP中,如图1-64中。它的主要用途有:创建粒子云,真实的粒子间的碰撞,创建动力学高级流体特效,物体基于材质贴图爆炸成碎块,基于灯光照明产生粒子,基于材质产生粒子及系统组等。

图1-64
(5)Particle Draw(粒子喷绘)控制器节点。
这是一个非常特殊并且好用的节点,如图1-65所示。使用该节点可以模拟一个虚拟的笔刷,在三维空间中的任意范围绘制单个或多个粒子。

图1-65
(6)VertToParticle(顶点转化为粒子)控制器节点。
基于粒子碰撞的原理,使用该节点可以快速得到简单的柔体效果。通过将自身顶点转化为粒子的方式,可将3ds Max中的任意网格转化为成粒子。节点结构如图1-66所示。

图1-66
4.Shape(形状)控制器节点组
该节点组包含了控制粒子外形的一些常用节点,具体如下。
(1)Geom Instance(几何体实例)控制器节点。
该控制器可以选取场景中几乎任何对象作为粒子,如图1-67所示。这些对象大到复杂笨重的太空船,小到原始球体,灯光和一些辅助对象亦可作为选择。应用这一节点甚至可以创建Character Studido群集动画。

图1-67
(2)Meta Shape(变形球)控制器节点。
该控制器可在粒子外包裹一层变形球,多用于模拟流体的粒子外形。变形球是一个程序网格,它们之间可以相互融合。例如,TP在模拟水银时,每滴水银就是一个变形球,当两个较小的水银滴相互靠近时,受张力影响,它们将融合为一个更大的水银滴,如图1-68所示。

图1-68
(3)Std Shape(标准外形)控制器节点。
为粒子设置一个标准的外形,如球体、立方体等,如图1-69所示。几乎所有的粒子系统中都提供了该功能。

图1-69
(4)Shape Blend(混合变形)控制器节点。
该控制器的作用为,在某个时段内,将一个网格对象转变为另一个网格对象。物体转变的次序由它们在DynamicSets(动态设置)中的排列顺序所决定。这一形变不是基于物体自身进行的,而是简单的对象网格之间的转换,如图1-70所示。

图1-70
5.Fragmenter(破碎)控制器节点组
该节点组包含了控制粒子破碎的一些常用节点,具体如下。
(1)Blurp(打碎)控制器节点。
该节点用于快速有效地创建粒子变形动画,也就是模拟对象瓦解后变成任意形状和数目的粒子,这些粒子再重新凝聚成另一个对象,其结构如图1-71所示。

图1-71
注:① 建议变形对象应尽量保持一致的面数。② 需要为该控制器的输入端口ON导入一个真值,才能触发该控制器。
(2)Fragment(破碎)控制器节点。
该节点是一种碎片特效工具,可以将对象直接分裂为碎块,可以控制碎块的速度、尺寸等属性,如图1-72所示。为更好地观察效果,建议勾选Master DynamicSet(主动态设置)里的Show Mesh(显示网格)选项。碎片的行为是由粒子控制的,而非基于网格外形。

图1-72
(3)HFragmenter(碎片)控制器节点。
该节点重新定义了TP中的破碎效果。截至3.0版本,该节点被认为是TP中最为强大和灵活的节点之一,如图1-73所示。

图1-73
6.Material(材质)控制器节点组
该节点组包含了控制粒子材质的一些常用节点,具体如下。
(1)Shape Material(外形材质)控制器节点。
该节点允许用户为任何一个TP粒子系统添加或改变材质,如图1-74所示,材质类型为多维/子对象材质。

图1-74
(2)Paint(绘画)控制器节点。
该节点提供了一种特殊的材质绘制方法,如图1-75所示。它的原理是向一个表面喷射粒子,粒子碰撞至表面后留下痕迹,而这一痕迹可以通过TP_TexMap(TP_纹理贴图)进行管理,整个过程非常类似于RealFlow(流体模拟软件,简称RF)中[打湿贴图]的创建方法。

图1-75
(3)Material Time(材质时间)控制器节点。
该节点可以为选择的粒子组中的每个粒子指定动态材质,如图1-76所示。

图1-76
(4)Camera Map(摄影机贴图)控制器节点。
该节点提供了一个强大的粒子贴图设置方法,可以控制粒子的贴图坐标,如图1-77所示。该节点的工作原理与3ds Max中的[摄影机贴图]修改器非常相似。

图1-77
7.Initiator(启动程序)控制器节点组
该节点组包含了控制多群粒子之间关系的一些常用节点,具体如下。
(1)PPass(粒子传递)控制器节点。
该节点非常类似于TP早期版本中Group(组)节点的用法。在下拉列表中可以随意改变粒子组的类型,无需删除原有的组,如图1-78所示。

图1-78
注:建议用户在改变组类型时尽可能使用这一控制器,而不用旧有的组节点操作方法。同时,在每个DynamicSet(动态设置)中建议只使用一个PPass(粒子传递)控制器节点,否则生成的系统结构较为混乱。
(2)Pselection(粒子选择)控制器节点组。
该节点用于必要时选择单个或数个粒子进行删除或修改,简而言之,其作用就是选择粒子,这一操作是通过选择粒子的ID实现的,如图1-79所示。

图1-79
注:① 建议在每个DynamicSet(动态设置)中只使用一个该种控制器。② 可以配合Particle Die(粒子死亡)控制器实现将选择的粒子删除。
(3)PPassAB(交互传递)控制器节点。
这是一个粒子支持节点,也是TP唯一一个能够创建高度优化的内部粒子交互与碰撞的节点,如图1-80所示,这一节点支持检测组内或组间两两粒子间的距离。

图1-80
(4)PSearch(粒子搜索)控制器节点。
该节点可以在某一范围内搜索最近和最远的粒子,这一功能可用于众多高级效果中,如图1-81所示。该节点提供了很多输出选项,可以搜集所有重要数据并创建高级效果。

图1-81
(5)Iterator(迭代程序)控制器节点。
该节点是新一代的TP工具,它允许循环一个动态设置,如图1-82所示,其原理类似于汇编语言中的Do(执行)或者Loop(循环)语句。

图1-82
8.Export(输出)控制器节点组
该节点组包含了粒子输出的一些常用节点,具体如下。
(1)Export(输出)控制器节点。
该控制器用于将粒子动画转化为关键帧动画,如图1-83所示。

图1-83
注:Fragment(破碎)控制器的碎块动画可以被输出,但残余的对象部分不可以被输出。
(2)PartToObj(粒子转化为对象)控制器节点。
该控制器的作用是,在某一特定时段内,将所有粒子转化为网格对象,如图1-84所示,其目的通常是为其他动力学模拟作准备,因为它能够保留粒子先前的位置和旋转信息。

图1-84
注:输出过程中,场景视图中的动画显示为顺序播放状态,转化完成的动画可以循环演示。
9.Tools(工具)控制器节点组
该节点组只包含了一个节点:
CollisionMap(碰撞贴图)控制器节点。
这是一个非常特殊的节点,可以用贴图控制粒子碎块的破碎,如图1-85所示。

图1-85
10.Reference(参考)控制器节点组
该节点组中的节点可以设置粒子参考,具体如下。
(1)Clear Ref.(清空参考)控制器节点。
使用该节点可以打断或清空粒子间的参考,如图1-86所示。根据参考类型,两个粒子之间的联接可以轻松移除或改变。

图1-86
(2)Get Ref.(检索参考)节点。
该节点用于检索粒子参考,在使用该节点之前,必须保证两个或多个粒子之间使用Set Ref.节点(设置参考)来创建参考,其结构如图1-87所示。

图1-87
(3)SetRef(清空参考)节点。
使用该节点,可以打断或清空粒子间的参考,其结构如图1-88所示。根据参考类型,可以轻松移除或改变两个粒子。

图1-88
11.VolumeBreaker(体积破碎)控制器节点组
该节点组中的节点可以设置粒子破碎,这项破碎功能原来是一个插件。
(1)VolumeActivate(体积激活)控制器节点。
该节点为TP提供了一种新的粒子生成方式,提高了TP进行破碎的内部效率,其结构如图1-89所示。

图1-89
(2)VolumeBreak(体积破碎)控制器节点。
该节点是一款基于VolumeBreaker(体积破碎器)的几何体破碎工具,如图1-90所示,可以为任意网格对象立刻产生子级别的碎块。这些碎块是具备体积属性的实体,彼此适配紧凑。这是一款好莱坞品质级别的破碎工具。

图1-90
(3)VolumeCell(体积细胞)控制器节点。
在一些特殊案例中,该节点可以替换体积细胞数据。简而言之,该节点用于控制何时、何地、何种方式进行粒子破碎,如图1-91所示。

图1-91
12.BulletPhysics(子弹体系)控制器节点组
该节点组中的节点可以设置粒子破碎,这项破碎功能原来是一个插件。
(1)BulletPhysics(子弹体系)控制器节点。
TP提供了3个可选物理引擎,在某些特定情况下,使用合适的引擎可以让制作更加高效,而且更少出错。其中,TP自身的Shape Collision(外形碰撞)节点适合制作更准确、更复杂的碰撞;PhysX更适合用在对准确性要求不高的情形下;而BulletPhysics(子弹物理学)节点介于两者之间,可以自动平衡前两个引擎的计算速度和计算准确度,其结构如图1-92所示。

图1-92
(2)Bullet Vehicle(弹头车)控制器节点。
该节点类似于一个简单并且高度优化的车辆控制系统,使用的是一个名为Raycast(光照)的车辆模型。它的工作原理不同于真实世界中需要分析每个车轮和底盘之间的复杂传动进行动力学计算,车轮的碰撞判断基于整个车辆模型,如图1-93所示。

图1-93
(3)BT Vehicle Data(BT车辆数据)控制器节点。
该节点可以为其他类型的TP数据提供相似的特性和功能,不仅可以处理车辆类型的粒子数据,实际上,任何粒子类型都可以联接至该节点上,该节点的结构如图1-94所示。

图1-94
(4)BTRope(BT绳索)控制器节点。
该节点是TP中第一个可用的柔体动力学物体。BulletPhysics(子弹体系)引擎基于三维空间的二维样条曲线,可以处理所有绳索动力学。绳索没有体积,每次模拟都是基于二维样条线在空间中的变形和碰撞,如图1-95所示。

图1-95
(5)BTRopeData(BT绳索数据)节点。
TP中的绳索物体非常特殊,它不像其他物体那样可以在TP内部或者外部直接创建模型对象。创建绳索物体的方式之一是使用3ds Max的Spline(样条线)工具,它可以很轻松地转化为TP绳索,而编辑和修改这些绳索实际上就是编辑样条线。BTRopeData(BT绳索数据)节点结构如图1-96所示。

图1-96
(6)BT Joint(BT关节)控制器节点。
该控制器用于在粒子之间创建BT关节,创建时间为任意,方式有多种,其结构如图1-97所示。

图1-97
(7)BT JointCounter(BT关节计数器)节点。
该控制器用于得到粒子间所有有效的BT关节,其结构如图1-98所示。需要注意的是,必须为其指定应用了关节的BT BulletPhysics(BT子弹体系)节点,否则无法得到任何关节信息。

图1-98
(8)BT JointData(BT关节数据)节点。
该节点可用于设置或者得到一个Joint(关节)信息,其结构如图1-99所示。它需要联结至BTJoint(BT关节)节点或BT JointCounter(BT关节计数器)节点的输入端。

图1-99
13.Shape Collision(实体碰撞)节点组
该组中的节点用于完善新动力学引擎的一些功能。
(1)SC(新实体碰撞)节点。
SC(新实体碰撞)节点是早期Shape Collision(实体碰撞)节点的升级版,提供了很多超越旧版的新功能,它是一个动力学刚体引擎节点,结构如图1-100所示。

图1-100
(2)SC Joint(SC关节)节点。
该节点用于在粒子之间创建SC关节,创建时间为任意,方式有多种,其结构如图1-101所示。

图1-101
(3)SC JointCounter(SC关节计数器)节点。
该控制器用于获取粒子间所有有效的SC关节信息。注意,使用前必须指定应用该关节的SC Shape Collision(SC实体碰撞)节点,否则无法获取任何关节信息,其结构如图1-102所示。

图1-102
(4)SC JointData(SC关节数据)节点。
该节点可用于设置或获取某个Joint(关节)的信息,需要关联至SC Joint(SC关节)节点或SC Joint Counter(SC关节计数器)节点的输入端,其结果如图1-103所示。

图1-103
14.Import(导入)节点组
该组中的节点只有一个,用于与其他格式的文件相互兼容。
Import File(导入文件)节点:
该节点可以兼容导入Realflow的bin格式文件,也支持导入Krakatoa(粒子加速软件)的prt格式文件,可以保证TP与RF和Krakatoa完美结合,结构如图1-104所示。

图1-104
15.Scripted(处理脚本)节点组
该组中的节点亦然只有一个,即Scripted(脚本)节点,用于辅助拓展和扩充TP功能,其结构如图1-105所示。
该节点发布于TP 4.0时代,它是为了拓展TP功能而开发的一款功能强大的新节点。配合该节点,使用标准的MAXScript(3ds Max脚本语言)可以定义属于自己的TP控制器。

图1-105
1.3.3 辅助对象类节点
TP是一个基于规则的粒子系统,通过这些Helpers(辅助对象)节点,用户无需了解任何编程技巧,仅仅通过简单的拖动控制器操作,即可创作出属于自己的、独特的并且非常复杂的粒子效果。这些控制器的设置极大地提高了TP的功效,创建按钮如图1-106所示。

图1-106
TP系统提供的辅助对象控制器可以分为6组:Math(数学)辅助控制器组、Position(位置)辅助控制器组、Standard(标准)辅助控制器组、Time(时间)辅助控制器组、Geometry(几何体)辅助控制器组及Script(脚本)辅助控制器组。
下面逐一分析各组中每个辅助节点控制器的结构和作用。
1.Math(数学)辅助控制器组
该组中提供的节点主要是基于数学函数原理来进行粒子动画制作的。
(1)Add&Multiply(加乘)节点。
该辅助节点可以进行简单的加减乘除计算,其结构如图1-107所示。

图1-107
(2)AND(逻辑与)节点。
该辅助节点的作用是:当两个输入端口的值都为真时,它的输出为真,否则输出值为非真,它与编程语言(如C语言、VB语言)中常用的“逻辑与”条件功能相同,其结构如图1-108所示。

图1-108
(3)Bool(布尔)节点。
该辅助节点可以为其他控制器或条件输出一个真或非真的值,并且可以随时发生改变,如图1-109所示。

图1-109
(4)Expression(表达式)节点。
该辅助节点用于通过数学与逻辑表达式定义矢量与分量的输入/输出端口,其结构如图1-110所示。默认情况下,该节点是没有输入/输出端口的,需要用户自行定义。

图1-110
(5)Float(浮点)节点。
该辅助节点用于为控制器或条件设置一个特定的值,这一数值可以是小数,也可以是整数。使用3ds Max中的[自动关键帧]等动画工具可以为该值设置动画,其节点结构如图1-111所示。

图1-111
(6)Integer(整数)节点。
该辅助节点用于为控制器或条件设置一个特定的值,结构如图1-112所示。它的用法非常类似于Float(浮点)辅助节点,只不过它只能使用整数。

图1-112
(7)Invert(反转)节点。
该辅助节点用于将输入的布尔值反转。它没有提供控制参数,只提供了输入和输出端口,如图1-113所示。

图1-113
(8)Math(数学)节点。
该节点对输入的数值执行数学运算,并在输出端将计算结果输出,如图1-114所示。不同的数学算法(如加减乘除)可以轻松地在参数卷展栏的下拉列表中选择。

图1-114
(9)Matrix(矩阵)节点。
该节点允许在TP中进行矩阵运算,甚至可以将节点的输出端口联结至任意的位置类节点和旋转类节点上,其结构如图1-115所示。

图1-115
(10)OR(逻辑或)节点。
该辅助节点的作用为:当两个输入端口的值有一个为真时,它的输出就为真;如果两个输入端口都为非真时,则输出值为非真。它的功能与编程语言(如C语言、VB语言)中常用的“逻辑或”条件相同,其结构如图1-116所示。

图1-116
(11)Point3(三点数据)节点。
在计算机图形学中,Point3(三点数据)数据类型是非常常见的,如颜色信息可由R(红)、G(绿)、B(蓝)三个值确定,而位置信息可由X、Y、Z 3个坐标值确定。该节点的结构如图1-117所示。

图1-117
(12)Random(随机)节点。
该节点用于产生一个随机数。将某个节点的输入端与该节点相联接后,以质量节点为例,那么得到的每个粒子的质量会得到一个随机的赋值,节点结构如图1-118所示。

图1-118
2.Position(位置)辅助控制器
该组中提供的节点主要是为粒子进行精确定位的。
(1)Surface Pos(表面位置)控制器节点。
该节点用于读取一个所选对象的表面信息,以指示粒子如何分布于对象表面,结构如图1-119所示。如果该对象制作有动画,其表面的粒子也将发生跟随运动。

图1-119
(2)Volume Pos(体积位置)控制器节点。
该节点用于将粒子放置于对象体积内,同事物体的动画将影响粒子的行为,结构如图1-120所示。这是一个制作高级动画非常重要的功能。

图1-120
(3)Path Position(路径位置)控制器节点。
该节点是粒子获取任何类型路径中任一位置的完美工具,如图1-121所示。这里的路径指的是一条样条线或者所选网格对象的一条边。

图1-121
(4)StdEmitter(标准编辑器)节点。
该节点用于创建粒子在出生时或者全局的位置和旋转信息,如图1-122所示。该节点的主要用途是为了与TD系列工具联合应用。

图1-122
3.Standard(标准)辅助控制器
该组中的节点应用非常广泛,主要作用是为用户提供制作非线性动画的功能,其中一些节点用于将一个数据类型转换成另一种数据类型,以创建复杂的表达式。
(1)Color(颜色)节点。
该节点用于为相关条件或控制器设置或者修改RGB颜色值,其结构如图1-123所示。

图1-123
(2)Comment(注释)节点。
这是TP中的一个特殊节点,不会对场景中的对象或参数作任何修改,仅仅用于存储描述TP中节点的联接原因等说明文本,为其他程序开发人员提供说明,其结构如图1-124所示。

图1-124
(3)Counter(计数器)节点。
该节点功能强大,可以计算粒子设置和输出过程中的一些数据,其结构如图1-125所示。

图1-125
(4)Get Direction(获取方向)节点。
这一辅助节点的作用为,帮助读者提取对齐信息中的一个分量。它没有提供控制参数,仅仅提供输入和输出端口,结构如图1-126所示。

图1-126
(5)Group(组)节点。
该节点用于指定粒子组,结构如图1-127所示。

图1-127
(6)Intersect(交叉)节点。
该节点用于获取粒子在空间运动过程中的下一个交叉点/面,结构如图1-128所示。

图1-128
(7)Node(节点)控制器节点。
Node(节点)代表3ds Max中的一个对象,可以是灯光、曲线、辅助对象、多边形对象等,如图1-129所示,并将这一节点的属性传输给其他控制器。

图1-129
(8)One To X(统一赋值)控制器。
该辅助节点可以将一个输入值分为多个输出值进行输出,其结构如图1-130所示。若输入值为1,输出值为X、Y、Z,则可以理解为将3个数值都指定为1。

图1-130
(9)Path(路径)控制器。
该控制器可用于指定曲线或者网格物体的边,将其输出至需要匹配路径的节点,其结构如图1-131所示。

图1-131
(10)ParticleData(粒子数据)节点。
用于获取当前选择粒子组的外观,并将其传送给另一个控制器或条件,结构如图1-132所示。它没有控制项目,仅提供输入和输出端口。

图1-132
(11)TexmapColor(纹理颜色)节点。
这是一个需要MatterWaves(冲击波)控制器协同工作的节点,其结构如图1-133所示。它可以为TP中的每个粒子设置不同的颜色。如果协同PyroCluster工作,可以基于对象的表面颜色控制体积渲染颜色。

图1-133
注:PyroCluster是一款体积烟雾渲染插件,它和TP均为CEBAS公司出品,二者之间可以实现无缝交互。
(12)X To One(归一)节点。
该辅助节点可以将多个输入数值输出为1,其结构如图1-134所示。若将该节点的输入值设置为X、Y、Z,输出值设置为粒子位置,得到的结果为所选粒子3个轴向的坐标均指定为1。

图1-134
4.Time(时间)辅助控制器
该组提供的节点很多,可用于提供和时间有关的非线性动画,下面逐一进行分析。
(1)EggTimer(闹钟)节点。
该节点类似闹钟,其功用是使得程序在指定时刻停止运行,其结构如图1-135所示。

图1-135
(2)Frame(帧)节点。
该辅助节点用于设置某一在其他节点中使用的特定帧,其结构如图1-136所示。

图1-136
(3)Time Base(时间基)节点。
该节点用于控制与其联接的节点的动画时间,它是专门为非线性动画设计的,其结构如图1-137所示。用户可以在一段固定时间内为一个物体设置非线性动画。

图1-137
(4)Time Loop(循环)节点。
该控制器的功能亦为设置一个非线性动画功能,它允许用户控制一个固定的动画时间段,如图1-138所示。所有与其相连的节点都会在这个时间段内循环。它的循环方式可分为Loop from(单向循环)或Ping Pong(双向循环)。

图1-138
(5)Timer(简易秒表)节点。
这是一种与3ds Max关键帧动画不同的时间控制方法,如图1-139所示。它的作用类似于一个秒表,用于设置规则或条件发生的时间段。

图1-139
(6)Timer1(秒表)节点。
该节点可以获取一个已存在的动画,并以一种非线性的方式回放,结构如图1-140所示。

图1-140
(7)Value To Time(时间转换)节点。
该节点可将一个分量值转换为时间值frames(帧)/ticks(秒),简单举例,使用这一节点可将距离度量转换为时间度量方式,用于控制物体的速度,节点结构如图1-141所示。

图1-141
5.Geometry(几何体)辅助控制器
TP引入了一类新的辅助节点类型,即Geometry(几何体)辅助控制器节点。
在很多情况下,创建高级特效时,需要获取物体的几何体状态信息,甚至需要进入物体的面级别或者点级别,而这些节点就是为这一目的设计的。
Geometry(几何体)辅助控制器节点包括以下7种。
(1)GeomFace(几何面)辅助节点;
(2)GeomObject(几何体物体)辅助节点;
(3)GeomParticle(几何体粒子)辅助节点;
(4)GeomPoint(几何体点)辅助节点;
(5)GeomRandom(几何体随机)辅助节点;
(6)GeomVertex(几何体顶点)辅助节点;
(7)Object(物体)辅助节点。
各节点结构如图1-142所示。

图1-142
这些节点功能非常类似,区别仅在于关联至的几何体拓扑结构级别的不同,这里就不再逐一介绍。其中,Object(物体)节点稍显特殊,可以直接将物体数据提供给其他TP节点。
6.Script(脚本)定义TP节点
随着最新版本TP的发布,TP新增了许多强大的功能,使用标准的3ds Max脚本可用于编写属于自己的TP节点,如图1-143所示。

图1-143
1.3.4 黑盒子类节点
TP是一个非常复杂和精密的粒子动画系统,它为我们引入了许多新的概念。TP系统中无需编程即可实现复杂代码才能完成的功能,这得感谢它出色的图形用户界面,可在很短的时间内用导线联接出非常复杂的粒子行为。
简单地说,黑盒子是一个可以单独保存在磁盘中的DynamicSet(动态设置),可以重复调用,不仅如此,该类节点还可以短时完成极其复杂的粒子行为,如图1-144所示。

图1-144
1.3.5 材质类节点
TP提供了很多主程序的内置或外置功能模块,如材质、修改器和工具,它们都可以与TP主程序中的模块完美协作。
下面简要介绍TP有关的各项材质和贴图类型。
1.TP Variation Texmap(TP变化纹理)
TP提供了可以帮助用户设置群集物体场景的工具。此外,该节点还允许为颜色和纹理设置更多的变化,如图1-145所示。

图1-145
2.TP Texmap(TP变化纹理)
TP提供了很多可以帮助用户绘制粒子的工具。该节点可以与Paint Operator(绘图节点)共同使用,为粒子绘制表面颜色和纹理,如图1-146所示。

图1-146
3.TP Deform Texmap(TP变形纹理)
该节点是一个高级贴图工具,可以很轻松地协同TP创建极为复杂的高级特效。它可以提供一个程式使任意曲面沿动态路径发生变形,如图1-147所示。

图1-147
4.TP Multi/SubMaterial(TP多维/子对象材质)
在制作群集效果的时候,如为每个物体逐一指定不同的材质和纹理,过程非常繁杂。而使用该节点可以大大提高这一工作的完成效率,如图1-148所示。

图1-148
1.3.6 修改器节点
TP提供了很多主程序的内置及外置工具,如材质、修改器和工具,它们都可以与TP主程序中的工具完美协作。
下面介绍与TP有关的各项修改器。
1.TP_HFragmenter Modifier(TP_H破碎修改器)
该节点是一款非常真实的破碎分解工具,可以很轻松地创建出复杂的破碎效果。它创建的破碎效果极为真实,并且完全基于物理解算进行,如图1-149所示。

图1-149
2.TP Deform Modifier(TP变形修改器)
该节点可以提供使任意曲面沿动态路径运动变形的程式,如图1-150所示。

图1-150
1.3.7 塌陷工具节点
TP Collapse(TP塌陷)节点:该节点是一种简单但是功能非常强大的工具类节点,它主要的作用是塌陷网格,如图1-151所示。

图1-151
至此,Thinking Particles的基本结构和功能就介绍完毕了,在下面的章节中,我们将结合实例对TP的具体应用进行更为详细的讲解。