建立自己的3D粒子发生器Dan Ebberts
建立自己的3D粒子发生器
 |
Dan ebberts,
萨克拉门托, 加利福尼亚州, 美国
© 2003 Dan ebberts和Creativecow.net. 版权所有.
|
文章重点: 在本教程, Dan ebberts探讨了如何使用表达式After Effects 5.5 ,建立一个相当复杂的三维粒子发生器. 我们的粒子将响应初速, 重力, 风, 拖曳, 以及更多. 使用这种粒子发生器, 我们会看看你是如何可能造成爆炸, 烟雾, 火灾爆炸, 属于雪, 甚至液体一样流. 我们将探讨如何使每个粒子可重复使用, 这将使我们能够模拟喷泉样颗粒流. 这个人是相当先进.
|
基本思想是,我们将进口的图形代表的单粒子. 我们将它拖放到我们的压缩机,使三维. 我们将适用于我们的物理模拟表达我们的颗粒,然后重复层足够的时间得到一个令人信服的结果. 我们会设置表达了使每个粒子(层)将有所不同. 我们将运用表达的许多粒子的特性, 包括立场, 规模, 不透明, 和轮换.
我们将开始从一个简单的爆炸和开发更复杂的表现形式有. 它最终会涉及一些非常毛状数学和一些物理(抱歉!) ,但好消息是,你不一定要准确地了解如何表达工作-你只需要知道如何修改,让他们做你想要的. 在第一部分的教程, 我会尽力做, 尽可能, 用于支付的基本知识如何表达你的工作,以及如何将修改. 那么, 快要结束时, 在勇敢的可以跟我通过毛状数学和物理学.
我们希望我们每个粒子有一个界定的寿命将随机在一定范围内. 因为我们将运用多种表现形式,以性能的粒子, 我们需要某种方式传达信息,粒子的寿命的所有表现,因此需要. 我们会做到这一点表现的寿命计算表达控制(如果您想了解更多的表达控制, 看到我的教程 建设世界上最伟大的摄影师). 然后,我们会使用中的表达控制只读 全局变量 可以被所有其他表达适用于我们的粒子.
先打开该项目文件,然后打开“爆炸-基本”压缩机. 您会发现一个图形层被称为“星耀斑”和一个空层, 这些都三维开启. 我们将使用的立场无效设置中心爆炸. 我们会参考无效的粒子“发射” ,后来我们将推动各地传授零“排放速度”的粒子. 选择“星耀斑”层和类型的“ U ”来显示所有的属性,已表达对他们适用. 还类型按Ctrl + Shift + T细胞( PC机)或Cmd +转移+ T细胞( MAC ) ,以显示应用层的影响. 您会看到一个“点”的控制采用了,并更名为“生命”. 您可能想知道为什么我们要使用点控制,而不是控制滑块举行“生命”的价值. 原因是,后来(当我们可以重复使用的颗粒)我们需要通过两个“生命”和“诞生”时间,所以我们需要有一个控制,可以通过这两个值. 我们只是不能使用两个滑块控制器? 否, 由于计算的“诞生”和“生命”是必须做相同的表达,使工作. 在规定的时间线, 单击twirly旁边的“点” ,以揭示表达适用于“生命”点控制:
Lmin = 1.5 ; / /最低粒子生活
Lmax = 2.5 ; / /最大粒子生活
看见d_random ( 1,真正的) ;
生活=随机( lmin,Lmax ) ;
出生= 0 ;
[出生,生活]
这样表达会随机生成一个“生命”的价值是我们的粒子之间1.5和2.5秒钟. 这个值将被插入到第二个因素,我们点控制变量. 第一个要素( “诞生” )是设置为零,因为这第一次爆炸压缩机我们所有的粒子将诞生时零. 在“ seed_random ”呼吁只是告诉After Effects我们要得到相同的随机值为“生命”我们每次运行中的表达(否则, “生命”的价值会跳的每一帧左右-这并不 帮助我们 这里). 如果您想了解更多关于“ seed_random ”, 看到我的教程 随机生成Motion. 如果你想要改变的寿命粒子, 你想改变“ lmin ”和“ lmax ”价值观.
按一下旁边的位置twirly透露这一表达:
Vmin = 500 ; / /最小初始速度
速度= 700 ; / /最大初速
出生=效果( “生命” ).帕拉姆( “点” ) [ 0 ] ;
生活=效果( “生命” ).帕拉姆( “点” ) [ 1 ] ;
来源= this_comp.层( “空1 ” ).立场.Value_at_time (出生) ;
年龄=时间出生;
看见d_random ( 1,真正的) ;
秒=随机( vmin,速度) ; / /初始速度
1 = degrees_to_radians (随机( 180 ) ) ; / /垂直角度
R = degrees_to_radians (随机( 360 ) ) / /旋转y轴
X =县*数学.黄大仙(一) *数学.功率因数(注册商标) ;
Ÿ =-县*数学.功率因数( a )条;
ž =县*数学.黄大仙(一) *数学.黄大仙(注册商标) ;
体积V = [ x名,y,ž ] ;
原产地+ V键*时间
这是基本立场表达了“零克”爆炸. 我们的粒子将推出一个随机方向在三维空间的“原产地” (这是公正的立场,空层) ,最初速度500至700个单位(其中大约相当于像素每秒). 粒子将继续在速度和方向,直到去世了. 我们还没有考虑风, 重力, 并拖动. 我相信你注意到了三线,使用的JavaScript触发功能来计算的X, y, 和Z组成部分粒子的速度矢量. 这个载体是由随机值速度( “ S ”的), 从垂直发射角( “ A ”类)和轮换相对复杂的Y轴( “ r ”开始). 不用太担心这个载体的所有的东西在这一点上-就像我以前说过, 您不必了解其运作方式,以便能够使用它,我们将支付它在稍后更详细. 主要是你需要知道的有关此版本的立场,表达的是,你会编辑的“ vmin ”和“速度”的价值观,改变初速颗粒. 以后我们会增加一个限制从垂直的角度,使我们能够创造一个喷泉式喷雾.
按一下旁边的小规模twirly揭示表达:
Max_规模 = 50 ; / /最大规模
秒=.2 ; / /规模坡道时间
生活=效果( “生命” ).帕拉姆( “点” ) [ 1 ] ;
年龄=时间效应( “生命” ).帕拉姆( “点” ) [ 0 ] ; / /年龄=时间诞生
如果(年龄“语) (
X = (年龄/秒) * Max_规模 ;
[第x,x,100 ]
其他( )
[ Max_规模,Max_规模,100 ]
}
所有这一切都表达不是坡道的规模从0到指定的值在“ Max_规模 ” ( 50 %在这种情况下) ,在此期间确定的“ S ”的(.2秒钟在这种情况下). 如果你想达到的粒子最大尺寸更快或更慢, 您将编辑的值为“ S ”的. 请注意,此值应小于“ lmin ”的“生命”表达如果你想成为确保颗粒达到全尺寸收到死亡.
现在单击twirly下次到Z旋转,你会看到这种表达:
Rmax = 1080 ; / /最大旋转
Rmin =- 1080年; / /最低轮换
出生=效果( “生命” ).帕拉姆( “点” ) [ 0 ] ;
看见d_random ( 1,真正的) ;
R =随机( rmin,Rmax ) ;
生活=效果( “生命” ).帕拉姆( “点” ) [ 1 ] ;
年龄=时间出生;
如果(生活== 0 ) (
0
其他( )
的R /生活*年龄
}
这表达了随机挑选的价值( -1080度之间和1080度)的旋转的Z轴的生活粒子. 请注意,此表达使用“诞生”和“生命”的价值观,这一点控制. 还注意到,使用“ seed_random ”功能,以确保选定的随机轮换价值保持不变,每一次计算的表达. 如果你想改变多少粒子能旋转, 你会编辑的“ rmax ”和“ rmin ”价值观.
最后, 按一下旁边的不透明twirly透露这一表达:
衰变=.75 ; / /粒子淡出时间
Max_不透明 = 100 ; / /最大混浊
生活=效果( “生命” ).帕拉姆( “点” ) [ 1 ] ;
年龄=时间效应( “生命” ).帕拉姆( “点” ) [ 0 ] ;
如果(年龄“生命) (
0
其他( )
如果(年龄“生命衰变) (
( (生命的年龄) /衰减) * Max_不透明 ;
其他( )
Max_不透明
}
}
这表达处理淡出的粒子在其生命. “蛀牙”是时间, 在几秒钟内, 持续的褪色. 你会修改这个值如果您想要改变淡出时间. 此值应小于“ lmin ”价值“生命”的控制. “ Max_不透明 ”是, 正如你可能期望, 最大值不透明您想要达到的粒子.
这是它的表现形式为第一起爆炸事件. 选择“星耀斑”层和重复这一群倍. 我通常只是然后按Ctrl + D类( PC机)或Cmd + D类( MAC ) 4或5倍, 选择原始和所有重复,然后按两下Ctrl +数字/指令+大束产生更多的时间至少50颗粒. 预览压缩机. 自然, 与许多层, 每五个表达应用, 它可能会花费一点时间,使预览. 当您应用此技术, 你需要平衡提供足够的时间对使用粒子创造一个有说服力的效果. 您应该结束了一个漂亮的3D爆炸的粒子只是爆炸了四面八方没有任何力量对他们除了自己初速.
-零重力爆炸65颗粒
现在让我们进入年底深的游泳池和添加物理效应的风, 重力, 拖曳, 和发射速度表达我们的立场. 我们会购买所有代码现在, 但我们不一定会使用的所有参数的每一个新的范例. 我们将通过大量的例子虽然, 直到我们涵盖一切. 先打开“爆炸与物理学”压缩机. 选择一个“星耀斑”层次和类型的“ P ”来显示地位财产. 单击twirly旁边的“立场” ,以表明我们的新的表达,包括所有的物理特性. 这是新的代码:
克= 100 ; / /严重性
瓦特= 0 ; / /风
Wdir = 0 ; / /风向( 0 =左起)
Vmin = 700 ; / /最小初始速度
速度= 1000 ; / /最大初速
阿明= 0 ; / /最低发射角度垂直
阿玛克斯= 110 ; / /最大发射角从垂直
D = 4 ; / /拖曳系数
出生=效果( “生命” ).帕拉姆( “点” ) [ 0 ] ;
生活=效果( “生命” ).帕拉姆( “点” ) [ 1 ] ;
来源= this_comp.层( “空1 ” ).立场.Value_at_time (出生) ;
年龄=时间出生;
看见d_random ( 1,真正的) ;
秒=随机( vmin,速度) ; / /初始速度
V_e = this_comp.层( “空1 ” ).立场.Velocity_at_time (出生) ; / /发射速度
1 = degrees_to_radians (随机(阿明,阿玛克斯) ) ; / /垂直角度
R = degrees_to_radians (随机( 360 ) ) / /旋转y轴
X =县*数学.黄大仙(一) *数学.功率因数(注册商标) ;
Ÿ =-县*数学.功率因数( a )条;
ž =县*数学.黄大仙(一) *数学.黄大仙(注册商标) ;
体积V = [ x名,y,ž ] + v_e ;
New_speed =长度(五) ;
Unit_v =正常化(五) ;
如果(四“ 0 ) (
Delta_p = new_speed * ( 1 -数学.进出口(三维*年龄) ) /天;
其他( )
Delta_p =年龄* new_speed ;
}
Delta_w =宽*年龄;
Delta_g =克*年龄*年龄/ 2 ;
青瓦台= degrees_to_radians ( wdir ) ;
原产地+ delta_p * unit_v + [ delta_w *数学.功率因数(西澳),0,Delta_w *数学.黄大仙(西澳) ] + [ 0,Delta_g,0 ]
正如你所看到的, 我们添加代码的严重性, 风(我们使用的不是在这个例子中), 发射角, 拖曳, 和发射速度. 不必担心它如何尚未所有作品. 你只需要知道你将修改前7参数变化的情况下,粒子. 所有其他表现形式仍然是相同的,因为它们是在“爆炸-基本”压缩机.
先预览压缩机. 您会发现,我们现在遇到的粒子空气阻力(阻力)和受重力. 我们也限制了发射角颗粒介于0和110度的垂直.
-爆炸与重力( 65粒)
开放和预览“眨眼爆炸”压缩机. 这是一个较早版本的“爆炸与物理学”压缩机已经在它的错误. 原来,我已经离开了电话seed_random在表达的点控制. 其结果是错误的不透明开启和关闭后的随机粒子的生命已过期. 因为这种效应实际上是很酷, 我决定将其周围. 因此, “错误”成为一个“功能”. 这是错误的代码点控制:
Lmin = 1.5 ; / /最低粒子生活
Lmax = 2.5 ; / /最大粒子生活
生活=随机( lmin,Lmax ) ;
出生= 0 ;
[出生,生活]
现在让我们来尝试我们的手创造一些烟雾,还有我们的爆炸. 从这里开始, 事情得到了很多方便. 让不同的粒子效果, 现在,我们主要只需要改变参数,建立了开始时的各种表现形式. 先打开“烟雾”压缩机. 我所做的创建此压缩机是重复的“爆炸与物理学”的比较和替换“星照明”的形象与“烟”的形象. 然后我提出这些修改中的参数表达式:
立场:
克= 10 ; / /严重性
瓦特= 80 ; / /风
规模:
Max_规模 = 150 ; / /最大规模
口轮换:
Rmax = 10 ; / /最大旋转
Rmin =- 10 ; / /最低轮换
不透明:
衰变= 1.25 ; / /粒子淡出时间
Max_不透明 = 50 ; / /最大混浊
我也改变了混合模式的层从“正常”的“屏幕”.
参数变化反映的方式是不同的烟雾,以响应不同的物理力量. 影响的严重性已经大大减少,. 的影响,风力已明显提高. Z轴旋转小得多. 不透明每个粒子将只达到50 %. 您到达这些价值观念,采取猜测的粒子应该如何反应, 然后调整他们的权利,直到它看上去. 先预览压缩机. 希望您会发现如何参数的变化作出了很大的区别的行为粒子.
-吸烟与40颗粒
在这一点上你可能会疑惑为什么我们不只是把所有这些参数对滑杆控制. 我们可以做到这一点,它肯定会更容易使参数调整. 问题是,如果你是做, 你就一个相当庞大使击中. 它可能是值得的, 但我想保持精简和意味着尽可能, 但随时要亲身体验如果您想.
开放和预览“碎片”压缩机. 这仅仅是一个变异的“爆炸与物理学”比较,我改变了粒子的“规格” ,并改变了重力至80和80的风. Max_规模已被设置为75和Z轴旋转的表达已被修改,以选择一个随机取向之间180和-180度. 不透明的表达已被禁用, 离开不透明100 %.
开放和预览“组合爆炸补偿”. 这个补偿包含“眨眼爆炸”, “烟雾”, 和“碎片” comps共同演示了如何在不同类型的粒子可以共同努力,建立一个复杂的影响. 通知说, “崩溃转变”开关已打开. 这是使粒子的三个comps将打乱正常的三维空间.

