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