maya 粒子替代 替代物体自身旋转在落地时如何让自身旋转停止
3个回答
展开全部
楼上几位 都没有回答到楼主的问题本质.
楼主问的是落地停止旋转.
我的做法一般是:
1.首先 给旋转 随着时间的推移,给它一个减函数的 递增.
比如 rotation += 5*rand(-2,2)/(time)
主要是模拟受到空气阻力后,旋转上的动能被消耗.
2.除了当speed 小于一个数时,强制让它的velocity =0 这点是必须的 , 但是不够。
因为落地后 你虽然让它的速度为0了, 但是请注意 速度为0,旋转可不为0.
我的做法是在runtime EX里 .
先获取前一帧PP的旋转,然后
后一帧的旋转 = 前一帧的旋转, (what?????哈哈 前一帧的旋转赋值给后一帧,代表旋转无变化,就是不转.
楼主问的是落地停止旋转.
我的做法一般是:
1.首先 给旋转 随着时间的推移,给它一个减函数的 递增.
比如 rotation += 5*rand(-2,2)/(time)
主要是模拟受到空气阻力后,旋转上的动能被消耗.
2.除了当speed 小于一个数时,强制让它的velocity =0 这点是必须的 , 但是不够。
因为落地后 你虽然让它的速度为0了, 但是请注意 速度为0,旋转可不为0.
我的做法是在runtime EX里 .
先获取前一帧PP的旋转,然后
后一帧的旋转 = 前一帧的旋转, (what?????哈哈 前一帧的旋转赋值给后一帧,代表旋转无变化,就是不转.
深圳量子动力
2024-10-21 广告
2024-10-21 广告
双目摄像头可找深圳量子动力双目摄像系统可通过无线方式进行面部捕捉,可以满足在家、工作室、直播间、专业动捕棚等多种场景的不同使用人群。支持Metahuman Animator解算,支持升级animator高精度表情方案...
点击进入详情页
本回答由深圳量子动力提供
展开全部
可以写有很多写法啊。、可以写、碰撞之后产生新粒子 继承原来的粒子替代属性
或者 碰撞之后。直接原地不动。就ok了
用 if (event ==1)
else
这么写就好了
碰撞值不知道你说的是什么。但是有一个数值是精度的
或者 碰撞之后。直接原地不动。就ok了
用 if (event ==1)
else
这么写就好了
碰撞值不知道你说的是什么。但是有一个数值是精度的
追问
有没有入门的 书或者公式?我会那几个就老师教的 背下来的。课堂之外的都遇见麻烦了。
不需要新粒子,地面左边Y= -0.01.希望粒子在-Y停、做落在地上的效果。
谢谢你,怎么表达呀?
追答
vector $aaa = particleShape1.position;
if ($aaa.Y<0.1)
{
particleShape1.velocity ==0;
particleShape1.rotate ==0;
}
else
备注。楼下那个 在{}里的 要用 == 不能用=
在表达式中= 和==意思是不一样的
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
创建表达式
particleShape1.index_con = rand(1,11);
float $a =rand(0.4,0.6);
particleShape1.scale_con = <<$a,$a,$a>>;
float $b =rand(0,360);
particleShape1.rotate_con = <<$b,$b,$b>>;
particleShape1.rotate_rand = rand(-10,10);
运行前
float $speed = (mag(particleShape1.velocity)/15);
particleShape1.rotate_rand = $speed*particleShape1.rotate_rand;
运行后
if ((mag(particleShape1.velocity)/20<0.1)&&particleShape1.worldPosition)
{
particleShape1.velocity = 0;
};
只要你粒子替代里面修改了照着这个表达式应该没问题
修改一下数值】
particleShape1.index_con = rand(1,11);
float $a =rand(0.4,0.6);
particleShape1.scale_con = <<$a,$a,$a>>;
float $b =rand(0,360);
particleShape1.rotate_con = <<$b,$b,$b>>;
particleShape1.rotate_rand = rand(-10,10);
运行前
float $speed = (mag(particleShape1.velocity)/15);
particleShape1.rotate_rand = $speed*particleShape1.rotate_rand;
运行后
if ((mag(particleShape1.velocity)/20<0.1)&&particleShape1.worldPosition)
{
particleShape1.velocity = 0;
};
只要你粒子替代里面修改了照着这个表达式应该没问题
修改一下数值】
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |