2004-7-2 7:18:00 作者: 来源:未知 网友评论 0 条
论坛
对于黑客帝国中子弹拖出类似水波的弹道的镜头想必大家都不陌生,那么,怎样可以实现这样的效果呢?在3DS MAX中,使用粒子流就可以做到,而且操作过程相当简单。我们将把子弹作为粒子源发射出来的粒子,同时为其添加Spawn操作器来生成尾迹,然后为尾迹设置类似玻璃的材质来得到效果。我们将在静态场景中制作这个动画效果,当然你也可以使用摄影机匹配将其和动态的真实场景进行合成,那样效果就更加逼真了。
本教程实例源文件下载 最终效果视频文件(WMV格式) 1、最终效果和实现方法

| 效果 |
实现方法 |
| 子弹掠过 |
使用Shape Instance将粒子源发射的粒子用子弹物体替换 |
| 尾迹 |
使用Spawn操作器,并将发射出来的粒子用Shape Instance替换为波纹物体 |
| 波纹产生之后逐渐增大 |
使用Scale操作器并为其设置动画 |
| 尾迹类似水波纹的材质 |
使用Raytrace材质 | |
 |
1、子弹掠过
1)在3DSMAX中打开Create(创建)->Geometry(几何体)->Particle System(粒子系统),单击PF Source,并在前视图中拖动建立粒子源的发射器。(注意,示例场景中已经包含了一个子弹物体,名称为Bullet)

2)按6键打开粒子视图,将系统自动建立的事件Event01命名为“子弹_Event”,并拖放一个Shape Instance操作器放入其中。我们将会把这个事件中产生的例子用子弹物体的实例替换,从而形成子弹飞行的效果。
3)选择Shape Instance操作器,在其属性面板中,单击None按钮,然后选择场景中的物体Bullet。

4)分别选择Birth和Speed操作器,其属性面板中的参数的含义已经多次介绍,不过这里还要解释一下在这个例子中他们代表的含义。Birth中的Amount设置为较小的参数,它代表在整个动画中会出现几发子弹。Speed中的Speed参数代表子弹的飞行速度,一般设置为较大的值,不过如果你希望看到“慢镜头”的效果,也可以用较小的值。


[mb_cent_page]
5)现在播放一下动画看子弹的飞行是否正常。在很多情况下可能会出现子弹的弹头指向错误的现象,比如下图中子弹的弹头方向正好反了。这时我们需要使用Rotation操作器,在其属性面板中设置X轴向旋转180度(也许你在操作中旋转的方向和角度会略有不同)。


2、尾迹物体
在粒子流的特效制作中,凡是需要制作粒子尾迹的,基本上都需要使用Spawn操作器。这个操作器有一个输出,我们将把这个输出交给另外一个事件“尾迹_Event”并在事件“尾迹_Event”中内容使用第二个Shape Instance操作器将尾迹替换为几何体。所以下面我们首先来制作尾迹物体。
1)打开Create(创建)->Geometry(几何体),单击Sphere按钮并在场景中拖动建立球体,对于他的参数设置只需要注意将Segements设置为较大的参数就可以了,因为尾迹的边缘必须光滑。
2)使用工具栏上的缩放工具(快捷键Ctrl+E)锁定X轴将球体压扁。

3)按住Shift键拖动,释放鼠标后从弹出的对话框选择复制方式为Instance,复制数量为10个左右(你可以根据具体的情况随意设置,但是不能太少)。

4)再次使用缩放工具对新建立的球体逐一锁定YZ 坐标平面进行缩小,这样从侧面看形成一个纺锤体。
[mb_cent_page]
5)选中以上所有的物体,使用菜单“Group->Group”建立一个组,将其命名为“尾迹_Group”。尾迹物体的制作完成了,将其拖到场景的角落里面边,我们将在后面使用。

3、尾迹产生
在上一步中我们建立了尾迹的替换物体,现在回到粒子视图中。
1)向事件“子弹_Event”中拖放一个Spawn操作器,在其属性面板中选择子例子产生的方式为By Travel,也就是让父粒子(在这个例子中就是子弹)在飞行过程中每隔一段距离产生一个子粒子。
2)设置By Travel的Step Size参数为10,也就是每飞行10个单位产生一个子粒子,这个参数不要设置的太小,否则会因为子粒子的数量过多会影响渲染得速度,而且效果也不见得会有多好。
3)在下面Speed中选择Inherited(速度继承)并设置其参数为0,这个参数设置子粒子的运动速度和父粒子速度之间的比例关系,设置为0表示子粒子产生后不移动,停留在其产生的位置。

4)拖放一个Shape Instance操作器到粒子视图的空白位置,这样会建立一个新事件,将这个事件命名为“尾迹_Event”。

5)选择这个Shape Instance操作器,在其属性面板中单击单击最上面的None按钮,选择上一步中建立的物体“尾迹_Group”

6)仍然在这个Shape Instance操作器的属性面板中,选中Group Member选项,这一点非常重要,否则进行粒子的实例替换时会将整个“尾迹_Group”作为一个整体, 而选中Group Member之后,将会在组中逐一取出子物体来替换粒子,这样就可以形成尾迹的波纹状效果。

7)将事件“子弹_Event”中Spawn操作器的输出和事件“尾迹_Event”的输入连接起来

