【发布时间】:2020-05-30 11:52:58
【问题描述】:
vec3 camPosInModelSpace = (inverse(mat_world) * vec4(worldCamPos, 1)).xyz;
vec3 axisZ = normalize(camPosInModelSpace);
vec3 axisY = axisZ.y > 0.999 ? vec3(0, 0, 1) : vec3(0, 1, 0);
vec3 axisX = normalize(cross(axisY, axisZ));
axisY = normalize(cross(axisZ, axisX));
mat4x4 rotate = mat4x4(vec4(axisX, 0), vec4(axisZ, 0), vec4(-axisY, 0), vec4(0, 0, 0, 1));
//vec3 vertexModelSpace = (transpose(rotate) * vec4(vPosition, 1)).xyz; // Here is my confused point
vertexModelSpace = axisX * vPosition.x + axisZ * vPosition.y + -axisY * vPosition.z;
gl_Position = mat_mvp * vec4(vertexModelSpace, 1);
如你所见,billboard的GLSL代码很简单,但是我只是有个问题,在我得到模型空间下的3轴后,为什么不能用矩阵来转换顶点(当我这样做时,似乎只有 Y 轴工作正常),但是当我使用教程的方式时,它工作正常。
请帮帮我,我真的很困惑,谢谢。
【问题讨论】: