【发布时间】:2022-01-02 14:43:13
【问题描述】:
我想使用顶点着色器在我的网格上应用一些运动。我注意到,当我在场景中平移网格时,它也会移动简单正弦波的位置。 即使我在我的场景中平移我的网格,我也希望我的两个网格上都有相同的正弦波。
我在这篇文章中获得了第一个线索:Keep movement of vertexShader despite of its mesh rotation
我试图重现此解决方案,但我遗漏了一些东西。这是我的着色器:
uniform float uTime;
void main()
{
mat4 translate = mat4(1.0);
vec4 modelPosition = modelMatrix * vec4(position, 1.0);
translate[3].y = sin(uTime * 2. + modelPosition.x *1.);
vec4 modelPosition2 = modelMatrix * translate * vec4(position, 1.0);
gl_Position = projectionMatrix * viewMatrix * modelPosition2;
}
我认为我不应该在 translate[3].y 行上应用我的 modelPosition.x,但我不知道该调用什么。正如你在这个 codepen 上看到的,我的飞机看起来不一样:https://codepen.io/michaelgrc/pen/GRMxYBm
有人看到我错过了什么吗?非常感谢
【问题讨论】:
-
translate[3].y = sin(uTime * 2. + position.x.);?不过我不知道你的最终目标。
标签: javascript three.js vertex-shader