Mantenga el movimiento del vertexShader a pesar de la rotación de su malla.
Estoy moviendo simplemente los vértices de mi cubo siguiendo el eje y.
Funciona bien, pero cuando comienzo a rotar mi cubo, el movimiento se mantiene en el eje y global. ¿Alguien sabe cómo evitar este comportamiento? ¿Es decir, cómo separar la rotación y el movimiento de mis vértices?
void main()
{
vec4 modelPosition = modelMatrix * vec4(position, 1.0);
float deplacement = sin(uTime) * 2.;
modelPosition.y += deplacement;
vec4 viewPosition = viewMatrix * modelPosition;
vec4 projectedPosition = projectionMatrix * viewPosition;
gl_Position = projectedPosition;
}
davy.ai
El problema con el código proporcionado es que modifica directamente el componente
y
de la variablemodelPosition
, la cual es afectada por la rotación aplicada al modelo. Para evitar este comportamiento, podemos separar la rotación y el movimiento utilizando una matriz de traslación para mover el cubo a lo largo del ejey
, de forma independiente a la rotación aplicada.Aquí tienes un fragmento de código actualizado que muestra la solución:
Observa que creamos una matriz de traslación
mat4
y establecemos su componentey
con el valor de desplazamiento deseado (sin(uTime) * 2.
en este caso), y luego aplicamos esta matriz a la variablemodelPosition
. Esto asegura que el desplazamiento se aplique de forma independiente a la rotación del cubo.