教您怎样用MAYA粒子替换实现射箭模型(教您怎样用maya粒子替换实现射箭模型的方法)优质

扫码添加渲大师小管家,免费领取渲染插件、素材、模型、教程合集大礼包!

1.粒子替换实现MAYA制作射箭模型的效果的最大问题在于。如果用粒子的速度velocity作为instancer的Aim Direction。那么一旦粒子与地面产生碰撞(这里我们碰撞属性中的摩擦力Friciton设置为1。弹力Resilience设置为0)。势必导致速度瞬时变为0。使得箭无法插在地面上。而是一碰到地面就倒下。

教您怎样用MAYA粒子替换实现射箭模型(教您怎样用maya粒子替换实现射箭模型的方法)

2.制作一个地面。和一个用来发射箭的面.

教您怎样用MAYA粒子替换实现射箭模型(教您怎样用maya粒子替换实现射箭模型的方法)

3.选择用来发射箭的那个面。通过Particles Emit form object。从该面上发射粒子

教您怎样用MAYA粒子替换实现射箭模型(教您怎样用maya粒子替换实现射箭模型的方法)

4.打开粒子发射器属性:emitter type :surfacerate(particles/sec): 5speed : 20speed random: 4

教您怎样用MAYA粒子替换实现射箭模型(教您怎样用maya粒子替换实现射箭模型的方法)

5.给粒子加个重力场

教您怎样用MAYA粒子替换实现射箭模型(教您怎样用maya粒子替换实现射箭模型的方法)

6.选中粒子和地面。打开菜单命令particles make collide 后面的属性对话框。将弹力resilience设置为0。摩擦力friction设置为1。点击create生成碰撞事件。

教您怎样用MAYA粒子替换实现射箭模型(教您怎样用maya粒子替换实现射箭模型的方法)

7.执行play场景。看到粒子与地面产生正确的碰撞。并停止在地面上(如果地面凹凸不平。会有滑动。不妨。这个我们稍后解决)

教您怎样用MAYA粒子替换实现射箭模型(教您怎样用maya粒子替换实现射箭模型的方法)

8.先选弓箭再选粒子。打开菜单命令particles instancer

教您怎样用MAYA粒子替换实现射箭模型(教您怎样用maya粒子替换实现射箭模型的方法)

9.打开粒子属性中的instancer一栏。勾启allow all data types。aimdirection设置velocity。此时播放我们就会发现剑一射中就立马"爬"下了

教您怎样用MAYA粒子替换实现射箭模型(教您怎样用maya粒子替换实现射箭模型的方法)

10.解决这一问题需要添加一个自定义属性。在粒子属性窗口中add dynamic attributes一栏中。点击general。添加一个名为dirpp的每粒子属性。类型为vector矢量(此处一点要注意)

教您怎样用MAYA粒子替换实现射箭模型(教您怎样用maya粒子替换实现射箭模型的方法)

11.右击dirpp属性。添加runtime before dynamics表达式:float $speed = mag(arrow_particleshape.velocity);if($speed != 0){arrow_particleshape.dirpp = arrow_particleshape.velocity;}这里详细解释一下。我用$speed来存储粒子的速率(速度是个矢量。是三维的。速率是个标量。是一维的。函数mag()正是将三维的矢量计算得到一个相 应的一维标量)。只要粒子在运动。速率不为零。那么我自定义的dirpp将不停的更新为粒子的速率。而一旦碰撞产生。速度为零。那么我的dirpp就不会 更新。所存储的是粒子停止之前一帧的那个速率。并且之后也将一直存储这个值。这样我们就可以用这个dirpp作为instancer的 aimdirection了

教您怎样用MAYA粒子替换实现射箭模型(教您怎样用maya粒子替换实现射箭模型的方法)

12. 修改粒子属性面板中instancer一栏中aim direction 为 dirpp。在播放一下看看。箭就不会射中倒下了

教您怎样用MAYA粒子替换实现射箭模型(教您怎样用maya粒子替换实现射箭模型的方法)

13.接下来要解决的问题就是。即便摩擦力为1。弹力为0了。箭还是会在地面上滑动这里我们为粒子添加个runtime after aynamics的表达式:float $speed mag(arrow_particleshape.velocity);if($speed < 4){arrow_particleshape.velocity = <<0,0,0;}这样。当粒子在碰撞时速度小于一定值后我们将其速率强行限制为<<0,0,0,注意。你也可以试试其他的数值不一定用4。但数值不宜过小。否则箭在射出的一瞬间会有个抖动。

教您怎样用MAYA粒子替换实现射箭模型(教您怎样用maya粒子替换实现射箭模型的方法)

14. 这是我们发现即使箭的速率为零了。但还是会在地面上滑动。我想到的解决方法还是和上面的差不多。用一个自定义的pospp来存储碰撞产生前一帧的position。以此来作为箭插入地面后的永久坐标选中粒子。添加自定义的每粒子属性pospp。类型还是矢量。

教您怎样用MAYA粒子替换实现射箭模型(教您怎样用maya粒子替换实现射箭模型的方法)

15. 右击pospp添加runtime before daynamics的表达式。这里我直接在原先的表达式的做些添加就可以了。修改后如下float $speed = mag(arrow_particleshape.velocity);if($speed != 0){arrow_particleshape.dirpp = arrow_particleshape.velocity;arrow_particleshape.pospp = arrow_particleshape.position;}else{arrow_particleshape.position = arrow_particleshape.pospp;}后果有朋友看不懂。我再解释一下其意思:每过一帧。只要粒子速度不为零。我就将粒子的坐标值position赋给pospp。一旦产生碰撞。速度为零了。 那么也就停止了position赋值给pospp这一操作。我的pospp存储的值是粒子停止前一帧所处的位置。接下来。我们反过来将这一固定了的值赋给 position。以防止例子因为重力场的作用会出现position不停地在一个范围内抖动的结果。

教您怎样用MAYA粒子替换实现射箭模型(教您怎样用maya粒子替换实现射箭模型的方法)

16.至此。整个过程也就差不多完成了。你也可以再为粒子添加一些扰乱场。不用担心箭射到地面出现抖动情况了

教您怎样用MAYA粒子替换实现射箭模型(教您怎样用maya粒子替换实现射箭模型的方法)

以上就是MAYA制作射箭模型的步骤啦。如果您感兴趣的话。可以到云渲染农场交流讨论哦。

以上是由资深渲染大师 小渲 整理编辑的,如果觉得对你有帮助,可以收藏或分享给身边的人

本文标题:教您怎样用MAYA粒子替换实现射箭模型(教您怎样用maya粒子替换实现射箭模型的方法)
本文地址:http://www.hszkedu.com/36758.html ,转载请注明来源:云渲染教程网
友情提示:本站内容均为网友发布,并不代表本站立场,如果本站的信息无意侵犯了您的版权,请联系我们及时处理,分享目的仅供大家学习与参考,不代表云渲染农场的立场!

发表评论