[{"data":1,"prerenderedAt":235},["ShallowReactive",2],{"page-GPU Sprites-1":3,"page-count-GPU Sprites":234},[4],{"id":5,"title":6,"body":7,"date":209,"description":13,"extension":210,"meta":211,"navigation":214,"path":226,"seo":227,"stem":228,"tags":229,"__hash__":233},"blogs\u002F_legacy\u002F2015\u002F2015-07-06-ue4-particle-official-tutorial-summary.md","UE4粒子系统官方教程总结",{"type":8,"value":9,"toc":191},"minimark",[10,14,17,20,30,34,37,41,44,47,50,53,57,60,63,67,70,73,76,80,83,86,90,93,96,99,102,105,108,111,115,118,121,129,136,139,143,146,149,167,170,173,176,179,182,185,188],[11,12,13],"p",{},"Epic官方提供的粒子特效教程涵盖的范围比较广，操作上也是由浅入深，对于帮助了解粒子系统很有作用。",[11,15,16],{},"当前UE4版本：4.8.1。",[11,18,19],{},"粒子系统这一块，虽然之前将文档大概读了一遍，但是有些概念依然比较抽象，故而按照官方教程操作了一遍。",[11,21,22,23,29],{},"原始教程地址：",[24,25,26],"a",{"href":26,"rel":27,"title":26},"https:\u002F\u002Fwiki.unrealengine.com\u002FVisual_Effects:_Lesson_01:_Material_Particle_Color",[28],"nofollow","。",[31,32,33],"h2",{"id":33},"基础材质",[11,35,36],{},"粒子系统除了在Mesh Data Type被指定时使用的是Mesh之外，在一般情况下都会使用材质作为发射器的基本粒子。",[38,39,40],"h3",{"id":40},"材质构建",[11,42,43],{},"教程中使用的材质是Blend Mode为Translucent而Lighting Model为Unlit的，通常情况下粒子上的光照效果并不明显，使用Unlit可以有效的降低系统负担。",[11,45,46],{},"教程中使用的十字图片一时找不到原图，因而直接使用默认粒子系统的那张贴图作为制作基础。",[11,48,49],{},"基础材质的制作较为简单，基本就是将材质的颜色和alpha通道分别连接到自发光颜色和不透明度上。材质制作完成后，在发射器的Required模块将材质替换为刚刚建立的材质即可。",[11,51,52],{},"材质中使用的Particle Color参数可以使用Color Over Life进行控制，操作相对简单，没有什么特别需要注意的地方。",[38,54,56],{"id":55},"depth-fade","Depth Fade",[11,58,59],{},"使得粒子在与其他物体交集时边界不是那么的尖锐，而是在有交错时减少粒子的透明度。",[11,61,62],{},"功能实现很简单，在材质的不透明读输入之前连接上Depth Fade节点即可。",[38,64,66],{"id":65},"near-camera-fade","Near Camera Fade",[11,68,69],{},"粒子在摄像机靠近时逐渐变得透明进而消失，在游戏中比较经常用到。这一类的效果基本使用这种方法进行实现。",[11,71,72],{},"在材质中使用节点PixelDepth配合Sphere Mask。Shpere Mask用于计算距离并生成遮罩，圆心处为1，Distance处为0，根据Hardness生成过渡效果。因而，要连接到不透明度效果上的话要先进行一减操作。",[11,74,75],{},"将生成的不透明度与原有的不透明度相乘即可实现Near Camera Fade的效果。教程中Sphere Mask的参数为Radius:75，Hardness:10。",[38,77,79],{"id":78},"materia-function","Materia Function",[11,81,82],{},"材质函数用于将经常用到的材质特效独立出来，便于操作、管理和统一修改，也被用于Layered Materia的制作之中。是材质系统中比较重要的一个功能。",[11,84,85],{},"在这里实现的是对Near Camera Fade的材质函数化，因为大部分场景中的粒子都有可能会需要这个功能。可以通过增进Function Input节点来为函数提供参数输入引脚，在函数属性中选中Expose to Library就可以在材质视图的上下文菜单中直接找到这个函数了。如果选择不暴露的话，每次都必须将这个函数拖到材质中去。",[38,87,89],{"id":88},"dynamic-parameter","Dynamic Parameter",[11,91,92],{},"材质中的Dynamic Parameter节点允许粒子对材质进行动态的参数输入，需要注意的是当使用GPU粒子时，这个传入是无效的。",[11,94,95],{},"要给材质传入参数，需要使用Parameter->Dynamic模块进行相关操作。在对动态参数的名称进行修改之后，对Dynamic模块进行刷新就可以看到参数名称的更新。",[11,97,98],{},"对于一次性设定的参数，要在Dynamic模块中为参数设置Spawn Time Only，这样就只在粒子生成时进行参数生成和设置。",[38,100,101],{"id":101},"颜色控制",[11,103,104],{},"教程中建议删除默认的Color Over Life模块，改为使用Initial Color和Scale Color\u002FLife两个模块进行组合配置。",[11,106,107],{},"主要的好处在于，可以解除生成时颜色和生命周期颜色之间的关联。方便进行控制。",[11,109,110],{},"总体上操作没有什么太大的不同，其实如果没有对粒子颜色进行控制的话，可以不用进行这个操作。",[31,112,114],{"id":113},"gpu-particle","GPU Particle",[11,116,117],{},"GPU粒子的效率比CPU粒子高，虽然有一些地方的功能有所限制，但按照官方建议，在大多数情况下都应该使用GPU粒子。",[11,119,120],{},"GPU粒子在生成粒子时依然使用CPU进行，以便对粒子进行更好的控制。因此，在GPU粒子制作时，应该将CPU生成粒子的消耗考虑在内。否则极有可能成为系统的瓶颈。教程建议单次粒子爆发不要超过15k个，在通过爆发生成大量粒子时，其间隔应该在0.05~0.1以上。同时在有大量粒子生成的情况下，最好使用LOD来尽可能的降低整体的系统消耗。",[11,122,123,124,128],{},"当粒子系统中的粒子数量超过某个点之后，其对整体视觉效果的贡献并不明显。因此在粒子系统制作中应该对参数进行调整，将粒子个数控制在平衡点附近。可以通过将显示模式调整为",[125,126,127],"strong",{},"着色器复杂度","来观察粒子个数是否过多。",[11,130,131],{},[132,133],"img",{"alt":134,"src":135},"image","\u002Fwp-content\u002Fuploads\u002F2015\u002F07\u002Fimage_thumb13.png",[11,137,138],{},"在这个模式中，显示为白色的区域代表其成本极高。应该对其进行调整。",[38,140,142],{"id":141},"vector-field","Vector Field",[11,144,145],{},"矢量场用于控制粒子的流向，效果上就像是场景中有风带动粒子移动一样。矢量场可以通过模块进行旋转和缩放，能够实现非常独特和真实的效果。",[11,147,148],{},"Vector Field模块只有在类型为GPU Sprites时才有效。矢量场分为Local Vector Field和Global Vector Field两种，分别作用在粒子系统的本地空间和实际场景中。",[11,150,151,152,157,161,162],{},"矢量场的制作已经完全进入了美工的领域，不再进行研究。官方的制作教程在这里：[",[24,153,156],{"href":154,"rel":155},"https:\u002F\u002Fwiki.unrealengine.com\u002FCreating_Vector_Fields_(Tutorial)%5D(",[28],"https:\u002F\u002Fwiki.unrealengine.com\u002FCreating_Vector_Fields_(Tutorial)](",[24,158,159],{"href":159,"rel":160},"https:\u002F\u002Fwiki.unrealengine.com\u002FCreating_Vector_Fields_(Tutorial",[28]," \"",[24,163,166],{"href":164,"rel":165},"https:\u002F\u002Fwiki.unrealengine.com\u002FCreating_Vector_Fields_(Tutorial)%22)%E3%80%82",[28],"https:\u002F\u002Fwiki.unrealengine.com\u002FCreating_Vector_Fields_(Tutorial)\")。",[38,168,169],{"id":169},"动态参数",[11,171,172],{},"GPU粒子不能进行动态参数传值，Dynamic模块将会失效。为了让粒子对参数进行一定程度的控制，教程中介绍了一个变通的方法。",[11,174,175],{},"那就是使用依然有效的Particle Color进行数值传递，虽然这样会导致无法对粒子的颜色进行控制，但是在没有办法进行粒子传递时还是需要这样一个替代方案的。",[38,177,178],{"id":178},"粒子碰撞",[11,180,181],{},"Collision(Scene Depth)模块用于为粒子添加碰撞功能，这个模块当前只在GPU粒子下有效。同时，这个功能必须使用Translucent的材质作为粒子的时候才会起作用。",[11,183,184],{},"可调节参数包括反弹系数、摩擦力、反应模式等。",[186,187],"hr",{},[11,189,190],{},"UE4的粒子功能很强大，提供很多用于修改的模块。感觉上作为程序的话，只要了解大概有什么功能，能够实现简单的粒子特效即可。实在有需要制作复杂的粒子时，可以参考别人做好的进行修改。",{"title":192,"searchDepth":193,"depth":194,"links":195},"",2,3,[196,204],{"id":33,"depth":193,"text":33,"children":197},[198,199,200,201,202,203],{"id":40,"depth":194,"text":40},{"id":55,"depth":194,"text":56},{"id":65,"depth":194,"text":66},{"id":78,"depth":194,"text":79},{"id":88,"depth":194,"text":89},{"id":101,"depth":194,"text":101},{"id":113,"depth":193,"text":114,"children":205},[206,207,208],{"id":141,"depth":194,"text":142},{"id":169,"depth":194,"text":169},{"id":178,"depth":194,"text":178},"2015-07-06","md",{"layout":212,"status":213,"published":214,"author":215,"author_login":216,"author_email":217,"author_url":218,"wordpress_id":219,"wordpress_url":220,"date_gmt":221,"excerpt":222},"post","publish",true,{"display_name":216,"login":216,"email":217,"url":218},"chaoshikari","chaoshikari@gmail.com","\u002F",1379,"\u002F\u002F?p=1379","2015-07-06 07:37:27 +0000",{"type":8,"value":223},[224],[11,225,13],{},"\u002F2015-07-06-ue4-particle-official-tutorial-summary",{"title":6,"description":13},"_legacy\u002F2015\u002F2015-07-06-ue4-particle-official-tutorial-summary",[230,231,232,142],"UE4","粒子","GPU Sprites","Q8Z_TjX1uDswg-jlR7mTVtwgWkNFLo7cfHdi4HeKs-o",1,1788763180800]