asin
asin
一个数学节点,封装了 GLSL 的 `asin()` (反正弦) 函数。它接收一个定义域在 [-1, 1] 内的输入值,并返回其对应的角度(弧度制)。
核心优势
提供了一种从比率“反向工程”出角度的基础数学能力,是几何计算和坐标系转换的核心。其独特的非线性响应曲线(中间平缓,两端剧烈)也使其成为创造特殊视觉效果(如镜头畸变)和非线性动画缓动的强大工具。
常见用途
在球体上根据顶点的高度(y坐标)反向计算其纬度角。
通过扭曲 UV 坐标来模拟镜头畸变或鱼眼效果。
将平滑的 sin/cos 波形转换为具有尖锐峰值的方波状波形,用于顶点位移或颜色变化。
作为笛卡尔坐标系到球面坐标系转换算法中的关键一步。
如何调整
该节点本身不可配置。所有效果调整都通过改变其输入节点来实现。例如,将一个标准的 `sin(time)` 信号输入 `asin`,会输出一个在极值点附近变化剧烈的尖波,而不是平滑的波形。
代码示例
1 // 一个标准的正弦波
2 const sineWave = sin( uv.x.mul( 10.0 ).add( time ) );
3
4 // 使用 asin 将平滑的正弦波转换为具有尖锐峰值的波形
5 const sharpWave = asin( sineWave );
6
7 // 使用该结果来修改顶点位移
8 position.y.addAssign( sharpWave );