粒子系统做圆形运动以及其他任意轨迹运动的原理解析 ... digest

转播

2021-09-14 13:00 发布

特效教程技术讨论 /[技巧分享]
pCvz96VQQhVHccQz.jpg
小伙伴们好久不见呀!今天又熬夜给大家带来一篇特效干货,建议大家多多点赞转发,大家的支持就是我更新的动力,点赞转发越多更新越快呀。

rQeLxU79zE79xX2e.jpg

E2i7ykip5gQ3X2kB.jpg

DOHX0Wh60upUH563.jpg
今天分享的是用粒子系统做这种圆形运动以及由此种方法扩展的其他任意你想要的运动轨迹的一种方法。

AZGfpRBa8f7gPp4p.jpg

LKr4t13YVDtr4ztS.jpg
很多小伙伴都会用速度曲线或者新版本的引擎自带的orbital直接给一个参数就能做到这样的效果(演示用的unity,UE4同理,其他引擎我暂时还没使用过但是底层原理肯定是一样的)
这次讲一下这两根曲线的来历,为什么这样拉曲线就可以让粒子按圆形运动。以及这种方法的扩展。

elLL9B999l5lKGU3.jpg

D80ZEQeAs0533Pl3.jpg
首先我们画一个简单的坐标轴,然后画一个圆形,比如我这里想让粒子按顺时针方向绕一个圆运动。

Vb5fvMl24VMmbUMc.jpg
然后标上几个交点的坐标。

H462T4VQ3h339oH2.jpg

SkGKssqE9OeKsxEs.jpg
我们要做的是这样的顺时针运动,把几个坐标排列一下顺序。这里要记住我们是从A点出发,最后也要回到A点的哦。

M6ddDfK21Dwse5Zw.jpg
然后再把X和Y分开,就得到了这样一个排列。

相信聪明的小伙伴已经知道后面的做法了吧!
lS9S37DnQDDd758t.jpg

x1PlQ9M9W1dmQ7po.jpg
我们回到unity中,将速度曲线的X轴按照上面我们的排列(0→100
0
-100
0)这样拉一下。

有的小伙伴可能会问为啥图片里面是100这里又是3,其实这个只是圆形轨迹的大小,需要针对自己实际情况调整,只要是等比例的就可以了。

RkQrQP1CMNz1M2nY.jpg
这里注意一下因为我们虽然有5个点,但是首尾其实是相同的,所以第二个点是在0.25(1/4)的位置而不是0.2(1/5)的位置哦。为了圆形轨迹更标准,可以手动设置一下这几个的精确位置。

lI9N9tlRjP5Q4m66.jpg

Vt9WxO9htBZ6bL6l.jpg
需要注意的是由于unity是Y轴朝上,所以我们需要将上面分析图中Y轴的运动曲线设置到unity中Z轴的运动曲线中。其他引擎的话需要根据实际情况判断一下。

t80n0f8Ph8n5CC8N.jpg
这样设置完成以后就得到了一个规则的圆形运动的轨迹了。

EF74cZrGZNp7zf3G.jpg
同时需要注意将初始速度归零,只用曲线来控制速度(有的引擎以及老版本的unity曲线是控制倍速,需要初始有一个值,这个也根据自己实际情况判断哇,我这里演示用的是unity2018.4.9)

其次、我们可以通过lifetime来控制转一圈的时间,通过曲线的最大值来控制圆圈的大小。

rt0Z83tz7HG0086I.jpg

好了,我们今天的分享到此结束















才怪

fkt9Wkz92O2FwaA4.jpg

前面讲了这两根曲线的原理,我这里就抛砖引玉分享一些由此原理做的扩展效果,相信大家知道这种方法以后就可以扩展出很多漂亮的效果的。

PnNlRWNtQDkNVQ1C.jpg

tHiccgZfOcOBz1T3.jpg
例如我们只需要再给Y轴一个速度,就可以做到像DNA那样螺旋上升的效果。

有的小伙伴可能会说这个圈数少了,不像DNA。

kApE27Cs3xe3P0gN.jpg

pDwWIBwwIoBSSO9K.jpg

其实很简单,我们只需要将两条曲线再重复一次就可以。如果想旋转多圈的就根据实际需求调整即可。

Fk8oxCCAccSLeK76.jpg
继续扩展,我们设置一个发射器形状以及拖尾。就可以得到这样鬼魂缠绕的效果。

JCBSCsMCcGGG2c2l.jpg

i2y8sbFO8N22fsjY.jpg
‍如果觉得太整齐了,我们可以设置为双曲线然后拉开一些区间。其实这里已经开始很有趣‍了,拉的时候不需要像前面演示的那样很精‍确,随意一些有时候也能获得一些不一样的效果。‍‍‍‍‍‍‍‍

