我只是在沿着y轴移动立方体的顶点。
它工作得很好,但是当我开始旋转我的立方体时,运动保持在全局y轴上。有人知道如何防止这种行为吗?意思是把我的顶点的旋转和移动分开?
https://codepen.io/michaelgrc/pen/JjrMVPm?editors=0010
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;
}发布于 2021-12-28 18:37:21
矩阵操作不是交换性。实际上,您要做的是在应用modelMatrix之后转换模型
v' = translate * modelMatrix * v;但是,您必须首先应用转换:
v' = modelMatrix * translate * v;例如:
void main()
{
mat4 translate = mat4(1.0);
translate[3].y = sin(uTime) * 2.0;
vec4 modelPosition = modelMatrix * translate * vec4(position, 1.0);
gl_Position = projectionMatrix * viewMatrix * modelPosition;
}注意,同样的情况可以通过组来实现。轮调必须适用于组,并在组中转换到网格。
group = new THREE.Group();
group.add(mesh);mesh.position.y = offset;
group.rotation.x = angle_x;
group.rotation.y = angle_y;https://stackoverflow.com/questions/70510964
复制相似问题