代码问题
来源:17-10 添加场景扫描线
SapereAudor
2023-05-08
float new_time = mod(u_time * 0.1, 1.0);
float rangeY = mix(u_min.y, u_mix.y, new_time);
具体解释是是什么?包括mod和mix各个参数到底是什么意思?合起来是什么意思?为什么0.1表示速度?1.0又是什么,为什么结果要设置在0-1之间?
写回答
1回答
-
mod是一个取余函数,第一个参数 u_time * 0.1 是要取余的数,第二个参数 1.0 是基数。mod(u_time, 1.0) === u_time % 1.0
为什要使用这个函数:因为扫描光带需要进行循环的效果,所以需要让它在一个区间内来回扫描,
为什么0.1表示速度:u_time 的值是在小数点后一位小数以上,u_time越大,表明当前的变化幅度越大,所以可以通过降低它的值来改变速度, * 0.1 就是将它的值缩小10倍,这样变化的幅度也会降低10倍
为什么要在0-1之间:这个是设置一个循环周期,也就是从0% 变化到100%。这样在扫描到最右侧的时候就会回到起点位置重新开始
mix的主要作用是创建线性混合,使用这个函数的目的是为了修改扫面线的起点位置,而且使用这个函数来修改起始点位置也比较精确。
当然,也可以通过偏移量的方式来实现,如:
new_time * 1000.0 - 2000.0
至于这个函数使用,课程里有讲到,这里再使用 JavaScript 实现一下吧
012023-05-08
相似问题