-整合多个comps创造复杂效应
现在我们要看看我们的颗粒,可重复利用的. 这是, 去世后,粒子, 我们希望它成为新生的不同属性, 仿佛那是一个新粒子. 这将使我们能够创造一个持续的粒子流. 做到这一点,我们需要修改的表达我们的“生命”点控制. 这里是新的代码:
Lmin = 1.5 ; / /最低粒子生活
Lmax = 2.5 ; / /最大粒子生活
余= 1 ;
看见d_random (一,真正的) ;
拖延=随机( lmax ) ;
出生=延误;
死亡=延误;
如果(时间“延误) (
[ 0,0 ]
其他( )
而(时间“ =死亡) (
一+ = 1 ;
看见d_random (一,真正的) ;
出生=死亡;
生活=随机( lmin,Lmax ) ;
死亡+ =生活;
}
[出生,生活]
}
这一言论已被修改,包括变化的表现形式为我的“随机生成Motion “教程. 有一个初步的, 随机延迟前一代的第一化身颗粒. 这一拖延将介于0和生命的最大粒子. 否则, 所有的“第一代”将产生的粒子在同一时间(如爆炸), 这不是我们所希望的一个喷泉式效应. 一般, 这表达作品除以时间线进入随机长度的“阶层”之间的“ lmin ”和“ lmax ”的期限. 每一部分代表了新的寿命的粒子. 允许再生粒子具有不同的属性比原来的, 在seed_random ( )调用中的地位和Z -轮换表达改变这一:
看见d_random (出生,真);
这将导致颗粒出生的时间被用来作为种子, 这将导致每个“生命”的粒子被不同的,因为出生时将永远是不同的. 其他变化,已取得了这一补偿是改变“阿玛克斯” (最大发射角从垂直)参数表达的立场30日,以使所有的粒子将在向上的方向. 先打开“喷泉”补偿和预览. 您现在应该可以看到一个连续喷射的粒子. 请注意,此补偿包含100颗粒层. 如果您的处理器扼流圈, 您可能需要删除一些层,然后再试一次.
-喷泉喷洒100颗粒
当我们添加的代码表达的立场,包括物理效应, 我们增加了一个,我们还没有看尚未. 这是速度传授的“发射”的粒子. 这一点,我们的排放(空层)都被固定. 才有意义,如果我们把我们的发射器,通过三维空间, 粒子的排放应该有一种倾向,按照排放的影响,直到拖, 重力, 风把他们在其他方向. 因为我们现在有一个喷泉喷射粒子的阿森纳, 这是一个很好的时间来看看发射速度财产. 开放和预览“移动发射1 ”压缩机. 在此压缩机的排放已keyframed将在三维空间和速度的发射是传授给粒子. 我已经parented一个新的层( “穗团” )的无效,因此您可以看到是在发射. 为对比, 开放和预览“移动发射2 ”压缩机. 这是完全一样的补偿, 但代码,增加了在发射速度已被禁用. 您应该通知的区别.
-移动发射器的速度传授给粒子

