【问题标题】:OpenGL 3D point sprites camera matrixOpenGL 3D点精灵相机矩阵
【发布时间】:2018-08-02 03:15:25
【问题描述】:

由于我使用的矩阵,我无法在 3D 空间中放置点精灵。问题出在我的顶点着色器中(我省略了不必要的部分):

#version 330

in vec3 position; // 3d position of the particle
uniform mat4 vp_matrix; // the projection and view matrices from the camera

void main()
{
    gl_Position = vp_matrix * vec4(position, 1);
}

目前我正在将视图和投影矩阵上传到这个矩阵制服。但这会导致粒子在相机移动时以意想不到的方式旋转和移动(即与我场景中的其他对象不同)。

将投影矩阵应用于点精灵是否有意义?还是我应该只应用视图矩阵?我应该应用整个视图矩阵,还是只应用平移和/或旋转?

【问题讨论】:

  • “将投影矩阵应用于点精灵有意义吗?” 是的,为什么不呢?一个点的 3D 顶点坐标与任何其他几何体的坐标没有什么不同。投影矩阵描述了从场景的 3D 点到视口的 2D 点的映射。您也必须将投影矩阵应用于点精灵。

标签: opengl


【解决方案1】:

我很抱歉,事实证明这个“奇怪”的运动是因为我写了 3 个浮点值而不是 2 个的偏移量错误。

但如果有人想知道将什么矩阵应用于点精灵,@Rabbid76 是正确的,您必须对其应用投影矩阵,还必须应用视图矩阵。这意味着您确实应用了来自相机的视图和投影矩阵;这是因为相机的旋转和平移确实需要影响点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 2022-06-30
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多