关于 Mel 中级教学 —— 实时破碎脚本(表达式.txt)

该主题包含 3 个回复,有 2 个参与人,并且由 CopyX 的头像 CopyX7 月, 1 周 前 最后一次更新。

正在查看 4 个帖子 - 1 至 4 (共计 4 条)
  • 作者
    帖子
  • #35259
    CopyX 的头像
    CopyX
    学员
    注册日期: 2016/03/21
    发帖数: 1
    回帖数: 2

    由于视频里面没有对“刚体高级碎楼表达式.txt”中的脚本做任何说明,看代码时,在这里卡住了。

    // 查询当前帧的位置?
    int $t=currentTime -q;

    // 更新刚体对应的RBEXP脚本?
    expression -e -s
    (“if(frame>”+($t)+”){nxRigidBody”+(particleShape1.particleId+1)+”.currentTime=frame-”+($t+1)+”;}”)
    (“RBEXP”+(particleShape1.particleId+1)+””);
    }

    不知道注释这里理解的对么?如果正确的话,问题被卡在这里:

    frame 用表达式赋予给 .tx 时,发现它的返回值和当前帧完全相同,而 currentTime -q 也是查询当前帧。既然如此,这个 if(frame>($t){ 的判断又有什么意义呢?两者的数值不是完全相等的么……

    #35837
    NeroBlack 的头像
    NeroBlack
    教师
    注册日期: 2014/06/23
    发帖数: 1
    回帖数: 148

    同学你好,这个脚本在教学里已经讲过,推荐你反复看一下。

    在教学视频里我讲过:
    currtTime表示当前发生事件的时间,后面是为了把发生碰撞的时间设置到每个粒子对应的相应编号的刚体的表达式里,没有判定的关系,只是设置关系。

    #35857
    CopyX 的头像
    CopyX
    学员
    注册日期: 2016/03/21
    发帖数: 1
    回帖数: 2

    老师你好,你在视频里(0303_实战演练_实时破碎脚本_3)讲解的是这条:

    if (frame>10){
    nxRigigBody1.currentTime}=frame-10;
    }

    这条我可以理解,就是当前帧(时间滑条)大于 10 帧时,刚体解算效果则只到刚开始的第一帧。

    视频里讲解的这么说的:如果当前时间是 11帧,那么这个属性是 1。只有这个条件达成时,粒子才能把当前速度传递给刚体。

    expression -e -s 是更新这个每粒子对应的 RBEXP 表达式脚本吧?

    更新的内容是(我简化了一下)
    if(frame> ($t)){
    每粒子对应的 nxRigidBody.currentTime=frame-($t+1);
    }

    我理解后面{}里的内容,只是不理解 $t 的内容 currentTime -q,因为在 Maya 里面执行这条命令,每次的返回值都是当前帧(和frame一样)。

    也就是说的 currentTime -q 写在粒子表达式里面时,获得是 粒子碰撞发生时间点 的那帧,而非时间滑动条的 当前帧?

    上传附件/图片:
    您必须登陆才能查看附件
    #35861
    CopyX 的头像
    CopyX
    学员
    注册日期: 2016/03/21
    发帖数: 1
    回帖数: 2

    我理解了, currentTime -q 依然是 获得当前帧,之所以能获得 粒子碰撞发生时间点 的那帧,是由于前面的 B 值的条件控制。

    PS:老师视频里面确实漏讲了这个脚本……0304_实战演练_实时破碎脚本_4.aboutcg 直接复制粘贴就完事了。虽说照着做也能出效果……

正在查看 4 个帖子 - 1 至 4 (共计 4 条)

抱歉,回复评论必需登录。