mx_timer
mx_timer
一个别名函数,返回内置的 time 节点(以秒为单位的累计时间)。用于在 TSL 中驱动一切基于时间的动画。
核心优势
与 MaterialX 命名对齐,可直接替换/复用现有 MTLX 图中的 timer 节点;封装为只读、自动更新的 UniformNode,无需在 JS 中管理时钟或 uniform。
常见用途
正弦/余弦等周期函数的时间输入(呼吸光、脉冲、闪烁)。
纹理滚动、UV 扭曲、波纹等程序化动画。
顶点位移的时间驱动(旗帜、水面、摆动)。
配合 fract()/mod() 实现循环计时、阶段触发。
如何调整
mx_timer 本身只读。通过对其输出做数学运算来控制:乘法改变速度(mx_timer().mul(speed)),加法调整相位(mx_timer().add(phase)),使用 fract()/mod() 创建循环(mx_timer().mul(freq).fract() 或 mod(mx_timer(), period)),再配合 smoothstep()/step() 作为阈值触发器。
代码示例
1
2<mesh>
3 <torusKnotGeometry args={[0.5, 0.16, 256, 64]} />
4 <meshStandardNodeMaterial
5 // 呼吸发光:sin( mx_timer * 2.5 ) 的绝对值
6 emissiveNode={TSL.color(0x00ffff).mul( TSL.sin( TSL.mx_timer().mul(2.5) ).abs() )}
7 // 在 0-1 区间周期性调制金属度
8 metalnessNode={TSL.sin( TSL.mx_timer() ).mul(0.5).add(0.5)}
9 />
10</mesh>
11