每日一句:Look Up

We are all in the gutter, but some of us are looking at the stars.

我们都生活在阴沟里,但仍有人仰望星空。

`glm::lookAt` 函数用于创建一个观察矩阵(View Matrix),该矩阵用于将世界坐标系中的物体转换到观察坐标系中,模拟摄像机的视角。 ### 函数原型 ```cpp GLM_FUNC_QUALIFIER mat<4, 4, T, Q> lookAt(vec<3, T, Q> const& eye, vec<3, T, Q> const& center, vec<3, T, Q> const& up); ``` 其中,`eye` 代表观察点的位置,`center` 是要看向的中心点,`up` 是摄像机的上向量[^1]。 ### 功能 `glm::lookAt` 函数的主要功能是根据给定的观察点位置、观察目标点和上向量,生成一个观察矩阵。这个矩阵可以将场景中的物体从世界坐标系转换到以摄像机为中心的观察坐标系中,从而实现不同视角的观察效果。若没有调用 `glm::lookAt`,默认摄像机位于原点,指向 -Z 轴方向,上向量为(0, 1, 0)[^4]。 ### 使用方法 在使用 `glm::lookAt` 时,需要传入三个参数: - `eye`:摄像机的位置,通常用三维向量表示。 - `center`:摄像机看向的目标点,同样用三维向量表示。 - `up`:摄像机的上向量,用于确定摄像机的朝向,也是三维向量。 ### 示例代码 ```cpp #include <glm/glm.hpp> #include <glm/gtc/matrix_transform.hpp> #include <iostream> int main() { // 创建观察矩阵 glm::mat4 View = glm::lookAt( glm::vec3(4, 3, 3), // 摄像机位置 glm::vec3(0, 0, 0), // 看向的目标点 glm::vec3(0, 1, 0) // 上向量 ); // 输出观察矩阵 for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { std::cout << View[i][j] << " "; } std::cout << std::endl; } return 0; } ``` 在这个示例中,创建了一个观察矩阵,将摄像机放置在 (4, 3, 3) 的位置,看向原点 (0, 0, 0),上向量为 (0, 1, 0)。最后输出了生成的观察矩阵。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值