当前位置: 首页 > news >正文

OpenGL lookAt 函数 参数说明

        首先我们有一个固定的世界坐标系,这个坐标系是右手系,+X轴平行屏幕向右,+Y轴垂直屏幕向上,+Z垂直穿出屏幕向外。

        lookAt函数是在我们向世界坐标系中放置了一系列3D元素之后,用于设置观察视角的函数。

        void lookAt(const QVector3D& eye, const QVector3D& center, const QVector3D& up);

        你可以把它想象成一个真实的摄影师:

                cameraPos (eye):摄影师站立的位置。

                center (target):摄影师镜头的朝向。

                up (up vector):摄影师头顶的朝向。

        通常情况下,摄影师站着,头顶自然朝向天空(世界坐标系的 +Y 轴)。但摄影师也可以歪着头拍照,对吧?这个 up 向量,就是告诉计算机,摄影师希望把头歪向哪个方向。

        lookAt 在背后做了什么?

        lookAt 函数的目标是创建一套属于相机自己的、全新的三维坐标系(包含右、上、前三个互相垂直的轴),然后用这个坐标系来观察世界。它的计算步骤如下:

        计算“前”轴 (Forward Axis):这个最简单,就是从 cameraPos 指向 center 的方向。我们叫它 direction 轴。 direction = normalize(center - cameraPos)

        计算“右”轴 (Right Axis):为了得到一个与 direction 轴垂直的“右”轴,计算机需要另一个参考向量。这时,你提供的 up 向量就派上用场了。它通过计算 up 向量和 direction 向量的叉乘(Cross Product),得到一个同时垂直于它俩的新向量,这个新向量就是相机的“右”轴。 right = normalize(cross(up, direction))

        计算“真·上”轴 (Real Up Axis):现在我们已经有了互相垂直的 direction 轴和 right 轴,再次对它俩进行叉乘,就能得到那个最终的、与前两者都垂直的、相机自己真正的“上”轴。 realUp = cross(direction, right)

        “Up Vector”的黄金法则:

        提供给 lookAt 的 up 向量,绝对不能与你的视线方向(从 cameraPos 到 center 的连线)平行。否则叉乘结果为0,相机无法确定右轴,进而无法确定上轴,无法渲染任何画面。

http://www.dtcms.com/a/600837.html

相关文章:

  • 【刷题笔记】 AOV网的拓扑排序
  • 3D TOF 视觉相机:以毫秒级三维感知,开启智能交互新时代
  • 快速配置 HBase 完全分布式(依赖已部署的 Hadoop+ZooKeeper)
  • 深圳网站搜索排名产品软文范例软文
  • 手机网站关键词seo网站 模板 html
  • 多模态工程师面试--准备
  • 安全迁移Windows个人文件夹至非C盘:分步教程与避坑指南
  • 多智能体框架AgentScope 1.0 深度技术剖析:架构、场景、选型与实战指南
  • flinkcdc抽取postgres数据
  • SpringCloud Gateway缓存body参数引发的问题
  • Qt跨平台:Linux与Windows
  • 【数据集分享】汽车价格预测数据集
  • 汽车网络安全综合参考架构
  • 亚远景-ISO 26262与ISO 21434:未来汽车安全标准的发展趋势
  • Leverege 携手谷歌云和BigQuery,赋能大规模企业级物联网(IoT)解决方案
  • 国外网站服务器免费网站被做跳转
  • 分享一个我自用的 Python 消息发送模块,支持邮件、钉钉、企业微信
  • 南昌商城网站建设网页设计作业文件
  • 物联网传感器数据漂移自适应补偿与精度动态校正技术
  • docker 按带ssh的python环境的容器
  • 基于深度随机森林(Deep Forest)的分类算法实现
  • Ansible:高效自动化运维工具详解
  • 调用qwen3-omni的api对本地文件生成视频文本描述(批量生成)
  • 标签分类调研
  • 太原有网站工程公司吗网站建设预招标
  • 宁夏住房和城乡建设厅网站执业资格游戏门户网站建设
  • 社区养老保障|智慧养老|基于springboot+小程序社区养老保障系统设计与实现(源码+数据库+文档)
  • 基于springboot个性化定制的智慧校园管理系统【带源码和文档】
  • 12306自动抢票系统:基于DrissionPage的智能购票实战
  • 【内容检测 EXPO-HM】 优化训练方式 提升解释性与准确性