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

lookat函数如何计算过eye点且与观测向量n垂直的up向量

lookat 函数垂直观测向量的 up 向量计算方案

首先明确观测向量 n 的定义:它是从相机位置eye指向观测目标at的单位向量,计算方式为:
n = normalize(at - eye)

具体计算步骤如下:

  • 选取初始参考上向量,默认使用世界空间通用上向量 world_up = (0.0, 1.0, 0.0)
  • 校验参考向量与n的平行度:计算两个向量的点积绝对值,若数值大于等于0.9999(可根据精度需求调整阈值),说明两者几乎平行,此时将参考向量替换为 world_up = (1.0, 0.0, 0.0) 或 (0.0, 0.0, 1.0) 即可避免后续叉乘得到零向量
  • 计算右向量:将参考向量与n做叉乘后单位化,得到相机坐标系的右方向
    right = normalize(cross(world_up, n))
  • 计算最终up向量:将n与右向量做叉乘后单位化,得到的结果天然与n垂直,可直接传入lookat函数使用
    up = normalize(cross(n, right))

补充说明:up向量本身是方向向量,无位置属性,不存在“穿过eye点”的限制,只要方向符合上述计算结果即可正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:54:03