V7oSfyO6K62fSy9K.jpg

Y1mgT40asSO48YSY.jpg

UyPy2Np22ePP6P2S.jpg
比如我想做一个这样的拖尾轨迹,也可以先画个图然后根据坐标来拖曲线。

这里需要注意三点:

第一是这个轨迹不像圆形需要回到起始点,所以最后一个点不需要回到A点,以F结尾即可。

第二是标记坐标的时候需要开启网格来对位置,否则这种自定义曲线肉眼是判断不准确的。

第三是实际上我的曲线也不是完全按照画的图来的,只是一个大致参考,再配合节奏来调整。

要记住这只是方法手段,最终的表现才是目的。方法可以多种多样,不要因为方法而改变目的,那就本末倒置了。

mgQEM111Qme2iYY1.jpg
本来还想做一个这样蝴蝶翅膀描边的演示的,由于时间有限(我太懒)就不做啦,相信大家看完上面的分析,要做这样的效果也是简简单单的。

结尾再说一下,我分享的只是一种做法,做这种轨迹还有不少方法可以做到。我分享的这种方法不一定适合每个人,大家根据自己项目实际情况选择适合自己的方法就可以啦,不用太拘泥于哪种方法。要记住这些方法都是手段,最后的特效表现才是目的。不要本末倒置了。

我建了一个特效交流群,大家有问题的也可以进群交流。群号【176529744】,欢迎大家来讨论特效问题。


投币

参与人数 8AG币 +113 收起 理由
菜狗的自我修养 + 2 yyds
     _IEWI + 20 很给力!
像鱼鱼鱼鱼 + 5
飞跃愚人 + 20
青空 + 6
七喜 + 20 yyds
随风如意· + 20
qq_Stshe_orN + 20 :p

查看全部投币

70

你可能喜欢

NPKExtractor网易游戏解包工具

第三方工具下载

14220 10 39

路人甲 2021-06-23

《英雄联盟》的视觉系统从何而来

搬运社(国外)

7424 2 41

海绵宝宝 2021-11-22
慎独 2021-09-14

FlowMap做特效的一种思路分享

特效教程技术讨论

16109 20 156

慎独 2021-09-02

全部评论12

    热心市民小猪
    很喜欢这种图形结合的介绍!解释的也很清楚!感谢大佬分享!!
    回复
    1
    2023-1-13 10:00
    确定
    箫鼓声绝
    蝴蝶这种有反方向运动的不行,unity的是速度曲线,这种方法是位置曲线,还是有点差别的
    回复
    2022-12-23 22:52
    确定
    箫鼓声绝
    回复
    箫鼓声绝
    比如蝴蝶第一象限的转角处要让粒子往左返回得让x轴的速度先归零,然后变为负值才能往左走,按坐标来画曲线x是个正值,表现为减速继续往右走
    回复
    2022-12-23 23:04
    确定
    狐狸狐狸
    数学学的太好了
    回复
    2022-6-16 18:47
    确定
    像鱼鱼鱼鱼
    太屌了
    回复
    2022-5-17 10:18
    确定
    wenwen
    独佬,我的超人
    回复
    2021-12-1 20:40
    确定
    诺言何瑾
    哦 原来数学才是yyd
    回复
    2021-12-1 18:04
    确定
    诺言何瑾
    回复
    诺言何瑾
    yyds
    回复
    2021-12-1 18:05
    确定
    _Ghz
    骚!!!!!!!!!!
    回复
    2021-11-30 16:44
    确定
    浩然不生气
    6666
    回复
    2021-10-11 15:32
    确定
    七喜
    独佬yyd
    回复
    2021-10-9 17:49
    确定
    蛋蛋的忧伤
    我好像不知不觉上了一堂数学课的样子
    回复
    2021-9-30 18:17
    确定
    artgamer
    在MAX里弄一个小球,然后K好想要的运动路径效果,然后打开动画系统曲线,把XYZ运动曲线分别照着给到unity粒子系统里微调,基本上也可以得到一样的运动路径。
    回复
    3
    2021-9-16 10:44
    确定
    慎独
    回复
    artgamer
    区别还蛮大的,首先max里面做需要导入一个动画文件,如果有好几种速度和范围的就需要好几个动画文件,消耗比纯粒子高很多,而且也不好做二次调整
    回复
    2021-9-16 11:05
    确定
    artgamer
    回复
    慎独
    我的意思是照个小球的动画曲线在粒子系统里用一样的曲线运动轨迹基本差不多。
    回复
    2021-9-17 09:42
    确定
    loki
    收藏了
    回复
    2021-9-14 14:09
    确定
客服中心 官方QQ群
快速回复 返回顶部 返回列表