-移动发射速度没有传授给粒子
确定现在我们只是要昂然约. 过去四年comps ,我们要看看只是主题变奏曲. 我不会去了很多详细了解这些, 但我请你们审查表达每个压缩机看到如何参数(有时代码)已被修改,以实现不同的效果.
开放和预览“雪”压缩机. 有几件事来说明这个压缩机. 如果你看看表达的立场, 您会发现,我们有一个新的参数发射宽度. 我们做什么与这基本上是把我们的一点发射成“线”发射. 在这种情况下,我们已经确定了发射极宽度( “电子战” ) 600. 当一个粒子诞生, 其最初的立场是在正负一半发射宽度(在X方向)的立场的零. 这使我们产生新的粒子线沿线的任何地方. 另外一个事情的不同对这一补偿是利用多个粒子图像. 我得到了表达所有设立一个粒子, 重复三次,改为每个重复使用不同的雪花图片. 那么,我选择的所有4个雪花层和重复他们一群倍.
-雪多粒子图像
开放和预览“火灾爆炸”压缩机. 在此压缩机风, 重力, 并拖动已设置为零. 所有的粒子发射的负面z方向(对观众). 这仍需要一些工作, 但它的潜力.
-火灾爆炸
现已开放和预览“ goop ”压缩机. 这是一个试图创造一种液体型流动. 本压缩机使用“线排放”概念的“雪”补偿和“着色”作用是用来使每个粒子的颜色略有不同. 这也是一个进展中的工作.
-液体流动模拟
最后, 开放和预览我们最后一个例子, 在“指环王”比较. 这个比较类似“火爆炸” ,它发射的所有粒子的负面z方向. 这个比较也有摄像头,是keyframed从有些方面,以期更前端的看法. 本人列入这个补偿只是表明,您也可以使用这些表达式作为发电机物体运动,你可能不会想到的通常是“粒子”.
-环发生器
这可能是一个好去处谈论一些关于数码相机的使用与此粒子系统. 粒子所产生的 AE 的三维空间, 所以移动相机的粒子能够真正购买的意识深入到您的动画. 如果您决定使用移动摄像头, 您有几个有用的选项. 如果你什么也不做,除非旋转摄像头周围发射, 最终它将成为显然,颗粒本身是二维. 这可能是你的影响后,, 尤其是如果您有其他内容安排在三维空间的二维因素,显然. 另一种选择是有粒子始终面向相机. 你这样做的通过层菜单: 层“改造”自动东方“ ”东方对相机“. 根据粒子, 这可以提供一个令人信服的幻想,认为自己的粒子三维. 实验. 乐趣!
的有效性取决于这些模拟, 这在很大程度上是, 质量的粒子您使用. 我鼓励你们审查那些我用在这些例子中,并努力使你的手在你自己的,而代以它们纳入一个comps. 例如, 尝试取代雪花与红叶. 或者只是一些奇怪的发明半透明BLOB和看好像在喷泉压缩机. 实验. 乐趣! 还玩不同的混合模式. 记住,你可以选择所有的粒子,然后当你改变一个混合模式, 所有其他国家也将改变,以及.
好, 你们中间的温顺是自由离开现在. 承诺, 我要进入物理粒子运动表达一点之前,我们总结这次行动. 让我们再看看一个典型的例子表达的立场,我们一直在使用(我们将使用一个来自“移动发射1 ”压缩机):
克= 100 ; / /严重性
瓦特= 0 ; / /风
Wdir = 0 ; / /风向( 0 =左起)
Vmin = 500 ; / /最小初始速度
速度= 700 ; / /最大初速
阿明= 0 ; / /最低发射角度垂直
阿玛克斯= 110 ; / /最大发射角从垂直
D = 4 ; / /阻力系数
出生=效果( “生命” ).帕拉姆( “点” ) [ 0 ] ;
生活=效果( “生命” ).帕拉姆( “点” ) [ 1 ] ;
来源= this_comp.层( “空1 ” ).立场.Value_at_time (出生) ;
年龄=时间出生;
看见d_random (出生,真正的) ;
秒=随机( vmin,速度) ; / /初始速度
V_e = this_comp.层( “空1 ” ).立场.Velocity_at_time (出生) ; / /发射速度
1 = degrees_to_radians (随机(阿明,阿玛克斯) ) ; / /垂直角度
R = degrees_to_radians (随机( 360 ) ) / /旋转y轴
X =县*数学.黄大仙(一) *数学.功率因数(注册商标) ;
Ÿ =-县*数学.功率因数( a )条;
ž =县*数学.黄大仙(一) *数学.黄大仙(注册商标) ;
体积V = [ x名,y,ž ] + v_e ;
New_speed =长度(五) ;
Unit_v =正常化(五) ;
如果(四“ 0 ) (
Delta_p = new_speed * ( 1 -数学.进出口(三维*年龄) ) /天;
其他( )
Delta_p =年龄* new_speed ;
}
Delta_w =宽*年龄;
Delta_g =克*年龄*年龄/ 2 ;
青瓦台= degrees_to_radians ( wdir ) ;
原产地+ delta_p * unit_v + [ delta_w *数学.功率因数(西澳),0,Delta_w *数学.黄大仙(西澳) ] + [ 0,Delta_g,0 ]
我不是专家的粒子系统, 但我看到了几个例子代码用于生成他们. 那些我看过通常增量计算的基础上有多少事情发生了变化,因为过去计算周期. 大量的信息存储每个粒子和更新每个周期的计算. 在一个简单的例子, 当前的位置, 方向, 速度, 彩色, 年龄, 和寿命的粒子可能被保存. 计算看着这些价值观, 以及当前部队采取行动的粒子和计算,每个人都不应在下次的时间增量.
我们的做法有点不同的东西在After Effects. 正如您所知, (特别是如果你读过我的“随机生成Motion “教程)这是不容易的通过将信息从一个周期(帧)的计算下一个. 变量没有生存从一帧到下一. 所以,我们没有办法来存储信息,所有这些国家的粒子在上次框架. 我们需要一个不同的计划. 我们这样做, 但是, 有几件有用的信息提供给我们. 从点控制, 我们有粒子的出生和生活的价值. 因为我们有机会获得当前时间, 我们可以计算出年龄的粒子. 使用以下声明, 我们不能确定在三维空间粒子诞生:
来源= this_comp.层( “空1 ” ).立场.Value_at_time (出生) ;
同样, 最初的速度排放,可本声明:
V_e = this_comp.层( “空1 ” ).立场.Velocity_at_time (出生) ; / /发射速度
通知说, “ v_e ”是一个载体. 它的规模和方向代表的发射速度.
最初的速度和角度发射的粒子是由这三个要求的随机函数:
秒=随机( vmin,速度) ; / /初始速度
1 = degrees_to_radians (随机(阿明,阿玛克斯) ) ; / /垂直角度
R = degrees_to_radians (随机( 360 ) ) / /旋转y轴
以确保我们总是得到相同的随机值在整个生命粒子, 这些呼吁的随机函数之前下列要求“ seed_random ”功能:
看见d_random (出生,真正的) ;
我们使用“ seed_random ”确定种子的随机数发生器的诞生时间的粒子. 这一数字将保持不变的生活粒子, 所以我们总是能够重新启动初始速度和角度的价值.
携带此信息, 有点三角, 和一个小矢量数学, 我们准备好应付这件事. 我们的计划是目前的条件计算为基础的初始条件和多少时间已过了粒子诞生, 这应使我们可以接受的结果.
确定我们的第一个计算将转换的速度和角度,我们推出了粒子速度矢量. 我们这样做是通过计算个人x, y, 和Z元件的载体使用小三角. 这些报表计算x, y, 和Z:
X =县*数学.黄大仙(一) *数学.功率因数(注册商标) ;
Ÿ =-县*数学.功率因数( a )条;
ž =县*数学.黄大仙(一) *数学.黄大仙(注册商标) ;
你得把我的这个词. 我试着拿出一个漂亮的图,显示这是衍生, 但它需要显示在三维空间,并得到真正的东西堆满急于. 如果你知道触发, 您可以通过它和肌肉弄清楚这是怎么回事. 总之, 现在我们准备把初始速度矢量与发射器的初始速度矢量获得复合速度矢量. 代码:
体积V = [ x名,y,ž ] + v_e ;
看见, 矢量数学不是很吓人(特别是因为Adobe改为5.5 ,允许使用常规的数学运营商, “ + ”在这种情况下).
现在我们要转换这个新的速度矢量一个幅度(速度)的价值和单位向量(一单位向量是一个载体的长度1 ):
New_speed =长度(五) ;
Unit_v =正常化(五) ;
我们正在这样做是计算未来的影响,拖累了对粒子的生活粒子这一点. 这可能是最艰难的计算,整个项目. 事实证明,我们所要做的就是折叠的影响拖动到计算粒子的立场在当前帧. 我们的规模和方向的粒子由于粒子的初始速度和发射的初速. 我们知道,空气阻力将采取行动缓慢下降的粒子, 无论是移动的粒子. 因此,我们必须做的是整合(如结石-抱歉!)的影响,随着时间的推移拖曳力. 这一结果如下方程:
如果(四“ 0 ) (
Delta_p = new_speed * ( 1 -数学.进出口(三维*年龄) ) /天;
其他( )
Delta_p =年龄* new_speed ;
}
这一计算的结果( “ delta_p ” )是目前的立场颗粒, 考虑到只有最初的粒子速度, 发射速度, 和阻力的影响. 拖动行为减少的速度,粒子在指数率.
明年,我们需要计算的影响,风. 这更容易. 从物理学我们记得,
距离=速度*时间
如此计算多远风已经粒子自诞生以来, 我们只需要做到这一点:
Delta_w =宽*年龄;
公式重力的影响,是一个有些复杂, 但幅度并不太大. 回到我们的物理学, 我们记得,距离我们的粒子将由于重力的影响,给出了这一声明:
Delta_g =克*年龄*年龄/ 2 ;
现在我们要做的是把这些要素. 我们拥有所有的程度的距离感动粒子由于各种力量. 现在我们只需要转换为载体在适当的方向和购买他们获得最后的立场载体. 我们知道,重力行为在垂直方向. 风行为的方向参数“ wdir ”. 由于元件初始粒子速度, 发射速度, 并拖动行为方向的单位向量,我们计算以前. 所以在这里的最后一步,将所有元件在适当的方向:
原产地+ delta_p * unit_v + [ delta_w *数学.功率因数(西澳),0,Delta_w *数学.黄大仙(西澳) ] + [ 0,Delta_g,0 ]
在这里您可以看到粒子开始载体( “原产地” )是结合移动的距离,由于初速度/拖曳(方向的单位向量), 的影响,风的“ X ”和的“ Z ”坐标, 和重力的影响,在“ Y ”型方向.
好, 就是这样! 这些公式都是真的正确? 我不知道. 他们似乎工作得很好产生有益的模拟. 我希望你喜欢的打球风格与他们周围.
# # Dan ebberts
随时讨论这一技术在 After Effects论坛 在这里Creativecow.
|
|
|