当前位置: 首页 > 知识库问答 >
问题:

了解GLM::Lookat()

富波光
2023-03-14

我正在学习OpenGL,其中使用GLM::Lookat()函数构建视图,但我无法理解GLM::Lookat()的工作原理,而且显然没有GLM的详细文档。谁能帮助我理解glm::lookat()的参数和工作方式?

detail::tmat4x4<T> glm::gtc::matrix_transform::lookAt   
(   
    detail::tvec3< T > const &  eye,
    detail::tvec3< T > const &  center,
    detail::tvec3< T > const &  up 
)

我目前的理解是,相机位于眼睛并面向中心。(我不知道up是什么)

共有1个答案

邹嘉荣
2023-03-14

up向量基本上是定义世界“向上”方向的向量。在几乎所有的正常情况下,这将是向量(0,1,0),即朝向正y。Eye是摄像机视点的位置,Center是你正在看的位置(一个位置)。如果要使用方向向量d而不是中心位置,可以简单地使用eye+d作为中心位置,例如,d可以是单位向量。

至于内部工作,或者更多的细节,这是构建视图矩阵的一个常见的基本功能。尝试阅读gluLookAt()的文档,它在功能上是等价的。

 类似资料:
  • GLM

    GLM (General Language Model) 是清华大学推出的一种使用自回归填空目标进行预训练的通用语言模型,可以针对各种自然语言理解和生成任务进行微调。 GLM 通过添加 2D 位置编码并允许以任意顺序预测跨度来改进空白填充预训练,从而在 NLU 任务上获得优于 BERT 和 T5 的性能。同时,GLM 可以通过改变空白的数量和长度对不同类型的任务进行预训练。在横跨 NLU、条件和无

  • 我目前正在学习OpenGL为一个业余项目,我达到了一点,我想做一些粒子效果与实例。 为了给我的每个粒子自己的转换,我用转换矩阵构建了一个向量,并使用缓冲区的值: 我以这种方式初始化转换缓冲区: 我使用这个简单的绘图代码: 我的顶点着色器标题如下所示: 这将导致glError 1281崩溃,但仅当我使用glEnableVertexAttribArray(4)时。否则这不会崩溃。当我使用一个单位矩阵而

  • 我试图用GLM来渲染一个对象,但是我得到了这个: 编辑:忘记提到我试图渲染的对象是一个简单的环面。 我做了很多调查,注意到返回。文档说,如果着色器中没有使用统一变量,即使声明了它,它也会返回。正如你在下面看到的,它已经被声明并且正在顶点着色器中使用。我检查了以确保它是有效的,诸如此类。 顶点着色器(简单的未点亮的红色): 片段着色器:

  • 什么都没发生。 我的印象是,当将放入近平面和远平面参数时,0.0f-2.0f范围内的任何顶点坐标都被线性插值到坐标系-1.0f-1.0f中,以用作归一化设备坐标。但是,无论我在这里放哪一对值,都没有呈现任何东西。 下面是我试图绘制的坐标: 当将投影矩阵传递给顶点着色器时: 顶点着色器本身:

  • 问题内容: 我不太清楚该在哪里抛出该异常。 例如,我正在实现接口,并且不希望任何人调用该方法: Future#get(long,TimeUnit)。 所以,我可以扔吗? 事情是方法的规范并没有说明抛出异常。反过来,例外 抛出以指示不支持请求的操作。 类UnsupportedOperationException 我的意思是,如果您不希望调用它,通常会抛出它,否则可能会因为不是所有方法都已实现而被认为