我正在尝试使用OpenGL在three.js中创建一个模型查看器。
其中一个功能是在运行时更改纹理。
我已经做到了。但对我来说似乎有点粗暴,我想要更酷的东西。就像这个视频。
当然,我知道这是高级的东西,但我没有找到任何关于它的例子。
有什么提示吗?
您需要在两个纹理之间进行线性插值(lerp)。您的片段着色器需要持有两个纹理,然后在加载第二个纹理(即您想要更改的纹理)时触发lerping。然后使用像 col = fromTex.rgb * (1.0-t) + toTex.rgb * t
这样的操作,并在整个时间内改变混合/插值系数t
,直到完全混合到第二个纹理。可以将t
作为一个uniform发送,随着时间的推移缓慢地从0.0->1.0
更改。
mix
函数。更简单。 - taseenb