You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vulkan视图矩阵坐标系困惑:实际表现与预期不符的技术咨询

视图矩阵坐标系困惑问题

我正在尝试理解视图矩阵,通过顶点Shader直接操作视图矩阵的值,但对视图矩阵所处的坐标系感到困惑。

顶点Shader代码

#version 450

layout(location = 0) out vec4 outColor;

layout (push_constant) uniform PushConstants {
    mat4 proj;
} pc;

const vec2 kGeometry[] = vec2[](
    vec2(-1, -1), vec2(1, -1), vec2(1, 1),
    vec2(1,1), vec2(-1, 1), vec2(-1, -1)
);

const vec4 kColor[] = vec4[](
    vec4(1, 0, 0, 1), vec4(0, 1, 0, 1), vec4(0, 0, 1, 1),
    vec4(1, 0, 1, 1), vec4(1, 1, 0, 1), vec4(0, 1, 1, 1)
);

void main() {
    vec2 p = kGeometry[gl_VertexIndex];
    outColor = kColor[gl_VertexIndex];

    mat4 view = mat4(1);
    view[3].z = -3; // !!! Translate camera on Z. Expected +3, not -3 to see quad.

    gl_Position =  pc.proj * view * vec4(p, 0, 1);
}

参考分析结论

  • 预期模型顶点和视图矩阵都处于右手坐标系(+Y向下、+Z指向屏幕内部);
  • 屏幕上的四边形中心在(0,0,0),预期相机朝向-Z方向;
  • 将视图矩阵沿-Z轴平移至(0,0,-3)时,预期四边形不可见,但实际可见;
  • 实际表现显示视图矩阵的相机朝向+Z;
  • 平移视图矩阵至(2,3,-5),四边形出现在窗口右下角,相机仍朝向+Z;
  • 对视图矩阵取逆并定位在(2,3,5),四边形出现在左上角,相机朝向-Z但坐标系似为左手系。

我认为模型顶点按右手系转换,但视图矩阵的平移结果与预期不符,不确定其所处坐标系,也不理解为何不是预期的右手系。

内容的提问来源于stack exchange,提问作者Dess

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 22:42:51