Me gustaría aplicar algunos movimientos en mis mallas usando un vertex-shader. Noté que cuando traduzco mis mallas en mi escena, también mueve la posición de mi onda sinusal simple. Me gustaría tener la misma onda sinusoidal en mis dos mallas incluso si traduzco mis mallas en mi escena.
Tuve una primera pista con esta publicación: mantener el movimiento de vertexShader a pesar de su rotación de malla
Traté de reproducir esta solución pero me falta algo. Aquí está mi sombreador:
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; }
Creo que no debería aplicar mi modelPosition.x en la línea translate[3].y pero no sé cómo llamar en su lugar. Como puede ver en este codepen, mis aviones se ven diferentes: https://codepen.io/michaelgrc/pen/GRMxYBm
¿Alguien ve lo que me estoy perdiendo? Muchas gracias
Necesitaba usar position.x
en lugar de modelPosition.x
para resolver mi problema:
translate[3].y = sin(uTime * 2. + position.x);