[mb_cent_page]
8)现在播放动画看到的效果是这样的,尾迹中的物体好像都是“卧倒”的,这和前面子弹的弹头指向错误的情况如出一辙,我们可以拖放一个Rotaion操作器来解决问题,具体参数设置你可以自己尝试,没有什么定式,总之能弄出下图的效果就OK了。


4、尾迹放大
这时播放动画会发现一个缺陷,就是尾迹产生之后的体积是“一步到位”的,而不是一个逐步扩大的过程,我们可以向事件“尾迹_Event”中添加Scale操作器来实现在这种效果。
1)拖放一个Scale操作器,紧靠在Shape Instance操作器下方。在其参数面板种选择Type(类型)为Relative First,Sync By(同步方式)为Particle Age。


2)打开Auto Key动画记录模式,拖动动画滑块到0帧,设置Scale Factor在X、Y、Z轴向上均为0。拖动到60帧,设置Scale Factor在X、Y、Z轴向上均为80。这时可以看到调节按钮周围出现红色的方框,这表示动画已经成功记录下来。由于我们前面将Sync By(同步方式)参数设置为了Particle Age,Scale操作器对粒子的作用将会和粒子的年龄同步,具体到这个例子中就是,当尾迹粒子产生后,在其生命周期中的前60帧中,其体积将由0增加到80%,这就是我们需要的效果。
5、材质
对于弹头,我们将使用3DSMAX自带的Chrome材质,而尾迹的材质则需要我们自己制作。
1)打开材质编辑器(快捷键M),单击Get Material(获取材质)按钮,从弹出的材质/贴图浏览器中选择Mlt Library(材质库),然后单击Open File按钮,进入3DSMAX的安装目录下面的Matlibs文件夹,选择Metal.mat。

2)从该材质库的材质列表中选择Metal_Chrome并双击将其提取到当前的材质编辑器中,命名该材质为“子弹_Material”,然后将其赋予物体Bullet。

[mb_cent_page]
3)现在来制作尾迹的材质,尾迹的外观类似水波,因此我们将使用Raytrace材质。选择一个空白样本球,单击Standard按钮,从弹出的对话框中双击Raytrace。

4)在Raytrace材质的参数中,我们只需要修改两个参数,Transparency(透明色)设置为白色,Index Of Refraction(折射率)为1.3。

5)将在上一步中设置好的材质命名为“尾迹_Material”并赋予物体“尾迹_Group”,在渲染的时候,Shape Instance会自动使用物体自身的材质。如果渲染是看不到粒子的材质效果,请检查一下事件“尾迹_Event”中Shape Instance操作器中的Acquire Mapping和Acquire Material两个选项是否选中。


6、灯光和环境
由于我们使用了Raytrace类型的材质,为了保证渲染效果,灯光和环境就是一个不得不仔细考虑的因素了。Raytrace类型材质对环境和灯光是高度依赖的,可以说,没有环境和灯光,就不会有Raytrace效果。
1)首先是环境,打开环境和效果窗口(快捷键8),单击Environment Map(环境贴图)下面的None按钮,选择Bitmap并选择一幅图片。这幅图片的内容并不重要,因为它不会直接出现在最终的渲染效果中。但是它的颜色会对最终的渲染效果有影响,因此要注意选择色调统一,整个图片中不要有对比强烈的色彩(互补色更是要尽量避免),不同色彩之间的要自然过渡,不宜出现“斧削刀裁”式的色彩分割带,否则Raytrace通过折射将这些颜色送到最终的渲染图景中时可能会出现一些色带。简单地说,用一幅蓝天白云的图片最好(注意不要那种带草地的:))。

2)接下来是背景,打开Create(创建)->Geometry(几何体),单击Plane按钮,建立一个平面,立在子弹飞行尾迹的后面,为这个平面物体贴上一个普通的平面贴图,比如在示例场景中我们使用了一张建筑的图片。
3)最后是灯光,在这个例子中,我们将设置多个Omni光源,同时降低每盏灯的亮度。一方面,光源的数量多了,容易将尾迹材质玲珑剔透的效果表现出来,另一方面,降低每盏灯的亮度可以避免场景中光线过于刺眼。当然光源多了,渲染速度会减慢。在示例场景中,我们建立了36个Omni光源,排列成上下两个圆环,每盏灯的Multiplier参数均设置为0.1。当然你可以按照自己实际需要进行调整。

至此,子弹尾迹效果的制作就基本完成了,最后一步操作是建立摄影机调整视角进行渲染。当然,这个效果还有很多地方可以进一步改进。首先,尾迹物体表面过于平整,你可以添加Noise修改器或者使用Bump贴图通道来为其表面增添一些凸凹不平的随机效果,以便体现空气波动的随机性。其次,在现在的效果中,尾迹产生之后一直不会消失,我们可以在事件“尾迹_Event”中添加一个Age Test测试,将年龄达到一定值得粒子交给下一个事件处理,用Delete操作器将其删除。最后是关于灯光和材质的两个问题,示例场景中使用了较多的光源,如果你对效果的要求不是很高,可以适当减少光源的数量,这样可以大大提高渲染速度。另外在这个例子中我们使用的是Raytrace材质,这种材质的渲染速度非常慢,你可以使用一种变通的方法,即使用一个Standard类型的材质,在其Refraction贴图通道中贴入Reflect/Refract贴图,其效果和直接使用Raytrace材质是相似的,而且渲染时间会大大缩短。